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 2015/12/16 17:50:46 UTC

[01/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Repository: hbase-site
Updated Branches:
  refs/heads/asf-site a90ef9c18 -> 539ad1779


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/xref-test/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html b/xref-test/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html
index 3e57b59..82ecdfb 100644
--- a/xref-test/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html
+++ b/xref-test/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html
@@ -35,250 +35,225 @@
 <a class="jxr_linenumber" name="25" href="#25">25</a>  
 <a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.logging.Log;
 <a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.logging.LogFactory;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.procedure2.Procedure;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.testclassification.SmallTests;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.testclassification.MasterTests;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.junit.Assert;
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.junit.Test;
-<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.junit.experimental.categories.Category;
-<a class="jxr_linenumber" name="35" href="#35">35</a>  
-<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.Assert.assertEquals;
-<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.Assert.assertFalse;
-<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.Assert.assertTrue;
-<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.Assert.fail;
-<a class="jxr_linenumber" name="40" href="#40">40</a>  
-<a class="jxr_linenumber" name="41" href="#41">41</a>  @Category({MasterTests.<strong class="jxr_keyword">class</strong>, SmallTests.<strong class="jxr_keyword">class</strong>})
-<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html">TestProcedureStoreTracker</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(TestProcedureStoreTracker.<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">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureReplayOrder.html">TestProcedure</a> <strong class="jxr_keyword">extends</strong> Procedure&lt;Void&gt; {
-<a class="jxr_linenumber" name="46" href="#46">46</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureReplayOrder.html">TestProcedure</a>(<strong class="jxr_keyword">long</strong> procId) {
-<a class="jxr_linenumber" name="47" href="#47">47</a>        setProcId(procId);
-<a class="jxr_linenumber" name="48" href="#48">48</a>      }
-<a class="jxr_linenumber" name="49" href="#49">49</a>  
-<a class="jxr_linenumber" name="50" href="#50">50</a>      @Override
-<a class="jxr_linenumber" name="51" href="#51">51</a>      <strong class="jxr_keyword">protected</strong> Procedure[] execute(Void env) { <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>; }
-<a class="jxr_linenumber" name="52" href="#52">52</a>  
-<a class="jxr_linenumber" name="53" href="#53">53</a>      @Override
-<a class="jxr_linenumber" name="54" href="#54">54</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> rollback(Void env) { <em class="jxr_comment">/*<em class="jxr_comment"> no-op */</em> }</em>
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.testclassification.SmallTests;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.testclassification.MasterTests;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.junit.Assert;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.junit.Test;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.junit.experimental.categories.Category;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.Assert.assertEquals;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.Assert.assertFalse;
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.Assert.assertTrue;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.Assert.fail;
+<a class="jxr_linenumber" name="39" href="#39">39</a>  
+<a class="jxr_linenumber" name="40" href="#40">40</a>  @Category({MasterTests.<strong class="jxr_keyword">class</strong>, SmallTests.<strong class="jxr_keyword">class</strong>})
+<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html">TestProcedureStoreTracker</a> {
+<a class="jxr_linenumber" name="42" href="#42">42</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Log LOG = LogFactory.getLog(TestProcedureStoreTracker.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="43" href="#43">43</a>  
+<a class="jxr_linenumber" name="44" href="#44">44</a>    @Test
+<a class="jxr_linenumber" name="45" href="#45">45</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testSeqInsertAndDelete() {
+<a class="jxr_linenumber" name="46" href="#46">46</a>      ProcedureStoreTracker tracker = <strong class="jxr_keyword">new</strong> ProcedureStoreTracker();
+<a class="jxr_linenumber" name="47" href="#47">47</a>      assertTrue(tracker.isEmpty());
+<a class="jxr_linenumber" name="48" href="#48">48</a>  
+<a class="jxr_linenumber" name="49" href="#49">49</a>      <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> MIN_PROC = 1;
+<a class="jxr_linenumber" name="50" href="#50">50</a>      <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> MAX_PROC = 1 &lt;&lt; 10;
+<a class="jxr_linenumber" name="51" href="#51">51</a>  
+<a class="jxr_linenumber" name="52" href="#52">52</a>      <em class="jxr_comment">// sequential insert</em>
+<a class="jxr_linenumber" name="53" href="#53">53</a>      <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = MIN_PROC; i &lt; MAX_PROC; ++i) {
+<a class="jxr_linenumber" name="54" href="#54">54</a>        tracker.insert(i);
 <a class="jxr_linenumber" name="55" href="#55">55</a>  
-<a class="jxr_linenumber" name="56" href="#56">56</a>      @Override
-<a class="jxr_linenumber" name="57" href="#57">57</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> abort(Void env) { <strong class="jxr_keyword">return</strong> false; }
-<a class="jxr_linenumber" name="58" href="#58">58</a>  
-<a class="jxr_linenumber" name="59" href="#59">59</a>      @Override
-<a class="jxr_linenumber" name="60" href="#60">60</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> serializeStateData(<strong class="jxr_keyword">final</strong> OutputStream stream) { <em class="jxr_comment">/*<em class="jxr_comment"> no-op */</em> }</em>
-<a class="jxr_linenumber" name="61" href="#61">61</a>  
-<a class="jxr_linenumber" name="62" href="#62">62</a>      @Override
-<a class="jxr_linenumber" name="63" href="#63">63</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> deserializeStateData(<strong class="jxr_keyword">final</strong> InputStream stream) { <em class="jxr_comment">/*<em class="jxr_comment"> no-op */</em> }</em>
-<a class="jxr_linenumber" name="64" href="#64">64</a>    }
+<a class="jxr_linenumber" name="56" href="#56">56</a>        <em class="jxr_comment">// All the proc that we inserted should not be deleted</em>
+<a class="jxr_linenumber" name="57" href="#57">57</a>        <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> j = MIN_PROC; j &lt;= i; ++j) {
+<a class="jxr_linenumber" name="58" href="#58">58</a>          assertEquals(ProcedureStoreTracker.DeleteState.NO, tracker.isDeleted(j));
+<a class="jxr_linenumber" name="59" href="#59">59</a>        }
+<a class="jxr_linenumber" name="60" href="#60">60</a>        <em class="jxr_comment">// All the proc that are not yet inserted should be result as deleted</em>
+<a class="jxr_linenumber" name="61" href="#61">61</a>        <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> j = i + 1; j &lt; MAX_PROC; ++j) {
+<a class="jxr_linenumber" name="62" href="#62">62</a>          assertTrue(tracker.isDeleted(j) != ProcedureStoreTracker.DeleteState.NO);
+<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>  
-<a class="jxr_linenumber" name="66" href="#66">66</a>    @Test
-<a class="jxr_linenumber" name="67" href="#67">67</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testSeqInsertAndDelete() {
-<a class="jxr_linenumber" name="68" href="#68">68</a>      ProcedureStoreTracker tracker = <strong class="jxr_keyword">new</strong> ProcedureStoreTracker();
-<a class="jxr_linenumber" name="69" href="#69">69</a>      assertTrue(tracker.isEmpty());
-<a class="jxr_linenumber" name="70" href="#70">70</a>  
-<a class="jxr_linenumber" name="71" href="#71">71</a>      <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> MIN_PROC = 1;
-<a class="jxr_linenumber" name="72" href="#72">72</a>      <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> MAX_PROC = 1 &lt;&lt; 10;
-<a class="jxr_linenumber" name="73" href="#73">73</a>  
-<a class="jxr_linenumber" name="74" href="#74">74</a>      <em class="jxr_comment">// sequential insert</em>
-<a class="jxr_linenumber" name="75" href="#75">75</a>      <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = MIN_PROC; i &lt; MAX_PROC; ++i) {
-<a class="jxr_linenumber" name="76" href="#76">76</a>        tracker.insert(i);
-<a class="jxr_linenumber" name="77" href="#77">77</a>  
-<a class="jxr_linenumber" name="78" href="#78">78</a>        <em class="jxr_comment">// All the proc that we inserted should not be deleted</em>
-<a class="jxr_linenumber" name="79" href="#79">79</a>        <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> j = MIN_PROC; j &lt;= i; ++j) {
-<a class="jxr_linenumber" name="80" href="#80">80</a>          assertEquals(ProcedureStoreTracker.DeleteState.NO, tracker.isDeleted(j));
-<a class="jxr_linenumber" name="81" href="#81">81</a>        }
-<a class="jxr_linenumber" name="82" href="#82">82</a>        <em class="jxr_comment">// All the proc that are not yet inserted should be result as deleted</em>
-<a class="jxr_linenumber" name="83" href="#83">83</a>        <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> j = i + 1; j &lt; MAX_PROC; ++j) {
-<a class="jxr_linenumber" name="84" href="#84">84</a>          assertTrue(tracker.isDeleted(j) != ProcedureStoreTracker.DeleteState.NO);
-<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>      <em class="jxr_comment">// sequential delete</em>
-<a class="jxr_linenumber" name="89" href="#89">89</a>      <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = MIN_PROC; i &lt; MAX_PROC; ++i) {
-<a class="jxr_linenumber" name="90" href="#90">90</a>        tracker.delete(i);
+<a class="jxr_linenumber" name="66" href="#66">66</a>      <em class="jxr_comment">// sequential delete</em>
+<a class="jxr_linenumber" name="67" href="#67">67</a>      <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = MIN_PROC; i &lt; MAX_PROC; ++i) {
+<a class="jxr_linenumber" name="68" href="#68">68</a>        tracker.delete(i);
+<a class="jxr_linenumber" name="69" href="#69">69</a>  
+<a class="jxr_linenumber" name="70" href="#70">70</a>        <em class="jxr_comment">// All the proc that we deleted should be deleted</em>
+<a class="jxr_linenumber" name="71" href="#71">71</a>        <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> j = MIN_PROC; j &lt;= i; ++j) {
+<a class="jxr_linenumber" name="72" href="#72">72</a>          assertEquals(ProcedureStoreTracker.DeleteState.YES, tracker.isDeleted(j));
+<a class="jxr_linenumber" name="73" href="#73">73</a>        }
+<a class="jxr_linenumber" name="74" href="#74">74</a>        <em class="jxr_comment">// All the proc that are not yet deleted should be result as not deleted</em>
+<a class="jxr_linenumber" name="75" href="#75">75</a>        <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> j = i + 1; j &lt; MAX_PROC; ++j) {
+<a class="jxr_linenumber" name="76" href="#76">76</a>          assertEquals(ProcedureStoreTracker.DeleteState.NO, tracker.isDeleted(j));
+<a class="jxr_linenumber" name="77" href="#77">77</a>        }
+<a class="jxr_linenumber" name="78" href="#78">78</a>      }
+<a class="jxr_linenumber" name="79" href="#79">79</a>      assertTrue(tracker.isEmpty());
+<a class="jxr_linenumber" name="80" href="#80">80</a>    }
+<a class="jxr_linenumber" name="81" href="#81">81</a>  
+<a class="jxr_linenumber" name="82" href="#82">82</a>    @Test
+<a class="jxr_linenumber" name="83" href="#83">83</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testPartialTracker() {
+<a class="jxr_linenumber" name="84" href="#84">84</a>      ProcedureStoreTracker tracker = <strong class="jxr_keyword">new</strong> ProcedureStoreTracker();
+<a class="jxr_linenumber" name="85" href="#85">85</a>      tracker.setPartialFlag(<strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="86" href="#86">86</a>  
+<a class="jxr_linenumber" name="87" href="#87">87</a>      <em class="jxr_comment">// nothing in the tracker, the state is unknown</em>
+<a class="jxr_linenumber" name="88" href="#88">88</a>      assertTrue(tracker.isEmpty());
+<a class="jxr_linenumber" name="89" href="#89">89</a>      assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(1));
+<a class="jxr_linenumber" name="90" href="#90">90</a>      assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(579));
 <a class="jxr_linenumber" name="91" href="#91">91</a>  
-<a class="jxr_linenumber" name="92" href="#92">92</a>        <em class="jxr_comment">// All the proc that we deleted should be deleted</em>
-<a class="jxr_linenumber" name="93" href="#93">93</a>        <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> j = MIN_PROC; j &lt;= i; ++j) {
-<a class="jxr_linenumber" name="94" href="#94">94</a>          assertEquals(ProcedureStoreTracker.DeleteState.YES, tracker.isDeleted(j));
-<a class="jxr_linenumber" name="95" href="#95">95</a>        }
-<a class="jxr_linenumber" name="96" href="#96">96</a>        <em class="jxr_comment">// All the proc that are not yet deleted should be result as not deleted</em>
-<a class="jxr_linenumber" name="97" href="#97">97</a>        <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> j = i + 1; j &lt; MAX_PROC; ++j) {
-<a class="jxr_linenumber" name="98" href="#98">98</a>          assertEquals(ProcedureStoreTracker.DeleteState.NO, tracker.isDeleted(j));
-<a class="jxr_linenumber" name="99" href="#99">99</a>        }
-<a class="jxr_linenumber" name="100" href="#100">100</a>     }
-<a class="jxr_linenumber" name="101" href="#101">101</a>     assertTrue(tracker.isEmpty());
-<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> testPartialTracker() {
-<a class="jxr_linenumber" name="106" href="#106">106</a>     ProcedureStoreTracker tracker = <strong class="jxr_keyword">new</strong> ProcedureStoreTracker();
-<a class="jxr_linenumber" name="107" href="#107">107</a>     tracker.setPartialFlag(<strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="108" href="#108">108</a> 
-<a class="jxr_linenumber" name="109" href="#109">109</a>     <em class="jxr_comment">// nothing in the tracker, the state is unknown</em>
-<a class="jxr_linenumber" name="110" href="#110">110</a>     assertTrue(tracker.isEmpty());
-<a class="jxr_linenumber" name="111" href="#111">111</a>     assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(1));
-<a class="jxr_linenumber" name="112" href="#112">112</a>     assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(579));
-<a class="jxr_linenumber" name="113" href="#113">113</a> 
-<a class="jxr_linenumber" name="114" href="#114">114</a>     <em class="jxr_comment">// Mark 1 as deleted, now that is a known state</em>
-<a class="jxr_linenumber" name="115" href="#115">115</a>     tracker.setDeleted(1, <strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="116" href="#116">116</a>     tracker.dump();
-<a class="jxr_linenumber" name="117" href="#117">117</a>     assertEquals(ProcedureStoreTracker.DeleteState.YES, tracker.isDeleted(1));
-<a class="jxr_linenumber" name="118" href="#118">118</a>     assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(2));
-<a class="jxr_linenumber" name="119" href="#119">119</a>     assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(579));
-<a class="jxr_linenumber" name="120" href="#120">120</a> 
-<a class="jxr_linenumber" name="121" href="#121">121</a>     <em class="jxr_comment">// Mark 579 as non-deleted, now that is a known state</em>
-<a class="jxr_linenumber" name="122" href="#122">122</a>     tracker.setDeleted(579, false);
-<a class="jxr_linenumber" name="123" href="#123">123</a>     assertEquals(ProcedureStoreTracker.DeleteState.YES, tracker.isDeleted(1));
-<a class="jxr_linenumber" name="124" href="#124">124</a>     assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(2));
-<a class="jxr_linenumber" name="125" href="#125">125</a>     assertEquals(ProcedureStoreTracker.DeleteState.NO, tracker.isDeleted(579));
-<a class="jxr_linenumber" name="126" href="#126">126</a>     assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(577));
-<a class="jxr_linenumber" name="127" href="#127">127</a>     assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(580));
-<a class="jxr_linenumber" name="128" href="#128">128</a> 
-<a class="jxr_linenumber" name="129" href="#129">129</a>     tracker.setDeleted(579, <strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="130" href="#130">130</a>     tracker.setPartialFlag(false);
-<a class="jxr_linenumber" name="131" href="#131">131</a>     assertTrue(tracker.isEmpty());
-<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> testIsTracking() {
-<a class="jxr_linenumber" name="136" href="#136">136</a>     <strong class="jxr_keyword">long</strong>[][] procIds = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">long</strong>[][] {{4, 7}, {1024, 1027}, {8192, 8194}};
-<a class="jxr_linenumber" name="137" href="#137">137</a>     <strong class="jxr_keyword">long</strong>[][] checkIds = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">long</strong>[][] {{2, 8}, {1023, 1025}, {8193, 8191}};
-<a class="jxr_linenumber" name="138" href="#138">138</a> 
-<a class="jxr_linenumber" name="139" href="#139">139</a>     ProcedureStoreTracker tracker = <strong class="jxr_keyword">new</strong> ProcedureStoreTracker();
-<a class="jxr_linenumber" name="140" href="#140">140</a>     <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; procIds.length; ++i) {
-<a class="jxr_linenumber" name="141" href="#141">141</a>       <strong class="jxr_keyword">long</strong>[] seq = procIds[i];
-<a class="jxr_linenumber" name="142" href="#142">142</a>       tracker.insert(seq[0]);
-<a class="jxr_linenumber" name="143" href="#143">143</a>       tracker.insert(seq[1]);
-<a class="jxr_linenumber" name="144" href="#144">144</a>     }
-<a class="jxr_linenumber" name="145" href="#145">145</a> 
-<a class="jxr_linenumber" name="146" href="#146">146</a>     <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; procIds.length; ++i) {
-<a class="jxr_linenumber" name="147" href="#147">147</a>       <strong class="jxr_keyword">long</strong>[] check = checkIds[i];
-<a class="jxr_linenumber" name="148" href="#148">148</a>       <strong class="jxr_keyword">long</strong>[] seq = procIds[i];
-<a class="jxr_linenumber" name="149" href="#149">149</a>       assertTrue(tracker.isTracking(seq[0], seq[1]));
-<a class="jxr_linenumber" name="150" href="#150">150</a>       assertTrue(tracker.isTracking(check[0], check[1]));
-<a class="jxr_linenumber" name="151" href="#151">151</a>       tracker.delete(seq[0]);
-<a class="jxr_linenumber" name="152" href="#152">152</a>       tracker.delete(seq[1]);
-<a class="jxr_linenumber" name="153" href="#153">153</a>       assertFalse(tracker.isTracking(seq[0], seq[1]));
-<a class="jxr_linenumber" name="154" href="#154">154</a>       assertFalse(tracker.isTracking(check[0], check[1]));
-<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>     assertTrue(tracker.isEmpty());
-<a class="jxr_linenumber" name="158" href="#158">158</a>   }
-<a class="jxr_linenumber" name="159" href="#159">159</a> 
-<a class="jxr_linenumber" name="160" href="#160">160</a>   @Test
-<a class="jxr_linenumber" name="161" href="#161">161</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testBasicCRUD() {
-<a class="jxr_linenumber" name="162" href="#162">162</a>     ProcedureStoreTracker tracker = <strong class="jxr_keyword">new</strong> ProcedureStoreTracker();
-<a class="jxr_linenumber" name="163" href="#163">163</a>     assertTrue(tracker.isEmpty());
-<a class="jxr_linenumber" name="164" href="#164">164</a> 
-<a class="jxr_linenumber" name="165" href="#165">165</a>     Procedure[] procs = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureReplayOrder.html">TestProcedure</a>[] {
-<a class="jxr_linenumber" name="166" href="#166">166</a>       <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureReplayOrder.html">TestProcedure</a>(1), <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureReplayOrder.html">TestProcedure</a>(2), <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureReplayOrder.html">TestProcedure</a>(3),
-<a class="jxr_linenumber" name="167" href="#167">167</a>       <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureReplayOrder.html">TestProcedure</a>(4), <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureReplayOrder.html">TestProcedure</a>(5), <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureReplayOrder.html">TestProcedure</a>(6),
-<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>     tracker.insert(procs[0], <strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="171" href="#171">171</a>     tracker.insert(procs[1], <strong class="jxr_keyword">new</strong> Procedure[] { procs[2], procs[3], procs[4] });
-<a class="jxr_linenumber" name="172" href="#172">172</a>     assertFalse(tracker.isEmpty());
-<a class="jxr_linenumber" name="173" href="#173">173</a>     assertTrue(tracker.isUpdated());
-<a class="jxr_linenumber" name="174" href="#174">174</a> 
-<a class="jxr_linenumber" name="175" href="#175">175</a>     tracker.resetUpdates();
-<a class="jxr_linenumber" name="176" href="#176">176</a>     assertFalse(tracker.isUpdated());
-<a class="jxr_linenumber" name="177" href="#177">177</a> 
-<a class="jxr_linenumber" name="178" href="#178">178</a>     <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; 4; ++i) {
-<a class="jxr_linenumber" name="179" href="#179">179</a>       tracker.update(procs[i]);
-<a class="jxr_linenumber" name="180" href="#180">180</a>       assertFalse(tracker.isEmpty());
-<a class="jxr_linenumber" name="181" href="#181">181</a>       assertFalse(tracker.isUpdated());
-<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>     tracker.update(procs[4]);
-<a class="jxr_linenumber" name="185" href="#185">185</a>     assertFalse(tracker.isEmpty());
-<a class="jxr_linenumber" name="186" href="#186">186</a>     assertTrue(tracker.isUpdated());
-<a class="jxr_linenumber" name="187" href="#187">187</a> 
-<a class="jxr_linenumber" name="188" href="#188">188</a>     tracker.update(procs[5]);
-<a class="jxr_linenumber" name="189" href="#189">189</a>     assertFalse(tracker.isEmpty());
-<a class="jxr_linenumber" name="190" href="#190">190</a>     assertTrue(tracker.isUpdated());
+<a class="jxr_linenumber" name="92" href="#92">92</a>      <em class="jxr_comment">// Mark 1 as deleted, now that is a known state</em>
+<a class="jxr_linenumber" name="93" href="#93">93</a>      tracker.setDeleted(1, <strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="94" href="#94">94</a>      tracker.dump();
+<a class="jxr_linenumber" name="95" href="#95">95</a>      assertEquals(ProcedureStoreTracker.DeleteState.YES, tracker.isDeleted(1));
+<a class="jxr_linenumber" name="96" href="#96">96</a>      assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(2));
+<a class="jxr_linenumber" name="97" href="#97">97</a>      assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(579));
+<a class="jxr_linenumber" name="98" href="#98">98</a>  
+<a class="jxr_linenumber" name="99" href="#99">99</a>      <em class="jxr_comment">// Mark 579 as non-deleted, now that is a known state</em>
+<a class="jxr_linenumber" name="100" href="#100">100</a>     tracker.setDeleted(579, false);
+<a class="jxr_linenumber" name="101" href="#101">101</a>     assertEquals(ProcedureStoreTracker.DeleteState.YES, tracker.isDeleted(1));
+<a class="jxr_linenumber" name="102" href="#102">102</a>     assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(2));
+<a class="jxr_linenumber" name="103" href="#103">103</a>     assertEquals(ProcedureStoreTracker.DeleteState.NO, tracker.isDeleted(579));
+<a class="jxr_linenumber" name="104" href="#104">104</a>     assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(577));
+<a class="jxr_linenumber" name="105" href="#105">105</a>     assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(580));
+<a class="jxr_linenumber" name="106" href="#106">106</a> 
+<a class="jxr_linenumber" name="107" href="#107">107</a>     tracker.setDeleted(579, <strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="108" href="#108">108</a>     tracker.setPartialFlag(false);
+<a class="jxr_linenumber" name="109" href="#109">109</a>     assertTrue(tracker.isEmpty());
+<a class="jxr_linenumber" name="110" href="#110">110</a>   }
+<a class="jxr_linenumber" name="111" href="#111">111</a> 
+<a class="jxr_linenumber" name="112" href="#112">112</a>   @Test
+<a class="jxr_linenumber" name="113" href="#113">113</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testIsTracking() {
+<a class="jxr_linenumber" name="114" href="#114">114</a>     <strong class="jxr_keyword">long</strong>[][] procIds = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">long</strong>[][] {{4, 7}, {1024, 1027}, {8192, 8194}};
+<a class="jxr_linenumber" name="115" href="#115">115</a>     <strong class="jxr_keyword">long</strong>[][] checkIds = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">long</strong>[][] {{2, 8}, {1023, 1025}, {8193, 8191}};
+<a class="jxr_linenumber" name="116" href="#116">116</a> 
+<a class="jxr_linenumber" name="117" href="#117">117</a>     ProcedureStoreTracker tracker = <strong class="jxr_keyword">new</strong> ProcedureStoreTracker();
+<a class="jxr_linenumber" name="118" href="#118">118</a>     <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; procIds.length; ++i) {
+<a class="jxr_linenumber" name="119" href="#119">119</a>       <strong class="jxr_keyword">long</strong>[] seq = procIds[i];
+<a class="jxr_linenumber" name="120" href="#120">120</a>       tracker.insert(seq[0]);
+<a class="jxr_linenumber" name="121" href="#121">121</a>       tracker.insert(seq[1]);
+<a class="jxr_linenumber" name="122" href="#122">122</a>     }
+<a class="jxr_linenumber" name="123" href="#123">123</a> 
+<a class="jxr_linenumber" name="124" href="#124">124</a>     <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; procIds.length; ++i) {
+<a class="jxr_linenumber" name="125" href="#125">125</a>       <strong class="jxr_keyword">long</strong>[] check = checkIds[i];
+<a class="jxr_linenumber" name="126" href="#126">126</a>       <strong class="jxr_keyword">long</strong>[] seq = procIds[i];
+<a class="jxr_linenumber" name="127" href="#127">127</a>       assertTrue(tracker.isTracking(seq[0], seq[1]));
+<a class="jxr_linenumber" name="128" href="#128">128</a>       assertTrue(tracker.isTracking(check[0], check[1]));
+<a class="jxr_linenumber" name="129" href="#129">129</a>       tracker.delete(seq[0]);
+<a class="jxr_linenumber" name="130" href="#130">130</a>       tracker.delete(seq[1]);
+<a class="jxr_linenumber" name="131" href="#131">131</a>       assertFalse(tracker.isTracking(seq[0], seq[1]));
+<a class="jxr_linenumber" name="132" href="#132">132</a>       assertFalse(tracker.isTracking(check[0], check[1]));
+<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>     assertTrue(tracker.isEmpty());
+<a class="jxr_linenumber" name="136" href="#136">136</a>   }
+<a class="jxr_linenumber" name="137" href="#137">137</a> 
+<a class="jxr_linenumber" name="138" href="#138">138</a>   @Test
+<a class="jxr_linenumber" name="139" href="#139">139</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testBasicCRUD() {
+<a class="jxr_linenumber" name="140" href="#140">140</a>     ProcedureStoreTracker tracker = <strong class="jxr_keyword">new</strong> ProcedureStoreTracker();
+<a class="jxr_linenumber" name="141" href="#141">141</a>     assertTrue(tracker.isEmpty());
+<a class="jxr_linenumber" name="142" href="#142">142</a> 
+<a class="jxr_linenumber" name="143" href="#143">143</a>     <strong class="jxr_keyword">long</strong>[] procs = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">long</strong>[] { 1, 2, 3, 4, 5, 6 };
+<a class="jxr_linenumber" name="144" href="#144">144</a> 
+<a class="jxr_linenumber" name="145" href="#145">145</a>     tracker.insert(procs[0]);
+<a class="jxr_linenumber" name="146" href="#146">146</a>     tracker.insert(procs[1], <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">long</strong>[] { procs[2], procs[3], procs[4] });
+<a class="jxr_linenumber" name="147" href="#147">147</a>     assertFalse(tracker.isEmpty());
+<a class="jxr_linenumber" name="148" href="#148">148</a>     assertTrue(tracker.isUpdated());
+<a class="jxr_linenumber" name="149" href="#149">149</a> 
+<a class="jxr_linenumber" name="150" href="#150">150</a>     tracker.resetUpdates();
+<a class="jxr_linenumber" name="151" href="#151">151</a>     assertFalse(tracker.isUpdated());
+<a class="jxr_linenumber" name="152" href="#152">152</a> 
+<a class="jxr_linenumber" name="153" href="#153">153</a>     <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; 4; ++i) {
+<a class="jxr_linenumber" name="154" href="#154">154</a>       tracker.update(procs[i]);
+<a class="jxr_linenumber" name="155" href="#155">155</a>       assertFalse(tracker.isEmpty());
+<a class="jxr_linenumber" name="156" href="#156">156</a>       assertFalse(tracker.isUpdated());
+<a class="jxr_linenumber" name="157" href="#157">157</a>     }
+<a class="jxr_linenumber" name="158" href="#158">158</a> 
+<a class="jxr_linenumber" name="159" href="#159">159</a>     tracker.update(procs[4]);
+<a class="jxr_linenumber" name="160" href="#160">160</a>     assertFalse(tracker.isEmpty());
+<a class="jxr_linenumber" name="161" href="#161">161</a>     assertTrue(tracker.isUpdated());
+<a class="jxr_linenumber" name="162" href="#162">162</a> 
+<a class="jxr_linenumber" name="163" href="#163">163</a>     tracker.update(procs[5]);
+<a class="jxr_linenumber" name="164" href="#164">164</a>     assertFalse(tracker.isEmpty());
+<a class="jxr_linenumber" name="165" href="#165">165</a>     assertTrue(tracker.isUpdated());
+<a class="jxr_linenumber" name="166" href="#166">166</a> 
+<a class="jxr_linenumber" name="167" href="#167">167</a>     <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; 5; ++i) {
+<a class="jxr_linenumber" name="168" href="#168">168</a>       tracker.delete(procs[i]);
+<a class="jxr_linenumber" name="169" href="#169">169</a>       assertFalse(tracker.isEmpty());
+<a class="jxr_linenumber" name="170" href="#170">170</a>       assertTrue(tracker.isUpdated());
+<a class="jxr_linenumber" name="171" href="#171">171</a>     }
+<a class="jxr_linenumber" name="172" href="#172">172</a>     tracker.delete(procs[5]);
+<a class="jxr_linenumber" name="173" href="#173">173</a>     assertTrue(tracker.isEmpty());
+<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>   @Test
+<a class="jxr_linenumber" name="177" href="#177">177</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testRandLoad() {
+<a class="jxr_linenumber" name="178" href="#178">178</a>     <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> NPROCEDURES = 2500;
+<a class="jxr_linenumber" name="179" href="#179">179</a>     <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> NRUNS = 5000;
+<a class="jxr_linenumber" name="180" href="#180">180</a> 
+<a class="jxr_linenumber" name="181" href="#181">181</a>     <strong class="jxr_keyword">final</strong> ProcedureStoreTracker tracker = <strong class="jxr_keyword">new</strong> ProcedureStoreTracker();
+<a class="jxr_linenumber" name="182" href="#182">182</a> 
+<a class="jxr_linenumber" name="183" href="#183">183</a>     Random rand = <strong class="jxr_keyword">new</strong> Random(1);
+<a class="jxr_linenumber" name="184" href="#184">184</a>     <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; NRUNS; ++i) {
+<a class="jxr_linenumber" name="185" href="#185">185</a>       assertTrue(tracker.isEmpty());
+<a class="jxr_linenumber" name="186" href="#186">186</a> 
+<a class="jxr_linenumber" name="187" href="#187">187</a>       <strong class="jxr_keyword">int</strong> count = 0;
+<a class="jxr_linenumber" name="188" href="#188">188</a>       <strong class="jxr_keyword">while</strong> (count &lt; NPROCEDURES) {
+<a class="jxr_linenumber" name="189" href="#189">189</a>         <strong class="jxr_keyword">long</strong> procId = rand.nextLong();
+<a class="jxr_linenumber" name="190" href="#190">190</a>         <strong class="jxr_keyword">if</strong> (procId &lt; 1) <strong class="jxr_keyword">continue</strong>;
 <a class="jxr_linenumber" name="191" href="#191">191</a> 
-<a class="jxr_linenumber" name="192" href="#192">192</a>     <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; 5; ++i) {
-<a class="jxr_linenumber" name="193" href="#193">193</a>       tracker.delete(procs[i].getProcId());
-<a class="jxr_linenumber" name="194" href="#194">194</a>       assertFalse(tracker.isEmpty());
-<a class="jxr_linenumber" name="195" href="#195">195</a>       assertTrue(tracker.isUpdated());
-<a class="jxr_linenumber" name="196" href="#196">196</a>     }
-<a class="jxr_linenumber" name="197" href="#197">197</a>     tracker.delete(procs[5].getProcId());
-<a class="jxr_linenumber" name="198" href="#198">198</a>     assertTrue(tracker.isEmpty());
-<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>   @Test
-<a class="jxr_linenumber" name="202" href="#202">202</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testRandLoad() {
-<a class="jxr_linenumber" name="203" href="#203">203</a>     <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> NPROCEDURES = 2500;
-<a class="jxr_linenumber" name="204" href="#204">204</a>     <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> NRUNS = 5000;
-<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> ProcedureStoreTracker tracker = <strong class="jxr_keyword">new</strong> ProcedureStoreTracker();
+<a class="jxr_linenumber" name="192" href="#192">192</a>         tracker.setDeleted(procId, i % 2 == 0);
+<a class="jxr_linenumber" name="193" href="#193">193</a>         count++;
+<a class="jxr_linenumber" name="194" href="#194">194</a>       }
+<a class="jxr_linenumber" name="195" href="#195">195</a> 
+<a class="jxr_linenumber" name="196" href="#196">196</a>       tracker.clear();
+<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> 
+<a class="jxr_linenumber" name="200" href="#200">200</a>   @Test
+<a class="jxr_linenumber" name="201" href="#201">201</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testLoad() {
+<a class="jxr_linenumber" name="202" href="#202">202</a>     <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> MAX_PROCS = 1000;
+<a class="jxr_linenumber" name="203" href="#203">203</a>     <strong class="jxr_keyword">final</strong> ProcedureStoreTracker tracker = <strong class="jxr_keyword">new</strong> ProcedureStoreTracker();
+<a class="jxr_linenumber" name="204" href="#204">204</a>     <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> numProcs = 1; numProcs &lt; MAX_PROCS; ++numProcs) {
+<a class="jxr_linenumber" name="205" href="#205">205</a>       <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> start = 1; start &lt;= numProcs; ++start) {
+<a class="jxr_linenumber" name="206" href="#206">206</a>         assertTrue(tracker.isEmpty());
 <a class="jxr_linenumber" name="207" href="#207">207</a> 
-<a class="jxr_linenumber" name="208" href="#208">208</a>     Random rand = <strong class="jxr_keyword">new</strong> Random(1);
-<a class="jxr_linenumber" name="209" href="#209">209</a>     <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; NRUNS; ++i) {
-<a class="jxr_linenumber" name="210" href="#210">210</a>       assertTrue(tracker.isEmpty());
-<a class="jxr_linenumber" name="211" href="#211">211</a> 
-<a class="jxr_linenumber" name="212" href="#212">212</a>       <strong class="jxr_keyword">int</strong> count = 0;
-<a class="jxr_linenumber" name="213" href="#213">213</a>       <strong class="jxr_keyword">while</strong> (count &lt; NPROCEDURES) {
-<a class="jxr_linenumber" name="214" href="#214">214</a>         <strong class="jxr_keyword">long</strong> procId = rand.nextLong();
-<a class="jxr_linenumber" name="215" href="#215">215</a>         <strong class="jxr_keyword">if</strong> (procId &lt; 1) <strong class="jxr_keyword">continue</strong>;
-<a class="jxr_linenumber" name="216" href="#216">216</a> 
-<a class="jxr_linenumber" name="217" href="#217">217</a>         tracker.setDeleted(procId, i % 2 == 0);
-<a class="jxr_linenumber" name="218" href="#218">218</a>         count++;
-<a class="jxr_linenumber" name="219" href="#219">219</a>       }
+<a class="jxr_linenumber" name="208" href="#208">208</a>         LOG.debug(<span class="jxr_string">"loading "</span> + numProcs + <span class="jxr_string">" procs from start="</span> + start);
+<a class="jxr_linenumber" name="209" href="#209">209</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = start; i &lt;= numProcs; ++i) {
+<a class="jxr_linenumber" name="210" href="#210">210</a>           tracker.setDeleted(i, false);
+<a class="jxr_linenumber" name="211" href="#211">211</a>         }
+<a class="jxr_linenumber" name="212" href="#212">212</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 1; i &lt; start; ++i) {
+<a class="jxr_linenumber" name="213" href="#213">213</a>           tracker.setDeleted(i, false);
+<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>         tracker.clear();
+<a class="jxr_linenumber" name="217" href="#217">217</a>       }
+<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>       tracker.clear();
-<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="221" href="#221">221</a>   @Test
+<a class="jxr_linenumber" name="222" href="#222">222</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testDelete() {
+<a class="jxr_linenumber" name="223" href="#223">223</a>     <strong class="jxr_keyword">final</strong> ProcedureStoreTracker tracker = <strong class="jxr_keyword">new</strong> ProcedureStoreTracker();
 <a class="jxr_linenumber" name="224" href="#224">224</a> 
-<a class="jxr_linenumber" name="225" href="#225">225</a>   @Test
-<a class="jxr_linenumber" name="226" href="#226">226</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testLoad() {
-<a class="jxr_linenumber" name="227" href="#227">227</a>     <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> MAX_PROCS = 1000;
-<a class="jxr_linenumber" name="228" href="#228">228</a>     <strong class="jxr_keyword">final</strong> ProcedureStoreTracker tracker = <strong class="jxr_keyword">new</strong> ProcedureStoreTracker();
-<a class="jxr_linenumber" name="229" href="#229">229</a>     <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> numProcs = 1; numProcs &lt; MAX_PROCS; ++numProcs) {
-<a class="jxr_linenumber" name="230" href="#230">230</a>       <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> start = 1; start &lt;= numProcs; ++start) {
-<a class="jxr_linenumber" name="231" href="#231">231</a>         assertTrue(tracker.isEmpty());
-<a class="jxr_linenumber" name="232" href="#232">232</a> 
-<a class="jxr_linenumber" name="233" href="#233">233</a>         LOG.debug(<span class="jxr_string">"loading "</span> + numProcs + <span class="jxr_string">" procs from start="</span> + start);
-<a class="jxr_linenumber" name="234" href="#234">234</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = start; i &lt;= numProcs; ++i) {
-<a class="jxr_linenumber" name="235" href="#235">235</a>           tracker.setDeleted(i, false);
-<a class="jxr_linenumber" name="236" href="#236">236</a>         }
-<a class="jxr_linenumber" name="237" href="#237">237</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 1; i &lt; start; ++i) {
-<a class="jxr_linenumber" name="238" href="#238">238</a>           tracker.setDeleted(i, false);
-<a class="jxr_linenumber" name="239" href="#239">239</a>         }
-<a class="jxr_linenumber" name="240" href="#240">240</a> 
-<a class="jxr_linenumber" name="241" href="#241">241</a>         tracker.clear();
-<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>   }
-<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> testDelete() {
-<a class="jxr_linenumber" name="248" href="#248">248</a>     <strong class="jxr_keyword">final</strong> ProcedureStoreTracker tracker = <strong class="jxr_keyword">new</strong> ProcedureStoreTracker();
-<a class="jxr_linenumber" name="249" href="#249">249</a> 
-<a class="jxr_linenumber" name="250" href="#250">250</a>     <strong class="jxr_keyword">long</strong>[] procIds = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">long</strong>[] { 65, 1, 193 };
-<a class="jxr_linenumber" name="251" href="#251">251</a>     <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; procIds.length; ++i) {
-<a class="jxr_linenumber" name="252" href="#252">252</a>       tracker.insert(procIds[i]);
-<a class="jxr_linenumber" name="253" href="#253">253</a>       tracker.dump();
-<a class="jxr_linenumber" name="254" href="#254">254</a>     }
-<a class="jxr_linenumber" name="255" href="#255">255</a> 
-<a class="jxr_linenumber" name="256" href="#256">256</a>     <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; (64 * 4); ++i) {
-<a class="jxr_linenumber" name="257" href="#257">257</a>       <strong class="jxr_keyword">boolean</strong> hasProc = false;
-<a class="jxr_linenumber" name="258" href="#258">258</a>       <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> j = 0; j &lt; procIds.length; ++j) {
-<a class="jxr_linenumber" name="259" href="#259">259</a>         <strong class="jxr_keyword">if</strong> (procIds[j] == i) {
-<a class="jxr_linenumber" name="260" href="#260">260</a>           hasProc = <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="261" href="#261">261</a>           <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="262" href="#262">262</a>         }
-<a class="jxr_linenumber" name="263" href="#263">263</a>       }
-<a class="jxr_linenumber" name="264" href="#264">264</a>       <strong class="jxr_keyword">if</strong> (hasProc) {
-<a class="jxr_linenumber" name="265" href="#265">265</a>         assertEquals(ProcedureStoreTracker.DeleteState.NO, tracker.isDeleted(i));
-<a class="jxr_linenumber" name="266" href="#266">266</a>       } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="267" href="#267">267</a>         assertEquals(<span class="jxr_string">"procId="</span> + i, ProcedureStoreTracker.DeleteState.YES, tracker.isDeleted(i));
-<a class="jxr_linenumber" name="268" href="#268">268</a>       }
-<a class="jxr_linenumber" name="269" href="#269">269</a>     }
-<a class="jxr_linenumber" name="270" href="#270">270</a>   }
-<a class="jxr_linenumber" name="271" href="#271">271</a> }
+<a class="jxr_linenumber" name="225" href="#225">225</a>     <strong class="jxr_keyword">long</strong>[] procIds = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">long</strong>[] { 65, 1, 193 };
+<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; procIds.length; ++i) {
+<a class="jxr_linenumber" name="227" href="#227">227</a>       tracker.insert(procIds[i]);
+<a class="jxr_linenumber" name="228" href="#228">228</a>       tracker.dump();
+<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>     <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; (64 * 4); ++i) {
+<a class="jxr_linenumber" name="232" href="#232">232</a>       <strong class="jxr_keyword">boolean</strong> hasProc = false;
+<a class="jxr_linenumber" name="233" href="#233">233</a>       <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> j = 0; j &lt; procIds.length; ++j) {
+<a class="jxr_linenumber" name="234" href="#234">234</a>         <strong class="jxr_keyword">if</strong> (procIds[j] == i) {
+<a class="jxr_linenumber" name="235" href="#235">235</a>           hasProc = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="236" href="#236">236</a>           <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="237" href="#237">237</a>         }
+<a class="jxr_linenumber" name="238" href="#238">238</a>       }
+<a class="jxr_linenumber" name="239" href="#239">239</a>       <strong class="jxr_keyword">if</strong> (hasProc) {
+<a class="jxr_linenumber" name="240" href="#240">240</a>         assertEquals(ProcedureStoreTracker.DeleteState.NO, tracker.isDeleted(i));
+<a class="jxr_linenumber" name="241" href="#241">241</a>       } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="242" href="#242">242</a>         assertEquals(<span class="jxr_string">"procId="</span> + i, ProcedureStoreTracker.DeleteState.YES, tracker.isDeleted(i));
+<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> }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>


[16/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheViewTmplImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheViewTmplImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheViewTmplImpl.html
index 53a898b..b54add2 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheViewTmplImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheViewTmplImpl.html
@@ -36,7 +36,7 @@
 <span class="sourceLineNo">028</span>// 39, 1<a name="line.28"></a>
 <span class="sourceLineNo">029</span>import org.apache.hadoop.util.StringUtils;<a name="line.29"></a>
 <span class="sourceLineNo">030</span>// 40, 1<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import com.yammer.metrics.stats.Snapshot;<a name="line.31"></a>
+<span class="sourceLineNo">031</span>import com.codahale.metrics.Snapshot;<a name="line.31"></a>
 <span class="sourceLineNo">032</span><a name="line.32"></a>
 <span class="sourceLineNo">033</span>public class BlockCacheViewTmplImpl<a name="line.33"></a>
 <span class="sourceLineNo">034</span>  extends org.jamon.AbstractTemplateImpl<a name="line.34"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/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 75a1f7f..278aefb 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 = "filter", type = "String"),<a name="line.28"></a>
-<span class="sourceLineNo">029</span>    @org.jamon.annotations.Argument(name = "format", type = "String"),<a name="line.29"></a>
-<span class="sourceLineNo">030</span>    @org.jamon.annotations.Argument(name = "bcn", type = "String"),<a name="line.30"></a>
-<span class="sourceLineNo">031</span>    @org.jamon.annotations.Argument(name = "bcv", type = "String")})<a name="line.31"></a>
+<span class="sourceLineNo">028</span>    @org.jamon.annotations.Argument(name = "bcn", type = "String"),<a name="line.28"></a>
+<span class="sourceLineNo">029</span>    @org.jamon.annotations.Argument(name = "bcv", type = "String"),<a name="line.29"></a>
+<span class="sourceLineNo">030</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<a name="line.30"></a>
+<span class="sourceLineNo">031</span>    @org.jamon.annotations.Argument(name = "format", 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>    // 21, 1<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    public void setFilter(String filter)<a name="line.73"></a>
+<span class="sourceLineNo">072</span>    // 23, 1<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    public void setBcn(String bcn)<a name="line.73"></a>
 <span class="sourceLineNo">074</span>    {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      // 21, 1<a name="line.75"></a>
-<span class="sourceLineNo">076</span>      m_filter = filter;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>      m_filter__IsNotDefault = true;<a name="line.77"></a>
+<span class="sourceLineNo">075</span>      // 23, 1<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      m_bcn = bcn;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>      m_bcn__IsNotDefault = true;<a name="line.77"></a>
 <span class="sourceLineNo">078</span>    }<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    public String getFilter()<a name="line.79"></a>
+<span class="sourceLineNo">079</span>    public String getBcn()<a name="line.79"></a>
 <span class="sourceLineNo">080</span>    {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      return m_filter;<a name="line.81"></a>
+<span class="sourceLineNo">081</span>      return m_bcn;<a name="line.81"></a>
 <span class="sourceLineNo">082</span>    }<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    private String m_filter;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    public boolean getFilter__IsNotDefault()<a name="line.84"></a>
+<span class="sourceLineNo">083</span>    private String m_bcn;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    public boolean getBcn__IsNotDefault()<a name="line.84"></a>
 <span class="sourceLineNo">085</span>    {<a name="line.85"></a>
-<span class="sourceLineNo">086</span>      return m_filter__IsNotDefault;<a name="line.86"></a>
+<span class="sourceLineNo">086</span>      return m_bcn__IsNotDefault;<a name="line.86"></a>
 <span class="sourceLineNo">087</span>    }<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    private boolean m_filter__IsNotDefault;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    // 22, 1<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    public void setFormat(String format)<a name="line.90"></a>
+<span class="sourceLineNo">088</span>    private boolean m_bcn__IsNotDefault;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    // 24, 1<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    public void setBcv(String bcv)<a name="line.90"></a>
 <span class="sourceLineNo">091</span>    {<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      // 22, 1<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      m_format = format;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>      m_format__IsNotDefault = true;<a name="line.94"></a>
+<span class="sourceLineNo">092</span>      // 24, 1<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      m_bcv = bcv;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      m_bcv__IsNotDefault = true;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>    }<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    public String getFormat()<a name="line.96"></a>
+<span class="sourceLineNo">096</span>    public String getBcv()<a name="line.96"></a>
 <span class="sourceLineNo">097</span>    {<a name="line.97"></a>
-<span class="sourceLineNo">098</span>      return m_format;<a name="line.98"></a>
+<span class="sourceLineNo">098</span>      return m_bcv;<a name="line.98"></a>
 <span class="sourceLineNo">099</span>    }<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    private String m_format;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    public boolean getFormat__IsNotDefault()<a name="line.101"></a>
+<span class="sourceLineNo">100</span>    private String m_bcv;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    public boolean getBcv__IsNotDefault()<a name="line.101"></a>
 <span class="sourceLineNo">102</span>    {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      return m_format__IsNotDefault;<a name="line.103"></a>
+<span class="sourceLineNo">103</span>      return m_bcv__IsNotDefault;<a name="line.103"></a>
 <span class="sourceLineNo">104</span>    }<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    private boolean m_format__IsNotDefault;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    // 23, 1<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    public void setBcn(String bcn)<a name="line.107"></a>
+<span class="sourceLineNo">105</span>    private boolean m_bcv__IsNotDefault;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    // 21, 1<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    public void setFilter(String filter)<a name="line.107"></a>
 <span class="sourceLineNo">108</span>    {<a name="line.108"></a>
-<span class="sourceLineNo">109</span>      // 23, 1<a name="line.109"></a>
-<span class="sourceLineNo">110</span>      m_bcn = bcn;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      m_bcn__IsNotDefault = true;<a name="line.111"></a>
+<span class="sourceLineNo">109</span>      // 21, 1<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      m_filter = filter;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      m_filter__IsNotDefault = true;<a name="line.111"></a>
 <span class="sourceLineNo">112</span>    }<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    public String getBcn()<a name="line.113"></a>
+<span class="sourceLineNo">113</span>    public String getFilter()<a name="line.113"></a>
 <span class="sourceLineNo">114</span>    {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      return m_bcn;<a name="line.115"></a>
+<span class="sourceLineNo">115</span>      return m_filter;<a name="line.115"></a>
 <span class="sourceLineNo">116</span>    }<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    private String m_bcn;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    public boolean getBcn__IsNotDefault()<a name="line.118"></a>
+<span class="sourceLineNo">117</span>    private String m_filter;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    public boolean getFilter__IsNotDefault()<a name="line.118"></a>
 <span class="sourceLineNo">119</span>    {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      return m_bcn__IsNotDefault;<a name="line.120"></a>
+<span class="sourceLineNo">120</span>      return m_filter__IsNotDefault;<a name="line.120"></a>
 <span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    private boolean m_bcn__IsNotDefault;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    // 24, 1<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    public void setBcv(String bcv)<a name="line.124"></a>
+<span class="sourceLineNo">122</span>    private boolean m_filter__IsNotDefault;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    // 22, 1<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    public void setFormat(String format)<a name="line.124"></a>
 <span class="sourceLineNo">125</span>    {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      // 24, 1<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      m_bcv = bcv;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      m_bcv__IsNotDefault = true;<a name="line.128"></a>
+<span class="sourceLineNo">126</span>      // 22, 1<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      m_format = format;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      m_format__IsNotDefault = true;<a name="line.128"></a>
 <span class="sourceLineNo">129</span>    }<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    public String getBcv()<a name="line.130"></a>
+<span class="sourceLineNo">130</span>    public String getFormat()<a name="line.130"></a>
 <span class="sourceLineNo">131</span>    {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      return m_bcv;<a name="line.132"></a>
+<span class="sourceLineNo">132</span>      return m_format;<a name="line.132"></a>
 <span class="sourceLineNo">133</span>    }<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    private String m_bcv;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    public boolean getBcv__IsNotDefault()<a name="line.135"></a>
+<span class="sourceLineNo">134</span>    private String m_format;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    public boolean getFormat__IsNotDefault()<a name="line.135"></a>
 <span class="sourceLineNo">136</span>    {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      return m_bcv__IsNotDefault;<a name="line.137"></a>
+<span class="sourceLineNo">137</span>      return m_format__IsNotDefault;<a name="line.137"></a>
 <span class="sourceLineNo">138</span>    }<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    private boolean m_bcv__IsNotDefault;<a name="line.139"></a>
+<span class="sourceLineNo">139</span>    private boolean m_format__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 filter;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFilter(String p_filter)<a name="line.152"></a>
+<span class="sourceLineNo">151</span>  protected String bcn;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcn(String p_bcn)<a name="line.152"></a>
 <span class="sourceLineNo">153</span>  {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    (getImplData()).setFilter(p_filter);<a name="line.154"></a>
+<span class="sourceLineNo">154</span>    (getImplData()).setBcn(p_bcn);<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 format;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFormat(String p_format)<a name="line.159"></a>
+<span class="sourceLineNo">158</span>  protected String bcv;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcv(String p_bcv)<a name="line.159"></a>
 <span class="sourceLineNo">160</span>  {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    (getImplData()).setFormat(p_format);<a name="line.161"></a>
+<span class="sourceLineNo">161</span>    (getImplData()).setBcv(p_bcv);<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 bcn;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcn(String p_bcn)<a name="line.166"></a>
+<span class="sourceLineNo">165</span>  protected String filter;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFilter(String p_filter)<a name="line.166"></a>
 <span class="sourceLineNo">167</span>  {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    (getImplData()).setBcn(p_bcn);<a name="line.168"></a>
+<span class="sourceLineNo">168</span>    (getImplData()).setFilter(p_filter);<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 bcv;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcv(String p_bcv)<a name="line.173"></a>
+<span class="sourceLineNo">172</span>  protected String format;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFormat(String p_format)<a name="line.173"></a>
 <span class="sourceLineNo">174</span>  {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    (getImplData()).setBcv(p_bcv);<a name="line.175"></a>
+<span class="sourceLineNo">175</span>    (getImplData()).setFormat(p_format);<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/539ad177/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 75a1f7f..278aefb 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 = "filter", type = "String"),<a name="line.28"></a>
-<span class="sourceLineNo">029</span>    @org.jamon.annotations.Argument(name = "format", type = "String"),<a name="line.29"></a>
-<span class="sourceLineNo">030</span>    @org.jamon.annotations.Argument(name = "bcn", type = "String"),<a name="line.30"></a>
-<span class="sourceLineNo">031</span>    @org.jamon.annotations.Argument(name = "bcv", type = "String")})<a name="line.31"></a>
+<span class="sourceLineNo">028</span>    @org.jamon.annotations.Argument(name = "bcn", type = "String"),<a name="line.28"></a>
+<span class="sourceLineNo">029</span>    @org.jamon.annotations.Argument(name = "bcv", type = "String"),<a name="line.29"></a>
+<span class="sourceLineNo">030</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<a name="line.30"></a>
+<span class="sourceLineNo">031</span>    @org.jamon.annotations.Argument(name = "format", 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>    // 21, 1<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    public void setFilter(String filter)<a name="line.73"></a>
+<span class="sourceLineNo">072</span>    // 23, 1<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    public void setBcn(String bcn)<a name="line.73"></a>
 <span class="sourceLineNo">074</span>    {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      // 21, 1<a name="line.75"></a>
-<span class="sourceLineNo">076</span>      m_filter = filter;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>      m_filter__IsNotDefault = true;<a name="line.77"></a>
+<span class="sourceLineNo">075</span>      // 23, 1<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      m_bcn = bcn;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>      m_bcn__IsNotDefault = true;<a name="line.77"></a>
 <span class="sourceLineNo">078</span>    }<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    public String getFilter()<a name="line.79"></a>
+<span class="sourceLineNo">079</span>    public String getBcn()<a name="line.79"></a>
 <span class="sourceLineNo">080</span>    {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      return m_filter;<a name="line.81"></a>
+<span class="sourceLineNo">081</span>      return m_bcn;<a name="line.81"></a>
 <span class="sourceLineNo">082</span>    }<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    private String m_filter;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    public boolean getFilter__IsNotDefault()<a name="line.84"></a>
+<span class="sourceLineNo">083</span>    private String m_bcn;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    public boolean getBcn__IsNotDefault()<a name="line.84"></a>
 <span class="sourceLineNo">085</span>    {<a name="line.85"></a>
-<span class="sourceLineNo">086</span>      return m_filter__IsNotDefault;<a name="line.86"></a>
+<span class="sourceLineNo">086</span>      return m_bcn__IsNotDefault;<a name="line.86"></a>
 <span class="sourceLineNo">087</span>    }<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    private boolean m_filter__IsNotDefault;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    // 22, 1<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    public void setFormat(String format)<a name="line.90"></a>
+<span class="sourceLineNo">088</span>    private boolean m_bcn__IsNotDefault;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    // 24, 1<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    public void setBcv(String bcv)<a name="line.90"></a>
 <span class="sourceLineNo">091</span>    {<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      // 22, 1<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      m_format = format;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>      m_format__IsNotDefault = true;<a name="line.94"></a>
+<span class="sourceLineNo">092</span>      // 24, 1<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      m_bcv = bcv;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      m_bcv__IsNotDefault = true;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>    }<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    public String getFormat()<a name="line.96"></a>
+<span class="sourceLineNo">096</span>    public String getBcv()<a name="line.96"></a>
 <span class="sourceLineNo">097</span>    {<a name="line.97"></a>
-<span class="sourceLineNo">098</span>      return m_format;<a name="line.98"></a>
+<span class="sourceLineNo">098</span>      return m_bcv;<a name="line.98"></a>
 <span class="sourceLineNo">099</span>    }<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    private String m_format;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    public boolean getFormat__IsNotDefault()<a name="line.101"></a>
+<span class="sourceLineNo">100</span>    private String m_bcv;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    public boolean getBcv__IsNotDefault()<a name="line.101"></a>
 <span class="sourceLineNo">102</span>    {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      return m_format__IsNotDefault;<a name="line.103"></a>
+<span class="sourceLineNo">103</span>      return m_bcv__IsNotDefault;<a name="line.103"></a>
 <span class="sourceLineNo">104</span>    }<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    private boolean m_format__IsNotDefault;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    // 23, 1<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    public void setBcn(String bcn)<a name="line.107"></a>
+<span class="sourceLineNo">105</span>    private boolean m_bcv__IsNotDefault;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    // 21, 1<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    public void setFilter(String filter)<a name="line.107"></a>
 <span class="sourceLineNo">108</span>    {<a name="line.108"></a>
-<span class="sourceLineNo">109</span>      // 23, 1<a name="line.109"></a>
-<span class="sourceLineNo">110</span>      m_bcn = bcn;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      m_bcn__IsNotDefault = true;<a name="line.111"></a>
+<span class="sourceLineNo">109</span>      // 21, 1<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      m_filter = filter;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      m_filter__IsNotDefault = true;<a name="line.111"></a>
 <span class="sourceLineNo">112</span>    }<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    public String getBcn()<a name="line.113"></a>
+<span class="sourceLineNo">113</span>    public String getFilter()<a name="line.113"></a>
 <span class="sourceLineNo">114</span>    {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      return m_bcn;<a name="line.115"></a>
+<span class="sourceLineNo">115</span>      return m_filter;<a name="line.115"></a>
 <span class="sourceLineNo">116</span>    }<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    private String m_bcn;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    public boolean getBcn__IsNotDefault()<a name="line.118"></a>
+<span class="sourceLineNo">117</span>    private String m_filter;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    public boolean getFilter__IsNotDefault()<a name="line.118"></a>
 <span class="sourceLineNo">119</span>    {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      return m_bcn__IsNotDefault;<a name="line.120"></a>
+<span class="sourceLineNo">120</span>      return m_filter__IsNotDefault;<a name="line.120"></a>
 <span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    private boolean m_bcn__IsNotDefault;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    // 24, 1<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    public void setBcv(String bcv)<a name="line.124"></a>
+<span class="sourceLineNo">122</span>    private boolean m_filter__IsNotDefault;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    // 22, 1<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    public void setFormat(String format)<a name="line.124"></a>
 <span class="sourceLineNo">125</span>    {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      // 24, 1<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      m_bcv = bcv;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      m_bcv__IsNotDefault = true;<a name="line.128"></a>
+<span class="sourceLineNo">126</span>      // 22, 1<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      m_format = format;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      m_format__IsNotDefault = true;<a name="line.128"></a>
 <span class="sourceLineNo">129</span>    }<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    public String getBcv()<a name="line.130"></a>
+<span class="sourceLineNo">130</span>    public String getFormat()<a name="line.130"></a>
 <span class="sourceLineNo">131</span>    {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      return m_bcv;<a name="line.132"></a>
+<span class="sourceLineNo">132</span>      return m_format;<a name="line.132"></a>
 <span class="sourceLineNo">133</span>    }<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    private String m_bcv;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    public boolean getBcv__IsNotDefault()<a name="line.135"></a>
+<span class="sourceLineNo">134</span>    private String m_format;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    public boolean getFormat__IsNotDefault()<a name="line.135"></a>
 <span class="sourceLineNo">136</span>    {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      return m_bcv__IsNotDefault;<a name="line.137"></a>
+<span class="sourceLineNo">137</span>      return m_format__IsNotDefault;<a name="line.137"></a>
 <span class="sourceLineNo">138</span>    }<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    private boolean m_bcv__IsNotDefault;<a name="line.139"></a>
+<span class="sourceLineNo">139</span>    private boolean m_format__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 filter;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFilter(String p_filter)<a name="line.152"></a>
+<span class="sourceLineNo">151</span>  protected String bcn;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcn(String p_bcn)<a name="line.152"></a>
 <span class="sourceLineNo">153</span>  {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    (getImplData()).setFilter(p_filter);<a name="line.154"></a>
+<span class="sourceLineNo">154</span>    (getImplData()).setBcn(p_bcn);<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 format;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFormat(String p_format)<a name="line.159"></a>
+<span class="sourceLineNo">158</span>  protected String bcv;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcv(String p_bcv)<a name="line.159"></a>
 <span class="sourceLineNo">160</span>  {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    (getImplData()).setFormat(p_format);<a name="line.161"></a>
+<span class="sourceLineNo">161</span>    (getImplData()).setBcv(p_bcv);<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 bcn;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcn(String p_bcn)<a name="line.166"></a>
+<span class="sourceLineNo">165</span>  protected String filter;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFilter(String p_filter)<a name="line.166"></a>
 <span class="sourceLineNo">167</span>  {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    (getImplData()).setBcn(p_bcn);<a name="line.168"></a>
+<span class="sourceLineNo">168</span>    (getImplData()).setFilter(p_filter);<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 bcv;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcv(String p_bcv)<a name="line.173"></a>
+<span class="sourceLineNo">172</span>  protected String format;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFormat(String p_format)<a name="line.173"></a>
 <span class="sourceLineNo">174</span>  {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    (getImplData()).setBcv(p_bcv);<a name="line.175"></a>
+<span class="sourceLineNo">175</span>    (getImplData()).setFormat(p_format);<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/539ad177/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 75a1f7f..278aefb 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 = "filter", type = "String"),<a name="line.28"></a>
-<span class="sourceLineNo">029</span>    @org.jamon.annotations.Argument(name = "format", type = "String"),<a name="line.29"></a>
-<span class="sourceLineNo">030</span>    @org.jamon.annotations.Argument(name = "bcn", type = "String"),<a name="line.30"></a>
-<span class="sourceLineNo">031</span>    @org.jamon.annotations.Argument(name = "bcv", type = "String")})<a name="line.31"></a>
+<span class="sourceLineNo">028</span>    @org.jamon.annotations.Argument(name = "bcn", type = "String"),<a name="line.28"></a>
+<span class="sourceLineNo">029</span>    @org.jamon.annotations.Argument(name = "bcv", type = "String"),<a name="line.29"></a>
+<span class="sourceLineNo">030</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<a name="line.30"></a>
+<span class="sourceLineNo">031</span>    @org.jamon.annotations.Argument(name = "format", 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>    // 21, 1<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    public void setFilter(String filter)<a name="line.73"></a>
+<span class="sourceLineNo">072</span>    // 23, 1<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    public void setBcn(String bcn)<a name="line.73"></a>
 <span class="sourceLineNo">074</span>    {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      // 21, 1<a name="line.75"></a>
-<span class="sourceLineNo">076</span>      m_filter = filter;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>      m_filter__IsNotDefault = true;<a name="line.77"></a>
+<span class="sourceLineNo">075</span>      // 23, 1<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      m_bcn = bcn;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>      m_bcn__IsNotDefault = true;<a name="line.77"></a>
 <span class="sourceLineNo">078</span>    }<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    public String getFilter()<a name="line.79"></a>
+<span class="sourceLineNo">079</span>    public String getBcn()<a name="line.79"></a>
 <span class="sourceLineNo">080</span>    {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      return m_filter;<a name="line.81"></a>
+<span class="sourceLineNo">081</span>      return m_bcn;<a name="line.81"></a>
 <span class="sourceLineNo">082</span>    }<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    private String m_filter;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    public boolean getFilter__IsNotDefault()<a name="line.84"></a>
+<span class="sourceLineNo">083</span>    private String m_bcn;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    public boolean getBcn__IsNotDefault()<a name="line.84"></a>
 <span class="sourceLineNo">085</span>    {<a name="line.85"></a>
-<span class="sourceLineNo">086</span>      return m_filter__IsNotDefault;<a name="line.86"></a>
+<span class="sourceLineNo">086</span>      return m_bcn__IsNotDefault;<a name="line.86"></a>
 <span class="sourceLineNo">087</span>    }<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    private boolean m_filter__IsNotDefault;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    // 22, 1<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    public void setFormat(String format)<a name="line.90"></a>
+<span class="sourceLineNo">088</span>    private boolean m_bcn__IsNotDefault;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    // 24, 1<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    public void setBcv(String bcv)<a name="line.90"></a>
 <span class="sourceLineNo">091</span>    {<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      // 22, 1<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      m_format = format;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>      m_format__IsNotDefault = true;<a name="line.94"></a>
+<span class="sourceLineNo">092</span>      // 24, 1<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      m_bcv = bcv;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      m_bcv__IsNotDefault = true;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>    }<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    public String getFormat()<a name="line.96"></a>
+<span class="sourceLineNo">096</span>    public String getBcv()<a name="line.96"></a>
 <span class="sourceLineNo">097</span>    {<a name="line.97"></a>
-<span class="sourceLineNo">098</span>      return m_format;<a name="line.98"></a>
+<span class="sourceLineNo">098</span>      return m_bcv;<a name="line.98"></a>
 <span class="sourceLineNo">099</span>    }<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    private String m_format;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    public boolean getFormat__IsNotDefault()<a name="line.101"></a>
+<span class="sourceLineNo">100</span>    private String m_bcv;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    public boolean getBcv__IsNotDefault()<a name="line.101"></a>
 <span class="sourceLineNo">102</span>    {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      return m_format__IsNotDefault;<a name="line.103"></a>
+<span class="sourceLineNo">103</span>      return m_bcv__IsNotDefault;<a name="line.103"></a>
 <span class="sourceLineNo">104</span>    }<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    private boolean m_format__IsNotDefault;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    // 23, 1<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    public void setBcn(String bcn)<a name="line.107"></a>
+<span class="sourceLineNo">105</span>    private boolean m_bcv__IsNotDefault;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    // 21, 1<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    public void setFilter(String filter)<a name="line.107"></a>
 <span class="sourceLineNo">108</span>    {<a name="line.108"></a>
-<span class="sourceLineNo">109</span>      // 23, 1<a name="line.109"></a>
-<span class="sourceLineNo">110</span>      m_bcn = bcn;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      m_bcn__IsNotDefault = true;<a name="line.111"></a>
+<span class="sourceLineNo">109</span>      // 21, 1<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      m_filter = filter;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      m_filter__IsNotDefault = true;<a name="line.111"></a>
 <span class="sourceLineNo">112</span>    }<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    public String getBcn()<a name="line.113"></a>
+<span class="sourceLineNo">113</span>    public String getFilter()<a name="line.113"></a>
 <span class="sourceLineNo">114</span>    {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      return m_bcn;<a name="line.115"></a>
+<span class="sourceLineNo">115</span>      return m_filter;<a name="line.115"></a>
 <span class="sourceLineNo">116</span>    }<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    private String m_bcn;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    public boolean getBcn__IsNotDefault()<a name="line.118"></a>
+<span class="sourceLineNo">117</span>    private String m_filter;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    public boolean getFilter__IsNotDefault()<a name="line.118"></a>
 <span class="sourceLineNo">119</span>    {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      return m_bcn__IsNotDefault;<a name="line.120"></a>
+<span class="sourceLineNo">120</span>      return m_filter__IsNotDefault;<a name="line.120"></a>
 <span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    private boolean m_bcn__IsNotDefault;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    // 24, 1<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    public void setBcv(String bcv)<a name="line.124"></a>
+<span class="sourceLineNo">122</span>    private boolean m_filter__IsNotDefault;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    // 22, 1<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    public void setFormat(String format)<a name="line.124"></a>
 <span class="sourceLineNo">125</span>    {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      // 24, 1<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      m_bcv = bcv;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      m_bcv__IsNotDefault = true;<a name="line.128"></a>
+<span class="sourceLineNo">126</span>      // 22, 1<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      m_format = format;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      m_format__IsNotDefault = true;<a name="line.128"></a>
 <span class="sourceLineNo">129</span>    }<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    public String getBcv()<a name="line.130"></a>
+<span class="sourceLineNo">130</span>    public String getFormat()<a name="line.130"></a>
 <span class="sourceLineNo">131</span>    {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      return m_bcv;<a name="line.132"></a>
+<span class="sourceLineNo">132</span>      return m_format;<a name="line.132"></a>
 <span class="sourceLineNo">133</span>    }<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    private String m_bcv;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    public boolean getBcv__IsNotDefault()<a name="line.135"></a>
+<span class="sourceLineNo">134</span>    private String m_format;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    public boolean getFormat__IsNotDefault()<a name="line.135"></a>
 <span class="sourceLineNo">136</span>    {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      return m_bcv__IsNotDefault;<a name="line.137"></a>
+<span class="sourceLineNo">137</span>      return m_format__IsNotDefault;<a name="line.137"></a>
 <span class="sourceLineNo">138</span>    }<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    private boolean m_bcv__IsNotDefault;<a name="line.139"></a>
+<span class="sourceLineNo">139</span>    private boolean m_format__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 filter;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFilter(String p_filter)<a name="line.152"></a>
+<span class="sourceLineNo">151</span>  protected String bcn;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcn(String p_bcn)<a name="line.152"></a>
 <span class="sourceLineNo">153</span>  {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    (getImplData()).setFilter(p_filter);<a name="line.154"></a>
+<span class="sourceLineNo">154</span>    (getImplData()).setBcn(p_bcn);<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 format;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFormat(String p_format)<a name="line.159"></a>
+<span class="sourceLineNo">158</span>  protected String bcv;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcv(String p_bcv)<a name="line.159"></a>
 <span class="sourceLineNo">160</span>  {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    (getImplData()).setFormat(p_format);<a name="line.161"></a>
+<span class="sourceLineNo">161</span>    (getImplData()).setBcv(p_bcv);<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 bcn;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcn(String p_bcn)<a name="line.166"></a>
+<span class="sourceLineNo">165</span>  protected String filter;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFilter(String p_filter)<a name="line.166"></a>
 <span class="sourceLineNo">167</span>  {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    (getImplData()).setBcn(p_bcn);<a name="line.168"></a>
+<span class="sourceLineNo">168</span>    (getImplData()).setFilter(p_filter);<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 bcv;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcv(String p_bcv)<a name="line.173"></a>
+<span class="sourceLineNo">172</span>  protected String format;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFormat(String p_format)<a name="line.173"></a>
 <span class="sourceLineNo">174</span>  {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    (getImplData()).setBcv(p_bcv);<a name="line.175"></a>
+<span class="sourceLineNo">175</span>    (getImplData()).setFormat(p_format);<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/539ad177/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 0d91abb..57b8d51 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 filter;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>  private final String format;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>  private final String bcn;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>  private final String bcv;<a name="line.32"></a>
+<span class="sourceLineNo">029</span>  private final String bcn;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>  private final String bcv;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>  private final String filter;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>  private final String format;<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.getFilter__IsNotDefault())<a name="line.35"></a>
+<span class="sourceLineNo">035</span>    if(! p_implData.getBcn__IsNotDefault())<a name="line.35"></a>
 <span class="sourceLineNo">036</span>    {<a name="line.36"></a>
-<span class="sourceLineNo">037</span>      p_implData.setFilter("general");<a name="line.37"></a>
+<span class="sourceLineNo">037</span>      p_implData.setBcn("");<a name="line.37"></a>
 <span class="sourceLineNo">038</span>    }<a name="line.38"></a>
-<span class="sourceLineNo">039</span>    if(! p_implData.getFormat__IsNotDefault())<a name="line.39"></a>
+<span class="sourceLineNo">039</span>    if(! p_implData.getBcv__IsNotDefault())<a name="line.39"></a>
 <span class="sourceLineNo">040</span>    {<a name="line.40"></a>
-<span class="sourceLineNo">041</span>      p_implData.setFormat("html");<a name="line.41"></a>
+<span class="sourceLineNo">041</span>      p_implData.setBcv("");<a name="line.41"></a>
 <span class="sourceLineNo">042</span>    }<a name="line.42"></a>
-<span class="sourceLineNo">043</span>    if(! p_implData.getBcn__IsNotDefault())<a name="line.43"></a>
+<span class="sourceLineNo">043</span>    if(! p_implData.getFilter__IsNotDefault())<a name="line.43"></a>
 <span class="sourceLineNo">044</span>    {<a name="line.44"></a>
-<span class="sourceLineNo">045</span>      p_implData.setBcn("");<a name="line.45"></a>
+<span class="sourceLineNo">045</span>      p_implData.setFilter("general");<a name="line.45"></a>
 <span class="sourceLineNo">046</span>    }<a name="line.46"></a>
-<span class="sourceLineNo">047</span>    if(! p_implData.getBcv__IsNotDefault())<a name="line.47"></a>
+<span class="sourceLineNo">047</span>    if(! p_implData.getFormat__IsNotDefault())<a name="line.47"></a>
 <span class="sourceLineNo">048</span>    {<a name="line.48"></a>
-<span class="sourceLineNo">049</span>      p_implData.setBcv("");<a name="line.49"></a>
+<span class="sourceLineNo">049</span>      p_implData.setFormat("html");<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>    filter = p_implData.getFilter();<a name="line.57"></a>
-<span class="sourceLineNo">058</span>    format = p_implData.getFormat();<a name="line.58"></a>
-<span class="sourceLineNo">059</span>    bcn = p_implData.getBcn();<a name="line.59"></a>
-<span class="sourceLineNo">060</span>    bcv = p_implData.getBcv();<a name="line.60"></a>
+<span class="sourceLineNo">057</span>    bcn = p_implData.getBcn();<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    bcv = p_implData.getBcv();<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    filter = p_implData.getFilter();<a name="line.59"></a>
+<span class="sourceLineNo">060</span>    format = p_implData.getFormat();<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/539ad177/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.ImplData.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.ImplData.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.ImplData.html
index 80c6bd7..00d7a34 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.ImplData.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.ImplData.html
@@ -36,7 +36,7 @@
 <span class="sourceLineNo">028</span>// 34, 1<a name="line.28"></a>
 <span class="sourceLineNo">029</span>import org.apache.hadoop.util.StringUtils;<a name="line.29"></a>
 <span class="sourceLineNo">030</span>// 35, 1<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import com.yammer.metrics.stats.Snapshot;<a name="line.31"></a>
+<span class="sourceLineNo">031</span>import com.codahale.metrics.Snapshot;<a name="line.31"></a>
 <span class="sourceLineNo">032</span>// 36, 1<a name="line.32"></a>
 <span class="sourceLineNo">033</span>import java.lang.management.ManagementFactory;<a name="line.33"></a>
 <span class="sourceLineNo">034</span><a name="line.34"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.Intf.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.Intf.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.Intf.html
index 80c6bd7..00d7a34 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.Intf.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.Intf.html
@@ -36,7 +36,7 @@
 <span class="sourceLineNo">028</span>// 34, 1<a name="line.28"></a>
 <span class="sourceLineNo">029</span>import org.apache.hadoop.util.StringUtils;<a name="line.29"></a>
 <span class="sourceLineNo">030</span>// 35, 1<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import com.yammer.metrics.stats.Snapshot;<a name="line.31"></a>
+<span class="sourceLineNo">031</span>import com.codahale.metrics.Snapshot;<a name="line.31"></a>
 <span class="sourceLineNo">032</span>// 36, 1<a name="line.32"></a>
 <span class="sourceLineNo">033</span>import java.lang.management.ManagementFactory;<a name="line.33"></a>
 <span class="sourceLineNo">034</span><a name="line.34"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.html
index 80c6bd7..00d7a34 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.html
@@ -36,7 +36,7 @@
 <span class="sourceLineNo">028</span>// 34, 1<a name="line.28"></a>
 <span class="sourceLineNo">029</span>import org.apache.hadoop.util.StringUtils;<a name="line.29"></a>
 <span class="sourceLineNo">030</span>// 35, 1<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import com.yammer.metrics.stats.Snapshot;<a name="line.31"></a>
+<span class="sourceLineNo">031</span>import com.codahale.metrics.Snapshot;<a name="line.31"></a>
 <span class="sourceLineNo">032</span>// 36, 1<a name="line.32"></a>
 <span class="sourceLineNo">033</span>import java.lang.management.ManagementFactory;<a name="line.33"></a>
 <span class="sourceLineNo">034</span><a name="line.34"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmplImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmplImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmplImpl.html
index 52b907c..55e5e05 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmplImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmplImpl.html
@@ -36,7 +36,7 @@
 <span class="sourceLineNo">028</span>// 34, 1<a name="line.28"></a>
 <span class="sourceLineNo">029</span>import org.apache.hadoop.util.StringUtils;<a name="line.29"></a>
 <span class="sourceLineNo">030</span>// 35, 1<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import com.yammer.metrics.stats.Snapshot;<a name="line.31"></a>
+<span class="sourceLineNo">031</span>import com.codahale.metrics.Snapshot;<a name="line.31"></a>
 <span class="sourceLineNo">032</span>// 36, 1<a name="line.32"></a>
 <span class="sourceLineNo">033</span>import java.lang.management.ManagementFactory;<a name="line.33"></a>
 <span class="sourceLineNo">034</span><a name="line.34"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/src-html/org/apache/hadoop/hbase/util/YammerHistogramUtils.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/util/YammerHistogramUtils.html b/devapidocs/src-html/org/apache/hadoop/hbase/util/YammerHistogramUtils.html
index 1194eac..3c5e5a7 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/util/YammerHistogramUtils.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/util/YammerHistogramUtils.html
@@ -26,9 +26,9 @@
 <span class="sourceLineNo">018</span> */<a name="line.18"></a>
 <span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.util;<a name="line.19"></a>
 <span class="sourceLineNo">020</span><a name="line.20"></a>
-<span class="sourceLineNo">021</span>import com.yammer.metrics.core.Histogram;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import com.yammer.metrics.stats.Sample;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import com.yammer.metrics.stats.Snapshot;<a name="line.23"></a>
+<span class="sourceLineNo">021</span>import com.codahale.metrics.Histogram;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import com.codahale.metrics.Reservoir;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import com.codahale.metrics.Snapshot;<a name="line.23"></a>
 <span class="sourceLineNo">024</span><a name="line.24"></a>
 <span class="sourceLineNo">025</span>import java.lang.reflect.Constructor;<a name="line.25"></a>
 <span class="sourceLineNo">026</span>import java.text.DecimalFormat;<a name="line.26"></a>
@@ -45,13 +45,13 @@
 <span class="sourceLineNo">037</span>  private static DecimalFormat DOUBLE_FORMAT = new DecimalFormat("#0.00");<a name="line.37"></a>
 <span class="sourceLineNo">038</span><a name="line.38"></a>
 <span class="sourceLineNo">039</span>  /**<a name="line.39"></a>
-<span class="sourceLineNo">040</span>   * Create a new {@link com.yammer.metrics.core.Histogram} instance. These constructors are<a name="line.40"></a>
+<span class="sourceLineNo">040</span>   * Create a new {@link com.codahale.metrics.Histogram} instance. These constructors are<a name="line.40"></a>
 <span class="sourceLineNo">041</span>   * not public in 2.2.0, so we use reflection to find them.<a name="line.41"></a>
 <span class="sourceLineNo">042</span>   */<a name="line.42"></a>
-<span class="sourceLineNo">043</span>  public static Histogram newHistogram(Sample sample) {<a name="line.43"></a>
+<span class="sourceLineNo">043</span>  public static Histogram newHistogram(Reservoir sample) {<a name="line.43"></a>
 <span class="sourceLineNo">044</span>    try {<a name="line.44"></a>
 <span class="sourceLineNo">045</span>      Constructor&lt;?&gt; ctor =<a name="line.45"></a>
-<span class="sourceLineNo">046</span>          Histogram.class.getDeclaredConstructor(Sample.class);<a name="line.46"></a>
+<span class="sourceLineNo">046</span>          Histogram.class.getDeclaredConstructor(Reservoir.class);<a name="line.46"></a>
 <span class="sourceLineNo">047</span>      ctor.setAccessible(true);<a name="line.47"></a>
 <span class="sourceLineNo">048</span>      return (Histogram) ctor.newInstance(sample);<a name="line.48"></a>
 <span class="sourceLineNo">049</span>    } catch (Exception e) {<a name="line.49"></a>
@@ -62,10 +62,10 @@
 <span class="sourceLineNo">054</span>  /** @return an abbreviated summary of {@code hist}. */<a name="line.54"></a>
 <span class="sourceLineNo">055</span>  public static String getShortHistogramReport(final Histogram hist) {<a name="line.55"></a>
 <span class="sourceLineNo">056</span>    Snapshot sn = hist.getSnapshot();<a name="line.56"></a>
-<span class="sourceLineNo">057</span>    return "mean=" + DOUBLE_FORMAT.format(hist.mean()) +<a name="line.57"></a>
-<span class="sourceLineNo">058</span>        ", min=" + DOUBLE_FORMAT.format(hist.min()) +<a name="line.58"></a>
-<span class="sourceLineNo">059</span>        ", max=" + DOUBLE_FORMAT.format(hist.max()) +<a name="line.59"></a>
-<span class="sourceLineNo">060</span>        ", stdDev=" + DOUBLE_FORMAT.format(hist.stdDev()) +<a name="line.60"></a>
+<span class="sourceLineNo">057</span>    return "mean=" + DOUBLE_FORMAT.format(sn.getMean()) +<a name="line.57"></a>
+<span class="sourceLineNo">058</span>        ", min=" + DOUBLE_FORMAT.format(sn.getMin()) +<a name="line.58"></a>
+<span class="sourceLineNo">059</span>        ", max=" + DOUBLE_FORMAT.format(sn.getMax()) +<a name="line.59"></a>
+<span class="sourceLineNo">060</span>        ", stdDev=" + DOUBLE_FORMAT.format(sn.getStdDev()) +<a name="line.60"></a>
 <span class="sourceLineNo">061</span>        ", 95th=" + DOUBLE_FORMAT.format(sn.get95thPercentile()) +<a name="line.61"></a>
 <span class="sourceLineNo">062</span>        ", 99th=" + DOUBLE_FORMAT.format(sn.get99thPercentile());<a name="line.62"></a>
 <span class="sourceLineNo">063</span>  }<a name="line.63"></a>
@@ -73,10 +73,10 @@
 <span class="sourceLineNo">065</span>  /** @return a summary of {@code hist}. */<a name="line.65"></a>
 <span class="sourceLineNo">066</span>  public static String getHistogramReport(final Histogram hist) {<a name="line.66"></a>
 <span class="sourceLineNo">067</span>    Snapshot sn = hist.getSnapshot();<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    return ", mean=" + DOUBLE_FORMAT.format(hist.mean()) +<a name="line.68"></a>
-<span class="sourceLineNo">069</span>        ", min=" + DOUBLE_FORMAT.format(hist.min()) +<a name="line.69"></a>
-<span class="sourceLineNo">070</span>        ", max=" + DOUBLE_FORMAT.format(hist.max()) +<a name="line.70"></a>
-<span class="sourceLineNo">071</span>        ", stdDev=" + DOUBLE_FORMAT.format(hist.stdDev()) +<a name="line.71"></a>
+<span class="sourceLineNo">068</span>    return ", mean=" + DOUBLE_FORMAT.format(sn.getMean()) +<a name="line.68"></a>
+<span class="sourceLineNo">069</span>        ", min=" + DOUBLE_FORMAT.format(sn.getMin()) +<a name="line.69"></a>
+<span class="sourceLineNo">070</span>        ", max=" + DOUBLE_FORMAT.format(sn.getMax()) +<a name="line.70"></a>
+<span class="sourceLineNo">071</span>        ", stdDev=" + DOUBLE_FORMAT.format(sn.getStdDev()) +<a name="line.71"></a>
 <span class="sourceLineNo">072</span>        ", 50th=" + DOUBLE_FORMAT.format(sn.getMedian()) +<a name="line.72"></a>
 <span class="sourceLineNo">073</span>        ", 75th=" + DOUBLE_FORMAT.format(sn.get75thPercentile()) +<a name="line.73"></a>
 <span class="sourceLineNo">074</span>        ", 95th=" + DOUBLE_FORMAT.format(sn.get95thPercentile()) +<a name="line.74"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/src-html/org/apache/hadoop/metrics2/lib/MutableHistogram.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/metrics2/lib/MutableHistogram.html b/devapidocs/src-html/org/apache/hadoop/metrics2/lib/MutableHistogram.html
index 5e2cb31..dbb3778 100644
--- a/devapidocs/src-html/org/apache/hadoop/metrics2/lib/MutableHistogram.html
+++ b/devapidocs/src-html/org/apache/hadoop/metrics2/lib/MutableHistogram.html
@@ -34,9 +34,9 @@
 <span class="sourceLineNo">026</span>import org.apache.hadoop.metrics2.MetricsInfo;<a name="line.26"></a>
 <span class="sourceLineNo">027</span>import org.apache.hadoop.metrics2.MetricsRecordBuilder;<a name="line.27"></a>
 <span class="sourceLineNo">028</span><a name="line.28"></a>
-<span class="sourceLineNo">029</span>import com.yammer.metrics.stats.ExponentiallyDecayingSample;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import com.yammer.metrics.stats.Sample;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import com.yammer.metrics.stats.Snapshot;<a name="line.31"></a>
+<span class="sourceLineNo">029</span>import com.codahale.metrics.ExponentiallyDecayingReservoir;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import com.codahale.metrics.Reservoir;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import com.codahale.metrics.Snapshot;<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 histogram implementation that runs in constant space, and exports to hadoop2's metrics2 system.<a name="line.34"></a>
@@ -51,7 +51,7 @@
 <span class="sourceLineNo">043</span><a name="line.43"></a>
 <span class="sourceLineNo">044</span>  protected final String name;<a name="line.44"></a>
 <span class="sourceLineNo">045</span>  protected final String desc;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>  private final Sample sample;<a name="line.46"></a>
+<span class="sourceLineNo">046</span>  private final Reservoir reservoir;<a name="line.46"></a>
 <span class="sourceLineNo">047</span>  private final AtomicLong min;<a name="line.47"></a>
 <span class="sourceLineNo">048</span>  private final AtomicLong max;<a name="line.48"></a>
 <span class="sourceLineNo">049</span>  private final AtomicLong sum;<a name="line.49"></a>
@@ -64,7 +64,7 @@
 <span class="sourceLineNo">056</span>  public MutableHistogram(String name, String description) {<a name="line.56"></a>
 <span class="sourceLineNo">057</span>    this.name = StringUtils.capitalize(name);<a name="line.57"></a>
 <span class="sourceLineNo">058</span>    this.desc = StringUtils.uncapitalize(description);<a name="line.58"></a>
-<span class="sourceLineNo">059</span>    sample = new ExponentiallyDecayingSample(DEFAULT_SAMPLE_SIZE, DEFAULT_ALPHA);<a name="line.59"></a>
+<span class="sourceLineNo">059</span>    reservoir = new ExponentiallyDecayingReservoir(DEFAULT_SAMPLE_SIZE, DEFAULT_ALPHA);<a name="line.59"></a>
 <span class="sourceLineNo">060</span>    count = new AtomicLong();<a name="line.60"></a>
 <span class="sourceLineNo">061</span>    min = new AtomicLong(Long.MAX_VALUE);<a name="line.61"></a>
 <span class="sourceLineNo">062</span>    max = new AtomicLong(Long.MIN_VALUE);<a name="line.62"></a>
@@ -74,7 +74,7 @@
 <span class="sourceLineNo">066</span>  public void add(final long val) {<a name="line.66"></a>
 <span class="sourceLineNo">067</span>    setChanged();<a name="line.67"></a>
 <span class="sourceLineNo">068</span>    count.incrementAndGet();<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    sample.update(val);<a name="line.69"></a>
+<span class="sourceLineNo">069</span>    reservoir.update(val);<a name="line.69"></a>
 <span class="sourceLineNo">070</span>    setMax(val);<a name="line.70"></a>
 <span class="sourceLineNo">071</span>    setMin(val);<a name="line.71"></a>
 <span class="sourceLineNo">072</span>    sum.getAndAdd(val);<a name="line.72"></a>
@@ -127,9 +127,9 @@
 <span class="sourceLineNo">119</span>      updateSnapshotMetrics(metricsRecordBuilder);<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">122</span><a name="line.122"></a>
 <span class="sourceLineNo">123</span>  public void updateSnapshotMetrics(MetricsRecordBuilder metricsRecordBuilder) {<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      final Snapshot s = sample.getSnapshot();<a name="line.124"></a>
+<span class="sourceLineNo">124</span>      final Snapshot s = reservoir.getSnapshot();<a name="line.124"></a>
 <span class="sourceLineNo">125</span>      metricsRecordBuilder.addCounter(Interns.info(name + NUM_OPS_METRIC_NAME, desc), count.get());<a name="line.125"></a>
 <span class="sourceLineNo">126</span><a name="line.126"></a>
 <span class="sourceLineNo">127</span>      metricsRecordBuilder.addGauge(Interns.info(name + MIN_METRIC_NAME, desc), getMin());<a name="line.127"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/distribution-management.html
----------------------------------------------------------------------
diff --git a/distribution-management.html b/distribution-management.html
index 92e2e00..02c9acf 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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <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: 2015-12-15</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-12-16</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/export_control.html
----------------------------------------------------------------------
diff --git a/export_control.html b/export_control.html
index 8136539..d11aa0d 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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <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: 2015-12-15</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-12-16</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/hbase-annotations/checkstyle.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/checkstyle.html b/hbase-annotations/checkstyle.html
index 8c6d9f4..7329c73 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 2015-12-15 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-12-16 -->
 <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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-12-15</span>
+        <span id="publishDate">Last Published: 2015-12-16</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/539ad177/hbase-annotations/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependencies.html b/hbase-annotations/dependencies.html
index 9c94ec6..9c5a050 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 2015-12-15 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-12-16 -->
 <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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-12-15</span>
+        <span id="publishDate">Last Published: 2015-12-16</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/539ad177/hbase-annotations/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependency-convergence.html b/hbase-annotations/dependency-convergence.html
index 5fc9751..249ca13 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 2015-12-15 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-12-16 -->
 <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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-12-15</span>
+        <span id="publishDate">Last Published: 2015-12-16</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>
@@ -297,22 +297,6 @@
 <li><a class="externalLink" href="http://hbase.apache.org/hbase-rest">org.apache.hbase:hbase-rest</a></li>
 <li><a class="externalLink" href="http://hbase.apache.org/hbase-server">org.apache.hbase:hbase-server</a></li></ol></td></tr></table></td></tr></table></div>
 <div class="section">
-<h4><a name="com.yammer.metrics:metrics-core"></a>com.yammer.metrics:metrics-core</h4>
-<table border="0" class="bodyTable">
-<tr class="a">
-<td><img alt="success" src="images/icon_success_sml.gif" /></td>
-<td>
-<table border="0" class="bodyTable">
-<tr class="b">
-<td width="25%">2.2.0</td>
-<td>
-<ol style="list-style-type: lower-alpha">
-<li><a class="externalLink" href="http://hbase.apache.org/hbase-client">org.apache.hbase:hbase-client</a></li>
-<li><a class="externalLink" href="http://hbase.apache.org/hbase-hadoop2-compat">org.apache.hbase:hbase-hadoop2-compat</a></li>
-<li><a class="externalLink" href="http://hbase.apache.org/hbase-it">org.apache.hbase:hbase-it</a></li>
-<li><a class="externalLink" href="http://hbase.apache.org/hbase-server">org.apache.hbase:hbase-server</a></li>
-<li><a class="externalLink" href="http://hbase.apache.org/hbase-shell">org.apache.hbase:hbase-shell</a></li></ol></td></tr></table></td></tr></table></div>
-<div class="section">
 <h4><a name="commons-cli:commons-cli"></a>commons-cli:commons-cli</h4>
 <table border="0" class="bodyTable">
 <tr class="a">
@@ -437,6 +421,22 @@
 <ol style="list-style-type: lower-alpha">
 <li><a class="externalLink" href="http://hbase.apache.org/hbase-thrift">org.apache.hbase:hbase-thrift</a></li></ol></td></tr></table></td></tr></table></div>
 <div class="section">
+<h4><a name="io.dropwizard.metrics:metrics-core"></a>io.dropwizard.metrics:metrics-core</h4>
+<table border="0" class="bodyTable">
+<tr class="a">
+<td><img alt="success" src="images/icon_success_sml.gif" /></td>
+<td>
+<table border="0" class="bodyTable">
+<tr class="b">
+<td width="25%">3.1.2</td>
+<td>
+<ol style="list-style-type: lower-alpha">
+<li><a class="externalLink" href="http://hbase.apache.org/hbase-client">org.apache.hbase:hbase-client</a></li>
+<li><a class="externalLink" href="http://hbase.apache.org/hbase-hadoop2-compat">org.apache.hbase:hbase-hadoop2-compat</a></li>
+<li><a class="externalLink" href="http://hbase.apache.org/hbase-it">org.apache.hbase:hbase-it</a></li>
+<li><a class="externalLink" href="http://hbase.apache.org/hbase-server">org.apache.hbase:hbase-server</a></li>
+<li><a class="externalLink" href="http://hbase.apache.org/hbase-shell">org.apache.hbase:hbase-shell</a></li></ol></td></tr></table></td></tr></table></div>
+<div class="section">
 <h4><a name="io.netty:netty"></a>io.netty:netty</h4>
 <table border="0" class="bodyTable">
 <tr class="a">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/hbase-annotations/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependency-info.html b/hbase-annotations/dependency-info.html
index 57a4c84..6c28b61 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 2015-12-15 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-12-16 -->
 <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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-12-15</span>
+        <span id="publishDate">Last Published: 2015-12-16</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>


[06/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.TestSequentialProcedure.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.TestSequentialProcedure.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.TestSequentialProcedure.html
index 5abbadd..7bf2314 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.TestSequentialProcedure.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.TestSequentialProcedure.html
@@ -110,7 +110,7 @@
 <span class="sourceLineNo">102</span>  @Test<a name="line.102"></a>
 <span class="sourceLineNo">103</span>  public void testEmptyRoll() throws Exception {<a name="line.103"></a>
 <span class="sourceLineNo">104</span>    for (int i = 0; i &lt; 10; ++i) {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>      procStore.periodicRoll();<a name="line.105"></a>
+<span class="sourceLineNo">105</span>      procStore.periodicRollForTesting();<a name="line.105"></a>
 <span class="sourceLineNo">106</span>    }<a name="line.106"></a>
 <span class="sourceLineNo">107</span>    FileStatus[] status = fs.listStatus(logDir);<a name="line.107"></a>
 <span class="sourceLineNo">108</span>    assertEquals(1, status.length);<a name="line.108"></a>
@@ -222,14 +222,14 @@
 <span class="sourceLineNo">214</span>      procStore.update(rootProcs[i-1]);<a name="line.214"></a>
 <span class="sourceLineNo">215</span>    }<a name="line.215"></a>
 <span class="sourceLineNo">216</span>    // insert root-child txn<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    procStore.rollWriter();<a name="line.217"></a>
+<span class="sourceLineNo">217</span>    procStore.rollWriterForTesting();<a name="line.217"></a>
 <span class="sourceLineNo">218</span>    for (int i = 1; i &lt;= rootProcs.length; i++) {<a name="line.218"></a>
 <span class="sourceLineNo">219</span>      TestProcedure b = new TestProcedure(rootProcs.length + i, i);<a name="line.219"></a>
 <span class="sourceLineNo">220</span>      rootProcs[i-1].addStackId(1);<a name="line.220"></a>
 <span class="sourceLineNo">221</span>      procStore.insert(rootProcs[i-1], new Procedure[] { b });<a name="line.221"></a>
 <span class="sourceLineNo">222</span>    }<a name="line.222"></a>
 <span class="sourceLineNo">223</span>    // insert child updates<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    procStore.rollWriter();<a name="line.224"></a>
+<span class="sourceLineNo">224</span>    procStore.rollWriterForTesting();<a name="line.224"></a>
 <span class="sourceLineNo">225</span>    for (int i = 1; i &lt;= rootProcs.length; i++) {<a name="line.225"></a>
 <span class="sourceLineNo">226</span>      procStore.update(new TestProcedure(rootProcs.length + i, i));<a name="line.226"></a>
 <span class="sourceLineNo">227</span>    }<a name="line.227"></a>
@@ -237,347 +237,376 @@
 <span class="sourceLineNo">229</span>    // Stop the store<a name="line.229"></a>
 <span class="sourceLineNo">230</span>    procStore.stop(false);<a name="line.230"></a>
 <span class="sourceLineNo">231</span><a name="line.231"></a>
-<span class="sourceLineNo">232</span>    // Remove 4 byte from the trailer<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    FileStatus[] logs = fs.listStatus(logDir);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    assertEquals(3, logs.length);<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    Arrays.sort(logs, new Comparator&lt;FileStatus&gt;() {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      @Override<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      public int compare(FileStatus o1, FileStatus o2) {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>        return o1.getPath().getName().compareTo(o2.getPath().getName());<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      }<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    });<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>    // Remove the first log, we have insert-txn and updates in the others so everything is fine.<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    fs.delete(logs[0].getPath(), false);<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    LoadCounter loader = new LoadCounter();<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    storeRestart(loader);<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    assertEquals(rootProcs.length * 2, loader.getLoadedCount());<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    assertEquals(0, loader.getCorruptedCount());<a name="line.247"></a>
-<span class="sourceLineNo">248</span><a name="line.248"></a>
-<span class="sourceLineNo">249</span>    // Remove the second log, we have lost any root/parent references<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    fs.delete(logs[1].getPath(), false);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    loader.reset();<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    storeRestart(loader);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    assertEquals(0, loader.getLoadedCount());<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    assertEquals(rootProcs.length, loader.getCorruptedCount());<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    for (Procedure proc: loader.getCorrupted()) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      assertTrue(proc.toString(), proc.getParentProcId() &lt;= rootProcs.length);<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      assertTrue(proc.toString(),<a name="line.257"></a>
-<span class="sourceLineNo">258</span>                  proc.getProcId() &gt; rootProcs.length &amp;&amp;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>                  proc.getProcId() &lt;= (rootProcs.length * 2));<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    }<a name="line.260"></a>
-<span class="sourceLineNo">261</span>  }<a name="line.261"></a>
-<span class="sourceLineNo">262</span><a name="line.262"></a>
-<span class="sourceLineNo">263</span>  @Test(timeout=60000)<a name="line.263"></a>
-<span class="sourceLineNo">264</span>  public void testWalReplayOrder_AB_A() throws Exception {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    /*<a name="line.265"></a>
-<span class="sourceLineNo">266</span>     * | A B | -&gt; | A |<a name="line.266"></a>
-<span class="sourceLineNo">267</span>     */<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    TestProcedure a = new TestProcedure(1, 0);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    TestProcedure b = new TestProcedure(2, 1);<a name="line.269"></a>
-<span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span>    procStore.insert(a, null);<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    a.addStackId(0);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    procStore.update(a);<a name="line.273"></a>
-<span class="sourceLineNo">274</span><a name="line.274"></a>
-<span class="sourceLineNo">275</span>    procStore.insert(a, new Procedure[] { b });<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    b.addStackId(1);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    procStore.update(b);<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>    procStore.rollWriter();<a name="line.279"></a>
-<span class="sourceLineNo">280</span><a name="line.280"></a>
-<span class="sourceLineNo">281</span>    a.addStackId(2);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    procStore.update(a);<a name="line.282"></a>
-<span class="sourceLineNo">283</span><a name="line.283"></a>
-<span class="sourceLineNo">284</span>    storeRestart(new ProcedureStore.ProcedureLoader() {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      @Override<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      public void setMaxProcId(long maxProcId) {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>        assertEquals(2, maxProcId);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      }<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>      @Override<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      public void load(ProcedureIterator procIter) throws IOException {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>        assertTrue(procIter.hasNext());<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        assertEquals(1, procIter.next().getProcId());<a name="line.293"></a>
-<span class="sourceLineNo">294</span>        assertTrue(procIter.hasNext());<a name="line.294"></a>
-<span class="sourceLineNo">295</span>        assertEquals(2, procIter.next().getProcId());<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        assertFalse(procIter.hasNext());<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      }<a name="line.297"></a>
-<span class="sourceLineNo">298</span><a name="line.298"></a>
-<span class="sourceLineNo">299</span>      @Override<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      public void handleCorrupted(ProcedureIterator procIter) throws IOException {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>        assertFalse(procIter.hasNext());<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      }<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    });<a name="line.303"></a>
-<span class="sourceLineNo">304</span>  }<a name="line.304"></a>
-<span class="sourceLineNo">305</span><a name="line.305"></a>
-<span class="sourceLineNo">306</span>  @Test(timeout=60000)<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  public void testWalReplayOrder_ABC_BAD() throws Exception {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    /*<a name="line.308"></a>
-<span class="sourceLineNo">309</span>     * | A B C | -&gt; | B A D |<a name="line.309"></a>
-<span class="sourceLineNo">310</span>     */<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    TestProcedure a = new TestProcedure(1, 0);<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    TestProcedure b = new TestProcedure(2, 1);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    TestProcedure c = new TestProcedure(3, 2);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    TestProcedure d = new TestProcedure(4, 0);<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>    procStore.insert(a, null);<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    a.addStackId(0);<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    procStore.update(a);<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>    procStore.insert(a, new Procedure[] { b });<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    b.addStackId(1);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    procStore.update(b);<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span>    procStore.insert(b, new Procedure[] { c });<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    b.addStackId(2);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    procStore.update(b);<a name="line.326"></a>
-<span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>    procStore.rollWriter();<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>    b.addStackId(3);<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    procStore.update(b);<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>    a.addStackId(4);<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    procStore.update(a);<a name="line.334"></a>
-<span class="sourceLineNo">335</span><a name="line.335"></a>
-<span class="sourceLineNo">336</span>    procStore.insert(d, null);<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    d.addStackId(0);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    procStore.update(d);<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>    storeRestart(new ProcedureStore.ProcedureLoader() {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      @Override<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      public void setMaxProcId(long maxProcId) {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>        assertEquals(4, maxProcId);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      }<a name="line.344"></a>
-<span class="sourceLineNo">345</span><a name="line.345"></a>
-<span class="sourceLineNo">346</span>      @Override<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      public void load(ProcedureIterator procIter) throws IOException {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>        assertTrue(procIter.hasNext());<a name="line.348"></a>
-<span class="sourceLineNo">349</span>        assertEquals(4, procIter.next().getProcId());<a name="line.349"></a>
-<span class="sourceLineNo">350</span>        // TODO: This will be multiple call once we do fast-start<a name="line.350"></a>
-<span class="sourceLineNo">351</span>        //assertFalse(procIter.hasNext());<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>        assertTrue(procIter.hasNext());<a name="line.353"></a>
-<span class="sourceLineNo">354</span>        assertEquals(1, procIter.next().getProcId());<a name="line.354"></a>
-<span class="sourceLineNo">355</span>        assertTrue(procIter.hasNext());<a name="line.355"></a>
-<span class="sourceLineNo">356</span>        assertEquals(2, procIter.next().getProcId());<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        assertTrue(procIter.hasNext());<a name="line.357"></a>
-<span class="sourceLineNo">358</span>        assertEquals(3, procIter.next().getProcId());<a name="line.358"></a>
-<span class="sourceLineNo">359</span>        assertFalse(procIter.hasNext());<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      }<a name="line.360"></a>
-<span class="sourceLineNo">361</span><a name="line.361"></a>
-<span class="sourceLineNo">362</span>      @Override<a name="line.362"></a>
-<span class="sourceLineNo">363</span>      public void handleCorrupted(ProcedureIterator procIter) throws IOException {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        assertFalse(procIter.hasNext());<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      }<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    });<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  }<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>  @Test<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  public void testInsertUpdateDelete() throws Exception {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    final int NTHREAD = 2;<a name="line.371"></a>
-<span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>    procStore.stop(false);<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    fs.delete(logDir, true);<a name="line.374"></a>
-<span class="sourceLineNo">375</span><a name="line.375"></a>
-<span class="sourceLineNo">376</span>    org.apache.hadoop.conf.Configuration conf =<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      new org.apache.hadoop.conf.Configuration(htu.getConfiguration());<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    conf.setBoolean("hbase.procedure.store.wal.use.hsync", false);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    conf.setInt("hbase.procedure.store.wal.periodic.roll.msec", 10000);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    conf.setInt("hbase.procedure.store.wal.roll.threshold", 128 * 1024);<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>    fs.mkdirs(logDir);<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    procStore = ProcedureTestingUtility.createWalStore(conf, fs, logDir);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    procStore.start(NTHREAD);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    procStore.recoverLease();<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span>    LoadCounter loader = new LoadCounter();<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    procStore.load(loader);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    assertEquals(0, loader.getMaxProcId());<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    assertEquals(0, loader.getLoadedCount());<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    assertEquals(0, loader.getCorruptedCount());<a name="line.391"></a>
-<span class="sourceLineNo">392</span><a name="line.392"></a>
-<span class="sourceLineNo">393</span>    final long LAST_PROC_ID = 9999;<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    final Thread[] thread = new Thread[NTHREAD];<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    final AtomicLong procCounter = new AtomicLong((long)Math.round(Math.random() * 100));<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    for (int i = 0; i &lt; thread.length; ++i) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      thread[i] = new Thread() {<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        @Override<a name="line.398"></a>
-<span class="sourceLineNo">399</span>        public void run() {<a name="line.399"></a>
-<span class="sourceLineNo">400</span>          Random rand = new Random();<a name="line.400"></a>
-<span class="sourceLineNo">401</span>          TestProcedure proc;<a name="line.401"></a>
-<span class="sourceLineNo">402</span>          do {<a name="line.402"></a>
-<span class="sourceLineNo">403</span>            proc = new TestProcedure(procCounter.addAndGet(1));<a name="line.403"></a>
-<span class="sourceLineNo">404</span>            // Insert<a name="line.404"></a>
-<span class="sourceLineNo">405</span>            procStore.insert(proc, null);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>            // Update<a name="line.406"></a>
-<span class="sourceLineNo">407</span>            for (int i = 0, nupdates = rand.nextInt(10); i &lt;= nupdates; ++i) {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>              try { Thread.sleep(0, rand.nextInt(15)); } catch (InterruptedException e) {}<a name="line.408"></a>
-<span class="sourceLineNo">409</span>              procStore.update(proc);<a name="line.409"></a>
-<span class="sourceLineNo">410</span>            }<a name="line.410"></a>
-<span class="sourceLineNo">411</span>            // Delete<a name="line.411"></a>
-<span class="sourceLineNo">412</span>            procStore.delete(proc.getProcId());<a name="line.412"></a>
-<span class="sourceLineNo">413</span>          } while (proc.getProcId() &lt; LAST_PROC_ID);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        }<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      };<a name="line.415"></a>
-<span class="sourceLineNo">416</span>      thread[i].start();<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    }<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>    for (int i = 0; i &lt; thread.length; ++i) {<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      thread[i].join();<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    }<a name="line.421"></a>
-<span class="sourceLineNo">422</span><a name="line.422"></a>
-<span class="sourceLineNo">423</span>    procStore.getStoreTracker().dump();<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    assertTrue(procCounter.get() &gt;= LAST_PROC_ID);<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    assertTrue(procStore.getStoreTracker().isEmpty());<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    assertEquals(1, procStore.getActiveLogs().size());<a name="line.426"></a>
-<span class="sourceLineNo">427</span>  }<a name="line.427"></a>
-<span class="sourceLineNo">428</span><a name="line.428"></a>
-<span class="sourceLineNo">429</span>  private void corruptLog(final FileStatus logFile, final long dropBytes)<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      throws IOException {<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    assertTrue(logFile.getLen() &gt; dropBytes);<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    LOG.debug("corrupt log " + logFile.getPath() +<a name="line.432"></a>
-<span class="sourceLineNo">433</span>              " size=" + logFile.getLen() + " drop=" + dropBytes);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    Path tmpPath = new Path(testDir, "corrupted.log");<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    InputStream in = fs.open(logFile.getPath());<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    OutputStream out =  fs.create(tmpPath);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    IOUtils.copyBytes(in, out, logFile.getLen() - dropBytes, true);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    if (!fs.rename(tmpPath, logFile.getPath())) {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      throw new IOException("Unable to rename");<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><a name="line.442"></a>
-<span class="sourceLineNo">443</span>  private void verifyProcIdsOnRestart(final Set&lt;Long&gt; procIds) throws Exception {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    LOG.debug("expected: " + procIds);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    LoadCounter loader = new LoadCounter();<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    storeRestart(loader);<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    assertEquals(procIds.size(), loader.getLoadedCount());<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    assertEquals(0, loader.getCorruptedCount());<a name="line.448"></a>
-<span class="sourceLineNo">449</span>  }<a name="line.449"></a>
+<span class="sourceLineNo">232</span>    // the first log was removed,<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    // we have insert-txn and updates in the others so everything is fine<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    FileStatus[] logs = fs.listStatus(logDir);<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    assertEquals(Arrays.toString(logs), 2, logs.length);<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    Arrays.sort(logs, new Comparator&lt;FileStatus&gt;() {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      @Override<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      public int compare(FileStatus o1, FileStatus o2) {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>        return o1.getPath().getName().compareTo(o2.getPath().getName());<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      }<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    });<a name="line.241"></a>
+<span class="sourceLineNo">242</span><a name="line.242"></a>
+<span class="sourceLineNo">243</span>    LoadCounter loader = new LoadCounter();<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    storeRestart(loader);<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    assertEquals(rootProcs.length * 2, loader.getLoadedCount());<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    assertEquals(0, loader.getCorruptedCount());<a name="line.246"></a>
+<span class="sourceLineNo">247</span><a name="line.247"></a>
+<span class="sourceLineNo">248</span>    // Remove the second log, we have lost all the root/parent references<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    fs.delete(logs[0].getPath(), false);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    loader.reset();<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    storeRestart(loader);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    assertEquals(0, loader.getLoadedCount());<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    assertEquals(rootProcs.length, loader.getCorruptedCount());<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    for (Procedure proc: loader.getCorrupted()) {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      assertTrue(proc.toString(), proc.getParentProcId() &lt;= rootProcs.length);<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      assertTrue(proc.toString(),<a name="line.256"></a>
+<span class="sourceLineNo">257</span>                  proc.getProcId() &gt; rootProcs.length &amp;&amp;<a name="line.257"></a>
+<span class="sourceLineNo">258</span>                  proc.getProcId() &lt;= (rootProcs.length * 2));<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    }<a name="line.259"></a>
+<span class="sourceLineNo">260</span>  }<a name="line.260"></a>
+<span class="sourceLineNo">261</span><a name="line.261"></a>
+<span class="sourceLineNo">262</span>  @Test(timeout=60000)<a name="line.262"></a>
+<span class="sourceLineNo">263</span>  public void testWalReplayOrder_AB_A() throws Exception {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    /*<a name="line.264"></a>
+<span class="sourceLineNo">265</span>     * | A B | -&gt; | A |<a name="line.265"></a>
+<span class="sourceLineNo">266</span>     */<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    TestProcedure a = new TestProcedure(1, 0);<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    TestProcedure b = new TestProcedure(2, 1);<a name="line.268"></a>
+<span class="sourceLineNo">269</span><a name="line.269"></a>
+<span class="sourceLineNo">270</span>    procStore.insert(a, null);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    a.addStackId(0);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    procStore.update(a);<a name="line.272"></a>
+<span class="sourceLineNo">273</span><a name="line.273"></a>
+<span class="sourceLineNo">274</span>    procStore.insert(a, new Procedure[] { b });<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    b.addStackId(1);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    procStore.update(b);<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>    procStore.rollWriterForTesting();<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>    a.addStackId(2);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    procStore.update(a);<a name="line.281"></a>
+<span class="sourceLineNo">282</span><a name="line.282"></a>
+<span class="sourceLineNo">283</span>    storeRestart(new ProcedureStore.ProcedureLoader() {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      @Override<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      public void setMaxProcId(long maxProcId) {<a name="line.285"></a>
+<span class="sourceLineNo">286</span>        assertEquals(2, maxProcId);<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      }<a name="line.287"></a>
+<span class="sourceLineNo">288</span><a name="line.288"></a>
+<span class="sourceLineNo">289</span>      @Override<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      public void load(ProcedureIterator procIter) throws IOException {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        assertTrue(procIter.hasNext());<a name="line.291"></a>
+<span class="sourceLineNo">292</span>        assertEquals(1, procIter.next().getProcId());<a name="line.292"></a>
+<span class="sourceLineNo">293</span>        assertTrue(procIter.hasNext());<a name="line.293"></a>
+<span class="sourceLineNo">294</span>        assertEquals(2, procIter.next().getProcId());<a name="line.294"></a>
+<span class="sourceLineNo">295</span>        assertFalse(procIter.hasNext());<a name="line.295"></a>
+<span class="sourceLineNo">296</span>      }<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>      @Override<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      public void handleCorrupted(ProcedureIterator procIter) throws IOException {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        assertFalse(procIter.hasNext());<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>  }<a name="line.303"></a>
+<span class="sourceLineNo">304</span><a name="line.304"></a>
+<span class="sourceLineNo">305</span>  @Test(timeout=60000)<a name="line.305"></a>
+<span class="sourceLineNo">306</span>  public void testWalReplayOrder_ABC_BAD() throws Exception {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    /*<a name="line.307"></a>
+<span class="sourceLineNo">308</span>     * | A B C | -&gt; | B A D |<a name="line.308"></a>
+<span class="sourceLineNo">309</span>     */<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    TestProcedure a = new TestProcedure(1, 0);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    TestProcedure b = new TestProcedure(2, 1);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    TestProcedure c = new TestProcedure(3, 2);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    TestProcedure d = new TestProcedure(4, 0);<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>    procStore.insert(a, null);<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    a.addStackId(0);<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    procStore.update(a);<a name="line.317"></a>
+<span class="sourceLineNo">318</span><a name="line.318"></a>
+<span class="sourceLineNo">319</span>    procStore.insert(a, new Procedure[] { b });<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    b.addStackId(1);<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    procStore.update(b);<a name="line.321"></a>
+<span class="sourceLineNo">322</span><a name="line.322"></a>
+<span class="sourceLineNo">323</span>    procStore.insert(b, new Procedure[] { c });<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    b.addStackId(2);<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    procStore.update(b);<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>    procStore.rollWriterForTesting();<a name="line.327"></a>
+<span class="sourceLineNo">328</span><a name="line.328"></a>
+<span class="sourceLineNo">329</span>    b.addStackId(3);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    procStore.update(b);<a name="line.330"></a>
+<span class="sourceLineNo">331</span><a name="line.331"></a>
+<span class="sourceLineNo">332</span>    a.addStackId(4);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    procStore.update(a);<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>    procStore.insert(d, null);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    d.addStackId(0);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    procStore.update(d);<a name="line.337"></a>
+<span class="sourceLineNo">338</span><a name="line.338"></a>
+<span class="sourceLineNo">339</span>    storeRestart(new ProcedureStore.ProcedureLoader() {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      @Override<a name="line.340"></a>
+<span class="sourceLineNo">341</span>      public void setMaxProcId(long maxProcId) {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        assertEquals(4, maxProcId);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>      }<a name="line.343"></a>
+<span class="sourceLineNo">344</span><a name="line.344"></a>
+<span class="sourceLineNo">345</span>      @Override<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      public void load(ProcedureIterator procIter) throws IOException {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        assertTrue(procIter.hasNext());<a name="line.347"></a>
+<span class="sourceLineNo">348</span>        assertEquals(4, procIter.next().getProcId());<a name="line.348"></a>
+<span class="sourceLineNo">349</span>        // TODO: This will be multiple call once we do fast-start<a name="line.349"></a>
+<span class="sourceLineNo">350</span>        //assertFalse(procIter.hasNext());<a name="line.350"></a>
+<span class="sourceLineNo">351</span><a name="line.351"></a>
+<span class="sourceLineNo">352</span>        assertTrue(procIter.hasNext());<a name="line.352"></a>
+<span class="sourceLineNo">353</span>        assertEquals(1, procIter.next().getProcId());<a name="line.353"></a>
+<span class="sourceLineNo">354</span>        assertTrue(procIter.hasNext());<a name="line.354"></a>
+<span class="sourceLineNo">355</span>        assertEquals(2, procIter.next().getProcId());<a name="line.355"></a>
+<span class="sourceLineNo">356</span>        assertTrue(procIter.hasNext());<a name="line.356"></a>
+<span class="sourceLineNo">357</span>        assertEquals(3, procIter.next().getProcId());<a name="line.357"></a>
+<span class="sourceLineNo">358</span>        assertFalse(procIter.hasNext());<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      }<a name="line.359"></a>
+<span class="sourceLineNo">360</span><a name="line.360"></a>
+<span class="sourceLineNo">361</span>      @Override<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      public void handleCorrupted(ProcedureIterator procIter) throws IOException {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>        assertFalse(procIter.hasNext());<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      }<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    });<a name="line.365"></a>
+<span class="sourceLineNo">366</span>  }<a name="line.366"></a>
+<span class="sourceLineNo">367</span><a name="line.367"></a>
+<span class="sourceLineNo">368</span>  @Test<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  public void testInsertUpdateDelete() throws Exception {<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    final int NTHREAD = 2;<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>    procStore.stop(false);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    fs.delete(logDir, true);<a name="line.373"></a>
+<span class="sourceLineNo">374</span><a name="line.374"></a>
+<span class="sourceLineNo">375</span>    org.apache.hadoop.conf.Configuration conf =<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      new org.apache.hadoop.conf.Configuration(htu.getConfiguration());<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    conf.setBoolean("hbase.procedure.store.wal.use.hsync", false);<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    conf.setInt("hbase.procedure.store.wal.periodic.roll.msec", 10000);<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    conf.setInt("hbase.procedure.store.wal.roll.threshold", 128 * 1024);<a name="line.379"></a>
+<span class="sourceLineNo">380</span><a name="line.380"></a>
+<span class="sourceLineNo">381</span>    fs.mkdirs(logDir);<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    procStore = ProcedureTestingUtility.createWalStore(conf, fs, logDir);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    procStore.start(NTHREAD);<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    procStore.recoverLease();<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>    LoadCounter loader = new LoadCounter();<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    procStore.load(loader);<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    assertEquals(0, loader.getMaxProcId());<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    assertEquals(0, loader.getLoadedCount());<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    assertEquals(0, loader.getCorruptedCount());<a name="line.390"></a>
+<span class="sourceLineNo">391</span><a name="line.391"></a>
+<span class="sourceLineNo">392</span>    final long LAST_PROC_ID = 9999;<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    final Thread[] thread = new Thread[NTHREAD];<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    final AtomicLong procCounter = new AtomicLong((long)Math.round(Math.random() * 100));<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    for (int i = 0; i &lt; thread.length; ++i) {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      thread[i] = new Thread() {<a name="line.396"></a>
+<span class="sourceLineNo">397</span>        @Override<a name="line.397"></a>
+<span class="sourceLineNo">398</span>        public void run() {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>          Random rand = new Random();<a name="line.399"></a>
+<span class="sourceLineNo">400</span>          TestProcedure proc;<a name="line.400"></a>
+<span class="sourceLineNo">401</span>          do {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>            proc = new TestProcedure(procCounter.addAndGet(1));<a name="line.402"></a>
+<span class="sourceLineNo">403</span>            // Insert<a name="line.403"></a>
+<span class="sourceLineNo">404</span>            procStore.insert(proc, null);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>            // Update<a name="line.405"></a>
+<span class="sourceLineNo">406</span>            for (int i = 0, nupdates = rand.nextInt(10); i &lt;= nupdates; ++i) {<a name="line.406"></a>
+<span class="sourceLineNo">407</span>              try { Thread.sleep(0, rand.nextInt(15)); } catch (InterruptedException e) {}<a name="line.407"></a>
+<span class="sourceLineNo">408</span>              procStore.update(proc);<a name="line.408"></a>
+<span class="sourceLineNo">409</span>            }<a name="line.409"></a>
+<span class="sourceLineNo">410</span>            // Delete<a name="line.410"></a>
+<span class="sourceLineNo">411</span>            procStore.delete(proc.getProcId());<a name="line.411"></a>
+<span class="sourceLineNo">412</span>          } while (proc.getProcId() &lt; LAST_PROC_ID);<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        }<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      };<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      thread[i].start();<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    }<a name="line.416"></a>
+<span class="sourceLineNo">417</span><a name="line.417"></a>
+<span class="sourceLineNo">418</span>    for (int i = 0; i &lt; thread.length; ++i) {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      thread[i].join();<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>    procStore.getStoreTracker().dump();<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    assertTrue(procCounter.get() &gt;= LAST_PROC_ID);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    assertTrue(procStore.getStoreTracker().isEmpty());<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    assertEquals(1, procStore.getActiveLogs().size());<a name="line.425"></a>
+<span class="sourceLineNo">426</span>  }<a name="line.426"></a>
+<span class="sourceLineNo">427</span><a name="line.427"></a>
+<span class="sourceLineNo">428</span>  @Test<a name="line.428"></a>
+<span class="sourceLineNo">429</span>  public void testRollAndRemove() throws IOException {<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    // Insert something in the log<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    Procedure proc1 = new TestSequentialProcedure();<a name="line.431"></a>
+<span class="sourceLineNo">432</span>    procStore.insert(proc1, null);<a name="line.432"></a>
+<span class="sourceLineNo">433</span><a name="line.433"></a>
+<span class="sourceLineNo">434</span>    Procedure proc2 = new TestSequentialProcedure();<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    procStore.insert(proc2, null);<a name="line.435"></a>
+<span class="sourceLineNo">436</span><a name="line.436"></a>
+<span class="sourceLineNo">437</span>    // roll the log, now we have 2<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    procStore.rollWriterForTesting();<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    assertEquals(2, procStore.getActiveLogs().size());<a name="line.439"></a>
+<span class="sourceLineNo">440</span><a name="line.440"></a>
+<span class="sourceLineNo">441</span>    // everything will be up to date in the second log<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    // so we can remove the first one<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    procStore.update(proc1);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    procStore.update(proc2);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    assertEquals(1, procStore.getActiveLogs().size());<a name="line.445"></a>
+<span class="sourceLineNo">446</span><a name="line.446"></a>
+<span class="sourceLineNo">447</span>    // roll the log, now we have 2<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    procStore.rollWriterForTesting();<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    assertEquals(2, procStore.getActiveLogs().size());<a name="line.449"></a>
 <span class="sourceLineNo">450</span><a name="line.450"></a>
-<span class="sourceLineNo">451</span>  private void assertEmptyLogDir() {<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    try {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      FileStatus[] status = fs.listStatus(logDir);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      assertTrue("expected empty state-log dir", status == null || status.length == 0);<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    } catch (FileNotFoundException e) {<a name="line.455"></a>
-<span class="sourceLineNo">456</span>      fail("expected the state-log dir to be present: " + logDir);<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    } catch (IOException e) {<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      fail("got en exception on state-log dir list: " + e.getMessage());<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    }<a name="line.459"></a>
-<span class="sourceLineNo">460</span>  }<a name="line.460"></a>
-<span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>  public static class TestSequentialProcedure extends SequentialProcedure&lt;Void&gt; {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    private static long seqid = 0;<a name="line.463"></a>
-<span class="sourceLineNo">464</span><a name="line.464"></a>
-<span class="sourceLineNo">465</span>    public TestSequentialProcedure() {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      setProcId(++seqid);<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    }<a name="line.467"></a>
-<span class="sourceLineNo">468</span><a name="line.468"></a>
-<span class="sourceLineNo">469</span>    @Override<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    protected Procedure[] execute(Void env) { return null; }<a name="line.470"></a>
+<span class="sourceLineNo">451</span>    // remove everything active<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    // so we can remove all the logs<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    procStore.delete(proc1.getProcId());<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    procStore.delete(proc2.getProcId());<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    assertEquals(1, procStore.getActiveLogs().size());<a name="line.455"></a>
+<span class="sourceLineNo">456</span>  }<a name="line.456"></a>
+<span class="sourceLineNo">457</span><a name="line.457"></a>
+<span class="sourceLineNo">458</span>  private void corruptLog(final FileStatus logFile, final long dropBytes)<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      throws IOException {<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    assertTrue(logFile.getLen() &gt; dropBytes);<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    LOG.debug("corrupt log " + logFile.getPath() +<a name="line.461"></a>
+<span class="sourceLineNo">462</span>              " size=" + logFile.getLen() + " drop=" + dropBytes);<a name="line.462"></a>
+<span class="sourceLineNo">463</span>    Path tmpPath = new Path(testDir, "corrupted.log");<a name="line.463"></a>
+<span class="sourceLineNo">464</span>    InputStream in = fs.open(logFile.getPath());<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    OutputStream out =  fs.create(tmpPath);<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    IOUtils.copyBytes(in, out, logFile.getLen() - dropBytes, true);<a name="line.466"></a>
+<span class="sourceLineNo">467</span>    if (!fs.rename(tmpPath, logFile.getPath())) {<a name="line.467"></a>
+<span class="sourceLineNo">468</span>      throw new IOException("Unable to rename");<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    }<a name="line.469"></a>
+<span class="sourceLineNo">470</span>  }<a name="line.470"></a>
 <span class="sourceLineNo">471</span><a name="line.471"></a>
-<span class="sourceLineNo">472</span>    @Override<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    protected void rollback(Void env) { }<a name="line.473"></a>
-<span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span>    @Override<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    protected boolean abort(Void env) { return false; }<a name="line.476"></a>
-<span class="sourceLineNo">477</span><a name="line.477"></a>
-<span class="sourceLineNo">478</span>    @Override<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    protected void serializeStateData(final OutputStream stream) throws IOException {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>      long procId = getProcId();<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      if (procId % 2 == 0) {<a name="line.481"></a>
-<span class="sourceLineNo">482</span>        stream.write(Bytes.toBytes(procId));<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><a name="line.485"></a>
-<span class="sourceLineNo">486</span>    @Override<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    protected void deserializeStateData(InputStream stream) throws IOException {<a name="line.487"></a>
-<span class="sourceLineNo">488</span>      long procId = getProcId();<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      if (procId % 2 == 0) {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>        byte[] bProcId = new byte[8];<a name="line.490"></a>
-<span class="sourceLineNo">491</span>        assertEquals(8, stream.read(bProcId));<a name="line.491"></a>
-<span class="sourceLineNo">492</span>        assertEquals(procId, Bytes.toLong(bProcId));<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      } else {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>        assertEquals(0, stream.available());<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      }<a name="line.495"></a>
+<span class="sourceLineNo">472</span>  private void verifyProcIdsOnRestart(final Set&lt;Long&gt; procIds) throws Exception {<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    LOG.debug("expected: " + procIds);<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    LoadCounter loader = new LoadCounter();<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    storeRestart(loader);<a name="line.475"></a>
+<span class="sourceLineNo">476</span>    assertEquals(procIds.size(), loader.getLoadedCount());<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    assertEquals(0, loader.getCorruptedCount());<a name="line.477"></a>
+<span class="sourceLineNo">478</span>  }<a name="line.478"></a>
+<span class="sourceLineNo">479</span><a name="line.479"></a>
+<span class="sourceLineNo">480</span>  private void assertEmptyLogDir() {<a name="line.480"></a>
+<span class="sourceLineNo">481</span>    try {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>      FileStatus[] status = fs.listStatus(logDir);<a name="line.482"></a>
+<span class="sourceLineNo">483</span>      assertTrue("expected empty state-log dir", status == null || status.length == 0);<a name="line.483"></a>
+<span class="sourceLineNo">484</span>    } catch (FileNotFoundException e) {<a name="line.484"></a>
+<span class="sourceLineNo">485</span>      fail("expected the state-log dir to be present: " + logDir);<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    } catch (IOException e) {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>      fail("got en exception on state-log dir list: " + e.getMessage());<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    }<a name="line.488"></a>
+<span class="sourceLineNo">489</span>  }<a name="line.489"></a>
+<span class="sourceLineNo">490</span><a name="line.490"></a>
+<span class="sourceLineNo">491</span>  public static class TestSequentialProcedure extends SequentialProcedure&lt;Void&gt; {<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    private static long seqid = 0;<a name="line.492"></a>
+<span class="sourceLineNo">493</span><a name="line.493"></a>
+<span class="sourceLineNo">494</span>    public TestSequentialProcedure() {<a name="line.494"></a>
+<span class="sourceLineNo">495</span>      setProcId(++seqid);<a name="line.495"></a>
 <span class="sourceLineNo">496</span>    }<a name="line.496"></a>
-<span class="sourceLineNo">497</span>  }<a name="line.497"></a>
-<span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>  private class LoadCounter implements ProcedureStore.ProcedureLoader {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    private final ArrayList&lt;Procedure&gt; corrupted = new ArrayList&lt;Procedure&gt;();<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    private final ArrayList&lt;Procedure&gt; loaded = new ArrayList&lt;Procedure&gt;();<a name="line.501"></a>
-<span class="sourceLineNo">502</span><a name="line.502"></a>
-<span class="sourceLineNo">503</span>    private Set&lt;Long&gt; procIds;<a name="line.503"></a>
-<span class="sourceLineNo">504</span>    private long maxProcId = 0;<a name="line.504"></a>
-<span class="sourceLineNo">505</span><a name="line.505"></a>
-<span class="sourceLineNo">506</span>    public LoadCounter() {<a name="line.506"></a>
-<span class="sourceLineNo">507</span>      this(null);<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    }<a name="line.508"></a>
-<span class="sourceLineNo">509</span><a name="line.509"></a>
-<span class="sourceLineNo">510</span>    public LoadCounter(final Set&lt;Long&gt; procIds) {<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      this.procIds = procIds;<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    }<a name="line.512"></a>
-<span class="sourceLineNo">513</span><a name="line.513"></a>
-<span class="sourceLineNo">514</span>    public void reset() {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      reset(null);<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    }<a name="line.516"></a>
-<span class="sourceLineNo">517</span><a name="line.517"></a>
-<span class="sourceLineNo">518</span>    public void reset(final Set&lt;Long&gt; procIds) {<a name="line.518"></a>
-<span class="sourceLineNo">519</span>      corrupted.clear();<a name="line.519"></a>
-<span class="sourceLineNo">520</span>      loaded.clear();<a name="line.520"></a>
-<span class="sourceLineNo">521</span>      this.procIds = procIds;<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      this.maxProcId = 0;<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    }<a name="line.523"></a>
-<span class="sourceLineNo">524</span><a name="line.524"></a>
-<span class="sourceLineNo">525</span>    public long getMaxProcId() {<a name="line.525"></a>
-<span class="sourceLineNo">526</span>      return maxProcId;<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    }<a name="line.527"></a>
-<span class="sourceLineNo">528</span><a name="line.528"></a>
-<span class="sourceLineNo">529</span>    public ArrayList&lt;Procedure&gt; getLoaded() {<a name="line.529"></a>
-<span class="sourceLineNo">530</span>      return loaded;<a name="line.530"></a>
-<span class="sourceLineNo">531</span>    }<a name="line.531"></a>
-<span class="sourceLineNo">532</span><a name="line.532"></a>
-<span class="sourceLineNo">533</span>    public int getLoadedCount() {<a name="line.533"></a>
-<span class="sourceLineNo">534</span>      return loaded.size();<a name="line.534"></a>
-<span class="sourceLineNo">535</span>    }<a name="line.535"></a>
-<span class="sourceLineNo">536</span><a name="line.536"></a>
-<span class="sourceLineNo">537</span>    public ArrayList&lt;Procedure&gt; getCorrupted() {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>      return corrupted;<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    }<a name="line.539"></a>
-<span class="sourceLineNo">540</span><a name="line.540"></a>
-<span class="sourceLineNo">541</span>    public int getCorruptedCount() {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>      return corrupted.size();<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    }<a name="line.543"></a>
-<span class="sourceLineNo">544</span><a name="line.544"></a>
-<span class="sourceLineNo">545</span>    @Override<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    public void setMaxProcId(long maxProcId) {<a name="line.546"></a>
-<span class="sourceLineNo">547</span>      maxProcId = maxProcId;<a name="line.547"></a>
-<span class="sourceLineNo">548</span>    }<a name="line.548"></a>
-<span class="sourceLineNo">549</span><a name="line.549"></a>
-<span class="sourceLineNo">550</span>    @Override<a name="line.550"></a>
-<span class="sourceLineNo">551</span>    public void load(ProcedureIterator procIter) throws IOException {<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      while (procIter.hasNext()) {<a name="line.552"></a>
-<span class="sourceLineNo">553</span>        Procedure proc = procIter.next();<a name="line.553"></a>
-<span class="sourceLineNo">554</span>        LOG.debug("loading procId=" + proc.getProcId() + ": " + proc);<a name="line.554"></a>
-<span class="sourceLineNo">555</span>        if (procIds != null) {<a name="line.555"></a>
-<span class="sourceLineNo">556</span>          assertTrue("procId=" + proc.getProcId() + " unexpected",<a name="line.556"></a>
-<span class="sourceLineNo">557</span>                     procIds.contains(proc.getProcId()));<a name="line.557"></a>
-<span class="sourceLineNo">558</span>        }<a name="line.558"></a>
-<span class="sourceLineNo">559</span>        loaded.add(proc);<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      }<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    }<a name="line.561"></a>
-<span class="sourceLineNo">562</span><a name="line.562"></a>
-<span class="sourceLineNo">563</span>    @Override<a name="line.563"></a>
-<span class="sourceLineNo">564</span>    public void handleCorrupted(ProcedureIterator procIter) throws IOException {<a name="line.564"></a>
-<span class="sourceLineNo">565</span>      while (procIter.hasNext()) {<a name="line.565"></a>
-<span class="sourceLineNo">566</span>        Procedure proc = procIter.next();<a name="line.566"></a>
-<span class="sourceLineNo">567</span>        LOG.debug("corrupted procId=" + proc.getProcId() + ": " + proc);<a name="line.567"></a>
-<span class="sourceLineNo">568</span>        corrupted.add(proc);<a name="line.568"></a>
-<span class="sourceLineNo">569</span>      }<a name="line.569"></a>
-<span class="sourceLineNo">570</span>    }<a name="line.570"></a>
-<span class="sourceLineNo">571</span>  }<a name="line.571"></a>
-<span class="sourceLineNo">572</span>}<a name="line.572"></a>
+<span class="sourceLineNo">497</span><a name="line.497"></a>
+<span class="sourceLineNo">498</span>    @Override<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    protected Procedure[] execute(Void env) { return null; }<a name="line.499"></a>
+<span class="sourceLineNo">500</span><a name="line.500"></a>
+<span class="sourceLineNo">501</span>    @Override<a name="line.501"></a>
+<span class="sourceLineNo">502</span>    protected void rollback(Void env) { }<a name="line.502"></a>
+<span class="sourceLineNo">503</span><a name="line.503"></a>
+<span class="sourceLineNo">504</span>    @Override<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    protected boolean abort(Void env) { return false; }<a name="line.505"></a>
+<span class="sourceLineNo">506</span><a name="line.506"></a>
+<span class="sourceLineNo">507</span>    @Override<a name="line.507"></a>
+<span class="sourceLineNo">508</span>    protected void serializeStateData(final OutputStream stream) throws IOException {<a name="line.508"></a>
+<span class="sourceLineNo">509</span>      long procId = getProcId();<a name="line.509"></a>
+<span class="sourceLineNo">510</span>      if (procId % 2 == 0) {<a name="line.510"></a>
+<span class="sourceLineNo">511</span>        stream.write(Bytes.toBytes(procId));<a name="line.511"></a>
+<span class="sourceLineNo">512</span>      }<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    }<a name="line.513"></a>
+<span class="sourceLineNo">514</span><a name="line.514"></a>
+<span class="sourceLineNo">515</span>    @Override<a name="line.515"></a>
+<span class="sourceLineNo">516</span>    protected void deserializeStateData(InputStream stream) throws IOException {<a name="line.516"></a>
+<span class="sourceLineNo">517</span>      long procId = getProcId();<a name="line.517"></a>
+<span class="sourceLineNo">518</span>      if (procId % 2 == 0) {<a name="line.518"></a>
+<span class="sourceLineNo">519</span>        byte[] bProcId = new byte[8];<a name="line.519"></a>
+<span class="sourceLineNo">520</span>        assertEquals(8, stream.read(bProcId));<a name="line.520"></a>
+<span class="sourceLineNo">521</span>        assertEquals(procId, Bytes.toLong(bProcId));<a name="line.521"></a>
+<span class="sourceLineNo">522</span>      } else {<a name="line.522"></a>
+<span class="sourceLineNo">523</span>        assertEquals(0, stream.available());<a name="line.523"></a>
+<span class="sourceLineNo">524</span>      }<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    }<a name="line.525"></a>
+<span class="sourceLineNo">526</span>  }<a name="line.526"></a>
+<span class="sourceLineNo">527</span><a name="line.527"></a>
+<span class="sourceLineNo">528</span>  private class LoadCounter implements ProcedureStore.ProcedureLoader {<a name="line.528"></a>
+<span class="sourceLineNo">529</span>    private final ArrayList&lt;Procedure&gt; corrupted = new ArrayList&lt;Procedure&gt;();<a name="line.529"></a>
+<span class="sourceLineNo">530</span>    private final ArrayList&lt;Procedure&gt; loaded = new ArrayList&lt;Procedure&gt;();<a name="line.530"></a>
+<span class="sourceLineNo">531</span><a name="line.531"></a>
+<span class="sourceLineNo">532</span>    private Set&lt;Long&gt; procIds;<a name="line.532"></a>
+<span class="sourceLineNo">533</span>    private long maxProcId = 0;<a name="line.533"></a>
+<span class="sourceLineNo">534</span><a name="line.534"></a>
+<span class="sourceLineNo">535</span>    public LoadCounter() {<a name="line.535"></a>
+<span class="sourceLineNo">536</span>      this(null);<a name="line.536"></a>
+<span class="sourceLineNo">537</span>    }<a name="line.537"></a>
+<span class="sourceLineNo">538</span><a name="line.538"></a>
+<span class="sourceLineNo">539</span>    public LoadCounter(final Set&lt;Long&gt; procIds) {<a name="line.539"></a>
+<span class="sourceLineNo">540</span>      this.procIds = procIds;<a name="line.540"></a>
+<span class="sourceLineNo">541</span>    }<a name="line.541"></a>
+<span class="sourceLineNo">542</span><a name="line.542"></a>
+<span class="sourceLineNo">543</span>    public void reset() {<a name="line.543"></a>
+<span class="sourceLineNo">544</span>      reset(null);<a name="line.544"></a>
+<span class="sourceLineNo">545</span>    }<a name="line.545"></a>
+<span class="sourceLineNo">546</span><a name="line.546"></a>
+<span class="sourceLineNo">547</span>    public void reset(final Set&lt;Long&gt; procIds) {<a name="line.547"></a>
+<span class="sourceLineNo">548</span>      corrupted.clear();<a name="line.548"></a>
+<span class="sourceLineNo">549</span>      loaded.clear();<a name="line.549"></a>
+<span class="sourceLineNo">550</span>      this.procIds = procIds;<a name="line.550"></a>
+<span class="sourceLineNo">551</span>      this.maxProcId = 0;<a name="line.551"></a>
+<span class="sourceLineNo">552</span>    }<a name="line.552"></a>
+<span class="sourceLineNo">553</span><a name="line.553"></a>
+<span class="sourceLineNo">554</span>    public long getMaxProcId() {<a name="line.554"></a>
+<span class="sourceLineNo">555</span>      return maxProcId;<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    }<a name="line.556"></a>
+<span class="sourceLineNo">557</span><a name="line.557"></a>
+<span class="sourceLineNo">558</span>    public ArrayList&lt;Procedure&gt; getLoaded() {<a name="line.558"></a>
+<span class="sourceLineNo">559</span>      return loaded;<a name="line.559"></a>
+<span class="sourceLineNo">560</span>    }<a name="line.560"></a>
+<span class="sourceLineNo">561</span><a name="line.561"></a>
+<span class="sourceLineNo">562</span>    public int getLoadedCount() {<a name="line.562"></a>
+<span class="sourceLineNo">563</span>      return loaded.size();<a name="line.563"></a>
+<span class="sourceLineNo">564</span>    }<a name="line.564"></a>
+<span class="sourceLineNo">565</span><a name="line.565"></a>
+<span class="sourceLineNo">566</span>    public ArrayList&lt;Procedure&gt; getCorrupted() {<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      return corrupted;<a name="line.567"></a>
+<span class="sourceLineNo">568</span>    }<a name="line.568"></a>
+<span class="sourceLineNo">569</span><a name="line.569"></a>
+<span class="sourceLineNo">570</span>    public int getCorruptedCount() {<a name="line.570"></a>
+<span class="sourceLineNo">571</span>      return corrupted.size();<a name="line.571"></a>
+<span class="sourceLineNo">572</span>    }<a name="line.572"></a>
+<span class="sourceLineNo">573</span><a name="line.573"></a>
+<span class="sourceLineNo">574</span>    @Override<a name="line.574"></a>
+<span class="sourceLineNo">575</span>    public void setMaxProcId(long maxProcId) {<a name="line.575"></a>
+<span class="sourceLineNo">576</span>      maxProcId = maxProcId;<a name="line.576"></a>
+<span class="sourceLineNo">577</span>    }<a name="line.577"></a>
+<span class="sourceLineNo">578</span><a name="line.578"></a>
+<span class="sourceLineNo">579</span>    @Override<a name="line.579"></a>
+<span class="sourceLineNo">580</span>    public void load(ProcedureIterator procIter) throws IOException {<a name="line.580"></a>
+<span class="sourceLineNo">581</span>      while (procIter.hasNext()) {<a name="line.581"></a>
+<span class="sourceLineNo">582</span>        Procedure proc = procIter.next();<a name="line.582"></a>
+<span class="sourceLineNo">583</span>        LOG.debug("loading procId=" + proc.getProcId() + ": " + proc);<a name="line.583"></a>
+<span class="sourceLineNo">584</span>        if (procIds != null) {<a name="line.584"></a>
+<span class="sourceLineNo">585</span>          assertTrue("procId=" + proc.getProcId() + " unexpected",<a name="line.585"></a>
+<span class="sourceLineNo">586</span>                     procIds.contains(proc.getProcId()));<a name="line.586"></a>
+<span class="sourceLineNo">587</span>        }<a name="line.587"></a>
+<span class="sourceLineNo">588</span>        loaded.add(proc);<a name="line.588"></a>
+<span class="sourceLineNo">589</span>      }<a name="line.589"></a>
+<span class="sourceLineNo">590</span>    }<a name="line.590"></a>
+<span class="sourceLineNo">591</span><a name="line.591"></a>
+<span class="sourceLineNo">592</span>    @Override<a name="line.592"></a>
+<span class="sourceLineNo">593</span>    public void handleCorrupted(ProcedureIterator procIter) throws IOException {<a name="line.593"></a>
+<span class="sourceLineNo">594</span>      while (procIter.hasNext()) {<a name="line.594"></a>
+<span class="sourceLineNo">595</span>        Procedure proc = procIter.next();<a name="line.595"></a>
+<span class="sourceLineNo">596</span>        LOG.debug("corrupted procId=" + proc.getProcId() + ": " + proc);<a name="line.596"></a>
+<span class="sourceLineNo">597</span>        corrupted.add(proc);<a name="line.597"></a>
+<span class="sourceLineNo">598</span>      }<a name="line.598"></a>
+<span class="sourceLineNo">599</span>    }<a name="line.599"></a>
+<span class="sourceLineNo">600</span>  }<a name="line.600"></a>
+<span class="sourceLineNo">601</span>}<a name="line.601"></a>
 
 
 


[48/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/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 780741f..93f8c95 100644
--- a/devapidocs/org/apache/hadoop/hbase/classification/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/classification/package-tree.html
@@ -80,12 +80,12 @@
 </ul>
 <h2 title="Annotation Type Hierarchy">Annotation Type Hierarchy</h2>
 <ul>
-<li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceStability.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.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/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>
 <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.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>
+<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/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.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>
 </ul>
 </div>
 <!-- ======= START OF BOTTOM NAVBAR ====== -->

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html b/devapidocs/org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html
index 5f618f9..9422a90 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html
@@ -99,7 +99,7 @@
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.66">MetricsConnection.CallStats</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.68">MetricsConnection.CallStats</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">A container class for collecting details about the RPC call as it percolates.</div>
 </li>
@@ -228,7 +228,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>requestSizeBytes</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html#line.67">requestSizeBytes</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html#line.69">requestSizeBytes</a></pre>
 </li>
 </ul>
 <a name="responseSizeBytes">
@@ -237,7 +237,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>responseSizeBytes</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html#line.68">responseSizeBytes</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html#line.70">responseSizeBytes</a></pre>
 </li>
 </ul>
 <a name="startTime">
@@ -246,7 +246,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>startTime</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html#line.69">startTime</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html#line.71">startTime</a></pre>
 </li>
 </ul>
 <a name="callTimeMs">
@@ -255,7 +255,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>callTimeMs</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html#line.70">callTimeMs</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html#line.72">callTimeMs</a></pre>
 </li>
 </ul>
 </li>
@@ -272,7 +272,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MetricsConnection.CallStats</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html#line.66">MetricsConnection.CallStats</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html#line.68">MetricsConnection.CallStats</a>()</pre>
 </li>
 </ul>
 </li>
@@ -289,7 +289,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getRequestSizeBytes</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html#line.72">getRequestSizeBytes</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html#line.74">getRequestSizeBytes</a>()</pre>
 </li>
 </ul>
 <a name="setRequestSizeBytes(long)">
@@ -298,7 +298,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>setRequestSizeBytes</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html#line.76">setRequestSizeBytes</a>(long&nbsp;requestSizeBytes)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html#line.78">setRequestSizeBytes</a>(long&nbsp;requestSizeBytes)</pre>
 </li>
 </ul>
 <a name="getResponseSizeBytes()">
@@ -307,7 +307,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getResponseSizeBytes</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html#line.80">getResponseSizeBytes</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html#line.82">getResponseSizeBytes</a>()</pre>
 </li>
 </ul>
 <a name="setResponseSizeBytes(long)">
@@ -316,7 +316,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>setResponseSizeBytes</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html#line.84">setResponseSizeBytes</a>(long&nbsp;responseSizeBytes)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html#line.86">setResponseSizeBytes</a>(long&nbsp;responseSizeBytes)</pre>
 </li>
 </ul>
 <a name="getStartTime()">
@@ -325,7 +325,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getStartTime</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html#line.88">getStartTime</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html#line.90">getStartTime</a>()</pre>
 </li>
 </ul>
 <a name="setStartTime(long)">
@@ -334,7 +334,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>setStartTime</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html#line.92">setStartTime</a>(long&nbsp;startTime)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html#line.94">setStartTime</a>(long&nbsp;startTime)</pre>
 </li>
 </ul>
 <a name="getCallTimeMs()">
@@ -343,7 +343,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getCallTimeMs</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html#line.96">getCallTimeMs</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html#line.98">getCallTimeMs</a>()</pre>
 </li>
 </ul>
 <a name="setCallTimeMs(long)">
@@ -352,7 +352,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>setCallTimeMs</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html#line.100">setCallTimeMs</a>(long&nbsp;callTimeMs)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html#line.102">setCallTimeMs</a>(long&nbsp;callTimeMs)</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html b/devapidocs/org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html
index 769508b..2dbbf08 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html
@@ -99,7 +99,7 @@
 </dl>
 <hr>
 <br>
-<pre>protected final class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.106">MetricsConnection.CallTracker</a>
+<pre>protected final class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.108">MetricsConnection.CallTracker</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>
@@ -120,7 +120,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <th class="colLast" scope="col">Field and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>(package private) com.yammer.metrics.core.Timer</code></td>
+<td class="colFirst"><code>(package private) com.codahale.metrics.Timer</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html#callTimer">callTimer</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
@@ -128,11 +128,11 @@ 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/client/MetricsConnection.CallTracker.html#name">name</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>(package private) com.yammer.metrics.core.Histogram</code></td>
+<td class="colFirst"><code>(package private) com.codahale.metrics.Histogram</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html#reqHist">reqHist</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>(package private) com.yammer.metrics.core.Histogram</code></td>
+<td class="colFirst"><code>(package private) com.codahale.metrics.Histogram</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html#respHist">respHist</a></strong></code>&nbsp;</td>
 </tr>
 </table>
@@ -152,13 +152,13 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>private </code></td>
-<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html#MetricsConnection.CallTracker(com.yammer.metrics.core.MetricsRegistry,%20java.lang.String,%20java.lang.String)">MetricsConnection.CallTracker</a></strong>(com.yammer.metrics.core.MetricsRegistry&nbsp;registry,
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html#MetricsConnection.CallTracker(com.codahale.metrics.MetricRegistry,%20java.lang.String,%20java.lang.String)">MetricsConnection.CallTracker</a></strong>(com.codahale.metrics.MetricRegistry&nbsp;registry,
                                                           <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,
                                                           <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;scope)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private </code></td>
-<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html#MetricsConnection.CallTracker(com.yammer.metrics.core.MetricsRegistry,%20java.lang.String,%20java.lang.String,%20java.lang.String)">MetricsConnection.CallTracker</a></strong>(com.yammer.metrics.core.MetricsRegistry&nbsp;registry,
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html#MetricsConnection.CallTracker(com.codahale.metrics.MetricRegistry,%20java.lang.String,%20java.lang.String,%20java.lang.String)">MetricsConnection.CallTracker</a></strong>(com.codahale.metrics.MetricRegistry&nbsp;registry,
                                                           <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,
                                                           <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;subName,
                                                           <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;scope)</code>&nbsp;</td>
@@ -214,7 +214,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/client/MetricsConnection.CallTracker.html#line.107">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/client/MetricsConnection.CallTracker.html#line.109">name</a></pre>
 </li>
 </ul>
 <a name="callTimer">
@@ -223,7 +223,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>callTimer</h4>
-<pre>final&nbsp;com.yammer.metrics.core.Timer <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html#line.108">callTimer</a></pre>
+<pre>final&nbsp;com.codahale.metrics.Timer <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html#line.110">callTimer</a></pre>
 </li>
 </ul>
 <a name="reqHist">
@@ -232,7 +232,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>reqHist</h4>
-<pre>final&nbsp;com.yammer.metrics.core.Histogram <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html#line.109">reqHist</a></pre>
+<pre>final&nbsp;com.codahale.metrics.Histogram <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html#line.111">reqHist</a></pre>
 </li>
 </ul>
 <a name="respHist">
@@ -241,7 +241,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>respHist</h4>
-<pre>final&nbsp;com.yammer.metrics.core.Histogram <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html#line.110">respHist</a></pre>
+<pre>final&nbsp;com.codahale.metrics.Histogram <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html#line.112">respHist</a></pre>
 </li>
 </ul>
 </li>
@@ -252,25 +252,25 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <!--   -->
 </a>
 <h3>Constructor Detail</h3>
-<a name="MetricsConnection.CallTracker(com.yammer.metrics.core.MetricsRegistry, java.lang.String, java.lang.String, java.lang.String)">
+<a name="MetricsConnection.CallTracker(com.codahale.metrics.MetricRegistry, java.lang.String, java.lang.String, java.lang.String)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>MetricsConnection.CallTracker</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html#line.112">MetricsConnection.CallTracker</a>(com.yammer.metrics.core.MetricsRegistry&nbsp;registry,
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html#line.114">MetricsConnection.CallTracker</a>(com.codahale.metrics.MetricRegistry&nbsp;registry,
                              <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,
                              <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;subName,
                              <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;scope)</pre>
 </li>
 </ul>
-<a name="MetricsConnection.CallTracker(com.yammer.metrics.core.MetricsRegistry, java.lang.String, java.lang.String)">
+<a name="MetricsConnection.CallTracker(com.codahale.metrics.MetricRegistry, java.lang.String, java.lang.String)">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MetricsConnection.CallTracker</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html#line.123">MetricsConnection.CallTracker</a>(com.yammer.metrics.core.MetricsRegistry&nbsp;registry,
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html#line.128">MetricsConnection.CallTracker</a>(com.codahale.metrics.MetricRegistry&nbsp;registry,
                              <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,
                              <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;scope)</pre>
 </li>
@@ -289,7 +289,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>updateRpc</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html#line.127">updateRpc</a>(<a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html" title="class in org.apache.hadoop.hbase.client">MetricsConnection.CallStats</a>&nbsp;stats)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html#line.132">updateRpc</a>(<a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html" title="class in org.apache.hadoop.hbase.client">MetricsConnection.CallStats</a>&nbsp;stats)</pre>
 </li>
 </ul>
 <a name="toString()">
@@ -298,7 +298,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>toString</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/client/MetricsConnection.CallTracker.html#line.134">toString</a>()</pre>
+<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/client/MetricsConnection.CallTracker.html#line.139">toString</a>()</pre>
 <dl>
 <dt><strong>Overrides:</strong></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/hbase/client/MetricsConnection.NewMetric.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/MetricsConnection.NewMetric.html b/devapidocs/org/apache/hadoop/hbase/client/MetricsConnection.NewMetric.html
index c9acba0..2badaff 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/MetricsConnection.NewMetric.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/MetricsConnection.NewMetric.html
@@ -91,7 +91,7 @@
 </dl>
 <hr>
 <br>
-<pre>private static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.222">MetricsConnection.NewMetric</a>&lt;T&gt;</pre>
+<pre>private static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.230">MetricsConnection.NewMetric</a>&lt;T&gt;</pre>
 <div class="block">A lambda for dispatching to the appropriate metric factory method</div>
 </li>
 </ul>
@@ -138,7 +138,7 @@
 <ul class="blockListLast">
 <li class="blockList">
 <h4>newMetric</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.NewMetric.html" title="type parameter in MetricsConnection.NewMetric">T</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.NewMetric.html#line.223">newMetric</a>(<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;clazz,
+<pre><a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.NewMetric.html" title="type parameter in MetricsConnection.NewMetric">T</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.NewMetric.html#line.231">newMetric</a>(<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;clazz,
           <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,
           <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;scope)</pre>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/hbase/client/MetricsConnection.RegionStats.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/MetricsConnection.RegionStats.html b/devapidocs/org/apache/hadoop/hbase/client/MetricsConnection.RegionStats.html
index be3ff98..9f07ee7 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/MetricsConnection.RegionStats.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/MetricsConnection.RegionStats.html
@@ -99,7 +99,7 @@
 </dl>
 <hr>
 <br>
-<pre>protected static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.139">MetricsConnection.RegionStats</a>
+<pre>protected static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.144">MetricsConnection.RegionStats</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>
@@ -120,11 +120,11 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <th class="colLast" scope="col">Field and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>(package private) com.yammer.metrics.core.Histogram</code></td>
+<td class="colFirst"><code>(package private) com.codahale.metrics.Histogram</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.RegionStats.html#heapOccupancyHist">heapOccupancyHist</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>(package private) com.yammer.metrics.core.Histogram</code></td>
+<td class="colFirst"><code>(package private) com.codahale.metrics.Histogram</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.RegionStats.html#memstoreLoadHist">memstoreLoadHist</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
@@ -146,7 +146,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <th class="colOne" scope="col">Constructor and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colOne"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.RegionStats.html#MetricsConnection.RegionStats(com.yammer.metrics.core.MetricsRegistry,%20java.lang.String)">MetricsConnection.RegionStats</a></strong>(com.yammer.metrics.core.MetricsRegistry&nbsp;registry,
+<td class="colOne"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.RegionStats.html#MetricsConnection.RegionStats(com.codahale.metrics.MetricRegistry,%20java.lang.String)">MetricsConnection.RegionStats</a></strong>(com.codahale.metrics.MetricRegistry&nbsp;registry,
                                                           <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)</code>&nbsp;</td>
 </tr>
 </table>
@@ -196,7 +196,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>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/client/MetricsConnection.RegionStats.html#line.140">name</a></pre>
+<pre>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/client/MetricsConnection.RegionStats.html#line.145">name</a></pre>
 </li>
 </ul>
 <a name="memstoreLoadHist">
@@ -205,7 +205,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>memstoreLoadHist</h4>
-<pre>final&nbsp;com.yammer.metrics.core.Histogram <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.RegionStats.html#line.141">memstoreLoadHist</a></pre>
+<pre>final&nbsp;com.codahale.metrics.Histogram <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.RegionStats.html#line.146">memstoreLoadHist</a></pre>
 </li>
 </ul>
 <a name="heapOccupancyHist">
@@ -214,7 +214,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>heapOccupancyHist</h4>
-<pre>final&nbsp;com.yammer.metrics.core.Histogram <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.RegionStats.html#line.142">heapOccupancyHist</a></pre>
+<pre>final&nbsp;com.codahale.metrics.Histogram <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.RegionStats.html#line.147">heapOccupancyHist</a></pre>
 </li>
 </ul>
 </li>
@@ -225,13 +225,13 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <!--   -->
 </a>
 <h3>Constructor Detail</h3>
-<a name="MetricsConnection.RegionStats(com.yammer.metrics.core.MetricsRegistry, java.lang.String)">
+<a name="MetricsConnection.RegionStats(com.codahale.metrics.MetricRegistry, java.lang.String)">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MetricsConnection.RegionStats</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.RegionStats.html#line.144">MetricsConnection.RegionStats</a>(com.yammer.metrics.core.MetricsRegistry&nbsp;registry,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.RegionStats.html#line.149">MetricsConnection.RegionStats</a>(com.codahale.metrics.MetricRegistry&nbsp;registry,
                              <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>
 </li>
 </ul>
@@ -249,7 +249,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>update</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.RegionStats.html#line.152">update</a>(org.apache.hadoop.hbase.protobuf.generated.ClientProtos.RegionLoadStats&nbsp;regionStatistics)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.RegionStats.html#line.157">update</a>(org.apache.hadoop.hbase.protobuf.generated.ClientProtos.RegionLoadStats&nbsp;regionStatistics)</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/hbase/client/MetricsConnection.RunnerStats.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/MetricsConnection.RunnerStats.html b/devapidocs/org/apache/hadoop/hbase/client/MetricsConnection.RunnerStats.html
index 8e73788..11018f7 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/MetricsConnection.RunnerStats.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/MetricsConnection.RunnerStats.html
@@ -99,7 +99,7 @@
 </dl>
 <hr>
 <br>
-<pre>protected static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.159">MetricsConnection.RunnerStats</a>
+<pre>protected static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.164">MetricsConnection.RunnerStats</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>
@@ -120,15 +120,15 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <th class="colLast" scope="col">Field and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>(package private) com.yammer.metrics.core.Histogram</code></td>
+<td class="colFirst"><code>(package private) com.codahale.metrics.Histogram</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.RunnerStats.html#delayIntevalHist">delayIntevalHist</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>(package private) com.yammer.metrics.core.Counter</code></td>
+<td class="colFirst"><code>(package private) com.codahale.metrics.Counter</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.RunnerStats.html#delayRunners">delayRunners</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>(package private) com.yammer.metrics.core.Counter</code></td>
+<td class="colFirst"><code>(package private) com.codahale.metrics.Counter</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.RunnerStats.html#normalRunners">normalRunners</a></strong></code>&nbsp;</td>
 </tr>
 </table>
@@ -146,7 +146,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <th class="colOne" scope="col">Constructor and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colOne"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.RunnerStats.html#MetricsConnection.RunnerStats(com.yammer.metrics.core.MetricsRegistry)">MetricsConnection.RunnerStats</a></strong>(com.yammer.metrics.core.MetricsRegistry&nbsp;registry)</code>&nbsp;</td>
+<td class="colOne"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.RunnerStats.html#MetricsConnection.RunnerStats(com.codahale.metrics.MetricRegistry)">MetricsConnection.RunnerStats</a></strong>(com.codahale.metrics.MetricRegistry&nbsp;registry)</code>&nbsp;</td>
 </tr>
 </table>
 </li>
@@ -203,7 +203,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>normalRunners</h4>
-<pre>final&nbsp;com.yammer.metrics.core.Counter <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.RunnerStats.html#line.160">normalRunners</a></pre>
+<pre>final&nbsp;com.codahale.metrics.Counter <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.RunnerStats.html#line.165">normalRunners</a></pre>
 </li>
 </ul>
 <a name="delayRunners">
@@ -212,7 +212,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>delayRunners</h4>
-<pre>final&nbsp;com.yammer.metrics.core.Counter <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.RunnerStats.html#line.161">delayRunners</a></pre>
+<pre>final&nbsp;com.codahale.metrics.Counter <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.RunnerStats.html#line.166">delayRunners</a></pre>
 </li>
 </ul>
 <a name="delayIntevalHist">
@@ -221,7 +221,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>delayIntevalHist</h4>
-<pre>final&nbsp;com.yammer.metrics.core.Histogram <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.RunnerStats.html#line.162">delayIntevalHist</a></pre>
+<pre>final&nbsp;com.codahale.metrics.Histogram <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.RunnerStats.html#line.167">delayIntevalHist</a></pre>
 </li>
 </ul>
 </li>
@@ -232,13 +232,13 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <!--   -->
 </a>
 <h3>Constructor Detail</h3>
-<a name="MetricsConnection.RunnerStats(com.yammer.metrics.core.MetricsRegistry)">
+<a name="MetricsConnection.RunnerStats(com.codahale.metrics.MetricRegistry)">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MetricsConnection.RunnerStats</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.RunnerStats.html#line.164">MetricsConnection.RunnerStats</a>(com.yammer.metrics.core.MetricsRegistry&nbsp;registry)</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.RunnerStats.html#line.169">MetricsConnection.RunnerStats</a>(com.codahale.metrics.MetricRegistry&nbsp;registry)</pre>
 </li>
 </ul>
 </li>
@@ -255,7 +255,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>incrNormalRunners</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.RunnerStats.html#line.170">incrNormalRunners</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.RunnerStats.html#line.178">incrNormalRunners</a>()</pre>
 </li>
 </ul>
 <a name="incrDelayRunners()">
@@ -264,7 +264,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>incrDelayRunners</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.RunnerStats.html#line.174">incrDelayRunners</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.RunnerStats.html#line.182">incrDelayRunners</a>()</pre>
 </li>
 </ul>
 <a name="updateDelayInterval(long)">
@@ -273,7 +273,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>updateDelayInterval</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.RunnerStats.html#line.178">updateDelayInterval</a>(long&nbsp;interval)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.RunnerStats.html#line.186">updateDelayInterval</a>(long&nbsp;interval)</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/hbase/client/MetricsConnection.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/MetricsConnection.html b/devapidocs/org/apache/hadoop/hbase/client/MetricsConnection.html
index c5da254..a3b6d16 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/MetricsConnection.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/MetricsConnection.html
@@ -96,12 +96,12 @@
 <hr>
 <br>
 <pre><a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.Private.html" title="annotation in org.apache.hadoop.hbase.classification">@InterfaceAudience.Private</a>
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.53">MetricsConnection</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.55">MetricsConnection</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">This class is for maintaining the various connection statistics and publishing them through
  the metrics interfaces.
 
- This class manages its own <code>MetricsRegistry</code> and <code>JmxReporter</code> so as to not
+ This class manages its own <code>MetricRegistry</code> and <code>JmxReporter</code> so as to not
  conflict with other uses of Yammer Metrics within the client application. Instantiating
  this class implicitly creates and "starts" instances of these classes; be sure to call
  <a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.html#shutdown()"><code>shutdown()</code></a> to terminate the thread pools they allocate.</div>
@@ -206,7 +206,7 @@ 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/client/MetricsConnection.html#HEAP_BASE">HEAP_BASE</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.NewMetric.html" title="interface in org.apache.hadoop.hbase.client">MetricsConnection.NewMetric</a>&lt;com.yammer.metrics.core.Histogram&gt;</code></td>
+<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.NewMetric.html" title="interface in org.apache.hadoop.hbase.client">MetricsConnection.NewMetric</a>&lt;com.codahale.metrics.Histogram&gt;</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.html#histogramFactory">histogramFactory</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
@@ -224,11 +224,11 @@ 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/client/MetricsConnection.html#MEMLOAD_BASE">MEMLOAD_BASE</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>protected com.yammer.metrics.core.Counter</code></td>
+<td class="colFirst"><code>protected com.codahale.metrics.Counter</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.html#metaCacheHits">metaCacheHits</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>protected com.yammer.metrics.core.Counter</code></td>
+<td class="colFirst"><code>protected com.codahale.metrics.Counter</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.html#metaCacheMisses">metaCacheMisses</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
@@ -240,11 +240,11 @@ 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/client/MetricsConnection.html#putTracker">putTracker</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>private com.yammer.metrics.core.MetricsRegistry</code></td>
+<td class="colFirst"><code>private com.codahale.metrics.MetricRegistry</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.html#registry">registry</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>private com.yammer.metrics.reporting.JmxReporter</code></td>
+<td class="colFirst"><code>private com.codahale.metrics.JmxReporter</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.html#reporter">reporter</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
@@ -256,11 +256,11 @@ 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/client/MetricsConnection.html#RESP_BASE">RESP_BASE</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>protected <a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentMap</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>,com.yammer.metrics.core.Histogram&gt;</code></td>
+<td class="colFirst"><code>protected <a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentMap</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>,com.codahale.metrics.Histogram&gt;</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.html#rpcHistograms">rpcHistograms</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>protected <a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentMap</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>,com.yammer.metrics.core.Timer&gt;</code></td>
+<td class="colFirst"><code>protected <a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentMap</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>,com.codahale.metrics.Timer&gt;</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.html#rpcTimers">rpcTimers</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
@@ -280,7 +280,7 @@ 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/client/MetricsConnection.html#serverStats">serverStats</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.NewMetric.html" title="interface in org.apache.hadoop.hbase.client">MetricsConnection.NewMetric</a>&lt;com.yammer.metrics.core.Timer&gt;</code></td>
+<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.NewMetric.html" title="interface in org.apache.hadoop.hbase.client">MetricsConnection.NewMetric</a>&lt;com.codahale.metrics.Timer&gt;</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.html#timerFactory">timerFactory</a></strong></code>&nbsp;</td>
 </tr>
 </table>
@@ -412,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>CLIENT_SIDE_METRICS_ENABLED_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/client/MetricsConnection.html#line.56">CLIENT_SIDE_METRICS_ENABLED_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/client/MetricsConnection.html#line.58">CLIENT_SIDE_METRICS_ENABLED_KEY</a></pre>
 <div class="block">Set this key to <code>true</code> to enable metrics collection of client requests.</div>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.client.MetricsConnection.CLIENT_SIDE_METRICS_ENABLED_KEY">Constant Field Values</a></dd></dl>
 </li>
@@ -423,7 +423,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>DRTN_BASE</h4>
-<pre>private 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/client/MetricsConnection.html#line.58">DRTN_BASE</a></pre>
+<pre>private 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/client/MetricsConnection.html#line.60">DRTN_BASE</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.client.MetricsConnection.DRTN_BASE">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -433,7 +433,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>REQ_BASE</h4>
-<pre>private 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/client/MetricsConnection.html#line.59">REQ_BASE</a></pre>
+<pre>private 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/client/MetricsConnection.html#line.61">REQ_BASE</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.client.MetricsConnection.REQ_BASE">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -443,7 +443,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>RESP_BASE</h4>
-<pre>private 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/client/MetricsConnection.html#line.60">RESP_BASE</a></pre>
+<pre>private 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/client/MetricsConnection.html#line.62">RESP_BASE</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.client.MetricsConnection.RESP_BASE">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -453,7 +453,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>MEMLOAD_BASE</h4>
-<pre>private 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/client/MetricsConnection.html#line.61">MEMLOAD_BASE</a></pre>
+<pre>private 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/client/MetricsConnection.html#line.63">MEMLOAD_BASE</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.client.MetricsConnection.MEMLOAD_BASE">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -463,7 +463,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>HEAP_BASE</h4>
-<pre>private 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/client/MetricsConnection.html#line.62">HEAP_BASE</a></pre>
+<pre>private 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/client/MetricsConnection.html#line.64">HEAP_BASE</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.client.MetricsConnection.HEAP_BASE">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -473,7 +473,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>CLIENT_SVC</h4>
-<pre>private 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/client/MetricsConnection.html#line.63">CLIENT_SVC</a></pre>
+<pre>private 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/client/MetricsConnection.html#line.65">CLIENT_SVC</a></pre>
 </li>
 </ul>
 <a name="serverStats">
@@ -482,7 +482,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>serverStats</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ConcurrentHashMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentHashMap</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentMap</a>&lt;byte[],<a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.RegionStats.html" title="class in org.apache.hadoop.hbase.client">MetricsConnection.RegionStats</a>&gt;&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.184">serverStats</a></pre>
+<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ConcurrentHashMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentHashMap</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentMap</a>&lt;byte[],<a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.RegionStats.html" title="class in org.apache.hadoop.hbase.client">MetricsConnection.RegionStats</a>&gt;&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.192">serverStats</a></pre>
 </li>
 </ul>
 <a name="CAPACITY">
@@ -491,7 +491,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>CAPACITY</h4>
-<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.227">CAPACITY</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.235">CAPACITY</a></pre>
 <div class="block">Anticipated number of metric entries</div>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.client.MetricsConnection.CAPACITY">Constant Field Values</a></dd></dl>
 </li>
@@ -502,7 +502,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>LOAD_FACTOR</h4>
-<pre>private static final&nbsp;float <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.229">LOAD_FACTOR</a></pre>
+<pre>private static final&nbsp;float <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.237">LOAD_FACTOR</a></pre>
 <div class="block">Default load factor from <a href="http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html?is-external=true#DEFAULT_LOAD_FACTOR" title="class or interface in java.util"><code>HashMap.DEFAULT_LOAD_FACTOR</code></a></div>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.client.MetricsConnection.LOAD_FACTOR">Constant Field Values</a></dd></dl>
 </li>
@@ -513,7 +513,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>CONCURRENCY_LEVEL</h4>
-<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.234">CONCURRENCY_LEVEL</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.242">CONCURRENCY_LEVEL</a></pre>
 <div class="block">Anticipated number of concurrent accessor threads, from
  <a href="../../../../../org/apache/hadoop/hbase/client/ConnectionImplementation.html#getBatchPool()"><code>ConnectionImplementation.getBatchPool()</code></a></div>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.client.MetricsConnection.CONCURRENCY_LEVEL">Constant Field Values</a></dd></dl>
@@ -525,7 +525,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>registry</h4>
-<pre>private final&nbsp;com.yammer.metrics.core.MetricsRegistry <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.236">registry</a></pre>
+<pre>private final&nbsp;com.codahale.metrics.MetricRegistry <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.244">registry</a></pre>
 </li>
 </ul>
 <a name="reporter">
@@ -534,7 +534,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>reporter</h4>
-<pre>private final&nbsp;com.yammer.metrics.reporting.JmxReporter <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.237">reporter</a></pre>
+<pre>private final&nbsp;com.codahale.metrics.JmxReporter <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.245">reporter</a></pre>
 </li>
 </ul>
 <a name="scope">
@@ -543,7 +543,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>scope</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/client/MetricsConnection.html#line.238">scope</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/client/MetricsConnection.html#line.246">scope</a></pre>
 </li>
 </ul>
 <a name="timerFactory">
@@ -552,7 +552,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>timerFactory</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.NewMetric.html" title="interface in org.apache.hadoop.hbase.client">MetricsConnection.NewMetric</a>&lt;com.yammer.metrics.core.Timer&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.240">timerFactory</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.NewMetric.html" title="interface in org.apache.hadoop.hbase.client">MetricsConnection.NewMetric</a>&lt;com.codahale.metrics.Timer&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.248">timerFactory</a></pre>
 </li>
 </ul>
 <a name="histogramFactory">
@@ -561,7 +561,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>histogramFactory</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.NewMetric.html" title="interface in org.apache.hadoop.hbase.client">MetricsConnection.NewMetric</a>&lt;com.yammer.metrics.core.Histogram&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.246">histogramFactory</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.NewMetric.html" title="interface in org.apache.hadoop.hbase.client">MetricsConnection.NewMetric</a>&lt;com.codahale.metrics.Histogram&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.254">histogramFactory</a></pre>
 </li>
 </ul>
 <a name="metaCacheHits">
@@ -570,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>metaCacheHits</h4>
-<pre>protected final&nbsp;com.yammer.metrics.core.Counter <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.254">metaCacheHits</a></pre>
+<pre>protected final&nbsp;com.codahale.metrics.Counter <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.262">metaCacheHits</a></pre>
 </li>
 </ul>
 <a name="metaCacheMisses">
@@ -579,7 +579,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>metaCacheMisses</h4>
-<pre>protected final&nbsp;com.yammer.metrics.core.Counter <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.255">metaCacheMisses</a></pre>
+<pre>protected final&nbsp;com.codahale.metrics.Counter <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.263">metaCacheMisses</a></pre>
 </li>
 </ul>
 <a name="getTracker">
@@ -588,7 +588,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getTracker</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html" title="class in org.apache.hadoop.hbase.client">MetricsConnection.CallTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.256">getTracker</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html" title="class in org.apache.hadoop.hbase.client">MetricsConnection.CallTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.264">getTracker</a></pre>
 </li>
 </ul>
 <a name="scanTracker">
@@ -597,7 +597,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>scanTracker</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html" title="class in org.apache.hadoop.hbase.client">MetricsConnection.CallTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.257">scanTracker</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html" title="class in org.apache.hadoop.hbase.client">MetricsConnection.CallTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.265">scanTracker</a></pre>
 </li>
 </ul>
 <a name="appendTracker">
@@ -606,7 +606,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>appendTracker</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html" title="class in org.apache.hadoop.hbase.client">MetricsConnection.CallTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.258">appendTracker</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html" title="class in org.apache.hadoop.hbase.client">MetricsConnection.CallTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.266">appendTracker</a></pre>
 </li>
 </ul>
 <a name="deleteTracker">
@@ -615,7 +615,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteTracker</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html" title="class in org.apache.hadoop.hbase.client">MetricsConnection.CallTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.259">deleteTracker</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html" title="class in org.apache.hadoop.hbase.client">MetricsConnection.CallTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.267">deleteTracker</a></pre>
 </li>
 </ul>
 <a name="incrementTracker">
@@ -624,7 +624,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>incrementTracker</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html" title="class in org.apache.hadoop.hbase.client">MetricsConnection.CallTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.260">incrementTracker</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html" title="class in org.apache.hadoop.hbase.client">MetricsConnection.CallTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.268">incrementTracker</a></pre>
 </li>
 </ul>
 <a name="putTracker">
@@ -633,7 +633,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>putTracker</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html" title="class in org.apache.hadoop.hbase.client">MetricsConnection.CallTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.261">putTracker</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html" title="class in org.apache.hadoop.hbase.client">MetricsConnection.CallTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.269">putTracker</a></pre>
 </li>
 </ul>
 <a name="multiTracker">
@@ -642,7 +642,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>multiTracker</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html" title="class in org.apache.hadoop.hbase.client">MetricsConnection.CallTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.262">multiTracker</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html" title="class in org.apache.hadoop.hbase.client">MetricsConnection.CallTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.270">multiTracker</a></pre>
 </li>
 </ul>
 <a name="runnerStats">
@@ -651,7 +651,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>runnerStats</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.RunnerStats.html" title="class in org.apache.hadoop.hbase.client">MetricsConnection.RunnerStats</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.263">runnerStats</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.RunnerStats.html" title="class in org.apache.hadoop.hbase.client">MetricsConnection.RunnerStats</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.271">runnerStats</a></pre>
 </li>
 </ul>
 <a name="rpcTimers">
@@ -660,7 +660,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>rpcTimers</h4>
-<pre>protected final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentMap</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>,com.yammer.metrics.core.Timer&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.270">rpcTimers</a></pre>
+<pre>protected final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentMap</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>,com.codahale.metrics.Timer&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.278">rpcTimers</a></pre>
 </li>
 </ul>
 <a name="rpcHistograms">
@@ -669,7 +669,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>rpcHistograms</h4>
-<pre>protected final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentMap</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>,com.yammer.metrics.core.Histogram&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.272">rpcHistograms</a></pre>
+<pre>protected final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentMap</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>,com.codahale.metrics.Histogram&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.280">rpcHistograms</a></pre>
 </li>
 </ul>
 </li>
@@ -686,7 +686,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MetricsConnection</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.276">MetricsConnection</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ConnectionImplementation.html" title="class in org.apache.hadoop.hbase.client">ConnectionImplementation</a>&nbsp;conn)</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.284">MetricsConnection</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ConnectionImplementation.html" title="class in org.apache.hadoop.hbase.client">ConnectionImplementation</a>&nbsp;conn)</pre>
 </li>
 </ul>
 </li>
@@ -703,7 +703,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>updateServerStats</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.187">updateServerStats</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.195">updateServerStats</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                      byte[]&nbsp;regionName,
                      <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;r)</pre>
 </li>
@@ -714,7 +714,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>shutdown</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.315">shutdown</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.319">shutdown</a>()</pre>
 </li>
 </ul>
 <a name="newCallStats()">
@@ -723,7 +723,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>newCallStats</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html" title="class in org.apache.hadoop.hbase.client">MetricsConnection.CallStats</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.321">newCallStats</a>()</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html" title="class in org.apache.hadoop.hbase.client">MetricsConnection.CallStats</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.324">newCallStats</a>()</pre>
 <div class="block">Produce an instance of <a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html" title="class in org.apache.hadoop.hbase.client"><code>MetricsConnection.CallStats</code></a> for clients to attach to RPCs.</div>
 </li>
 </ul>
@@ -733,7 +733,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>incrMetaCacheHit</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.327">incrMetaCacheHit</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.330">incrMetaCacheHit</a>()</pre>
 <div class="block">Increment the number of meta cache hits.</div>
 </li>
 </ul>
@@ -743,7 +743,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>incrMetaCacheMiss</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.332">incrMetaCacheMiss</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.335">incrMetaCacheMiss</a>()</pre>
 <div class="block">Increment the number of meta cache misses.</div>
 </li>
 </ul>
@@ -753,7 +753,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>incrNormalRunners</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.337">incrNormalRunners</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.340">incrNormalRunners</a>()</pre>
 <div class="block">Increment the number of normal runner counts.</div>
 </li>
 </ul>
@@ -763,7 +763,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>incrDelayRunners</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.342">incrDelayRunners</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.345">incrDelayRunners</a>()</pre>
 <div class="block">Increment the number of delay runner counts.</div>
 </li>
 </ul>
@@ -773,7 +773,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>updateDelayInterval</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.347">updateDelayInterval</a>(long&nbsp;interval)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.350">updateDelayInterval</a>(long&nbsp;interval)</pre>
 <div class="block">Update delay interval of delay runner.</div>
 </li>
 </ul>
@@ -783,7 +783,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetric</h4>
-<pre>private&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.354">getMetric</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;key,
+<pre>private&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.357">getMetric</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;key,
               <a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentMap</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>,T&gt;&nbsp;map,
               <a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.NewMetric.html" title="interface in org.apache.hadoop.hbase.client">MetricsConnection.NewMetric</a>&lt;T&gt;&nbsp;factory)</pre>
 <div class="block">Get a metric for <code>key</code> from <code>map</code>, or create it with <code>factory</code>.</div>
@@ -795,7 +795,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>updateRpcGeneric</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.364">updateRpcGeneric</a>(com.google.protobuf.Descriptors.MethodDescriptor&nbsp;method,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.367">updateRpcGeneric</a>(com.google.protobuf.Descriptors.MethodDescriptor&nbsp;method,
                     <a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html" title="class in org.apache.hadoop.hbase.client">MetricsConnection.CallStats</a>&nbsp;stats)</pre>
 <div class="block">Update call stats for non-critical-path methods</div>
 </li>
@@ -806,7 +806,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>updateRpc</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.375">updateRpc</a>(com.google.protobuf.Descriptors.MethodDescriptor&nbsp;method,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/MetricsConnection.html#line.378">updateRpc</a>(com.google.protobuf.Descriptors.MethodDescriptor&nbsp;method,
              com.google.protobuf.Message&nbsp;param,
              <a href="../../../../../org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html" title="class in org.apache.hadoop.hbase.client">MetricsConnection.CallStats</a>&nbsp;stats)</pre>
 <div class="block">Report RPC context to metrics system.</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/hbase/client/class-use/MetricsConnection.NewMetric.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/class-use/MetricsConnection.NewMetric.html b/devapidocs/org/apache/hadoop/hbase/client/class-use/MetricsConnection.NewMetric.html
index 7bee2e1..497bb0f 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/class-use/MetricsConnection.NewMetric.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/class-use/MetricsConnection.NewMetric.html
@@ -97,11 +97,11 @@
 </tr>
 <tbody>
 <tr class="altColor">
-<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/MetricsConnection.NewMetric.html" title="interface in org.apache.hadoop.hbase.client">MetricsConnection.NewMetric</a>&lt;com.yammer.metrics.core.Histogram&gt;</code></td>
+<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/MetricsConnection.NewMetric.html" title="interface in org.apache.hadoop.hbase.client">MetricsConnection.NewMetric</a>&lt;com.codahale.metrics.Histogram&gt;</code></td>
 <td class="colLast"><span class="strong">MetricsConnection.</span><code><strong><a href="../../../../../../org/apache/hadoop/hbase/client/MetricsConnection.html#histogramFactory">histogramFactory</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/MetricsConnection.NewMetric.html" title="interface in org.apache.hadoop.hbase.client">MetricsConnection.NewMetric</a>&lt;com.yammer.metrics.core.Timer&gt;</code></td>
+<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/MetricsConnection.NewMetric.html" title="interface in org.apache.hadoop.hbase.client">MetricsConnection.NewMetric</a>&lt;com.codahale.metrics.Timer&gt;</code></td>
 <td class="colLast"><span class="strong">MetricsConnection.</span><code><strong><a href="../../../../../../org/apache/hadoop/hbase/client/MetricsConnection.html#timerFactory">timerFactory</a></strong></code>&nbsp;</td>
 </tr>
 </tbody>


[25/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html
index b065ec0..519b3ef 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html
@@ -31,633 +31,748 @@
 <span class="sourceLineNo">023</span>import java.io.DataInput;<a name="line.23"></a>
 <span class="sourceLineNo">024</span>import java.io.IOException;<a name="line.24"></a>
 <span class="sourceLineNo">025</span>import java.io.PrintStream;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.util.ArrayList;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.util.HashMap;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.util.Iterator;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.util.LinkedHashSet;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.util.List;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.util.Locale;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.util.Map;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.util.Set;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.SortedMap;<a name="line.34"></a>
-<span class="sourceLineNo">035</span><a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.commons.cli.CommandLine;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.commons.cli.CommandLineParser;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.commons.cli.HelpFormatter;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.commons.cli.Option;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.commons.cli.OptionGroup;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.commons.cli.Options;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.commons.cli.ParseException;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.commons.cli.PosixParser;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.commons.logging.Log;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.commons.logging.LogFactory;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.classification.InterfaceStability;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.conf.Configuration;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.conf.Configured;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.fs.FileSystem;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.fs.Path;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.Cell;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.HConstants;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.TableName;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.Tag;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.io.FSDataInputStreamWrapper;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.io.hfile.HFile.FileInfo;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.mob.MobUtils;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.regionserver.TimeRangeTracker;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.util.BloomFilter;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.util.BloomFilterUtil;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.util.BloomFilterFactory;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.Writables;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.util.Tool;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.util.ToolRunner;<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>import com.yammer.metrics.core.Histogram;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import com.yammer.metrics.core.Metric;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import com.yammer.metrics.core.MetricName;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import com.yammer.metrics.core.MetricPredicate;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import com.yammer.metrics.core.MetricsRegistry;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import com.yammer.metrics.reporting.ConsoleReporter;<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> * Implements pretty-printing functionality for {@link HFile}s.<a name="line.84"></a>
-<span class="sourceLineNo">085</span> */<a name="line.85"></a>
-<span class="sourceLineNo">086</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.86"></a>
-<span class="sourceLineNo">087</span>@InterfaceStability.Evolving<a name="line.87"></a>
-<span class="sourceLineNo">088</span>public class HFilePrettyPrinter extends Configured implements Tool {<a name="line.88"></a>
-<span class="sourceLineNo">089</span><a name="line.89"></a>
-<span class="sourceLineNo">090</span>  private static final Log LOG = LogFactory.getLog(HFilePrettyPrinter.class);<a name="line.90"></a>
-<span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>  private Options options = new Options();<a name="line.92"></a>
-<span class="sourceLineNo">093</span><a name="line.93"></a>
-<span class="sourceLineNo">094</span>  private boolean verbose;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  private boolean printValue;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  private boolean printKey;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>  private boolean shouldPrintMeta;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  private boolean printBlockIndex;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  private boolean printBlockHeaders;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>  private boolean printStats;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  private boolean checkRow;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>  private boolean checkFamily;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  private boolean isSeekToRow = false;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>  private boolean checkMobIntegrity = false;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>  private Map&lt;String, List&lt;Path&gt;&gt; mobFileLocations;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  private static final int FOUND_MOB_FILES_CACHE_CAPACITY = 50;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>  private static final int MISSING_MOB_FILES_CACHE_CAPACITY = 20;<a name="line.107"></a>
-<span class="sourceLineNo">108</span><a name="line.108"></a>
-<span class="sourceLineNo">109</span>  /**<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   * The row which the user wants to specify and print all the KeyValues for.<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   */<a name="line.111"></a>
-<span class="sourceLineNo">112</span>  private byte[] row = null;<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>  private List&lt;Path&gt; files = new ArrayList&lt;Path&gt;();<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  private int count;<a name="line.115"></a>
-<span class="sourceLineNo">116</span><a name="line.116"></a>
-<span class="sourceLineNo">117</span>  private static final String FOUR_SPACES = "    ";<a name="line.117"></a>
+<span class="sourceLineNo">026</span>import java.text.DateFormat;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.util.ArrayList;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.util.HashMap;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.util.Iterator;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.LinkedHashSet;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.util.List;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.util.Locale;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.util.Map;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.Set;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.SortedMap;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import java.util.TimeZone;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import java.util.concurrent.TimeUnit;<a name="line.37"></a>
+<span class="sourceLineNo">038</span><a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.commons.cli.CommandLine;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.commons.cli.CommandLineParser;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.commons.cli.HelpFormatter;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.commons.cli.Option;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.commons.cli.OptionGroup;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.commons.cli.Options;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.commons.cli.ParseException;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.commons.cli.PosixParser;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.commons.lang.StringUtils;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.commons.logging.Log;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.commons.logging.LogFactory;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.classification.InterfaceStability;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.conf.Configuration;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.conf.Configured;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.fs.FileSystem;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.fs.Path;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.Cell;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.HConstants;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.TableName;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.Tag;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.io.FSDataInputStreamWrapper;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.io.hfile.HFile.FileInfo;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.mob.MobUtils;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.regionserver.TimeRangeTracker;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.util.BloomFilter;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.util.BloomFilterUtil;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.BloomFilterFactory;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.util.Writables;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.util.Tool;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.util.ToolRunner;<a name="line.78"></a>
+<span class="sourceLineNo">079</span><a name="line.79"></a>
+<span class="sourceLineNo">080</span>import com.codahale.metrics.Histogram;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import com.codahale.metrics.Counter;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import com.codahale.metrics.Gauge;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import com.codahale.metrics.Meter;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import com.codahale.metrics.MetricFilter;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import com.codahale.metrics.MetricRegistry;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import com.codahale.metrics.ConsoleReporter;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import com.codahale.metrics.ScheduledReporter;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import com.codahale.metrics.Snapshot;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import com.codahale.metrics.Timer;<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>import static com.codahale.metrics.MetricRegistry.name;<a name="line.91"></a>
+<span class="sourceLineNo">092</span><a name="line.92"></a>
+<span class="sourceLineNo">093</span>/**<a name="line.93"></a>
+<span class="sourceLineNo">094</span> * Implements pretty-printing functionality for {@link HFile}s.<a name="line.94"></a>
+<span class="sourceLineNo">095</span> */<a name="line.95"></a>
+<span class="sourceLineNo">096</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.96"></a>
+<span class="sourceLineNo">097</span>@InterfaceStability.Evolving<a name="line.97"></a>
+<span class="sourceLineNo">098</span>public class HFilePrettyPrinter extends Configured implements Tool {<a name="line.98"></a>
+<span class="sourceLineNo">099</span><a name="line.99"></a>
+<span class="sourceLineNo">100</span>  private static final Log LOG = LogFactory.getLog(HFilePrettyPrinter.class);<a name="line.100"></a>
+<span class="sourceLineNo">101</span><a name="line.101"></a>
+<span class="sourceLineNo">102</span>  private Options options = new Options();<a name="line.102"></a>
+<span class="sourceLineNo">103</span><a name="line.103"></a>
+<span class="sourceLineNo">104</span>  private boolean verbose;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  private boolean printValue;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>  private boolean printKey;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>  private boolean shouldPrintMeta;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  private boolean printBlockIndex;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>  private boolean printBlockHeaders;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  private boolean printStats;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  private boolean checkRow;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>  private boolean checkFamily;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>  private boolean isSeekToRow = false;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>  private boolean checkMobIntegrity = false;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  private Map&lt;String, List&lt;Path&gt;&gt; mobFileLocations;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  private static final int FOUND_MOB_FILES_CACHE_CAPACITY = 50;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  private static final int MISSING_MOB_FILES_CACHE_CAPACITY = 20;<a name="line.117"></a>
 <span class="sourceLineNo">118</span><a name="line.118"></a>
-<span class="sourceLineNo">119</span>  public HFilePrettyPrinter() {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    super();<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    init();<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  }<a name="line.122"></a>
+<span class="sourceLineNo">119</span>  /**<a name="line.119"></a>
+<span class="sourceLineNo">120</span>   * The row which the user wants to specify and print all the KeyValues for.<a name="line.120"></a>
+<span class="sourceLineNo">121</span>   */<a name="line.121"></a>
+<span class="sourceLineNo">122</span>  private byte[] row = null;<a name="line.122"></a>
 <span class="sourceLineNo">123</span><a name="line.123"></a>
-<span class="sourceLineNo">124</span>  public HFilePrettyPrinter(Configuration conf) {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    super(conf);<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    init();<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  }<a name="line.127"></a>
+<span class="sourceLineNo">124</span>  private List&lt;Path&gt; files = new ArrayList&lt;Path&gt;();<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  private int count;<a name="line.125"></a>
+<span class="sourceLineNo">126</span><a name="line.126"></a>
+<span class="sourceLineNo">127</span>  private static final String FOUR_SPACES = "    ";<a name="line.127"></a>
 <span class="sourceLineNo">128</span><a name="line.128"></a>
-<span class="sourceLineNo">129</span>  private void init() {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    options.addOption("v", "verbose", false,<a name="line.130"></a>
-<span class="sourceLineNo">131</span>        "Verbose output; emits file and meta data delimiters");<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    options.addOption("p", "printkv", false, "Print key/value pairs");<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    options.addOption("e", "printkey", false, "Print keys");<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    options.addOption("m", "printmeta", false, "Print meta data of file");<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    options.addOption("b", "printblocks", false, "Print block index meta data");<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    options.addOption("h", "printblockheaders", false, "Print block headers for each block.");<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    options.addOption("k", "checkrow", false,<a name="line.137"></a>
-<span class="sourceLineNo">138</span>        "Enable row order check; looks for out-of-order keys");<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    options.addOption("a", "checkfamily", false, "Enable family check");<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    options.addOption("w", "seekToRow", true,<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      "Seek to this row and print all the kvs for this row only");<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    options.addOption("s", "stats", false, "Print statistics");<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    options.addOption("i", "checkMobIntegrity", false,<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      "Print all cells whose mob files are missing");<a name="line.144"></a>
-<span class="sourceLineNo">145</span><a name="line.145"></a>
-<span class="sourceLineNo">146</span>    OptionGroup files = new OptionGroup();<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    files.addOption(new Option("f", "file", true,<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      "File to scan. Pass full-path; e.g. hdfs://a:9000/hbase/hbase:meta/12/34"));<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    files.addOption(new Option("r", "region", true,<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      "Region to scan. Pass region name; e.g. 'hbase:meta,,1'"));<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    options.addOptionGroup(files);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  }<a name="line.152"></a>
-<span class="sourceLineNo">153</span><a name="line.153"></a>
-<span class="sourceLineNo">154</span>  public boolean parseOptions(String args[]) throws ParseException,<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      IOException {<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    if (args.length == 0) {<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      HelpFormatter formatter = new HelpFormatter();<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      formatter.printHelp("HFile", options, true);<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      return false;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    }<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    CommandLineParser parser = new PosixParser();<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    CommandLine cmd = parser.parse(options, args);<a name="line.162"></a>
+<span class="sourceLineNo">129</span>  public HFilePrettyPrinter() {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    super();<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    init();<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  }<a name="line.132"></a>
+<span class="sourceLineNo">133</span><a name="line.133"></a>
+<span class="sourceLineNo">134</span>  public HFilePrettyPrinter(Configuration conf) {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    super(conf);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    init();<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>  private void init() {<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    options.addOption("v", "verbose", false,<a name="line.140"></a>
+<span class="sourceLineNo">141</span>        "Verbose output; emits file and meta data delimiters");<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    options.addOption("p", "printkv", false, "Print key/value pairs");<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    options.addOption("e", "printkey", false, "Print keys");<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    options.addOption("m", "printmeta", false, "Print meta data of file");<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    options.addOption("b", "printblocks", false, "Print block index meta data");<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    options.addOption("h", "printblockheaders", false, "Print block headers for each block.");<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    options.addOption("k", "checkrow", false,<a name="line.147"></a>
+<span class="sourceLineNo">148</span>        "Enable row order check; looks for out-of-order keys");<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    options.addOption("a", "checkfamily", false, "Enable family check");<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    options.addOption("w", "seekToRow", true,<a name="line.150"></a>
+<span class="sourceLineNo">151</span>      "Seek to this row and print all the kvs for this row only");<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    options.addOption("s", "stats", false, "Print statistics");<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    options.addOption("i", "checkMobIntegrity", false,<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      "Print all cells whose mob files are missing");<a name="line.154"></a>
+<span class="sourceLineNo">155</span><a name="line.155"></a>
+<span class="sourceLineNo">156</span>    OptionGroup files = new OptionGroup();<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    files.addOption(new Option("f", "file", true,<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      "File to scan. Pass full-path; e.g. hdfs://a:9000/hbase/hbase:meta/12/34"));<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    files.addOption(new Option("r", "region", true,<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      "Region to scan. Pass region name; e.g. 'hbase:meta,,1'"));<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    options.addOptionGroup(files);<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>    verbose = cmd.hasOption("v");<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    printValue = cmd.hasOption("p");<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    printKey = cmd.hasOption("e") || printValue;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    shouldPrintMeta = cmd.hasOption("m");<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    printBlockIndex = cmd.hasOption("b");<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    printBlockHeaders = cmd.hasOption("h");<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    printStats = cmd.hasOption("s");<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    checkRow = cmd.hasOption("k");<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    checkFamily = cmd.hasOption("a");<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    checkMobIntegrity = cmd.hasOption("i");<a name="line.173"></a>
-<span class="sourceLineNo">174</span><a name="line.174"></a>
-<span class="sourceLineNo">175</span>    if (cmd.hasOption("f")) {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      files.add(new Path(cmd.getOptionValue("f")));<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    }<a name="line.177"></a>
-<span class="sourceLineNo">178</span><a name="line.178"></a>
-<span class="sourceLineNo">179</span>    if (cmd.hasOption("w")) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      String key = cmd.getOptionValue("w");<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      if (key != null &amp;&amp; key.length() != 0) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        row = Bytes.toBytesBinary(key);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>        isSeekToRow = true;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      } else {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>        System.err.println("Invalid row is specified.");<a name="line.185"></a>
-<span class="sourceLineNo">186</span>        System.exit(-1);<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><a name="line.189"></a>
-<span class="sourceLineNo">190</span>    if (cmd.hasOption("r")) {<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      String regionName = cmd.getOptionValue("r");<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      byte[] rn = Bytes.toBytes(regionName);<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      byte[][] hri = HRegionInfo.parseRegionName(rn);<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      Path rootDir = FSUtils.getRootDir(getConf());<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      Path tableDir = FSUtils.getTableDir(rootDir, TableName.valueOf(hri[0]));<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      String enc = HRegionInfo.encodeRegionName(rn);<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      Path regionDir = new Path(tableDir, enc);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      if (verbose)<a name="line.198"></a>
-<span class="sourceLineNo">199</span>        System.out.println("region dir -&gt; " + regionDir);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      List&lt;Path&gt; regionFiles = HFile.getStoreFiles(FileSystem.get(getConf()),<a name="line.200"></a>
-<span class="sourceLineNo">201</span>          regionDir);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      if (verbose)<a name="line.202"></a>
-<span class="sourceLineNo">203</span>        System.out.println("Number of region files found -&gt; "<a name="line.203"></a>
-<span class="sourceLineNo">204</span>            + regionFiles.size());<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      if (verbose) {<a name="line.205"></a>
-<span class="sourceLineNo">206</span>        int i = 1;<a name="line.206"></a>
-<span class="sourceLineNo">207</span>        for (Path p : regionFiles) {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>          if (verbose)<a name="line.208"></a>
-<span class="sourceLineNo">209</span>            System.out.println("Found file[" + i++ + "] -&gt; " + p);<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>      files.addAll(regionFiles);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    }<a name="line.213"></a>
-<span class="sourceLineNo">214</span><a name="line.214"></a>
-<span class="sourceLineNo">215</span>    if(checkMobIntegrity) {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      if (verbose) {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>        System.out.println("checkMobIntegrity is enabled");<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      }<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      mobFileLocations = new HashMap&lt;String, List&lt;Path&gt;&gt;();<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    }<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    return true;<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>  /**<a name="line.224"></a>
-<span class="sourceLineNo">225</span>   * Runs the command-line pretty-printer, and returns the desired command<a name="line.225"></a>
-<span class="sourceLineNo">226</span>   * exit code (zero for success, non-zero for failure).<a name="line.226"></a>
-<span class="sourceLineNo">227</span>   */<a name="line.227"></a>
-<span class="sourceLineNo">228</span>  @Override<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  public int run(String[] args) {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    if (getConf() == null) {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      throw new RuntimeException("A Configuration instance must be provided.");<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    }<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    try {<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      FSUtils.setFsDefault(getConf(), FSUtils.getRootDir(getConf()));<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      if (!parseOptions(args))<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        return 1;<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    } catch (IOException ex) {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      LOG.error("Error parsing command-line options", ex);<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      return 1;<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    } catch (ParseException ex) {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      LOG.error("Error parsing command-line options", ex);<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      return 1;<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>    // iterate over all files found<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    for (Path fileName : files) {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      try {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>        processFile(fileName);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      } catch (IOException ex) {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        LOG.error("Error reading " + fileName, ex);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>        System.exit(-2);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      }<a name="line.252"></a>
+<span class="sourceLineNo">164</span>  public boolean parseOptions(String args[]) throws ParseException,<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      IOException {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    if (args.length == 0) {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      HelpFormatter formatter = new HelpFormatter();<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      formatter.printHelp("HFile", options, true);<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      return false;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    }<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    CommandLineParser parser = new PosixParser();<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    CommandLine cmd = parser.parse(options, args);<a name="line.172"></a>
+<span class="sourceLineNo">173</span><a name="line.173"></a>
+<span class="sourceLineNo">174</span>    verbose = cmd.hasOption("v");<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    printValue = cmd.hasOption("p");<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    printKey = cmd.hasOption("e") || printValue;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    shouldPrintMeta = cmd.hasOption("m");<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    printBlockIndex = cmd.hasOption("b");<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    printBlockHeaders = cmd.hasOption("h");<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    printStats = cmd.hasOption("s");<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    checkRow = cmd.hasOption("k");<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    checkFamily = cmd.hasOption("a");<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    checkMobIntegrity = cmd.hasOption("i");<a name="line.183"></a>
+<span class="sourceLineNo">184</span><a name="line.184"></a>
+<span class="sourceLineNo">185</span>    if (cmd.hasOption("f")) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      files.add(new Path(cmd.getOptionValue("f")));<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>    if (cmd.hasOption("w")) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      String key = cmd.getOptionValue("w");<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      if (key != null &amp;&amp; key.length() != 0) {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>        row = Bytes.toBytesBinary(key);<a name="line.192"></a>
+<span class="sourceLineNo">193</span>        isSeekToRow = true;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      } else {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>        System.err.println("Invalid row is specified.");<a name="line.195"></a>
+<span class="sourceLineNo">196</span>        System.exit(-1);<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>    if (cmd.hasOption("r")) {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      String regionName = cmd.getOptionValue("r");<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      byte[] rn = Bytes.toBytes(regionName);<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      byte[][] hri = HRegionInfo.parseRegionName(rn);<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      Path rootDir = FSUtils.getRootDir(getConf());<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      Path tableDir = FSUtils.getTableDir(rootDir, TableName.valueOf(hri[0]));<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      String enc = HRegionInfo.encodeRegionName(rn);<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      Path regionDir = new Path(tableDir, enc);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      if (verbose)<a name="line.208"></a>
+<span class="sourceLineNo">209</span>        System.out.println("region dir -&gt; " + regionDir);<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      List&lt;Path&gt; regionFiles = HFile.getStoreFiles(FileSystem.get(getConf()),<a name="line.210"></a>
+<span class="sourceLineNo">211</span>          regionDir);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      if (verbose)<a name="line.212"></a>
+<span class="sourceLineNo">213</span>        System.out.println("Number of region files found -&gt; "<a name="line.213"></a>
+<span class="sourceLineNo">214</span>            + regionFiles.size());<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      if (verbose) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>        int i = 1;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        for (Path p : regionFiles) {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>          if (verbose)<a name="line.218"></a>
+<span class="sourceLineNo">219</span>            System.out.println("Found file[" + i++ + "] -&gt; " + p);<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>      files.addAll(regionFiles);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    }<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>    if(checkMobIntegrity) {<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      if (verbose) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        System.out.println("checkMobIntegrity is enabled");<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      }<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      mobFileLocations = new HashMap&lt;String, List&lt;Path&gt;&gt;();<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    }<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    return true;<a name="line.231"></a>
+<span class="sourceLineNo">232</span>  }<a name="line.232"></a>
+<span class="sourceLineNo">233</span><a name="line.233"></a>
+<span class="sourceLineNo">234</span>  /**<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   * Runs the command-line pretty-printer, and returns the desired command<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   * exit code (zero for success, non-zero for failure).<a name="line.236"></a>
+<span class="sourceLineNo">237</span>   */<a name="line.237"></a>
+<span class="sourceLineNo">238</span>  @Override<a name="line.238"></a>
+<span class="sourceLineNo">239</span>  public int run(String[] args) {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    if (getConf() == null) {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      throw new RuntimeException("A Configuration instance must be provided.");<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    }<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    try {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      FSUtils.setFsDefault(getConf(), FSUtils.getRootDir(getConf()));<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      if (!parseOptions(args))<a name="line.245"></a>
+<span class="sourceLineNo">246</span>        return 1;<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    } catch (IOException ex) {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      LOG.error("Error parsing command-line options", ex);<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      return 1;<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    } catch (ParseException ex) {<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      LOG.error("Error parsing command-line options", ex);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      return 1;<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>    if (verbose || printKey) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      System.out.println("Scanned kv count -&gt; " + count);<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
-<span class="sourceLineNo">258</span><a name="line.258"></a>
-<span class="sourceLineNo">259</span>    return 0;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  }<a name="line.260"></a>
-<span class="sourceLineNo">261</span><a name="line.261"></a>
-<span class="sourceLineNo">262</span>  private void processFile(Path file) throws IOException {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    if (verbose)<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      System.out.println("Scanning -&gt; " + file);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    FileSystem fs = file.getFileSystem(getConf());<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    if (!fs.exists(file)) {<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      System.err.println("ERROR, file doesnt exist: " + file);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      System.exit(-2);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    }<a name="line.269"></a>
-<span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span>    HFile.Reader reader = HFile.createReader(fs, file, new CacheConfig(getConf()), getConf());<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>    Map&lt;byte[], byte[]&gt; fileInfo = reader.loadFileInfo();<a name="line.273"></a>
-<span class="sourceLineNo">274</span><a name="line.274"></a>
-<span class="sourceLineNo">275</span>    KeyValueStatsCollector fileStats = null;<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>    if (verbose || printKey || checkRow || checkFamily || printStats || checkMobIntegrity) {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      // scan over file and read key/value's and check if requested<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      HFileScanner scanner = reader.getScanner(false, false, false);<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      fileStats = new KeyValueStatsCollector();<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      boolean shouldScanKeysValues = false;<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      if (this.isSeekToRow) {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>        // seek to the first kv on this row<a name="line.283"></a>
-<span class="sourceLineNo">284</span>        shouldScanKeysValues =<a name="line.284"></a>
-<span class="sourceLineNo">285</span>          (scanner.seekTo(KeyValueUtil.createFirstOnRow(this.row)) != -1);<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      } else {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>        shouldScanKeysValues = scanner.seekTo();<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      }<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      if (shouldScanKeysValues)<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        scanKeysValues(file, fileStats, scanner, row);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    }<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>    // print meta data<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    if (shouldPrintMeta) {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      printMeta(reader, fileInfo);<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    }<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>    if (printBlockIndex) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      System.out.println("Block Index:");<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      System.out.println(reader.getDataBlockIndexReader());<a name="line.300"></a>
+<span class="sourceLineNo">255</span>    // iterate over all files found<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    for (Path fileName : files) {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      try {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>        processFile(fileName);<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      } catch (IOException ex) {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>        LOG.error("Error reading " + fileName, ex);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>        System.exit(-2);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      }<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    }<a name="line.263"></a>
+<span class="sourceLineNo">264</span><a name="line.264"></a>
+<span class="sourceLineNo">265</span>    if (verbose || printKey) {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      System.out.println("Scanned kv count -&gt; " + count);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    }<a name="line.267"></a>
+<span class="sourceLineNo">268</span><a name="line.268"></a>
+<span class="sourceLineNo">269</span>    return 0;<a name="line.269"></a>
+<span class="sourceLineNo">270</span>  }<a name="line.270"></a>
+<span class="sourceLineNo">271</span><a name="line.271"></a>
+<span class="sourceLineNo">272</span>  private void processFile(Path file) throws IOException {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    if (verbose)<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      System.out.println("Scanning -&gt; " + file);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    FileSystem fs = file.getFileSystem(getConf());<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    if (!fs.exists(file)) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      System.err.println("ERROR, file doesnt exist: " + file);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      System.exit(-2);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    }<a name="line.279"></a>
+<span class="sourceLineNo">280</span><a name="line.280"></a>
+<span class="sourceLineNo">281</span>    HFile.Reader reader = HFile.createReader(fs, file, new CacheConfig(getConf()), getConf());<a name="line.281"></a>
+<span class="sourceLineNo">282</span><a name="line.282"></a>
+<span class="sourceLineNo">283</span>    Map&lt;byte[], byte[]&gt; fileInfo = reader.loadFileInfo();<a name="line.283"></a>
+<span class="sourceLineNo">284</span><a name="line.284"></a>
+<span class="sourceLineNo">285</span>    KeyValueStatsCollector fileStats = null;<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>    if (verbose || printKey || checkRow || checkFamily || printStats || checkMobIntegrity) {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      // scan over file and read key/value's and check if requested<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      HFileScanner scanner = reader.getScanner(false, false, false);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      fileStats = new KeyValueStatsCollector();<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      boolean shouldScanKeysValues = false;<a name="line.291"></a>
+<span class="sourceLineNo">292</span>      if (this.isSeekToRow) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>        // seek to the first kv on this row<a name="line.293"></a>
+<span class="sourceLineNo">294</span>        shouldScanKeysValues =<a name="line.294"></a>
+<span class="sourceLineNo">295</span>          (scanner.seekTo(KeyValueUtil.createFirstOnRow(this.row)) != -1);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>      } else {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>        shouldScanKeysValues = scanner.seekTo();<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      }<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      if (shouldScanKeysValues)<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        scanKeysValues(file, fileStats, scanner, row);<a name="line.300"></a>
 <span class="sourceLineNo">301</span>    }<a name="line.301"></a>
 <span class="sourceLineNo">302</span><a name="line.302"></a>
-<span class="sourceLineNo">303</span>    if (printBlockHeaders) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>      System.out.println("Block Headers:");<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      /*<a name="line.305"></a>
-<span class="sourceLineNo">306</span>       * TODO: this same/similar block iteration logic is used in HFileBlock#blockRange and<a name="line.306"></a>
-<span class="sourceLineNo">307</span>       * TestLazyDataBlockDecompression. Refactor?<a name="line.307"></a>
-<span class="sourceLineNo">308</span>       */<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      FSDataInputStreamWrapper fsdis = new FSDataInputStreamWrapper(fs, file);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      long fileSize = fs.getFileStatus(file).getLen();<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      FixedFileTrailer trailer =<a name="line.311"></a>
-<span class="sourceLineNo">312</span>        FixedFileTrailer.readFromStream(fsdis.getStream(false), fileSize);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      long offset = trailer.getFirstDataBlockOffset(),<a name="line.313"></a>
-<span class="sourceLineNo">314</span>        max = trailer.getLastDataBlockOffset();<a name="line.314"></a>
-<span class="sourceLineNo">315</span>      HFileBlock block;<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      while (offset &lt;= max) {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>        block = reader.readBlock(offset, -1, /* cacheBlock */ false, /* pread */ false,<a name="line.317"></a>
-<span class="sourceLineNo">318</span>          /* isCompaction */ false, /* updateCacheMetrics */ false, null, null);<a name="line.318"></a>
-<span class="sourceLineNo">319</span>        offset += block.getOnDiskSizeWithHeader();<a name="line.319"></a>
-<span class="sourceLineNo">320</span>        System.out.println(block);<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      }<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    }<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span>    if (printStats) {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      fileStats.finish();<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      System.out.println("Stats:\n" + fileStats);<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>    reader.close();<a name="line.329"></a>
-<span class="sourceLineNo">330</span>  }<a name="line.330"></a>
-<span class="sourceLineNo">331</span><a name="line.331"></a>
-<span class="sourceLineNo">332</span>  private void scanKeysValues(Path file, KeyValueStatsCollector fileStats,<a name="line.332"></a>
-<span class="sourceLineNo">333</span>      HFileScanner scanner,  byte[] row) throws IOException {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    Cell pCell = null;<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    FileSystem fs = FileSystem.get(getConf());<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    Set&lt;String&gt; foundMobFiles = new LinkedHashSet&lt;String&gt;(FOUND_MOB_FILES_CACHE_CAPACITY);<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    Set&lt;String&gt; missingMobFiles = new LinkedHashSet&lt;String&gt;(MISSING_MOB_FILES_CACHE_CAPACITY);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    do {<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      Cell cell = scanner.getCell();<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      if (row != null &amp;&amp; row.length != 0) {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>        int result = CellComparator.COMPARATOR.compareRows(cell, row, 0, row.length);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>        if (result &gt; 0) {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>          break;<a name="line.343"></a>
-<span class="sourceLineNo">344</span>        } else if (result &lt; 0) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>          continue;<a name="line.345"></a>
-<span class="sourceLineNo">346</span>        }<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      }<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      // collect stats<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      if (printStats) {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>        fileStats.collect(cell);<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      }<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      // dump key value<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      if (printKey) {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>        System.out.print("K: " + cell);<a name="line.354"></a>
-<span class="sourceLineNo">355</span>        if (printValue) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>          System.out.print(" V: "<a name="line.356"></a>
-<span class="sourceLineNo">357</span>              + Bytes.toStringBinary(cell.getValueArray(), cell.getValueOffset(),<a name="line.357"></a>
-<span class="sourceLineNo">358</span>                  cell.getValueLength()));<a name="line.358"></a>
-<span class="sourceLineNo">359</span>          int i = 0;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>          List&lt;Tag&gt; tags = Tag.asList(cell.getTagsArray(), cell.getTagsOffset(),<a name="line.360"></a>
-<span class="sourceLineNo">361</span>              cell.getTagsLength());<a name="line.361"></a>
-<span class="sourceLineNo">362</span>          for (Tag tag : tags) {<a name="line.362"></a>
-<span class="sourceLineNo">363</span>            System.out.print(String.format(" T[%d]: %s", i++,<a name="line.363"></a>
-<span class="sourceLineNo">364</span>                Bytes.toStringBinary(tag.getBuffer(), tag.getTagOffset(), tag.getTagLength())));<a name="line.364"></a>
-<span class="sourceLineNo">365</span>          }<a name="line.365"></a>
-<span class="sourceLineNo">366</span>        }<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        System.out.println();<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      }<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      // check if rows are in order<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      if (checkRow &amp;&amp; pCell != null) {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>        if (CellComparator.COMPARATOR.compareRows(pCell, cell) &gt; 0) {<a name="line.371"></a>
-<span class="sourceLineNo">372</span>          System.err.println("WARNING, previous row is greater then"<a name="line.372"></a>
-<span class="sourceLineNo">373</span>              + " current row\n\tfilename -&gt; " + file + "\n\tprevious -&gt; "<a name="line.373"></a>
-<span class="sourceLineNo">374</span>              + CellUtil.getCellKeyAsString(pCell) + "\n\tcurrent  -&gt; "<a name="line.374"></a>
-<span class="sourceLineNo">375</span>              + CellUtil.getCellKeyAsString(cell));<a name="line.375"></a>
+<span class="sourceLineNo">303</span>    // print meta data<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    if (shouldPrintMeta) {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      printMeta(reader, fileInfo);<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>    if (printBlockIndex) {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      System.out.println("Block Index:");<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      System.out.println(reader.getDataBlockIndexReader());<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>    if (printBlockHeaders) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      System.out.println("Block Headers:");<a name="line.314"></a>
+<span class="sourceLineNo">315</span>      /*<a name="line.315"></a>
+<span class="sourceLineNo">316</span>       * TODO: this same/similar block iteration logic is used in HFileBlock#blockRange and<a name="line.316"></a>
+<span class="sourceLineNo">317</span>       * TestLazyDataBlockDecompression. Refactor?<a name="line.317"></a>
+<span class="sourceLineNo">318</span>       */<a name="line.318"></a>
+<span class="sourceLineNo">319</span>      FSDataInputStreamWrapper fsdis = new FSDataInputStreamWrapper(fs, file);<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      long fileSize = fs.getFileStatus(file).getLen();<a name="line.320"></a>
+<span class="sourceLineNo">321</span>      FixedFileTrailer trailer =<a name="line.321"></a>
+<span class="sourceLineNo">322</span>        FixedFileTrailer.readFromStream(fsdis.getStream(false), fileSize);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      long offset = trailer.getFirstDataBlockOffset(),<a name="line.323"></a>
+<span class="sourceLineNo">324</span>        max = trailer.getLastDataBlockOffset();<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      HFileBlock block;<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      while (offset &lt;= max) {<a name="line.326"></a>
+<span class="sourceLineNo">327</span>        block = reader.readBlock(offset, -1, /* cacheBlock */ false, /* pread */ false,<a name="line.327"></a>
+<span class="sourceLineNo">328</span>          /* isCompaction */ false, /* updateCacheMetrics */ false, null, null);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>        offset += block.getOnDiskSizeWithHeader();<a name="line.329"></a>
+<span class="sourceLineNo">330</span>        System.out.println(block);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>      }<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    }<a name="line.332"></a>
+<span class="sourceLineNo">333</span><a name="line.333"></a>
+<span class="sourceLineNo">334</span>    if (printStats) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>      fileStats.finish();<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      System.out.println("Stats:\n" + fileStats);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    }<a name="line.337"></a>
+<span class="sourceLineNo">338</span><a name="line.338"></a>
+<span class="sourceLineNo">339</span>    reader.close();<a name="line.339"></a>
+<span class="sourceLineNo">340</span>  }<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>  private void scanKeysValues(Path file, KeyValueStatsCollector fileStats,<a name="line.342"></a>
+<span class="sourceLineNo">343</span>      HFileScanner scanner,  byte[] row) throws IOException {<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    Cell pCell = null;<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    FileSystem fs = FileSystem.get(getConf());<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    Set&lt;String&gt; foundMobFiles = new LinkedHashSet&lt;String&gt;(FOUND_MOB_FILES_CACHE_CAPACITY);<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    Set&lt;String&gt; missingMobFiles = new LinkedHashSet&lt;String&gt;(MISSING_MOB_FILES_CACHE_CAPACITY);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    do {<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      Cell cell = scanner.getCell();<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      if (row != null &amp;&amp; row.length != 0) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>        int result = CellComparator.COMPARATOR.compareRows(cell, row, 0, row.length);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>        if (result &gt; 0) {<a name="line.352"></a>
+<span class="sourceLineNo">353</span>          break;<a name="line.353"></a>
+<span class="sourceLineNo">354</span>        } else if (result &lt; 0) {<a name="line.354"></a>
+<span class="sourceLineNo">355</span>          continue;<a name="line.355"></a>
+<span class="sourceLineNo">356</span>        }<a name="line.356"></a>
+<span class="sourceLineNo">357</span>      }<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      // collect stats<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      if (printStats) {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>        fileStats.collect(cell);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      }<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      // dump key value<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      if (printKey) {<a name="line.363"></a>
+<span class="sourceLineNo">364</span>        System.out.print("K: " + cell);<a name="line.364"></a>
+<span class="sourceLineNo">365</span>        if (printValue) {<a name="line.365"></a>
+<span class="sourceLineNo">366</span>          System.out.print(" V: "<a name="line.366"></a>
+<span class="sourceLineNo">367</span>              + Bytes.toStringBinary(cell.getValueArray(), cell.getValueOffset(),<a name="line.367"></a>
+<span class="sourceLineNo">368</span>                  cell.getValueLength()));<a name="line.368"></a>
+<span class="sourceLineNo">369</span>          int i = 0;<a name="line.369"></a>
+<span class="sourceLineNo">370</span>          List&lt;Tag&gt; tags = Tag.asList(cell.getTagsArray(), cell.getTagsOffset(),<a name="line.370"></a>
+<span class="sourceLineNo">371</span>              cell.getTagsLength());<a name="line.371"></a>
+<span class="sourceLineNo">372</span>          for (Tag tag : tags) {<a name="line.372"></a>
+<span class="sourceLineNo">373</span>            System.out.print(String.format(" T[%d]: %s", i++,<a name="line.373"></a>
+<span class="sourceLineNo">374</span>                Bytes.toStringBinary(tag.getBuffer(), tag.getTagOffset(), tag.getTagLength())));<a name="line.374"></a>
+<span class="sourceLineNo">375</span>          }<a name="line.375"></a>
 <span class="sourceLineNo">376</span>        }<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      }<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      // check if families are consistent<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      if (checkFamily) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>        String fam = Bytes.toString(cell.getFamilyArray(), cell.getFamilyOffset(),<a name="line.380"></a>
-<span class="sourceLineNo">381</span>            cell.getFamilyLength());<a name="line.381"></a>
-<span class="sourceLineNo">382</span>        if (!file.toString().contains(fam)) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>          System.err.println("WARNING, filename does not match kv family,"<a name="line.383"></a>
-<span class="sourceLineNo">384</span>              + "\n\tfilename -&gt; " + file + "\n\tkeyvalue -&gt; "<a name="line.384"></a>
+<span class="sourceLineNo">377</span>        System.out.println();<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      }<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      // check if rows are in order<a name="line.379"></a>
+<span class="sourceLineNo">380</span>      if (checkRow &amp;&amp; pCell != null) {<a name="line.380"></a>
+<span class="sourceLineNo">381</span>        if (CellComparator.COMPARATOR.compareRows(pCell, cell) &gt; 0) {<a name="line.381"></a>
+<span class="sourceLineNo">382</span>          System.err.println("WARNING, previous row is greater then"<a name="line.382"></a>
+<span class="sourceLineNo">383</span>              + " current row\n\tfilename -&gt; " + file + "\n\tprevious -&gt; "<a name="line.383"></a>
+<span class="sourceLineNo">384</span>              + CellUtil.getCellKeyAsString(pCell) + "\n\tcurrent  -&gt; "<a name="line.384"></a>
 <span class="sourceLineNo">385</span>              + CellUtil.getCellKeyAsString(cell));<a name="line.385"></a>
 <span class="sourceLineNo">386</span>        }<a name="line.386"></a>
-<span class="sourceLineNo">387</span>        if (pCell != null &amp;&amp; CellComparator.compareFamilies(pCell, cell) != 0) {<a name="line.387"></a>
-<span class="sourceLineNo">388</span>          System.err.println("WARNING, previous kv has different family"<a name="line.388"></a>
-<span class="sourceLineNo">389</span>              + " compared to current key\n\tfilename -&gt; " + file<a name="line.389"></a>
-<span class="sourceLineNo">390</span>              + "\n\tprevious -&gt; " + CellUtil.getCellKeyAsString(pCell)<a name="line.390"></a>
-<span class="sourceLineNo">391</span>              + "\n\tcurrent  -&gt; " + CellUtil.getCellKeyAsString(cell));<a name="line.391"></a>
-<span class="sourceLineNo">392</span>        }<a name="line.392"></a>
-<span class="sourceLineNo">393</span>      }<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      // check if mob files are missing.<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      if (checkMobIntegrity &amp;&amp; MobUtils.isMobReferenceCell(cell)) {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>        Tag tnTag = MobUtils.getTableNameTag(cell);<a name="line.396"></a>
-<span class="sourceLineNo">397</span>        if (tnTag == null) {<a name="line.397"></a>
-<span class="sourceLineNo">398</span>          System.err.println("ERROR, wrong tag format in mob reference cell "<a name="line.398"></a>
-<span class="sourceLineNo">399</span>            + CellUtil.getCellKeyAsString(cell));<a name="line.399"></a>
-<span class="sourceLineNo">400</span>        } else if (!MobUtils.hasValidMobRefCellValue(cell)) {<a name="line.400"></a>
-<span class="sourceLineNo">401</span>          System.err.println("ERROR, wrong value format in mob reference cell "<a name="line.401"></a>
-<span class="sourceLineNo">402</span>            + CellUtil.getCellKeyAsString(cell));<a name="line.402"></a>
-<span class="sourceLineNo">403</span>        } else {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>          TableName tn = TableName.valueOf(tnTag.getValue());<a name="line.404"></a>
-<span class="sourceLineNo">405</span>          String mobFileName = MobUtils.getMobFileName(cell);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>          boolean exist = mobFileExists(fs, tn, mobFileName,<a name="line.406"></a>
-<span class="sourceLineNo">407</span>            Bytes.toString(CellUtil.cloneFamily(cell)), foundMobFiles, missingMobFiles);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>          if (!exist) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>            // report error<a name="line.409"></a>
-<span class="sourceLineNo">410</span>            System.err.println("ERROR, the mob file [" + mobFileName<a name="line.410"></a>
-<span class="sourceLineNo">411</span>              + "] is missing referenced by cell " + CellUtil.getCellKeyAsString(cell));<a name="line.411"></a>
-<span class="sourceLineNo">412</span>          }<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        }<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      }<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      pCell = cell;<a name="line.415"></a>
-<span class="sourceLineNo">416</span>      ++count;<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    } while (scanner.next());<a name="line.417"></a>
-<span class="sourceLineNo">418</span>  }<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>  /**<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   * Checks whether the referenced mob file exists.<a name="line.421"></a>
-<span class="sourceLineNo">422</span>   */<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  private boolean mobFileExists(FileSystem fs, TableName tn, String mobFileName, String family,<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    Set&lt;String&gt; foundMobFiles, Set&lt;String&gt; missingMobFiles) throws IOException {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    if (foundMobFiles.contains(mobFileName)) {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      return true;<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    }<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    if (missingMobFiles.contains(mobFileName)) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      return false;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    }<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    String tableName = tn.getNameAsString();<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    List&lt;Path&gt; locations = mobFileLocations.get(tableName);<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    if (locations == null) {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      locations = new ArrayList&lt;Path&gt;(2);<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      locations.add(MobUtils.getMobFamilyPath(getConf(), tn, family));<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      locations.add(HFileArchiveUtil.getStoreArchivePath(getConf(), tn,<a name="line.436"></a>
-<span class="sourceLineNo">437</span>        MobUtils.getMobRegionInfo(tn).getEncodedName(), family));<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      mobFileLocations.put(tn.getNameAsString(), locations);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    }<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    boolean exist = false;<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    for (Path location : locations) {<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      Path mobFilePath = new Path(location, mobFileName);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      if (fs.exists(mobFilePath)) {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>        exist = true;<a name="line.444"></a>
-<span class="sourceLineNo">445</span>        break;<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>    if (exist) {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>      evictMobFilesIfNecessary(foundMobFiles, FOUND_MOB_FILES_CACHE_CAPACITY);<a name="line.449"></a>
-<span class="sourceLineNo">450</span>      foundMobFiles.add(mobFileName);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    } else {<a name="line.451"></a>
-<span class="sourceLineNo">452</span>      evictMobFilesIfNecessary(missingMobFiles, MISSING_MOB_FILES_CACHE_CAPACITY);<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      missingMobFiles.add(mobFileName);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    return exist;<a name="line.455"></a>
-<span class="sourceLineNo">456</span>  }<a name="line.456"></a>
-<span class="sourceLineNo">457</span><a name="line.457"></a>
-<span class="sourceLineNo">458</span>  /**<a name="line.458"></a>
-<span class="sourceLineNo">459</span>   * Evicts the cached mob files if the set is larger than the limit.<a name="line.459"></a>
-<span class="sourceLineNo">460</span>   */<a name="line.460"></a>
-<span class="sourceLineNo">461</span>  private void evictMobFilesIfNecessary(Set&lt;String&gt; mobFileNames, int limit) {<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    if (mobFileNames.size() &lt; limit) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      return;<a name="line.463"></a>
+<span class="sourceLineNo">387</span>      }<a name="line.387"></a>
+<span class="sourceLineNo">388</span>      // check if families are consistent<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      if (checkFamily) {<a name="line.389"></a>
+<span class="sourceLineNo">390</span>        String fam = Bytes.toString(cell.getFamilyArray(), cell.getFamilyOffset(),<a name="line.390"></a>
+<span class="sourceLineNo">391</span>            cell.getFamilyLength());<a name="line.391"></a>
+<span class="sourceLineNo">392</span>        if (!file.toString().contains(fam)) {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>          System.err.println("WARNING, filename does not match kv family,"<a name="line.393"></a>
+<span class="sourceLineNo">394</span>              + "\n\tfilename -&gt; " + file + "\n\tkeyvalue -&gt; "<a name="line.394"></a>
+<span class="sourceLineNo">395</span>              + CellUtil.getCellKeyAsString(cell));<a name="line.395"></a>
+<span class="sourceLineNo">396</span>        }<a name="line.396"></a>
+<span class="sourceLineNo">397</span>        if (pCell != null &amp;&amp; CellComparator.compareFamilies(pCell, cell) != 0) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>          System.err.println("WARNING, previous kv has different family"<a name="line.398"></a>
+<span class="sourceLineNo">399</span>              + " compared to current key\n\tfilename -&gt; " + file<a name="line.399"></a>
+<span class="sourceLineNo">400</span>              + "\n\tprevious -&gt; " + CellUtil.getCellKeyAsString(pCell)<a name="line.400"></a>
+<span class="sourceLineNo">401</span>              + "\n\tcurrent  -&gt; " + CellUtil.getCellKeyAsString(cell));<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        }<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      }<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      // check if mob files are missing.<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      if (checkMobIntegrity &amp;&amp; MobUtils.isMobReferenceCell(cell)) {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>        Tag tnTag = MobUtils.getTableNameTag(cell);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>        if (tnTag == null) {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>          System.err.println("ERROR, wrong tag format in mob reference cell "<a name="line.408"></a>
+<span class="sourceLineNo">409</span>            + CellUtil.getCellKeyAsString(cell));<a name="line.409"></a>
+<span class="sourceLineNo">410</span>        } else if (!MobUtils.hasValidMobRefCellValue(cell)) {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>          System.err.println("ERROR, wrong value format in mob reference cell "<a name="line.411"></a>
+<span class="sourceLineNo">412</span>            + CellUtil.getCellKeyAsString(cell));<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        } else {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>          TableName tn = TableName.valueOf(tnTag.getValue());<a name="line.414"></a>
+<span class="sourceLineNo">415</span>          String mobFileName = MobUtils.getMobFileName(cell);<a name="line.415"></a>
+<span class="sourceLineNo">416</span>          boolean exist = mobFileExists(fs, tn, mobFileName,<a name="line.416"></a>
+<span class="sourceLineNo">417</span>            Bytes.toString(CellUtil.cloneFamily(cell)), foundMobFiles, missingMobFiles);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>          if (!exist) {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>            // report error<a name="line.419"></a>
+<span class="sourceLineNo">420</span>            System.err.println("ERROR, the mob file [" + mobFileName<a name="line.420"></a>
+<span class="sourceLineNo">421</span>              + "] is missing referenced by cell " + CellUtil.getCellKeyAsString(cell));<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>      }<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      pCell = cell;<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      ++count;<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    } while (scanner.next());<a name="line.427"></a>
+<span class="sourceLineNo">428</span>  }<a name="line.428"></a>
+<span class="sourceLineNo">429</span><a name="line.429"></a>
+<span class="sourceLineNo">430</span>  /**<a name="line.430"></a>
+<span class="sourceLineNo">431</span>   * Checks whether the referenced mob file exists.<a name="line.431"></a>
+<span class="sourceLineNo">432</span>   */<a name="line.432"></a>
+<span class="sourceLineNo">433</span>  private boolean mobFileExists(FileSystem fs, TableName tn, String mobFileName, String family,<a name="line.433"></a>
+<span class="sourceLineNo">434</span>    Set&lt;String&gt; foundMobFiles, Set&lt;String&gt; missingMobFiles) throws IOException {<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    if (foundMobFiles.contains(mobFileName)) {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      return true;<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    }<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    if (missingMobFiles.contains(mobFileName)) {<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      return false;<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    String tableName = tn.getNameAsString();<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    List&lt;Path&gt; locations = mobFileLocations.get(tableName);<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    if (locations == null) {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      locations = new ArrayList&lt;Path&gt;(2);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      locations.add(MobUtils.getMobFamilyPath(getConf(), tn, family));<a name="line.445"></a>
+<span class="sourceLineNo">446</span>      locations.add(HFileArchiveUtil.getStoreArchivePath(getConf(), tn,<a name="line.446"></a>
+<span class="sourceLineNo">447</span>        MobUtils.getMobRegionInfo(tn).getEncodedName(), family));<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      mobFileLocations.put(tn.getNameAsString(), locations);<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    }<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    boolean exist = false;<a name="line.450"></a>
+<span class="sourceLineNo">451</span>    for (Path location : locations) {<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      Path mobFilePath = new Path(location, mobFileName);<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      if (fs.exists(mobFilePath)) {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>        exist = true;<a name="line.454"></a>
+<span class="sourceLineNo">455</span>        break;<a name="line.455"></a>
+<span class="sourceLineNo">456</span>      }<a name="line.456"></a>
+<span class="sourceLineNo">457</span>    }<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    if (exist) {<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      evictMobFilesIfNecessary(foundMobFiles, FOUND_MOB_FILES_CACHE_CAPACITY);<a name="line.459"></a>
+<span class="sourceLineNo">460</span>      foundMobFiles.add(mobFileName);<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    } else {<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      evictMobFilesIfNecessary(missingMobFiles, MISSING_MOB_FILES_CACHE_CAPACITY);<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      missingMobFiles.add(mobFileName);<a name="line.463"></a>
 <span class="sourceLineNo">464</span>    }<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    int index = 0;<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    int evict = limit / 2;<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    Iterator&lt;String&gt; fileNamesItr = mobFileNames.iterator();<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    while (index &lt; evict &amp;&amp; fileNamesItr.hasNext()) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      fileNamesItr.next();<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      fileNamesItr.remove();<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      index++;<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>  }<a name="line.473"></a>
-<span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span>  /**<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * Format a string of the form "k1=v1, k2=v2, ..." into separate lines<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * with a four-space indentation.<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   */<a name="line.478"></a>
-<span class="sourceLineNo">479</span>  private static String asSeparateLines(String keyValueStr) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    return keyValueStr.replaceAll(", ([a-zA-Z]+=)",<a name="line.480"></a>
-<span class="sourceLineNo">481</span>                                  ",\n" + FOUR_SPACES + "$1");<a name="line.481"></a>
-<span class="sourceLineNo">482</span>  }<a name="line.482"></a>
-<span class="sourceLineNo">483</span><a name="line.483"></a>
-<span class="sourceLineNo">484</span>  private void printMeta(HFile.Reader reader, Map&lt;byte[], byte[]&gt; fileInfo)<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      throws IOException {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    System.out.println("Block index size as per heapsize: "<a name="line.486"></a>
-<span class="sourceLineNo">487</span>        + reader.indexSize());<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    System.out.println(asSeparateLines(reader.toString()));<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    System.out.println("Trailer:\n    "<a name="line.489"></a>
-<span class="sourceLineNo">490</span>        + asSeparateLines(reader.getTrailer().toString()));<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    System.out.println("Fileinfo:");<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    for (Map.Entry&lt;byte[], byte[]&gt; e : fileInfo.entrySet()) {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      System.out.print(FOUR_SPACES + Bytes.toString(e.getKey()) + " = ");<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      if (Bytes.compareTo(e.getKey(), Bytes.toBytes("MAX_SEQ_ID_KEY")) == 0) {<a name="line.494"></a>
-<span class="sourceLineNo">495</span>        long seqid = Bytes.toLong(e.getValue());<a name="line.495"></a>
-<span class="sourceLineNo">496</span>        System.out.println(seqid);<a name="line.496"></a>
-<span class="sourceLineNo">497</span>      } else if (Bytes.compareTo(e.getKey(), Bytes.toBytes("TIMERANGE")) == 0) {<a name="line.497"></a>
-<span class="sourceLineNo">498</span>        TimeRangeTracker timeRangeTracker = new TimeRangeTracker();<a name="line.498"></a>
-<span class="sourceLineNo">499</span>        Writables.copyWr

<TRUNCATED>

[36/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/src-html/org/apache/hadoop/hbase/client/MetricsConnection.RunnerStats.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/client/MetricsConnection.RunnerStats.html b/devapidocs/src-html/org/apache/hadoop/hbase/client/MetricsConnection.RunnerStats.html
index 0d9837b..9090c08 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/client/MetricsConnection.RunnerStats.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/client/MetricsConnection.RunnerStats.html
@@ -28,12 +28,12 @@
 <span class="sourceLineNo">020</span>import com.google.common.annotations.VisibleForTesting;<a name="line.20"></a>
 <span class="sourceLineNo">021</span>import com.google.protobuf.Descriptors.MethodDescriptor;<a name="line.21"></a>
 <span class="sourceLineNo">022</span>import com.google.protobuf.Message;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import com.yammer.metrics.core.Counter;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import com.yammer.metrics.core.Histogram;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import com.yammer.metrics.core.MetricsRegistry;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import com.yammer.metrics.core.Timer;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import com.yammer.metrics.reporting.JmxReporter;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import com.yammer.metrics.util.RatioGauge;<a name="line.28"></a>
+<span class="sourceLineNo">023</span>import com.codahale.metrics.Counter;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import com.codahale.metrics.Histogram;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import com.codahale.metrics.MetricRegistry;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import com.codahale.metrics.Timer;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import com.codahale.metrics.JmxReporter;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import com.codahale.metrics.RatioGauge;<a name="line.28"></a>
 <span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.ServerName;<a name="line.29"></a>
 <span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.30"></a>
 <span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.protobuf.generated.ClientProtos;<a name="line.31"></a>
@@ -48,394 +48,397 @@
 <span class="sourceLineNo">040</span>import java.util.concurrent.ThreadPoolExecutor;<a name="line.40"></a>
 <span class="sourceLineNo">041</span>import java.util.concurrent.TimeUnit;<a name="line.41"></a>
 <span class="sourceLineNo">042</span><a name="line.42"></a>
-<span class="sourceLineNo">043</span>/**<a name="line.43"></a>
-<span class="sourceLineNo">044</span> * This class is for maintaining the various connection statistics and publishing them through<a name="line.44"></a>
-<span class="sourceLineNo">045</span> * the metrics interfaces.<a name="line.45"></a>
-<span class="sourceLineNo">046</span> *<a name="line.46"></a>
-<span class="sourceLineNo">047</span> * This class manages its own {@link MetricsRegistry} and {@link JmxReporter} so as to not<a name="line.47"></a>
-<span class="sourceLineNo">048</span> * conflict with other uses of Yammer Metrics within the client application. Instantiating<a name="line.48"></a>
-<span class="sourceLineNo">049</span> * this class implicitly creates and "starts" instances of these classes; be sure to call<a name="line.49"></a>
-<span class="sourceLineNo">050</span> * {@link #shutdown()} to terminate the thread pools they allocate.<a name="line.50"></a>
-<span class="sourceLineNo">051</span> */<a name="line.51"></a>
-<span class="sourceLineNo">052</span>@InterfaceAudience.Private<a name="line.52"></a>
-<span class="sourceLineNo">053</span>public class MetricsConnection {<a name="line.53"></a>
-<span class="sourceLineNo">054</span><a name="line.54"></a>
-<span class="sourceLineNo">055</span>  /** Set this key to {@code true} to enable metrics collection of client requests. */<a name="line.55"></a>
-<span class="sourceLineNo">056</span>  public static final String CLIENT_SIDE_METRICS_ENABLED_KEY = "hbase.client.metrics.enable";<a name="line.56"></a>
-<span class="sourceLineNo">057</span><a name="line.57"></a>
-<span class="sourceLineNo">058</span>  private static final String DRTN_BASE = "rpcCallDurationMs_";<a name="line.58"></a>
-<span class="sourceLineNo">059</span>  private static final String REQ_BASE = "rpcCallRequestSizeBytes_";<a name="line.59"></a>
-<span class="sourceLineNo">060</span>  private static final String RESP_BASE = "rpcCallResponseSizeBytes_";<a name="line.60"></a>
-<span class="sourceLineNo">061</span>  private static final String MEMLOAD_BASE = "memstoreLoad_";<a name="line.61"></a>
-<span class="sourceLineNo">062</span>  private static final String HEAP_BASE = "heapOccupancy_";<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  private static final String CLIENT_SVC = ClientService.getDescriptor().getName();<a name="line.63"></a>
-<span class="sourceLineNo">064</span><a name="line.64"></a>
-<span class="sourceLineNo">065</span>  /** A container class for collecting details about the RPC call as it percolates. */<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  public static class CallStats {<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    private long requestSizeBytes = 0;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    private long responseSizeBytes = 0;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    private long startTime = 0;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    private long callTimeMs = 0;<a name="line.70"></a>
-<span class="sourceLineNo">071</span><a name="line.71"></a>
-<span class="sourceLineNo">072</span>    public long getRequestSizeBytes() {<a name="line.72"></a>
-<span class="sourceLineNo">073</span>      return requestSizeBytes;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    }<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>    public void setRequestSizeBytes(long requestSizeBytes) {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>      this.requestSizeBytes = requestSizeBytes;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    }<a name="line.78"></a>
-<span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>    public long getResponseSizeBytes() {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      return responseSizeBytes;<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 void setResponseSizeBytes(long responseSizeBytes) {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      this.responseSizeBytes = responseSizeBytes;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    }<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>    public long getStartTime() {<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      return startTime;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    }<a name="line.90"></a>
-<span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>    public void setStartTime(long startTime) {<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      this.startTime = startTime;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    }<a name="line.94"></a>
-<span class="sourceLineNo">095</span><a name="line.95"></a>
-<span class="sourceLineNo">096</span>    public long getCallTimeMs() {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>      return callTimeMs;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    }<a name="line.98"></a>
-<span class="sourceLineNo">099</span><a name="line.99"></a>
-<span class="sourceLineNo">100</span>    public void setCallTimeMs(long callTimeMs) {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      this.callTimeMs = callTimeMs;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    }<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  }<a name="line.103"></a>
-<span class="sourceLineNo">104</span><a name="line.104"></a>
-<span class="sourceLineNo">105</span>  @VisibleForTesting<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  protected final class CallTracker {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    private final String name;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    @VisibleForTesting final Timer callTimer;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    @VisibleForTesting final Histogram reqHist;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    @VisibleForTesting final Histogram respHist;<a name="line.110"></a>
-<span class="sourceLineNo">111</span><a name="line.111"></a>
-<span class="sourceLineNo">112</span>    private CallTracker(MetricsRegistry registry, String name, String subName, String scope) {<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      StringBuilder sb = new StringBuilder(CLIENT_SVC).append("_").append(name);<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      if (subName != null) {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>        sb.append("(").append(subName).append(")");<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      }<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      this.name = sb.toString();<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      this.callTimer = registry.newTimer(MetricsConnection.class, DRTN_BASE + this.name, scope);<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      this.reqHist = registry.newHistogram(MetricsConnection.class, REQ_BASE + this.name, scope);<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      this.respHist = registry.newHistogram(MetricsConnection.class, RESP_BASE + this.name, scope);<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>    private CallTracker(MetricsRegistry registry, String name, String scope) {<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      this(registry, name, null, scope);<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    }<a name="line.125"></a>
-<span class="sourceLineNo">126</span><a name="line.126"></a>
-<span class="sourceLineNo">127</span>    public void updateRpc(CallStats stats) {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      this.callTimer.update(stats.getCallTimeMs(), TimeUnit.MILLISECONDS);<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      this.reqHist.update(stats.getRequestSizeBytes());<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      this.respHist.update(stats.getResponseSizeBytes());<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    }<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>    @Override<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    public String toString() {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      return "CallTracker:" + name;<a name="line.135"></a>
+<span class="sourceLineNo">043</span>import static com.codahale.metrics.MetricRegistry.name;<a name="line.43"></a>
+<span class="sourceLineNo">044</span><a name="line.44"></a>
+<span class="sourceLineNo">045</span>/**<a name="line.45"></a>
+<span class="sourceLineNo">046</span> * This class is for maintaining the various connection statistics and publishing them through<a name="line.46"></a>
+<span class="sourceLineNo">047</span> * the metrics interfaces.<a name="line.47"></a>
+<span class="sourceLineNo">048</span> *<a name="line.48"></a>
+<span class="sourceLineNo">049</span> * This class manages its own {@link MetricRegistry} and {@link JmxReporter} so as to not<a name="line.49"></a>
+<span class="sourceLineNo">050</span> * conflict with other uses of Yammer Metrics within the client application. Instantiating<a name="line.50"></a>
+<span class="sourceLineNo">051</span> * this class implicitly creates and "starts" instances of these classes; be sure to call<a name="line.51"></a>
+<span class="sourceLineNo">052</span> * {@link #shutdown()} to terminate the thread pools they allocate.<a name="line.52"></a>
+<span class="sourceLineNo">053</span> */<a name="line.53"></a>
+<span class="sourceLineNo">054</span>@InterfaceAudience.Private<a name="line.54"></a>
+<span class="sourceLineNo">055</span>public class MetricsConnection {<a name="line.55"></a>
+<span class="sourceLineNo">056</span><a name="line.56"></a>
+<span class="sourceLineNo">057</span>  /** Set this key to {@code true} to enable metrics collection of client requests. */<a name="line.57"></a>
+<span class="sourceLineNo">058</span>  public static final String CLIENT_SIDE_METRICS_ENABLED_KEY = "hbase.client.metrics.enable";<a name="line.58"></a>
+<span class="sourceLineNo">059</span><a name="line.59"></a>
+<span class="sourceLineNo">060</span>  private static final String DRTN_BASE = "rpcCallDurationMs_";<a name="line.60"></a>
+<span class="sourceLineNo">061</span>  private static final String REQ_BASE = "rpcCallRequestSizeBytes_";<a name="line.61"></a>
+<span class="sourceLineNo">062</span>  private static final String RESP_BASE = "rpcCallResponseSizeBytes_";<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  private static final String MEMLOAD_BASE = "memstoreLoad_";<a name="line.63"></a>
+<span class="sourceLineNo">064</span>  private static final String HEAP_BASE = "heapOccupancy_";<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  private static final String CLIENT_SVC = ClientService.getDescriptor().getName();<a name="line.65"></a>
+<span class="sourceLineNo">066</span><a name="line.66"></a>
+<span class="sourceLineNo">067</span>  /** A container class for collecting details about the RPC call as it percolates. */<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  public static class CallStats {<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    private long requestSizeBytes = 0;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    private long responseSizeBytes = 0;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    private long startTime = 0;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    private long callTimeMs = 0;<a name="line.72"></a>
+<span class="sourceLineNo">073</span><a name="line.73"></a>
+<span class="sourceLineNo">074</span>    public long getRequestSizeBytes() {<a name="line.74"></a>
+<span class="sourceLineNo">075</span>      return requestSizeBytes;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    }<a name="line.76"></a>
+<span class="sourceLineNo">077</span><a name="line.77"></a>
+<span class="sourceLineNo">078</span>    public void setRequestSizeBytes(long requestSizeBytes) {<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      this.requestSizeBytes = requestSizeBytes;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    }<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>    public long getResponseSizeBytes() {<a name="line.82"></a>
+<span class="sourceLineNo">083</span>      return responseSizeBytes;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    }<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>    public void setResponseSizeBytes(long responseSizeBytes) {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>      this.responseSizeBytes = responseSizeBytes;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    }<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>    public long getStartTime() {<a name="line.90"></a>
+<span class="sourceLineNo">091</span>      return startTime;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    }<a name="line.92"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span>    public void setStartTime(long startTime) {<a name="line.94"></a>
+<span class="sourceLineNo">095</span>      this.startTime = startTime;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    }<a name="line.96"></a>
+<span class="sourceLineNo">097</span><a name="line.97"></a>
+<span class="sourceLineNo">098</span>    public long getCallTimeMs() {<a name="line.98"></a>
+<span class="sourceLineNo">099</span>      return callTimeMs;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    }<a name="line.100"></a>
+<span class="sourceLineNo">101</span><a name="line.101"></a>
+<span class="sourceLineNo">102</span>    public void setCallTimeMs(long callTimeMs) {<a name="line.102"></a>
+<span class="sourceLineNo">103</span>      this.callTimeMs = callTimeMs;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    }<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  }<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>  @VisibleForTesting<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  protected final class CallTracker {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    private final String name;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    @VisibleForTesting final Timer callTimer;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    @VisibleForTesting final Histogram reqHist;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    @VisibleForTesting final Histogram respHist;<a name="line.112"></a>
+<span class="sourceLineNo">113</span><a name="line.113"></a>
+<span class="sourceLineNo">114</span>    private CallTracker(MetricRegistry registry, String name, String subName, String scope) {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      StringBuilder sb = new StringBuilder(CLIENT_SVC).append("_").append(name);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      if (subName != null) {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>        sb.append("(").append(subName).append(")");<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      }<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      this.name = sb.toString();<a name="line.119"></a>
+<span class="sourceLineNo">120</span>      this.callTimer = registry.timer(name(MetricsConnection.class,<a name="line.120"></a>
+<span class="sourceLineNo">121</span>        DRTN_BASE + this.name, scope));<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      this.reqHist = registry.histogram(name(MetricsConnection.class,<a name="line.122"></a>
+<span class="sourceLineNo">123</span>        REQ_BASE + this.name, scope));<a name="line.123"></a>
+<span class="sourceLineNo">124</span>      this.respHist = registry.histogram(name(MetricsConnection.class,<a name="line.124"></a>
+<span class="sourceLineNo">125</span>        RESP_BASE + this.name, scope));<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    }<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>    private CallTracker(MetricRegistry registry, String name, String scope) {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      this(registry, name, null, scope);<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>    public void updateRpc(CallStats stats) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      this.callTimer.update(stats.getCallTimeMs(), TimeUnit.MILLISECONDS);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      this.reqHist.update(stats.getRequestSizeBytes());<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      this.respHist.update(stats.getResponseSizeBytes());<a name="line.135"></a>
 <span class="sourceLineNo">136</span>    }<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>  protected static class RegionStats {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    final String name;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    final Histogram memstoreLoadHist;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    final Histogram heapOccupancyHist;<a name="line.142"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span>    @Override<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    public String toString() {<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      return "CallTracker:" + name;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    }<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  }<a name="line.142"></a>
 <span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>    public RegionStats(MetricsRegistry registry, String name) {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      this.name = name;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      this.memstoreLoadHist = registry.newHistogram(MetricsConnection.class,<a name="line.146"></a>
-<span class="sourceLineNo">147</span>          MEMLOAD_BASE + this.name);<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      this.heapOccupancyHist = registry.newHistogram(MetricsConnection.class,<a name="line.148"></a>
-<span class="sourceLineNo">149</span>          HEAP_BASE + this.name);<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    }<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>    public void update(ClientProtos.RegionLoadStats regionStatistics) {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      this.memstoreLoadHist.update(regionStatistics.getMemstoreLoad());<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      this.heapOccupancyHist.update(regionStatistics.getHeapOccupancy());<a name="line.154"></a>
+<span class="sourceLineNo">144</span>  protected static class RegionStats {<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    final String name;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    final Histogram memstoreLoadHist;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    final Histogram heapOccupancyHist;<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>    public RegionStats(MetricRegistry registry, String name) {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      this.name = name;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>      this.memstoreLoadHist = registry.histogram(name(MetricsConnection.class,<a name="line.151"></a>
+<span class="sourceLineNo">152</span>          MEMLOAD_BASE + this.name));<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      this.heapOccupancyHist = registry.histogram(name(MetricsConnection.class,<a name="line.153"></a>
+<span class="sourceLineNo">154</span>          HEAP_BASE + this.name));<a name="line.154"></a>
 <span class="sourceLineNo">155</span>    }<a name="line.155"></a>
-<span class="sourceLineNo">156</span>  }<a name="line.156"></a>
-<span class="sourceLineNo">157</span><a name="line.157"></a>
-<span class="sourceLineNo">158</span>  @VisibleForTesting<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  protected static class RunnerStats {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    final Counter normalRunners;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    final Counter delayRunners;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    final Histogram delayIntevalHist;<a name="line.162"></a>
-<span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>    public RunnerStats(MetricsRegistry registry) {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      this.normalRunners = registry.newCounter(MetricsConnection.class, "normalRunnersCount");<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      this.delayRunners = registry.newCounter(MetricsConnection.class, "delayRunnersCount");<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      this.delayIntevalHist = registry.newHistogram(MetricsConnection.class, "delayIntervalHist");<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    }<a name="line.168"></a>
-<span class="sourceLineNo">169</span><a name="line.169"></a>
-<span class="sourceLineNo">170</span>    public void incrNormalRunners() {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      this.normalRunners.inc();<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    }<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>    public void incrDelayRunners() {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      this.delayRunners.inc();<a name="line.175"></a>
+<span class="sourceLineNo">156</span><a name="line.156"></a>
+<span class="sourceLineNo">157</span>    public void update(ClientProtos.RegionLoadStats regionStatistics) {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      this.memstoreLoadHist.update(regionStatistics.getMemstoreLoad());<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      this.heapOccupancyHist.update(regionStatistics.getHeapOccupancy());<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    }<a name="line.160"></a>
+<span class="sourceLineNo">161</span>  }<a name="line.161"></a>
+<span class="sourceLineNo">162</span><a name="line.162"></a>
+<span class="sourceLineNo">163</span>  @VisibleForTesting<a name="line.163"></a>
+<span class="sourceLineNo">164</span>  protected static class RunnerStats {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    final Counter normalRunners;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    final Counter delayRunners;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    final Histogram delayIntevalHist;<a name="line.167"></a>
+<span class="sourceLineNo">168</span><a name="line.168"></a>
+<span class="sourceLineNo">169</span>    public RunnerStats(MetricRegistry registry) {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      this.normalRunners = registry.counter(<a name="line.170"></a>
+<span class="sourceLineNo">171</span>        name(MetricsConnection.class, "normalRunnersCount"));<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      this.delayRunners = registry.counter(<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        name(MetricsConnection.class, "delayRunnersCount"));<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      this.delayIntevalHist = registry.histogram(<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        name(MetricsConnection.class, "delayIntervalHist"));<a name="line.175"></a>
 <span class="sourceLineNo">176</span>    }<a name="line.176"></a>
 <span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span>    public void updateDelayInterval(long interval) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      this.delayIntevalHist.update(interval);<a name="line.179"></a>
+<span class="sourceLineNo">178</span>    public void incrNormalRunners() {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      this.normalRunners.inc();<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><a name="line.182"></a>
-<span class="sourceLineNo">183</span>  @VisibleForTesting<a name="line.183"></a>
-<span class="sourceLineNo">184</span>  protected ConcurrentHashMap&lt;ServerName, ConcurrentMap&lt;byte[], RegionStats&gt;&gt; serverStats<a name="line.184"></a>
-<span class="sourceLineNo">185</span>          = new ConcurrentHashMap&lt;ServerName, ConcurrentMap&lt;byte[], RegionStats&gt;&gt;();<a name="line.185"></a>
-<span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>  public void updateServerStats(ServerName serverName, byte[] regionName,<a name="line.187"></a>
-<span class="sourceLineNo">188</span>                                Object r) {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    if (!(r instanceof Result)) {<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      return;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    }<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    Result result = (Result) r;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    ClientProtos.RegionLoadStats stats = result.getStats();<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    if(stats == null){<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      return;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    }<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    String name = serverName.getServerName() + "," + Bytes.toStringBinary(regionName);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    ConcurrentMap&lt;byte[], RegionStats&gt; rsStats = null;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    if (serverStats.containsKey(serverName)) {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      rsStats = serverStats.get(serverName);<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    } else {<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      rsStats = serverStats.putIfAbsent(serverName,<a name="line.202"></a>
-<span class="sourceLineNo">203</span>          new ConcurrentSkipListMap&lt;byte[], RegionStats&gt;(Bytes.BYTES_COMPARATOR));<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      if (rsStats == null) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>        rsStats = serverStats.get(serverName);<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>    RegionStats regionStats = null;<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    if (rsStats.containsKey(regionName)) {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      regionStats = rsStats.get(regionName);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    } else {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      regionStats = rsStats.putIfAbsent(regionName, new RegionStats(this.registry, name));<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      if (regionStats == null) {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        regionStats = rsStats.get(regionName);<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>    regionStats.update(stats);<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>  /** A lambda for dispatching to the appropriate metric factory method */<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  private static interface NewMetric&lt;T&gt; {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    T newMetric(Class&lt;?&gt; clazz, String name, String scope);<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>  /** Anticipated number of metric entries */<a name="line.226"></a>
-<span class="sourceLineNo">227</span>  private static final int CAPACITY = 50;<a name="line.227"></a>
-<span class="sourceLineNo">228</span>  /** Default load factor from {@link java.util.HashMap#DEFAULT_LOAD_FACTOR} */<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  private static final float LOAD_FACTOR = 0.75f;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  /**<a name="line.230"></a>
-<span class="sourceLineNo">231</span>   * Anticipated number of concurrent accessor threads, from<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   * {@link ConnectionImplementation#getBatchPool()}<a name="line.232"></a>
-<span class="sourceLineNo">233</span>   */<a name="line.233"></a>
-<span class="sourceLineNo">234</span>  private static final int CONCURRENCY_LEVEL = 256;<a name="line.234"></a>
-<span class="sourceLineNo">235</span><a name="line.235"></a>
-<span class="sourceLineNo">236</span>  private final MetricsRegistry registry;<a name="line.236"></a>
-<span class="sourceLineNo">237</span>  private final JmxReporter reporter;<a name="line.237"></a>
-<span class="sourceLineNo">238</span>  private final String scope;<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>  private final NewMetric&lt;Timer&gt; timerFactory = new NewMetric&lt;Timer&gt;() {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    @Override public Timer newMetric(Class&lt;?&gt; clazz, String name, String scope) {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      return registry.newTimer(clazz, name, scope);<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>  private final NewMetric&lt;Histogram&gt; histogramFactory = new NewMetric&lt;Histogram&gt;() {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    @Override public Histogram newMetric(Class&lt;?&gt; clazz, String name, String scope) {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      return registry.newHistogram(clazz, name, scope);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    }<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  };<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>  // static metrics<a name="line.252"></a>
+<span class="sourceLineNo">181</span><a name="line.181"></a>
+<span class="sourceLineNo">182</span>    public void incrDelayRunners() {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      this.delayRunners.inc();<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>    public void updateDelayInterval(long interval) {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      this.delayIntevalHist.update(interval);<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>  @VisibleForTesting<a name="line.191"></a>
+<span class="sourceLineNo">192</span>  protected ConcurrentHashMap&lt;ServerName, ConcurrentMap&lt;byte[], RegionStats&gt;&gt; serverStats<a name="line.192"></a>
+<span class="sourceLineNo">193</span>          = new ConcurrentHashMap&lt;ServerName, ConcurrentMap&lt;byte[], RegionStats&gt;&gt;();<a name="line.193"></a>
+<span class="sourceLineNo">194</span><a name="line.194"></a>
+<span class="sourceLineNo">195</span>  public void updateServerStats(ServerName serverName, byte[] regionName,<a name="line.195"></a>
+<span class="sourceLineNo">196</span>                                Object r) {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    if (!(r instanceof Result)) {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      return;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    }<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    Result result = (Result) r;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    ClientProtos.RegionLoadStats stats = result.getStats();<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    if(stats == null){<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      return;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    }<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    String name = serverName.getServerName() + "," + Bytes.toStringBinary(regionName);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    ConcurrentMap&lt;byte[], RegionStats&gt; rsStats = null;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    if (serverStats.containsKey(serverName)) {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      rsStats = serverStats.get(serverName);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    } else {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      rsStats = serverStats.putIfAbsent(serverName,<a name="line.210"></a>
+<span class="sourceLineNo">211</span>          new ConcurrentSkipListMap&lt;byte[], RegionStats&gt;(Bytes.BYTES_COMPARATOR));<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      if (rsStats == null) {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>        rsStats = serverStats.get(serverName);<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>    RegionStats regionStats = null;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    if (rsStats.containsKey(regionName)) {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      regionStats = rsStats.get(regionName);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    } else {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      regionStats = rsStats.putIfAbsent(regionName, new RegionStats(this.registry, name));<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      if (regionStats == null) {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>        regionStats = rsStats.get(regionName);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      }<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    }<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    regionStats.update(stats);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>  }<a name="line.226"></a>
+<span class="sourceLineNo">227</span><a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span>  /** A lambda for dispatching to the appropriate metric factory method */<a name="line.229"></a>
+<span class="sourceLineNo">230</span>  private static interface NewMetric&lt;T&gt; {<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    T newMetric(Class&lt;?&gt; clazz, String name, String scope);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>  }<a name="line.232"></a>
+<span class="sourceLineNo">233</span><a name="line.233"></a>
+<span class="sourceLineNo">234</span>  /** Anticipated number of metric entries */<a name="line.234"></a>
+<span class="sourceLineNo">235</span>  private static final int CAPACITY = 50;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>  /** Default load factor from {@link java.util.HashMap#DEFAULT_LOAD_FACTOR} */<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  private static final float LOAD_FACTOR = 0.75f;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>  /**<a name="line.238"></a>
+<span class="sourceLineNo">239</span>   * Anticipated number of concurrent accessor threads, from<a name="line.239"></a>
+<span class="sourceLineNo">240</span>   * {@link ConnectionImplementation#getBatchPool()}<a name="line.240"></a>
+<span class="sourceLineNo">241</span>   */<a name="line.241"></a>
+<span class="sourceLineNo">242</span>  private static final int CONCURRENCY_LEVEL = 256;<a name="line.242"></a>
+<span class="sourceLineNo">243</span><a name="line.243"></a>
+<span class="sourceLineNo">244</span>  private final MetricRegistry registry;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>  private final JmxReporter reporter;<a name="line.245"></a>
+<span class="sourceLineNo">246</span>  private final String scope;<a name="line.246"></a>
+<span class="sourceLineNo">247</span><a name="line.247"></a>
+<span class="sourceLineNo">248</span>  private final NewMetric&lt;Timer&gt; timerFactory = new NewMetric&lt;Timer&gt;() {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    @Override public Timer newMetric(Class&lt;?&gt; clazz, String name, String scope) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      return registry.timer(name(clazz, name, scope));<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    }<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  };<a name="line.252"></a>
 <span class="sourceLineNo">253</span><a name="line.253"></a>
-<span class="sourceLineNo">254</span>  @VisibleForTesting protected final Counter metaCacheHits;<a name="line.254"></a>
-<span class="sourceLineNo">255</span>  @VisibleForTesting protected final Counter metaCacheMisses;<a name="line.255"></a>
-<span class="sourceLineNo">256</span>  @VisibleForTesting protected final CallTracker getTracker;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>  @VisibleForTesting protected final CallTracker scanTracker;<a name="line.257"></a>
-<span class="sourceLineNo">258</span>  @VisibleForTesting protected final CallTracker appendTracker;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  @VisibleForTesting protected final CallTracker deleteTracker;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  @VisibleForTesting protected final CallTracker incrementTracker;<a name="line.260"></a>
-<span class="sourceLineNo">261</span>  @VisibleForTesting protected final CallTracker putTracker;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>  @VisibleForTesting protected final CallTracker multiTracker;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>  @VisibleForTesting protected final RunnerStats runnerStats;<a name="line.263"></a>
-<span class="sourceLineNo">264</span><a name="line.264"></a>
-<span class="sourceLineNo">265</span>  // dynamic metrics<a name="line.265"></a>
-<span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>  // These maps are used to cache references to the metric instances that are managed by the<a name="line.267"></a>
-<span class="sourceLineNo">268</span>  // registry. I don't think their use perfectly removes redundant allocations, but it's<a name="line.268"></a>
-<span class="sourceLineNo">269</span>  // a big improvement over calling registry.newMetric each time.<a name="line.269"></a>
-<span class="sourceLineNo">270</span>  @VisibleForTesting protected final ConcurrentMap&lt;String, Timer&gt; rpcTimers =<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      new ConcurrentHashMap&lt;&gt;(CAPACITY, LOAD_FACTOR, CONCURRENCY_LEVEL);<a name="line.271"></a>
-<span class="sourceLineNo">272</span>  @VisibleForTesting protected final ConcurrentMap&lt;String, Histogram&gt; rpcHistograms =<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      new ConcurrentHashMap&lt;&gt;(CAPACITY * 2 /* tracking both request and response sizes */,<a name="line.273"></a>
-<span class="sourceLineNo">274</span>          LOAD_FACTOR, CONCURRENCY_LEVEL);<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span>  public MetricsConnection(final ConnectionImplementation conn) {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    this.scope = conn.toString();<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    this.registry = new MetricsRegistry();<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    final ThreadPoolExecutor batchPool = (ThreadPoolExecutor) conn.getCurrentBatchPool();<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    final ThreadPoolExecutor metaPool = (ThreadPoolExecutor) conn.getCurrentMetaLookupPool();<a name="line.280"></a>
-<span class="sourceLineNo">281</span><a name="line.281"></a>
-<span class="sourceLineNo">282</span>    this.registry.newGauge(this.getClass(), "executorPoolActiveThreads", scope,<a name="line.282"></a>
-<span class="sourceLineNo">283</span>        new RatioGauge() {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>          @Override protected double getNumerator() {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>            return batchPool.getActiveCount();<a name="line.285"></a>
-<span class="sourceLineNo">286</span>          }<a name="line.286"></a>
-<span class="sourceLineNo">287</span>          @Override protected double getDenominator() {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>            return batchPool.getMaximumPoolSize();<a name="line.288"></a>
-<span class="sourceLineNo">289</span>          }<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        });<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    this.registry.newGauge(this.getClass(), "metaPoolActiveThreads", scope,<a name="line.291"></a>
-<span class="sourceLineNo">292</span>        new RatioGauge() {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>          @Override protected double getNumerator() {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>            return metaPool.getActiveCount();<a name="line.294"></a>
+<span class="sourceLineNo">254</span>  private final NewMetric&lt;Histogram&gt; histogramFactory = new NewMetric&lt;Histogram&gt;() {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    @Override public Histogram newMetric(Class&lt;?&gt; clazz, String name, String scope) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      return registry.histogram(name(clazz, name, scope));<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
+<span class="sourceLineNo">258</span>  };<a name="line.258"></a>
+<span class="sourceLineNo">259</span><a name="line.259"></a>
+<span class="sourceLineNo">260</span>  // static metrics<a name="line.260"></a>
+<span class="sourceLineNo">261</span><a name="line.261"></a>
+<span class="sourceLineNo">262</span>  @VisibleForTesting protected final Counter metaCacheHits;<a name="line.262"></a>
+<span class="sourceLineNo">263</span>  @VisibleForTesting protected final Counter metaCacheMisses;<a name="line.263"></a>
+<span class="sourceLineNo">264</span>  @VisibleForTesting protected final CallTracker getTracker;<a name="line.264"></a>
+<span class="sourceLineNo">265</span>  @VisibleForTesting protected final CallTracker scanTracker;<a name="line.265"></a>
+<span class="sourceLineNo">266</span>  @VisibleForTesting protected final CallTracker appendTracker;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>  @VisibleForTesting protected final CallTracker deleteTracker;<a name="line.267"></a>
+<span class="sourceLineNo">268</span>  @VisibleForTesting protected final CallTracker incrementTracker;<a name="line.268"></a>
+<span class="sourceLineNo">269</span>  @VisibleForTesting protected final CallTracker putTracker;<a name="line.269"></a>
+<span class="sourceLineNo">270</span>  @VisibleForTesting protected final CallTracker multiTracker;<a name="line.270"></a>
+<span class="sourceLineNo">271</span>  @VisibleForTesting protected final RunnerStats runnerStats;<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>  // dynamic metrics<a name="line.273"></a>
+<span class="sourceLineNo">274</span><a name="line.274"></a>
+<span class="sourceLineNo">275</span>  // These maps are used to cache references to the metric instances that are managed by the<a name="line.275"></a>
+<span class="sourceLineNo">276</span>  // registry. I don't think their use perfectly removes redundant allocations, but it's<a name="line.276"></a>
+<span class="sourceLineNo">277</span>  // a big improvement over calling registry.newMetric each time.<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  @VisibleForTesting protected final ConcurrentMap&lt;String, Timer&gt; rpcTimers =<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      new ConcurrentHashMap&lt;&gt;(CAPACITY, LOAD_FACTOR, CONCURRENCY_LEVEL);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>  @VisibleForTesting protected final ConcurrentMap&lt;String, Histogram&gt; rpcHistograms =<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      new ConcurrentHashMap&lt;&gt;(CAPACITY * 2 /* tracking both request and response sizes */,<a name="line.281"></a>
+<span class="sourceLineNo">282</span>          LOAD_FACTOR, CONCURRENCY_LEVEL);<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>  public MetricsConnection(final ConnectionImplementation conn) {<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    this.scope = conn.toString();<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    this.registry = new MetricRegistry();<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    final ThreadPoolExecutor batchPool = (ThreadPoolExecutor) conn.getCurrentBatchPool();<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    final ThreadPoolExecutor metaPool = (ThreadPoolExecutor) conn.getCurrentMetaLookupPool();<a name="line.288"></a>
+<span class="sourceLineNo">289</span><a name="line.289"></a>
+<span class="sourceLineNo">290</span>    this.registry.register(name(this.getClass(), "executorPoolActiveThreads", scope),<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        new RatioGauge() {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>          @Override<a name="line.292"></a>
+<span class="sourceLineNo">293</span>          protected Ratio getRatio() {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>            return Ratio.of(batchPool.getActiveCount(), batchPool.getMaximumPoolSize());<a name="line.294"></a>
 <span class="sourceLineNo">295</span>          }<a name="line.295"></a>
-<span class="sourceLineNo">296</span>          @Override protected double getDenominator() {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>            return metaPool.getMaximumPoolSize();<a name="line.297"></a>
-<span class="sourceLineNo">298</span>          }<a name="line.298"></a>
-<span class="sourceLineNo">299</span>        });<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    this.metaCacheHits = registry.newCounter(this.getClass(), "metaCacheHits", scope);<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    this.metaCacheMisses = registry.newCounter(this.getClass(), "metaCacheMisses", scope);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    this.getTracker = new CallTracker(this.registry, "Get", scope);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    this.scanTracker = new CallTracker(this.registry, "Scan", scope);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    this.appendTracker = new CallTracker(this.registry, "Mutate", "Append", scope);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    this.deleteTracker = new CallTracker(this.registry, "Mutate", "Delete", scope);<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    this.incrementTracker = new CallTracker(this.registry, "Mutate", "Increment", scope);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    this.putTracker = new CallTracker(this.registry, "Mutate", "Put", scope);<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    this.multiTracker = new CallTracker(this.registry, "Multi", scope);<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    this.runnerStats = new RunnerStats(this.registry);<a name="line.309"></a>
-<span class="sourceLineNo">310</span><a name="line.310"></a>
-<span class="sourceLineNo">311</span>    this.reporter = new JmxReporter(this.registry);<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    this.reporter.start();<a name="line.312"></a>
-<span class="sourceLineNo">313</span>  }<a name="line.313"></a>
+<span class="sourceLineNo">296</span>        });<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    this.registry.register(name(this.getClass(), "metaPoolActiveThreads", scope),<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        new RatioGauge() {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>          @Override<a name="line.299"></a>
+<span class="sourceLineNo">300</span>          protected Ratio getRatio() {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>            return Ratio.of(metaPool.getActiveCount(), metaPool.getMaximumPoolSize());<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>    this.metaCacheHits = registry.counter(name(this.getClass(), "metaCacheHits", scope));<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    this.metaCacheMisses = registry.counter(name(this.getClass(), "metaCacheMisses", scope));<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    this.getTracker = new CallTracker(this.registry, "Get", scope);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    this.scanTracker = new CallTracker(this.registry, "Scan", scope);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    this.appendTracker = new CallTracker(this.registry, "Mutate", "Append", scope);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    this.deleteTracker = new CallTracker(this.registry, "Mutate", "Delete", scope);<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    this.incrementTracker = new CallTracker(this.registry, "Mutate", "Increment", scope);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    this.putTracker = new CallTracker(this.registry, "Mutate", "Put", scope);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    this.multiTracker = new CallTracker(this.registry, "Multi", scope);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    this.runnerStats = new RunnerStats(this.registry);<a name="line.313"></a>
 <span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span>  public void shutdown() {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    this.reporter.shutdown();<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    this.registry.shutdown();<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  /** Produce an instance of {@link CallStats} for clients to attach to RPCs. */<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  public static CallStats newCallStats() {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    // TODO: instance pool to reduce GC?<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    return new CallStats();<a name="line.323"></a>
-<span class="sourceLineNo">324</span>  }<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>  /** Increment the number of meta cache hits. */<a name="line.326"></a>
-<span class="sourceLineNo">327</span>  public void incrMetaCacheHit() {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    metaCacheHits.inc();<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>  /** Increment the number of meta cache misses. */<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  public void incrMetaCacheMiss() {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    metaCacheMisses.inc();<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  }<a name="line.334"></a>
-<span class="sourceLineNo">335</span><a name="line.335"></a>
-<span class="sourceLineNo">336</span>  /** Increment the number of normal runner counts. */<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  public void incrNormalRunners() {<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    this.runnerStats.incrNormalRunners();<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  }<a name="line.339"></a>
-<span class="sourceLineNo">340</span><a name="line.340"></a>
-<span class="sourceLineNo">341</span>  /** Increment the number of delay runner counts. */<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  public void incrDelayRunners() {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    this.runnerStats.incrDelayRunners();<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  }<a name="line.344"></a>
-<span class="sourceLineNo">345</span><a name="line.345"></a>
-<span class="sourceLineNo">346</span>  /** Update delay interval of delay runner. */<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  public void updateDelayInterval(long interval) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    this.runnerStats.updateDelayInterval(interval);<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  }<a name="line.349"></a>
-<span class="sourceLineNo">350</span><a name="line.350"></a>
-<span class="sourceLineNo">351</span>  /**<a name="line.351"></a>
-<span class="sourceLineNo">352</span>   * Get a metric for {@code key} from {@code map}, or create it with {@code factory}.<a name="line.352"></a>
-<span class="sourceLineNo">353</span>   */<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  private &lt;T&gt; T getMetric(String key, ConcurrentMap&lt;String, T&gt; map, NewMetric&lt;T&gt; factory) {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    T t = map.get(key);<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    if (t == null) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      t = factory.newMetric(this.getClass(), key, scope);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      map.putIfAbsent(key, t);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    }<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    return t;<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>  /** Update call stats for non-critical-path methods */<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  private void updateRpcGeneric(MethodDescriptor method, CallStats stats) {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    final String methodName = method.getService().getName() + "_" + method.getName();<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    getMetric(DRTN_BASE + methodName, rpcTimers, timerFactory)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        .update(stats.getCallTimeMs(), TimeUnit.MILLISECONDS);<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    getMetric(REQ_BASE + methodName, rpcHistograms, histogramFactory)<a name="line.368"></a>
-<span class="sourceLineNo">369</span>        .update(stats.getRequestSizeBytes());<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    getMetric(RESP_BASE + methodName, rpcHistograms, histogramFactory)<a name="line.370"></a>
-<span class="sourceLineNo">371</span>        .update(stats.getResponseSizeBytes());<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>  /** Report RPC context to metrics system. */<a name="line.374"></a>
-<span class="sourceLineNo">375</span>  public void updateRpc(MethodDescriptor method, Message param, CallStats stats) {<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    // this implementation is tied directly to protobuf implementation details. would be better<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    // if we could dispatch based on something static, ie, request Message type.<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    if (method.getService() == ClientService.getDescriptor()) {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      switch(method.getIndex()) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      case 0:<a name="line.380"></a>
-<span class="sourceLineNo">381</span>        assert "Get".equals(method.getName());<a name="line.381"></a>
-<span class="sourceLineNo">382</span>        getTracker.updateRpc(stats);<a name="line.382"></a>
-<span class="sourceLineNo">383</span>        return;<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      case 1:<a name="line.384"></a>
-<span class="sourceLineNo">385</span>        assert "Mutate".equals(method.getName());<a name="line.385"></a>
-<span class="sourceLineNo">386</span>        final MutationType mutationType = ((MutateRequest) param).getMutation().getMutateType();<a name="line.386"></a>
-<span class="sourceLineNo">387</span>        switch(mutationType) {<a name="line.387"></a>
-<span class="sourceLineNo">388</span>        case APPEND:<a name="line.388"></a>
-<span class="sourceLineNo">389</span>          appendTracker.updateRpc(stats);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>          return;<a name="line.390"></a>
-<span class="sourceLineNo">391</span>        case DELETE:<a name="line.391"></a>
-<span class="sourceLineNo">392</span>          deleteTracker.updateRpc(stats);<a name="line.392"></a>
+<span class="sourceLineNo">315</span>    this.reporter = JmxReporter.forRegistry(this.registry).build();<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    this.reporter.start();<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  }<a name="line.317"></a>
+<span class="sourceLineNo">318</span><a name="line.318"></a>
+<span class="sourceLineNo">319</span>  public void shutdown() {<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    this.reporter.stop();<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  }<a name="line.321"></a>
+<span class="sourceLineNo">322</span><a name="line.322"></a>
+<span class="sourceLineNo">323</span>  /** Produce an instance of {@link CallStats} for clients to attach to RPCs. */<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  public static CallStats newCallStats() {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    // TODO: instance pool to reduce GC?<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    return new CallStats();<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>  /** Increment the number of meta cache hits. */<a name="line.329"></a>
+<span class="sourceLineNo">330</span>  public void incrMetaCacheHit() {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    metaCacheHits.inc();<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  }<a name="line.332"></a>
+<span class="sourceLineNo">333</span><a name="line.333"></a>
+<span class="sourceLineNo">334</span>  /** Increment the number of meta cache misses. */<a name="line.334"></a>
+<span class="sourceLineNo">335</span>  public void incrMetaCacheMiss() {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    metaCacheMisses.inc();<a name="line.336"></a>
+<span class="sourceLineNo">337</span>  }<a name="line.337"></a>
+<span class="sourceLineNo">338</span><a name="line.338"></a>
+<span class="sourceLineNo">339</span>  /** Increment the number of normal runner counts. */<a name="line.339"></a>
+<span class="sourceLineNo">340</span>  public void incrNormalRunners() {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    this.runnerStats.incrNormalRunners();<a name="line.341"></a>
+<span class="sourceLineNo">342</span>  }<a name="line.342"></a>
+<span class="sourceLineNo">343</span><a name="line.343"></a>
+<span class="sourceLineNo">344</span>  /** Increment the number of delay runner counts. */<a name="line.344"></a>
+<span class="sourceLineNo">345</span>  public void incrDelayRunners() {<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    this.runnerStats.incrDelayRunners();<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  }<a name="line.347"></a>
+<span class="sourceLineNo">348</span><a name="line.348"></a>
+<span class="sourceLineNo">349</span>  /** Update delay interval of delay runner. */<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  public void updateDelayInterval(long interval) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    this.runnerStats.updateDelayInterval(interval);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>  }<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>  /**<a name="line.354"></a>
+<span class="sourceLineNo">355</span>   * Get a metric for {@code key} from {@code map}, or create it with {@code factory}.<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   */<a name="line.356"></a>
+<span class="sourceLineNo">357</span>  private &lt;T&gt; T getMetric(String key, ConcurrentMap&lt;String, T&gt; map, NewMetric&lt;T&gt; factory) {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    T t = map.get(key);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    if (t == null) {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      t = factory.newMetric(this.getClass(), key, scope);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      map.putIfAbsent(key, t);<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    }<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    return t;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>  }<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>  /** Update call stats for non-critical-path methods */<a name="line.366"></a>
+<span class="sourceLineNo">367</span>  private void updateRpcGeneric(MethodDescriptor method, CallStats stats) {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    final String methodName = method.getService().getName() + "_" + method.getName();<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    getMetric(DRTN_BASE + methodName, rpcTimers, timerFactory)<a name="line.369"></a>
+<span class="sourceLineNo">370</span>        .update(stats.getCallTimeMs(), TimeUnit.MILLISECONDS);<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    getMetric(REQ_BASE + methodName, rpcHistograms, histogramFactory)<a name="line.371"></a>
+<span class="sourceLineNo">372</span>        .update(stats.getRequestSizeBytes());<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    getMetric(RESP_BASE + methodName, rpcHistograms, histogramFactory)<a name="line.373"></a>
+<span class="sourceLineNo">374</span>        .update(stats.getResponseSizeBytes());<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  }<a name="line.375"></a>
+<span class="sourceLineNo">376</span><a name="line.376"></a>
+<span class="sourceLineNo">377</span>  /** Report RPC context to metrics system. */<a name="line.377"></a>
+<span class="sourceLineNo">378</span>  public void updateRpc(MethodDescriptor method, Message param, CallStats stats) {<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    // this implementation is tied directly to protobuf implementation details. would be better<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    // if we could dispatch based on something static, ie, request Message type.<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    if (method.getService() == ClientService.getDescriptor()) {<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      switch(method.getIndex()) {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      case 0:<a name="line.383"></a>
+<span class="sourceLineNo">384</span>        assert "Get".equals(method.getName());<a name="line.384"></a>
+<span class="sourceLineNo">385</span>        getTracker.updateRpc(stats);<a name="line.385"></a>
+<span class="sourceLineNo">386</span>        return;<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      case 1:<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        assert "Mutate".equals(method.getName());<a name="line.388"></a>
+<span class="sourceLineNo">389</span>        final MutationType mutationType = ((MutateRequest) param).getMutation().getMutateType();<a name="line.389"></a>
+<span class="sourceLineNo">390</span>        switch(mutationType) {<a name="line.390"></a>
+<span class="sourceLineNo">391</span>        case APPEND:<a name="line.391"></a>
+<span class="sourceLineNo">392</span>          appendTracker.updateRpc(stats);<a name="line.392"></a>
 <span class="sourceLineNo">393</span>          return;<a name="line.393"></a>
-<span class="sourceLineNo">394</span>        case INCREMENT:<a name="line.394"></a>
-<span class="sourceLineNo">395</span>          incrementTracker.updateRpc(stats);<a name="line.395"></a>
+<span class="sourceLineNo">394</span>        case DELETE:<a name="line.394"></a>
+<span class="sourceLineNo">395</span>          deleteTracker.updateRpc(stats);<a name="line.395"></a>
 <span class="sourceLineNo">396</span>          return;<a name="line.396"></a>
-<span class="sourceLineNo">397</span>        case PUT:<a name="line.397"></a>
-<span class="sourceLineNo">398</span>          putTracker.updateRpc(stats);<a name="line.398"></a>
+<span class="sourceLineNo">397</span>        case INCREMENT:<a name="line.397"></a>
+<span class="sourceLineNo">398</span>          incrementTracker.updateRpc(stats);<a name="line.398"></a>
 <span class="sourceLineNo">399</span>          return;<a name="line.399"></a>
-<span class="sourceLineNo">400</span>        default:<a name="line.400"></a>
-<span class="sourceLineNo">401</span>          throw new RuntimeException("Unrecognized mutation type " + mutationType);<a name="line.401"></a>
-<span class="sourceLineNo">402</span>        }<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      case 2:<a name="line.403"></a>
-<span class="sourceLineNo">404</span>        assert "Scan".equals(method.getName());<a name="line.404"></a>
-<span class="sourceLineNo">405</span>        scanTracker.updateRpc(stats);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>        return;<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      case 3:<a name="line.407"></a>
-<span class="sourceLineNo">408</span>        assert "BulkLoadHFile".equals(method.getName());<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        // use generic implementation<a name="line.409"></a>
-<span class="sourceLineNo">410</span>        break;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      case 4:<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        assert "ExecService".equals(method.getName());<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        // use generic implementation<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        break;<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      case 5:<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        assert "ExecRegionServerService".equals(method.getName());<a name="line.416"></a>
-<span class="sourceLineNo">417</span>        // use generic implementation<a name="line.417"></a>
-<span class="sourceLineNo">418</span>        break;<a name="line.418"></a>
-<span class="sourceLineNo">419</span>      case 6:<a name="line.419"></a>
-<span class="sourceLineNo">420</span>        assert "Multi".equals(method.getName());<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        multiTracker.updateRpc(stats);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        return;<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      default:<a name="line.423"></a>
-<span class="sourceLineNo">424</span>        throw new RuntimeException("Unrecognized ClientService RPC type " + method.getFullName());<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      }<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    }<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    // Fallback to dynamic registry lookup for DDL methods.<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    updateRpcGeneric(method, stats);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>  }<a name="line.429"></a>
-<span class="sourceLineNo">430</span>}<a name="line.430"></a>
+<span class="sourceLineNo">400</span>        case PUT:<a name="line.400"></a>
+<span class="sourceLineNo">401</span>          putTracker.updateRpc(stats);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>          return;<a name="line.402"></a>
+<span class="sourceLineNo">403</span>        default:<a name="line.403"></a>
+<span class="sourceLineNo">404</span>          throw new RuntimeException("Unrecognized mutation type " + mutationType);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>        }<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      case 2:<a name="line.406"></a>
+<span class="sourceLineNo">407</span>        assert "Scan".equals(method.getName());<a name="line.407"></a>
+<span class="sourceLineNo">408</span>        scanTracker.updateRpc(stats);<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        return;<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      case 3:<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        assert "BulkLoadHFile".equals(method.getName());<a name="line.411"></a>
+<span class="sourceLineNo">412</span>        // use generic implementation<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        break;<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      case 4:<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        assert "ExecService".equals(method.getName());<a name="line.415"></a>
+<span class="sourceLineNo">416</span>        // use generic implementation<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        break;<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      case 5:<a name="line.418"></a>
+<span class="sourceLineNo">419</span>        assert "ExecRegionServerService".equals(method.getName());<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        // use generic implementation<a name="line.420"></a>
+<span class="sourceLineNo">421</span>        break;<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      case 6:<a name="line.422"></a>
+<span class="sourceLineNo">423</span>        assert "Multi".equals(method.getName());<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        multiTracker.updateRpc(stats);<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        return;<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      default:<a name="line.426"></a>
+<span class="sourceLineNo">427</span>        throw new RuntimeException("Unrecognized ClientService RPC type " + method.getFullName());<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      }<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    }<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    // Fallback to dynamic registry lookup for DDL methods.<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    updateRpcGeneric(method, stats);<a name="line.431"></a>
+<span class="sourceLineNo">432</span>  }<a name="line.432"></a>
+<span class="sourceLineNo">433</span>}<a name="line.433"></a>
 
 
 


[30/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html
index 2a5efbf..ae7d613 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html
@@ -39,259 +39,261 @@
 <span class="sourceLineNo">031</span>import org.codehaus.jackson.map.ObjectMapper;<a name="line.31"></a>
 <span class="sourceLineNo">032</span>import org.codehaus.jackson.map.SerializationConfig;<a name="line.32"></a>
 <span class="sourceLineNo">033</span><a name="line.33"></a>
-<span class="sourceLineNo">034</span>import com.yammer.metrics.core.Histogram;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import com.yammer.metrics.core.MetricsRegistry;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import com.yammer.metrics.stats.Snapshot;<a name="line.36"></a>
+<span class="sourceLineNo">034</span>import com.codahale.metrics.Histogram;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import com.codahale.metrics.MetricRegistry;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import com.codahale.metrics.Snapshot;<a name="line.36"></a>
 <span class="sourceLineNo">037</span><a name="line.37"></a>
-<span class="sourceLineNo">038</span>/**<a name="line.38"></a>
-<span class="sourceLineNo">039</span> * Utilty for aggregating counts in CachedBlocks and toString/toJSON CachedBlocks and BlockCaches.<a name="line.39"></a>
-<span class="sourceLineNo">040</span> * No attempt has been made at making this thread safe.<a name="line.40"></a>
-<span class="sourceLineNo">041</span> */<a name="line.41"></a>
-<span class="sourceLineNo">042</span>@InterfaceAudience.Private<a name="line.42"></a>
-<span class="sourceLineNo">043</span>public class BlockCacheUtil {<a name="line.43"></a>
-<span class="sourceLineNo">044</span>  /**<a name="line.44"></a>
-<span class="sourceLineNo">045</span>   * Needed making histograms.<a name="line.45"></a>
-<span class="sourceLineNo">046</span>   */<a name="line.46"></a>
-<span class="sourceLineNo">047</span>  private static final MetricsRegistry METRICS = new MetricsRegistry();<a name="line.47"></a>
-<span class="sourceLineNo">048</span><a name="line.48"></a>
-<span class="sourceLineNo">049</span>  /**<a name="line.49"></a>
-<span class="sourceLineNo">050</span>   * Needed generating JSON.<a name="line.50"></a>
-<span class="sourceLineNo">051</span>   */<a name="line.51"></a>
-<span class="sourceLineNo">052</span>  private static final ObjectMapper MAPPER = new ObjectMapper();<a name="line.52"></a>
-<span class="sourceLineNo">053</span>  static {<a name="line.53"></a>
-<span class="sourceLineNo">054</span>    MAPPER.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, false);<a name="line.54"></a>
-<span class="sourceLineNo">055</span>    MAPPER.configure(SerializationConfig.Feature.FLUSH_AFTER_WRITE_VALUE, true);<a name="line.55"></a>
-<span class="sourceLineNo">056</span>    MAPPER.configure(SerializationConfig.Feature.INDENT_OUTPUT, true);<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>  /**<a name="line.59"></a>
-<span class="sourceLineNo">060</span>   * @param cb<a name="line.60"></a>
-<span class="sourceLineNo">061</span>   * @return The block content as String.<a name="line.61"></a>
-<span class="sourceLineNo">062</span>   */<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  public static String toString(final CachedBlock cb, final long now) {<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    return "filename=" + cb.getFilename() + ", " + toStringMinusFileName(cb, now);<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  }<a name="line.65"></a>
-<span class="sourceLineNo">066</span><a name="line.66"></a>
-<span class="sourceLineNo">067</span>  /**<a name="line.67"></a>
-<span class="sourceLineNo">068</span>   * Little data structure to hold counts for a file.<a name="line.68"></a>
-<span class="sourceLineNo">069</span>   * Used doing a toJSON.<a name="line.69"></a>
-<span class="sourceLineNo">070</span>   */<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  static class CachedBlockCountsPerFile {<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    private int count = 0;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    private long size = 0;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    private int countData = 0;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>    private long sizeData = 0;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>    private final String filename;<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>    CachedBlockCountsPerFile(final String filename) {<a name="line.78"></a>
-<span class="sourceLineNo">079</span>      this.filename = filename;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>    }<a name="line.80"></a>
-<span class="sourceLineNo">081</span><a name="line.81"></a>
-<span class="sourceLineNo">082</span>    public int getCount() {<a name="line.82"></a>
-<span class="sourceLineNo">083</span>      return count;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    }<a name="line.84"></a>
-<span class="sourceLineNo">085</span><a name="line.85"></a>
-<span class="sourceLineNo">086</span>    public long getSize() {<a name="line.86"></a>
-<span class="sourceLineNo">087</span>      return size;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    }<a name="line.88"></a>
-<span class="sourceLineNo">089</span><a name="line.89"></a>
-<span class="sourceLineNo">090</span>    public int getCountData() {<a name="line.90"></a>
-<span class="sourceLineNo">091</span>      return countData;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>    }<a name="line.92"></a>
-<span class="sourceLineNo">093</span><a name="line.93"></a>
-<span class="sourceLineNo">094</span>    public long getSizeData() {<a name="line.94"></a>
-<span class="sourceLineNo">095</span>      return sizeData;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    }<a name="line.96"></a>
-<span class="sourceLineNo">097</span><a name="line.97"></a>
-<span class="sourceLineNo">098</span>    public String getFilename() {<a name="line.98"></a>
-<span class="sourceLineNo">099</span>      return filename;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    }<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  }<a name="line.101"></a>
-<span class="sourceLineNo">102</span><a name="line.102"></a>
-<span class="sourceLineNo">103</span>  /**<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * @param filename<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   * @param blocks<a name="line.105"></a>
-<span class="sourceLineNo">106</span>   * @return A JSON String of &lt;code&gt;filename&lt;/code&gt; and counts of &lt;code&gt;blocks&lt;/code&gt;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>   * @throws JsonGenerationException<a name="line.107"></a>
-<span class="sourceLineNo">108</span>   * @throws JsonMappingException<a name="line.108"></a>
-<span class="sourceLineNo">109</span>   * @throws IOException<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   */<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  public static String toJSON(final String filename, final NavigableSet&lt;CachedBlock&gt; blocks)<a name="line.111"></a>
-<span class="sourceLineNo">112</span>  throws JsonGenerationException, JsonMappingException, IOException {<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    CachedBlockCountsPerFile counts = new CachedBlockCountsPerFile(filename);<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    for (CachedBlock cb: blocks) {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      counts.count++;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      counts.size += cb.getSize();<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      BlockType bt = cb.getBlockType();<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      if (bt != null &amp;&amp; bt.isData()) {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>        counts.countData++;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>        counts.sizeData += cb.getSize();<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>    return MAPPER.writeValueAsString(counts);<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  }<a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>  /**<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   * @param cbsbf<a name="line.127"></a>
-<span class="sourceLineNo">128</span>   * @return JSON string of &lt;code&gt;cbsf&lt;/code&gt; aggregated<a name="line.128"></a>
-<span class="sourceLineNo">129</span>   * @throws JsonGenerationException<a name="line.129"></a>
-<span class="sourceLineNo">130</span>   * @throws JsonMappingException<a name="line.130"></a>
-<span class="sourceLineNo">131</span>   * @throws IOException<a name="line.131"></a>
-<span class="sourceLineNo">132</span>   */<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  public static String toJSON(final CachedBlocksByFile cbsbf)<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  throws JsonGenerationException, JsonMappingException, IOException {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    return MAPPER.writeValueAsString(cbsbf);<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  }<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>  /**<a name="line.138"></a>
-<span class="sourceLineNo">139</span>   * @param bc<a name="line.139"></a>
-<span class="sourceLineNo">140</span>   * @return JSON string of &lt;code&gt;bc&lt;/code&gt; content.<a name="line.140"></a>
-<span class="sourceLineNo">141</span>   * @throws JsonGenerationException<a name="line.141"></a>
-<span class="sourceLineNo">142</span>   * @throws JsonMappingException<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * @throws IOException<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   */<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  public static String toJSON(final BlockCache bc)<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  throws JsonGenerationException, JsonMappingException, IOException {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    return MAPPER.writeValueAsString(bc);<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  }<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  /**<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   * @param cb<a name="line.151"></a>
-<span class="sourceLineNo">152</span>   * @return The block content of &lt;code&gt;bc&lt;/code&gt; as a String minus the filename.<a name="line.152"></a>
-<span class="sourceLineNo">153</span>   */<a name="line.153"></a>
-<span class="sourceLineNo">154</span>  public static String toStringMinusFileName(final CachedBlock cb, final long now) {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    return "offset=" + cb.getOffset() +<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      ", size=" + cb.getSize() +<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      ", age=" + (now - cb.getCachedTime()) +<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      ", type=" + cb.getBlockType() +<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      ", priority=" + cb.getBlockPriority();<a name="line.159"></a>
-<span class="sourceLineNo">160</span>  }<a name="line.160"></a>
-<span class="sourceLineNo">161</span><a name="line.161"></a>
-<span class="sourceLineNo">162</span>  /**<a name="line.162"></a>
-<span class="sourceLineNo">163</span>   * Get a {@link CachedBlocksByFile} instance and load it up by iterating content in<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * {@link BlockCache}.<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * @param conf Used to read configurations<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * @param bc Block Cache to iterate.<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   * @return Laoded up instance of CachedBlocksByFile<a name="line.167"></a>
-<span class="sourceLineNo">168</span>   */<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  public static CachedBlocksByFile getLoadedCachedBlocksByFile(final Configuration conf,<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      final BlockCache bc) {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    CachedBlocksByFile cbsbf = new CachedBlocksByFile(conf);<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    for (CachedBlock cb: bc) {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      if (cbsbf.update(cb)) break;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    }<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    return cbsbf;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>  }<a name="line.176"></a>
-<span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span>  /**<a name="line.178"></a>
-<span class="sourceLineNo">179</span>   * Use one of these to keep a running account of cached blocks by file.  Throw it away when done.<a name="line.179"></a>
-<span class="sourceLineNo">180</span>   * This is different than metrics in that it is stats on current state of a cache.<a name="line.180"></a>
-<span class="sourceLineNo">181</span>   * See getLoadedCachedBlocksByFile<a name="line.181"></a>
-<span class="sourceLineNo">182</span>   */<a name="line.182"></a>
-<span class="sourceLineNo">183</span>  @JsonIgnoreProperties({"cachedBlockStatsByFile"})<a name="line.183"></a>
-<span class="sourceLineNo">184</span>  public static class CachedBlocksByFile {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    private int count;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    private int dataBlockCount;<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    private long size;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    private long dataSize;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    private final long now = System.nanoTime();<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    private final int max;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    public static final int DEFAULT_MAX = 100000;<a name="line.191"></a>
-<span class="sourceLineNo">192</span> <a name="line.192"></a>
-<span class="sourceLineNo">193</span>    CachedBlocksByFile() {<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      this(null);<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    }<a name="line.195"></a>
-<span class="sourceLineNo">196</span><a name="line.196"></a>
-<span class="sourceLineNo">197</span>    CachedBlocksByFile(final Configuration c) {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      this.max = c == null? DEFAULT_MAX:<a name="line.198"></a>
-<span class="sourceLineNo">199</span>        c.getInt("hbase.ui.blockcache.by.file.max", DEFAULT_MAX);<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>     * Map by filename. use concurent utils because we want our Map and contained blocks sorted.<a name="line.203"></a>
-<span class="sourceLineNo">204</span>     */<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    private NavigableMap&lt;String, NavigableSet&lt;CachedBlock&gt;&gt; cachedBlockByFile =<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      new ConcurrentSkipListMap&lt;String, NavigableSet&lt;CachedBlock&gt;&gt;();<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    Histogram age = METRICS.newHistogram(CachedBlocksByFile.class, "age");<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>     * @param cb<a name="line.210"></a>
-<span class="sourceLineNo">211</span>     * @return True if full.... if we won't be adding any more.<a name="line.211"></a>
-<span class="sourceLineNo">212</span>     */<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    public boolean update(final CachedBlock cb) {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      if (isFull()) return true;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      NavigableSet&lt;CachedBlock&gt; set = this.cachedBlockByFile.get(cb.getFilename());<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      if (set == null) {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>        set = new ConcurrentSkipListSet&lt;CachedBlock&gt;();<a name="line.217"></a>
-<span class="sourceLineNo">218</span>        this.cachedBlockByFile.put(cb.getFilename(), set);<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      }<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      set.add(cb);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      this.size += cb.getSize();<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      this.count++;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      BlockType bt = cb.getBlockType();<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      if (bt != null &amp;&amp; bt.isData()) {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>        this.dataBlockCount++;<a name="line.225"></a>
-<span class="sourceLineNo">226</span>        this.dataSize += cb.getSize();<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      }<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      long age = this.now - cb.getCachedTime();<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      this.age.update(age);<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>    /**<a name="line.233"></a>
-<span class="sourceLineNo">234</span>     * @return True if full; i.e. there are more items in the cache but we only loaded up<a name="line.234"></a>
-<span class="sourceLineNo">235</span>     * the maximum set in configuration &lt;code&gt;hbase.ui.blockcache.by.file.max&lt;/code&gt;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>     * (Default: DEFAULT_MAX).<a name="line.236"></a>
-<span class="sourceLineNo">237</span>     */<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    public boolean isFull() {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      return this.count &gt;= this.max;<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>    public NavigableMap&lt;String, NavigableSet&lt;CachedBlock&gt;&gt; getCachedBlockStatsByFile() {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      return this.cachedBlockByFile;<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    }<a name="line.244"></a>
-<span class="sourceLineNo">245</span><a name="line.245"></a>
-<span class="sourceLineNo">246</span>    /**<a name="line.246"></a>
-<span class="sourceLineNo">247</span>     * @return count of blocks in the cache<a name="line.247"></a>
-<span class="sourceLineNo">248</span>     */<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    public int getCount() {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      return count;<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    }<a name="line.251"></a>
-<span class="sourceLineNo">252</span><a name="line.252"></a>
-<span class="sourceLineNo">253</span>    public int getDataCount() {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      return dataBlockCount;<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
-<span class="sourceLineNo">256</span><a name="line.256"></a>
-<span class="sourceLineNo">257</span>    /**<a name="line.257"></a>
-<span class="sourceLineNo">258</span>     * @return size of blocks in the cache<a name="line.258"></a>
-<span class="sourceLineNo">259</span>     */<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    public long getSize() {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      return size;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    }<a name="line.262"></a>
-<span class="sourceLineNo">263</span><a name="line.263"></a>
-<span class="sourceLineNo">264</span>    /**<a name="line.264"></a>
-<span class="sourceLineNo">265</span>     * @return Size of data.<a name="line.265"></a>
-<span class="sourceLineNo">266</span>     */<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    public long getDataSize() {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      return dataSize;<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    }<a name="line.269"></a>
-<span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span>    public AgeSnapshot getAgeInCacheSnapshot() {<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      return new AgeSnapshot(this.age);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    }<a name="line.273"></a>
-<span class="sourceLineNo">274</span><a name="line.274"></a>
-<span class="sourceLineNo">275</span>    @Override<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    public String toString() {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      Snapshot snapshot = this.age.getSnapshot();<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      return "count=" + count + ", dataBlockCount=" + this.dataBlockCount + ", size=" + size +<a name="line.278"></a>
-<span class="sourceLineNo">279</span>          ", dataSize=" + getDataSize() +<a name="line.279"></a>
-<span class="sourceLineNo">280</span>          ", mean age=" + this.age.mean() + ", stddev age=" + this.age.stdDev() +<a name="line.280"></a>
-<span class="sourceLineNo">281</span>          ", min age=" + this.age.min() + ", max age=" + this.age.max() +<a name="line.281"></a>
-<span class="sourceLineNo">282</span>          ", 95th percentile age=" + snapshot.get95thPercentile() +<a name="line.282"></a>
-<span class="sourceLineNo">283</span>          ", 99th percentile age=" + snapshot.get99thPercentile();<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    }<a name="line.284"></a>
-<span class="sourceLineNo">285</span>  }<a name="line.285"></a>
-<span class="sourceLineNo">286</span>}<a name="line.286"></a>
+<span class="sourceLineNo">038</span>import static com.codahale.metrics.MetricRegistry.name;<a name="line.38"></a>
+<span class="sourceLineNo">039</span><a name="line.39"></a>
+<span class="sourceLineNo">040</span>/**<a name="line.40"></a>
+<span class="sourceLineNo">041</span> * Utilty for aggregating counts in CachedBlocks and toString/toJSON CachedBlocks and BlockCaches.<a name="line.41"></a>
+<span class="sourceLineNo">042</span> * No attempt has been made at making this thread safe.<a name="line.42"></a>
+<span class="sourceLineNo">043</span> */<a name="line.43"></a>
+<span class="sourceLineNo">044</span>@InterfaceAudience.Private<a name="line.44"></a>
+<span class="sourceLineNo">045</span>public class BlockCacheUtil {<a name="line.45"></a>
+<span class="sourceLineNo">046</span>  /**<a name="line.46"></a>
+<span class="sourceLineNo">047</span>   * Needed making histograms.<a name="line.47"></a>
+<span class="sourceLineNo">048</span>   */<a name="line.48"></a>
+<span class="sourceLineNo">049</span>  private static final MetricRegistry METRICS = new MetricRegistry();<a name="line.49"></a>
+<span class="sourceLineNo">050</span><a name="line.50"></a>
+<span class="sourceLineNo">051</span>  /**<a name="line.51"></a>
+<span class="sourceLineNo">052</span>   * Needed generating JSON.<a name="line.52"></a>
+<span class="sourceLineNo">053</span>   */<a name="line.53"></a>
+<span class="sourceLineNo">054</span>  private static final ObjectMapper MAPPER = new ObjectMapper();<a name="line.54"></a>
+<span class="sourceLineNo">055</span>  static {<a name="line.55"></a>
+<span class="sourceLineNo">056</span>    MAPPER.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, false);<a name="line.56"></a>
+<span class="sourceLineNo">057</span>    MAPPER.configure(SerializationConfig.Feature.FLUSH_AFTER_WRITE_VALUE, true);<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    MAPPER.configure(SerializationConfig.Feature.INDENT_OUTPUT, true);<a name="line.58"></a>
+<span class="sourceLineNo">059</span>  }<a name="line.59"></a>
+<span class="sourceLineNo">060</span><a name="line.60"></a>
+<span class="sourceLineNo">061</span>  /**<a name="line.61"></a>
+<span class="sourceLineNo">062</span>   * @param cb<a name="line.62"></a>
+<span class="sourceLineNo">063</span>   * @return The block content as String.<a name="line.63"></a>
+<span class="sourceLineNo">064</span>   */<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  public static String toString(final CachedBlock cb, final long now) {<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    return "filename=" + cb.getFilename() + ", " + toStringMinusFileName(cb, now);<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>  /**<a name="line.69"></a>
+<span class="sourceLineNo">070</span>   * Little data structure to hold counts for a file.<a name="line.70"></a>
+<span class="sourceLineNo">071</span>   * Used doing a toJSON.<a name="line.71"></a>
+<span class="sourceLineNo">072</span>   */<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  static class CachedBlockCountsPerFile {<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    private int count = 0;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    private long size = 0;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    private int countData = 0;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    private long sizeData = 0;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    private final String filename;<a name="line.78"></a>
+<span class="sourceLineNo">079</span><a name="line.79"></a>
+<span class="sourceLineNo">080</span>    CachedBlockCountsPerFile(final String filename) {<a name="line.80"></a>
+<span class="sourceLineNo">081</span>      this.filename = filename;<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 getCount() {<a name="line.84"></a>
+<span class="sourceLineNo">085</span>      return count;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    }<a name="line.86"></a>
+<span class="sourceLineNo">087</span><a name="line.87"></a>
+<span class="sourceLineNo">088</span>    public long getSize() {<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      return size;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    }<a name="line.90"></a>
+<span class="sourceLineNo">091</span><a name="line.91"></a>
+<span class="sourceLineNo">092</span>    public int getCountData() {<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      return countData;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    }<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span>    public long getSizeData() {<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      return sizeData;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    }<a name="line.98"></a>
+<span class="sourceLineNo">099</span><a name="line.99"></a>
+<span class="sourceLineNo">100</span>    public String getFilename() {<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      return filename;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    }<a name="line.102"></a>
+<span class="sourceLineNo">103</span>  }<a name="line.103"></a>
+<span class="sourceLineNo">104</span><a name="line.104"></a>
+<span class="sourceLineNo">105</span>  /**<a name="line.105"></a>
+<span class="sourceLineNo">106</span>   * @param filename<a name="line.106"></a>
+<span class="sourceLineNo">107</span>   * @param blocks<a name="line.107"></a>
+<span class="sourceLineNo">108</span>   * @return A JSON String of &lt;code&gt;filename&lt;/code&gt; and counts of &lt;code&gt;blocks&lt;/code&gt;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>   * @throws JsonGenerationException<a name="line.109"></a>
+<span class="sourceLineNo">110</span>   * @throws JsonMappingException<a name="line.110"></a>
+<span class="sourceLineNo">111</span>   * @throws IOException<a name="line.111"></a>
+<span class="sourceLineNo">112</span>   */<a name="line.112"></a>
+<span class="sourceLineNo">113</span>  public static String toJSON(final String filename, final NavigableSet&lt;CachedBlock&gt; blocks)<a name="line.113"></a>
+<span class="sourceLineNo">114</span>  throws JsonGenerationException, JsonMappingException, IOException {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    CachedBlockCountsPerFile counts = new CachedBlockCountsPerFile(filename);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    for (CachedBlock cb: blocks) {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      counts.count++;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      counts.size += cb.getSize();<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      BlockType bt = cb.getBlockType();<a name="line.119"></a>
+<span class="sourceLineNo">120</span>      if (bt != null &amp;&amp; bt.isData()) {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>        counts.countData++;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>        counts.sizeData += cb.getSize();<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      }<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    }<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    return MAPPER.writeValueAsString(counts);<a name="line.125"></a>
+<span class="sourceLineNo">126</span>  }<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>  /**<a name="line.128"></a>
+<span class="sourceLineNo">129</span>   * @param cbsbf<a name="line.129"></a>
+<span class="sourceLineNo">130</span>   * @return JSON string of &lt;code&gt;cbsf&lt;/code&gt; aggregated<a name="line.130"></a>
+<span class="sourceLineNo">131</span>   * @throws JsonGenerationException<a name="line.131"></a>
+<span class="sourceLineNo">132</span>   * @throws JsonMappingException<a name="line.132"></a>
+<span class="sourceLineNo">133</span>   * @throws IOException<a name="line.133"></a>
+<span class="sourceLineNo">134</span>   */<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  public static String toJSON(final CachedBlocksByFile cbsbf)<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  throws JsonGenerationException, JsonMappingException, IOException {<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    return MAPPER.writeValueAsString(cbsbf);<a name="line.137"></a>
+<span class="sourceLineNo">138</span>  }<a name="line.138"></a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span>  /**<a name="line.140"></a>
+<span class="sourceLineNo">141</span>   * @param bc<a name="line.141"></a>
+<span class="sourceLineNo">142</span>   * @return JSON string of &lt;code&gt;bc&lt;/code&gt; content.<a name="line.142"></a>
+<span class="sourceLineNo">143</span>   * @throws JsonGenerationException<a name="line.143"></a>
+<span class="sourceLineNo">144</span>   * @throws JsonMappingException<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   * @throws IOException<a name="line.145"></a>
+<span class="sourceLineNo">146</span>   */<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  public static String toJSON(final BlockCache bc)<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  throws JsonGenerationException, JsonMappingException, IOException {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    return MAPPER.writeValueAsString(bc);<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>   * @param cb<a name="line.153"></a>
+<span class="sourceLineNo">154</span>   * @return The block content of &lt;code&gt;bc&lt;/code&gt; as a String minus the filename.<a name="line.154"></a>
+<span class="sourceLineNo">155</span>   */<a name="line.155"></a>
+<span class="sourceLineNo">156</span>  public static String toStringMinusFileName(final CachedBlock cb, final long now) {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    return "offset=" + cb.getOffset() +<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      ", size=" + cb.getSize() +<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      ", age=" + (now - cb.getCachedTime()) +<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      ", type=" + cb.getBlockType() +<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      ", priority=" + cb.getBlockPriority();<a name="line.161"></a>
+<span class="sourceLineNo">162</span>  }<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>  /**<a name="line.164"></a>
+<span class="sourceLineNo">165</span>   * Get a {@link CachedBlocksByFile} instance and load it up by iterating content in<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   * {@link BlockCache}.<a name="line.166"></a>
+<span class="sourceLineNo">167</span>   * @param conf Used to read configurations<a name="line.167"></a>
+<span class="sourceLineNo">168</span>   * @param bc Block Cache to iterate.<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * @return Laoded up instance of CachedBlocksByFile<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   */<a name="line.170"></a>
+<span class="sourceLineNo">171</span>  public static CachedBlocksByFile getLoadedCachedBlocksByFile(final Configuration conf,<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      final BlockCache bc) {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    CachedBlocksByFile cbsbf = new CachedBlocksByFile(conf);<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    for (CachedBlock cb: bc) {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      if (cbsbf.update(cb)) break;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    }<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    return cbsbf;<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>  /**<a name="line.180"></a>
+<span class="sourceLineNo">181</span>   * Use one of these to keep a running account of cached blocks by file.  Throw it away when done.<a name="line.181"></a>
+<span class="sourceLineNo">182</span>   * This is different than metrics in that it is stats on current state of a cache.<a name="line.182"></a>
+<span class="sourceLineNo">183</span>   * See getLoadedCachedBlocksByFile<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   */<a name="line.184"></a>
+<span class="sourceLineNo">185</span>  @JsonIgnoreProperties({"cachedBlockStatsByFile"})<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  public static class CachedBlocksByFile {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    private int count;<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    private int dataBlockCount;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    private long size;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    private long dataSize;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    private final long now = System.nanoTime();<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    private final int max;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    public static final int DEFAULT_MAX = 100000;<a name="line.193"></a>
+<span class="sourceLineNo">194</span><a name="line.194"></a>
+<span class="sourceLineNo">195</span>    CachedBlocksByFile() {<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      this(null);<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>    CachedBlocksByFile(final Configuration c) {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      this.max = c == null? DEFAULT_MAX:<a name="line.200"></a>
+<span class="sourceLineNo">201</span>        c.getInt("hbase.ui.blockcache.by.file.max", DEFAULT_MAX);<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>     * Map by filename. use concurent utils because we want our Map and contained blocks sorted.<a name="line.205"></a>
+<span class="sourceLineNo">206</span>     */<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    private NavigableMap&lt;String, NavigableSet&lt;CachedBlock&gt;&gt; cachedBlockByFile =<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      new ConcurrentSkipListMap&lt;String, NavigableSet&lt;CachedBlock&gt;&gt;();<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    Histogram age = METRICS.histogram(name(CachedBlocksByFile.class, "age"));<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>     * @param cb<a name="line.212"></a>
+<span class="sourceLineNo">213</span>     * @return True if full.... if we won't be adding any more.<a name="line.213"></a>
+<span class="sourceLineNo">214</span>     */<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    public boolean update(final CachedBlock cb) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      if (isFull()) return true;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      NavigableSet&lt;CachedBlock&gt; set = this.cachedBlockByFile.get(cb.getFilename());<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      if (set == null) {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        set = new ConcurrentSkipListSet&lt;CachedBlock&gt;();<a name="line.219"></a>
+<span class="sourceLineNo">220</span>        this.cachedBlockByFile.put(cb.getFilename(), set);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      }<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      set.add(cb);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      this.size += cb.getSize();<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      this.count++;<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      BlockType bt = cb.getBlockType();<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      if (bt != null &amp;&amp; bt.isData()) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        this.dataBlockCount++;<a name="line.227"></a>
+<span class="sourceLineNo">228</span>        this.dataSize += cb.getSize();<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      }<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      long age = this.now - cb.getCachedTime();<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      this.age.update(age);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      return false;<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    }<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span>    /**<a name="line.235"></a>
+<span class="sourceLineNo">236</span>     * @return True if full; i.e. there are more items in the cache but we only loaded up<a name="line.236"></a>
+<span class="sourceLineNo">237</span>     * the maximum set in configuration &lt;code&gt;hbase.ui.blockcache.by.file.max&lt;/code&gt;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>     * (Default: DEFAULT_MAX).<a name="line.238"></a>
+<span class="sourceLineNo">239</span>     */<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    public boolean isFull() {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      return this.count &gt;= this.max;<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>    public NavigableMap&lt;String, NavigableSet&lt;CachedBlock&gt;&gt; getCachedBlockStatsByFile() {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      return this.cachedBlockByFile;<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    }<a name="line.246"></a>
+<span class="sourceLineNo">247</span><a name="line.247"></a>
+<span class="sourceLineNo">248</span>    /**<a name="line.248"></a>
+<span class="sourceLineNo">249</span>     * @return count of blocks in the cache<a name="line.249"></a>
+<span class="sourceLineNo">250</span>     */<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    public int getCount() {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      return count;<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>    public int getDataCount() {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      return dataBlockCount;<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
+<span class="sourceLineNo">258</span><a name="line.258"></a>
+<span class="sourceLineNo">259</span>    /**<a name="line.259"></a>
+<span class="sourceLineNo">260</span>     * @return size of blocks in the cache<a name="line.260"></a>
+<span class="sourceLineNo">261</span>     */<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    public long getSize() {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      return size;<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    }<a name="line.264"></a>
+<span class="sourceLineNo">265</span><a name="line.265"></a>
+<span class="sourceLineNo">266</span>    /**<a name="line.266"></a>
+<span class="sourceLineNo">267</span>     * @return Size of data.<a name="line.267"></a>
+<span class="sourceLineNo">268</span>     */<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    public long getDataSize() {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      return dataSize;<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    }<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>    public AgeSnapshot getAgeInCacheSnapshot() {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      return new AgeSnapshot(this.age);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span>    @Override<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    public String toString() {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      Snapshot snapshot = age.getSnapshot();<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      return "count=" + count + ", dataBlockCount=" + dataBlockCount + ", size=" + size +<a name="line.280"></a>
+<span class="sourceLineNo">281</span>          ", dataSize=" + getDataSize() +<a name="line.281"></a>
+<span class="sourceLineNo">282</span>          ", mean age=" + snapshot.getMean() + ", stddev age=" + snapshot.getStdDev() +<a name="line.282"></a>
+<span class="sourceLineNo">283</span>          ", min age=" + snapshot.getMin() + ", max age=" + snapshot.getMax() +<a name="line.283"></a>
+<span class="sourceLineNo">284</span>          ", 95th percentile age=" + snapshot.get95thPercentile() +<a name="line.284"></a>
+<span class="sourceLineNo">285</span>          ", 99th percentile age=" + snapshot.get99thPercentile();<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    }<a name="line.286"></a>
+<span class="sourceLineNo">287</span>  }<a name="line.287"></a>
+<span class="sourceLineNo">288</span>}<a name="line.288"></a>
 
 
 


[38/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/src-html/org/apache/hadoop/hbase/client/MetricsConnection.NewMetric.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/client/MetricsConnection.NewMetric.html b/devapidocs/src-html/org/apache/hadoop/hbase/client/MetricsConnection.NewMetric.html
index 0d9837b..9090c08 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/client/MetricsConnection.NewMetric.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/client/MetricsConnection.NewMetric.html
@@ -28,12 +28,12 @@
 <span class="sourceLineNo">020</span>import com.google.common.annotations.VisibleForTesting;<a name="line.20"></a>
 <span class="sourceLineNo">021</span>import com.google.protobuf.Descriptors.MethodDescriptor;<a name="line.21"></a>
 <span class="sourceLineNo">022</span>import com.google.protobuf.Message;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import com.yammer.metrics.core.Counter;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import com.yammer.metrics.core.Histogram;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import com.yammer.metrics.core.MetricsRegistry;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import com.yammer.metrics.core.Timer;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import com.yammer.metrics.reporting.JmxReporter;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import com.yammer.metrics.util.RatioGauge;<a name="line.28"></a>
+<span class="sourceLineNo">023</span>import com.codahale.metrics.Counter;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import com.codahale.metrics.Histogram;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import com.codahale.metrics.MetricRegistry;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import com.codahale.metrics.Timer;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import com.codahale.metrics.JmxReporter;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import com.codahale.metrics.RatioGauge;<a name="line.28"></a>
 <span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.ServerName;<a name="line.29"></a>
 <span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.30"></a>
 <span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.protobuf.generated.ClientProtos;<a name="line.31"></a>
@@ -48,394 +48,397 @@
 <span class="sourceLineNo">040</span>import java.util.concurrent.ThreadPoolExecutor;<a name="line.40"></a>
 <span class="sourceLineNo">041</span>import java.util.concurrent.TimeUnit;<a name="line.41"></a>
 <span class="sourceLineNo">042</span><a name="line.42"></a>
-<span class="sourceLineNo">043</span>/**<a name="line.43"></a>
-<span class="sourceLineNo">044</span> * This class is for maintaining the various connection statistics and publishing them through<a name="line.44"></a>
-<span class="sourceLineNo">045</span> * the metrics interfaces.<a name="line.45"></a>
-<span class="sourceLineNo">046</span> *<a name="line.46"></a>
-<span class="sourceLineNo">047</span> * This class manages its own {@link MetricsRegistry} and {@link JmxReporter} so as to not<a name="line.47"></a>
-<span class="sourceLineNo">048</span> * conflict with other uses of Yammer Metrics within the client application. Instantiating<a name="line.48"></a>
-<span class="sourceLineNo">049</span> * this class implicitly creates and "starts" instances of these classes; be sure to call<a name="line.49"></a>
-<span class="sourceLineNo">050</span> * {@link #shutdown()} to terminate the thread pools they allocate.<a name="line.50"></a>
-<span class="sourceLineNo">051</span> */<a name="line.51"></a>
-<span class="sourceLineNo">052</span>@InterfaceAudience.Private<a name="line.52"></a>
-<span class="sourceLineNo">053</span>public class MetricsConnection {<a name="line.53"></a>
-<span class="sourceLineNo">054</span><a name="line.54"></a>
-<span class="sourceLineNo">055</span>  /** Set this key to {@code true} to enable metrics collection of client requests. */<a name="line.55"></a>
-<span class="sourceLineNo">056</span>  public static final String CLIENT_SIDE_METRICS_ENABLED_KEY = "hbase.client.metrics.enable";<a name="line.56"></a>
-<span class="sourceLineNo">057</span><a name="line.57"></a>
-<span class="sourceLineNo">058</span>  private static final String DRTN_BASE = "rpcCallDurationMs_";<a name="line.58"></a>
-<span class="sourceLineNo">059</span>  private static final String REQ_BASE = "rpcCallRequestSizeBytes_";<a name="line.59"></a>
-<span class="sourceLineNo">060</span>  private static final String RESP_BASE = "rpcCallResponseSizeBytes_";<a name="line.60"></a>
-<span class="sourceLineNo">061</span>  private static final String MEMLOAD_BASE = "memstoreLoad_";<a name="line.61"></a>
-<span class="sourceLineNo">062</span>  private static final String HEAP_BASE = "heapOccupancy_";<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  private static final String CLIENT_SVC = ClientService.getDescriptor().getName();<a name="line.63"></a>
-<span class="sourceLineNo">064</span><a name="line.64"></a>
-<span class="sourceLineNo">065</span>  /** A container class for collecting details about the RPC call as it percolates. */<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  public static class CallStats {<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    private long requestSizeBytes = 0;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    private long responseSizeBytes = 0;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    private long startTime = 0;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    private long callTimeMs = 0;<a name="line.70"></a>
-<span class="sourceLineNo">071</span><a name="line.71"></a>
-<span class="sourceLineNo">072</span>    public long getRequestSizeBytes() {<a name="line.72"></a>
-<span class="sourceLineNo">073</span>      return requestSizeBytes;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    }<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>    public void setRequestSizeBytes(long requestSizeBytes) {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>      this.requestSizeBytes = requestSizeBytes;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    }<a name="line.78"></a>
-<span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>    public long getResponseSizeBytes() {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      return responseSizeBytes;<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 void setResponseSizeBytes(long responseSizeBytes) {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      this.responseSizeBytes = responseSizeBytes;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    }<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>    public long getStartTime() {<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      return startTime;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    }<a name="line.90"></a>
-<span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>    public void setStartTime(long startTime) {<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      this.startTime = startTime;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    }<a name="line.94"></a>
-<span class="sourceLineNo">095</span><a name="line.95"></a>
-<span class="sourceLineNo">096</span>    public long getCallTimeMs() {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>      return callTimeMs;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    }<a name="line.98"></a>
-<span class="sourceLineNo">099</span><a name="line.99"></a>
-<span class="sourceLineNo">100</span>    public void setCallTimeMs(long callTimeMs) {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      this.callTimeMs = callTimeMs;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    }<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  }<a name="line.103"></a>
-<span class="sourceLineNo">104</span><a name="line.104"></a>
-<span class="sourceLineNo">105</span>  @VisibleForTesting<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  protected final class CallTracker {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    private final String name;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    @VisibleForTesting final Timer callTimer;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    @VisibleForTesting final Histogram reqHist;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    @VisibleForTesting final Histogram respHist;<a name="line.110"></a>
-<span class="sourceLineNo">111</span><a name="line.111"></a>
-<span class="sourceLineNo">112</span>    private CallTracker(MetricsRegistry registry, String name, String subName, String scope) {<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      StringBuilder sb = new StringBuilder(CLIENT_SVC).append("_").append(name);<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      if (subName != null) {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>        sb.append("(").append(subName).append(")");<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      }<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      this.name = sb.toString();<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      this.callTimer = registry.newTimer(MetricsConnection.class, DRTN_BASE + this.name, scope);<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      this.reqHist = registry.newHistogram(MetricsConnection.class, REQ_BASE + this.name, scope);<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      this.respHist = registry.newHistogram(MetricsConnection.class, RESP_BASE + this.name, scope);<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>    private CallTracker(MetricsRegistry registry, String name, String scope) {<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      this(registry, name, null, scope);<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    }<a name="line.125"></a>
-<span class="sourceLineNo">126</span><a name="line.126"></a>
-<span class="sourceLineNo">127</span>    public void updateRpc(CallStats stats) {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      this.callTimer.update(stats.getCallTimeMs(), TimeUnit.MILLISECONDS);<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      this.reqHist.update(stats.getRequestSizeBytes());<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      this.respHist.update(stats.getResponseSizeBytes());<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    }<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>    @Override<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    public String toString() {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      return "CallTracker:" + name;<a name="line.135"></a>
+<span class="sourceLineNo">043</span>import static com.codahale.metrics.MetricRegistry.name;<a name="line.43"></a>
+<span class="sourceLineNo">044</span><a name="line.44"></a>
+<span class="sourceLineNo">045</span>/**<a name="line.45"></a>
+<span class="sourceLineNo">046</span> * This class is for maintaining the various connection statistics and publishing them through<a name="line.46"></a>
+<span class="sourceLineNo">047</span> * the metrics interfaces.<a name="line.47"></a>
+<span class="sourceLineNo">048</span> *<a name="line.48"></a>
+<span class="sourceLineNo">049</span> * This class manages its own {@link MetricRegistry} and {@link JmxReporter} so as to not<a name="line.49"></a>
+<span class="sourceLineNo">050</span> * conflict with other uses of Yammer Metrics within the client application. Instantiating<a name="line.50"></a>
+<span class="sourceLineNo">051</span> * this class implicitly creates and "starts" instances of these classes; be sure to call<a name="line.51"></a>
+<span class="sourceLineNo">052</span> * {@link #shutdown()} to terminate the thread pools they allocate.<a name="line.52"></a>
+<span class="sourceLineNo">053</span> */<a name="line.53"></a>
+<span class="sourceLineNo">054</span>@InterfaceAudience.Private<a name="line.54"></a>
+<span class="sourceLineNo">055</span>public class MetricsConnection {<a name="line.55"></a>
+<span class="sourceLineNo">056</span><a name="line.56"></a>
+<span class="sourceLineNo">057</span>  /** Set this key to {@code true} to enable metrics collection of client requests. */<a name="line.57"></a>
+<span class="sourceLineNo">058</span>  public static final String CLIENT_SIDE_METRICS_ENABLED_KEY = "hbase.client.metrics.enable";<a name="line.58"></a>
+<span class="sourceLineNo">059</span><a name="line.59"></a>
+<span class="sourceLineNo">060</span>  private static final String DRTN_BASE = "rpcCallDurationMs_";<a name="line.60"></a>
+<span class="sourceLineNo">061</span>  private static final String REQ_BASE = "rpcCallRequestSizeBytes_";<a name="line.61"></a>
+<span class="sourceLineNo">062</span>  private static final String RESP_BASE = "rpcCallResponseSizeBytes_";<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  private static final String MEMLOAD_BASE = "memstoreLoad_";<a name="line.63"></a>
+<span class="sourceLineNo">064</span>  private static final String HEAP_BASE = "heapOccupancy_";<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  private static final String CLIENT_SVC = ClientService.getDescriptor().getName();<a name="line.65"></a>
+<span class="sourceLineNo">066</span><a name="line.66"></a>
+<span class="sourceLineNo">067</span>  /** A container class for collecting details about the RPC call as it percolates. */<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  public static class CallStats {<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    private long requestSizeBytes = 0;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    private long responseSizeBytes = 0;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    private long startTime = 0;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    private long callTimeMs = 0;<a name="line.72"></a>
+<span class="sourceLineNo">073</span><a name="line.73"></a>
+<span class="sourceLineNo">074</span>    public long getRequestSizeBytes() {<a name="line.74"></a>
+<span class="sourceLineNo">075</span>      return requestSizeBytes;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    }<a name="line.76"></a>
+<span class="sourceLineNo">077</span><a name="line.77"></a>
+<span class="sourceLineNo">078</span>    public void setRequestSizeBytes(long requestSizeBytes) {<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      this.requestSizeBytes = requestSizeBytes;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    }<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>    public long getResponseSizeBytes() {<a name="line.82"></a>
+<span class="sourceLineNo">083</span>      return responseSizeBytes;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    }<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>    public void setResponseSizeBytes(long responseSizeBytes) {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>      this.responseSizeBytes = responseSizeBytes;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    }<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>    public long getStartTime() {<a name="line.90"></a>
+<span class="sourceLineNo">091</span>      return startTime;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    }<a name="line.92"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span>    public void setStartTime(long startTime) {<a name="line.94"></a>
+<span class="sourceLineNo">095</span>      this.startTime = startTime;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    }<a name="line.96"></a>
+<span class="sourceLineNo">097</span><a name="line.97"></a>
+<span class="sourceLineNo">098</span>    public long getCallTimeMs() {<a name="line.98"></a>
+<span class="sourceLineNo">099</span>      return callTimeMs;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    }<a name="line.100"></a>
+<span class="sourceLineNo">101</span><a name="line.101"></a>
+<span class="sourceLineNo">102</span>    public void setCallTimeMs(long callTimeMs) {<a name="line.102"></a>
+<span class="sourceLineNo">103</span>      this.callTimeMs = callTimeMs;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    }<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  }<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>  @VisibleForTesting<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  protected final class CallTracker {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    private final String name;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    @VisibleForTesting final Timer callTimer;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    @VisibleForTesting final Histogram reqHist;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    @VisibleForTesting final Histogram respHist;<a name="line.112"></a>
+<span class="sourceLineNo">113</span><a name="line.113"></a>
+<span class="sourceLineNo">114</span>    private CallTracker(MetricRegistry registry, String name, String subName, String scope) {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      StringBuilder sb = new StringBuilder(CLIENT_SVC).append("_").append(name);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      if (subName != null) {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>        sb.append("(").append(subName).append(")");<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      }<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      this.name = sb.toString();<a name="line.119"></a>
+<span class="sourceLineNo">120</span>      this.callTimer = registry.timer(name(MetricsConnection.class,<a name="line.120"></a>
+<span class="sourceLineNo">121</span>        DRTN_BASE + this.name, scope));<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      this.reqHist = registry.histogram(name(MetricsConnection.class,<a name="line.122"></a>
+<span class="sourceLineNo">123</span>        REQ_BASE + this.name, scope));<a name="line.123"></a>
+<span class="sourceLineNo">124</span>      this.respHist = registry.histogram(name(MetricsConnection.class,<a name="line.124"></a>
+<span class="sourceLineNo">125</span>        RESP_BASE + this.name, scope));<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    }<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>    private CallTracker(MetricRegistry registry, String name, String scope) {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      this(registry, name, null, scope);<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>    public void updateRpc(CallStats stats) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      this.callTimer.update(stats.getCallTimeMs(), TimeUnit.MILLISECONDS);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      this.reqHist.update(stats.getRequestSizeBytes());<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      this.respHist.update(stats.getResponseSizeBytes());<a name="line.135"></a>
 <span class="sourceLineNo">136</span>    }<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>  protected static class RegionStats {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    final String name;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    final Histogram memstoreLoadHist;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    final Histogram heapOccupancyHist;<a name="line.142"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span>    @Override<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    public String toString() {<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      return "CallTracker:" + name;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    }<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  }<a name="line.142"></a>
 <span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>    public RegionStats(MetricsRegistry registry, String name) {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      this.name = name;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      this.memstoreLoadHist = registry.newHistogram(MetricsConnection.class,<a name="line.146"></a>
-<span class="sourceLineNo">147</span>          MEMLOAD_BASE + this.name);<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      this.heapOccupancyHist = registry.newHistogram(MetricsConnection.class,<a name="line.148"></a>
-<span class="sourceLineNo">149</span>          HEAP_BASE + this.name);<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    }<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>    public void update(ClientProtos.RegionLoadStats regionStatistics) {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      this.memstoreLoadHist.update(regionStatistics.getMemstoreLoad());<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      this.heapOccupancyHist.update(regionStatistics.getHeapOccupancy());<a name="line.154"></a>
+<span class="sourceLineNo">144</span>  protected static class RegionStats {<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    final String name;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    final Histogram memstoreLoadHist;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    final Histogram heapOccupancyHist;<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>    public RegionStats(MetricRegistry registry, String name) {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      this.name = name;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>      this.memstoreLoadHist = registry.histogram(name(MetricsConnection.class,<a name="line.151"></a>
+<span class="sourceLineNo">152</span>          MEMLOAD_BASE + this.name));<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      this.heapOccupancyHist = registry.histogram(name(MetricsConnection.class,<a name="line.153"></a>
+<span class="sourceLineNo">154</span>          HEAP_BASE + this.name));<a name="line.154"></a>
 <span class="sourceLineNo">155</span>    }<a name="line.155"></a>
-<span class="sourceLineNo">156</span>  }<a name="line.156"></a>
-<span class="sourceLineNo">157</span><a name="line.157"></a>
-<span class="sourceLineNo">158</span>  @VisibleForTesting<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  protected static class RunnerStats {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    final Counter normalRunners;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    final Counter delayRunners;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    final Histogram delayIntevalHist;<a name="line.162"></a>
-<span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>    public RunnerStats(MetricsRegistry registry) {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      this.normalRunners = registry.newCounter(MetricsConnection.class, "normalRunnersCount");<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      this.delayRunners = registry.newCounter(MetricsConnection.class, "delayRunnersCount");<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      this.delayIntevalHist = registry.newHistogram(MetricsConnection.class, "delayIntervalHist");<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    }<a name="line.168"></a>
-<span class="sourceLineNo">169</span><a name="line.169"></a>
-<span class="sourceLineNo">170</span>    public void incrNormalRunners() {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      this.normalRunners.inc();<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    }<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>    public void incrDelayRunners() {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      this.delayRunners.inc();<a name="line.175"></a>
+<span class="sourceLineNo">156</span><a name="line.156"></a>
+<span class="sourceLineNo">157</span>    public void update(ClientProtos.RegionLoadStats regionStatistics) {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      this.memstoreLoadHist.update(regionStatistics.getMemstoreLoad());<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      this.heapOccupancyHist.update(regionStatistics.getHeapOccupancy());<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    }<a name="line.160"></a>
+<span class="sourceLineNo">161</span>  }<a name="line.161"></a>
+<span class="sourceLineNo">162</span><a name="line.162"></a>
+<span class="sourceLineNo">163</span>  @VisibleForTesting<a name="line.163"></a>
+<span class="sourceLineNo">164</span>  protected static class RunnerStats {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    final Counter normalRunners;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    final Counter delayRunners;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    final Histogram delayIntevalHist;<a name="line.167"></a>
+<span class="sourceLineNo">168</span><a name="line.168"></a>
+<span class="sourceLineNo">169</span>    public RunnerStats(MetricRegistry registry) {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      this.normalRunners = registry.counter(<a name="line.170"></a>
+<span class="sourceLineNo">171</span>        name(MetricsConnection.class, "normalRunnersCount"));<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      this.delayRunners = registry.counter(<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        name(MetricsConnection.class, "delayRunnersCount"));<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      this.delayIntevalHist = registry.histogram(<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        name(MetricsConnection.class, "delayIntervalHist"));<a name="line.175"></a>
 <span class="sourceLineNo">176</span>    }<a name="line.176"></a>
 <span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span>    public void updateDelayInterval(long interval) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      this.delayIntevalHist.update(interval);<a name="line.179"></a>
+<span class="sourceLineNo">178</span>    public void incrNormalRunners() {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      this.normalRunners.inc();<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><a name="line.182"></a>
-<span class="sourceLineNo">183</span>  @VisibleForTesting<a name="line.183"></a>
-<span class="sourceLineNo">184</span>  protected ConcurrentHashMap&lt;ServerName, ConcurrentMap&lt;byte[], RegionStats&gt;&gt; serverStats<a name="line.184"></a>
-<span class="sourceLineNo">185</span>          = new ConcurrentHashMap&lt;ServerName, ConcurrentMap&lt;byte[], RegionStats&gt;&gt;();<a name="line.185"></a>
-<span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>  public void updateServerStats(ServerName serverName, byte[] regionName,<a name="line.187"></a>
-<span class="sourceLineNo">188</span>                                Object r) {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    if (!(r instanceof Result)) {<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      return;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    }<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    Result result = (Result) r;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    ClientProtos.RegionLoadStats stats = result.getStats();<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    if(stats == null){<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      return;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    }<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    String name = serverName.getServerName() + "," + Bytes.toStringBinary(regionName);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    ConcurrentMap&lt;byte[], RegionStats&gt; rsStats = null;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    if (serverStats.containsKey(serverName)) {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      rsStats = serverStats.get(serverName);<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    } else {<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      rsStats = serverStats.putIfAbsent(serverName,<a name="line.202"></a>
-<span class="sourceLineNo">203</span>          new ConcurrentSkipListMap&lt;byte[], RegionStats&gt;(Bytes.BYTES_COMPARATOR));<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      if (rsStats == null) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>        rsStats = serverStats.get(serverName);<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>    RegionStats regionStats = null;<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    if (rsStats.containsKey(regionName)) {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      regionStats = rsStats.get(regionName);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    } else {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      regionStats = rsStats.putIfAbsent(regionName, new RegionStats(this.registry, name));<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      if (regionStats == null) {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        regionStats = rsStats.get(regionName);<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>    regionStats.update(stats);<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>  /** A lambda for dispatching to the appropriate metric factory method */<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  private static interface NewMetric&lt;T&gt; {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    T newMetric(Class&lt;?&gt; clazz, String name, String scope);<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>  /** Anticipated number of metric entries */<a name="line.226"></a>
-<span class="sourceLineNo">227</span>  private static final int CAPACITY = 50;<a name="line.227"></a>
-<span class="sourceLineNo">228</span>  /** Default load factor from {@link java.util.HashMap#DEFAULT_LOAD_FACTOR} */<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  private static final float LOAD_FACTOR = 0.75f;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  /**<a name="line.230"></a>
-<span class="sourceLineNo">231</span>   * Anticipated number of concurrent accessor threads, from<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   * {@link ConnectionImplementation#getBatchPool()}<a name="line.232"></a>
-<span class="sourceLineNo">233</span>   */<a name="line.233"></a>
-<span class="sourceLineNo">234</span>  private static final int CONCURRENCY_LEVEL = 256;<a name="line.234"></a>
-<span class="sourceLineNo">235</span><a name="line.235"></a>
-<span class="sourceLineNo">236</span>  private final MetricsRegistry registry;<a name="line.236"></a>
-<span class="sourceLineNo">237</span>  private final JmxReporter reporter;<a name="line.237"></a>
-<span class="sourceLineNo">238</span>  private final String scope;<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>  private final NewMetric&lt;Timer&gt; timerFactory = new NewMetric&lt;Timer&gt;() {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    @Override public Timer newMetric(Class&lt;?&gt; clazz, String name, String scope) {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      return registry.newTimer(clazz, name, scope);<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>  private final NewMetric&lt;Histogram&gt; histogramFactory = new NewMetric&lt;Histogram&gt;() {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    @Override public Histogram newMetric(Class&lt;?&gt; clazz, String name, String scope) {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      return registry.newHistogram(clazz, name, scope);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    }<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  };<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>  // static metrics<a name="line.252"></a>
+<span class="sourceLineNo">181</span><a name="line.181"></a>
+<span class="sourceLineNo">182</span>    public void incrDelayRunners() {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      this.delayRunners.inc();<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>    public void updateDelayInterval(long interval) {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      this.delayIntevalHist.update(interval);<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>  @VisibleForTesting<a name="line.191"></a>
+<span class="sourceLineNo">192</span>  protected ConcurrentHashMap&lt;ServerName, ConcurrentMap&lt;byte[], RegionStats&gt;&gt; serverStats<a name="line.192"></a>
+<span class="sourceLineNo">193</span>          = new ConcurrentHashMap&lt;ServerName, ConcurrentMap&lt;byte[], RegionStats&gt;&gt;();<a name="line.193"></a>
+<span class="sourceLineNo">194</span><a name="line.194"></a>
+<span class="sourceLineNo">195</span>  public void updateServerStats(ServerName serverName, byte[] regionName,<a name="line.195"></a>
+<span class="sourceLineNo">196</span>                                Object r) {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    if (!(r instanceof Result)) {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      return;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    }<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    Result result = (Result) r;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    ClientProtos.RegionLoadStats stats = result.getStats();<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    if(stats == null){<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      return;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    }<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    String name = serverName.getServerName() + "," + Bytes.toStringBinary(regionName);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    ConcurrentMap&lt;byte[], RegionStats&gt; rsStats = null;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    if (serverStats.containsKey(serverName)) {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      rsStats = serverStats.get(serverName);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    } else {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      rsStats = serverStats.putIfAbsent(serverName,<a name="line.210"></a>
+<span class="sourceLineNo">211</span>          new ConcurrentSkipListMap&lt;byte[], RegionStats&gt;(Bytes.BYTES_COMPARATOR));<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      if (rsStats == null) {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>        rsStats = serverStats.get(serverName);<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>    RegionStats regionStats = null;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    if (rsStats.containsKey(regionName)) {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      regionStats = rsStats.get(regionName);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    } else {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      regionStats = rsStats.putIfAbsent(regionName, new RegionStats(this.registry, name));<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      if (regionStats == null) {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>        regionStats = rsStats.get(regionName);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      }<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    }<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    regionStats.update(stats);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>  }<a name="line.226"></a>
+<span class="sourceLineNo">227</span><a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span>  /** A lambda for dispatching to the appropriate metric factory method */<a name="line.229"></a>
+<span class="sourceLineNo">230</span>  private static interface NewMetric&lt;T&gt; {<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    T newMetric(Class&lt;?&gt; clazz, String name, String scope);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>  }<a name="line.232"></a>
+<span class="sourceLineNo">233</span><a name="line.233"></a>
+<span class="sourceLineNo">234</span>  /** Anticipated number of metric entries */<a name="line.234"></a>
+<span class="sourceLineNo">235</span>  private static final int CAPACITY = 50;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>  /** Default load factor from {@link java.util.HashMap#DEFAULT_LOAD_FACTOR} */<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  private static final float LOAD_FACTOR = 0.75f;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>  /**<a name="line.238"></a>
+<span class="sourceLineNo">239</span>   * Anticipated number of concurrent accessor threads, from<a name="line.239"></a>
+<span class="sourceLineNo">240</span>   * {@link ConnectionImplementation#getBatchPool()}<a name="line.240"></a>
+<span class="sourceLineNo">241</span>   */<a name="line.241"></a>
+<span class="sourceLineNo">242</span>  private static final int CONCURRENCY_LEVEL = 256;<a name="line.242"></a>
+<span class="sourceLineNo">243</span><a name="line.243"></a>
+<span class="sourceLineNo">244</span>  private final MetricRegistry registry;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>  private final JmxReporter reporter;<a name="line.245"></a>
+<span class="sourceLineNo">246</span>  private final String scope;<a name="line.246"></a>
+<span class="sourceLineNo">247</span><a name="line.247"></a>
+<span class="sourceLineNo">248</span>  private final NewMetric&lt;Timer&gt; timerFactory = new NewMetric&lt;Timer&gt;() {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    @Override public Timer newMetric(Class&lt;?&gt; clazz, String name, String scope) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      return registry.timer(name(clazz, name, scope));<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    }<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  };<a name="line.252"></a>
 <span class="sourceLineNo">253</span><a name="line.253"></a>
-<span class="sourceLineNo">254</span>  @VisibleForTesting protected final Counter metaCacheHits;<a name="line.254"></a>
-<span class="sourceLineNo">255</span>  @VisibleForTesting protected final Counter metaCacheMisses;<a name="line.255"></a>
-<span class="sourceLineNo">256</span>  @VisibleForTesting protected final CallTracker getTracker;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>  @VisibleForTesting protected final CallTracker scanTracker;<a name="line.257"></a>
-<span class="sourceLineNo">258</span>  @VisibleForTesting protected final CallTracker appendTracker;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  @VisibleForTesting protected final CallTracker deleteTracker;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  @VisibleForTesting protected final CallTracker incrementTracker;<a name="line.260"></a>
-<span class="sourceLineNo">261</span>  @VisibleForTesting protected final CallTracker putTracker;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>  @VisibleForTesting protected final CallTracker multiTracker;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>  @VisibleForTesting protected final RunnerStats runnerStats;<a name="line.263"></a>
-<span class="sourceLineNo">264</span><a name="line.264"></a>
-<span class="sourceLineNo">265</span>  // dynamic metrics<a name="line.265"></a>
-<span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>  // These maps are used to cache references to the metric instances that are managed by the<a name="line.267"></a>
-<span class="sourceLineNo">268</span>  // registry. I don't think their use perfectly removes redundant allocations, but it's<a name="line.268"></a>
-<span class="sourceLineNo">269</span>  // a big improvement over calling registry.newMetric each time.<a name="line.269"></a>
-<span class="sourceLineNo">270</span>  @VisibleForTesting protected final ConcurrentMap&lt;String, Timer&gt; rpcTimers =<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      new ConcurrentHashMap&lt;&gt;(CAPACITY, LOAD_FACTOR, CONCURRENCY_LEVEL);<a name="line.271"></a>
-<span class="sourceLineNo">272</span>  @VisibleForTesting protected final ConcurrentMap&lt;String, Histogram&gt; rpcHistograms =<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      new ConcurrentHashMap&lt;&gt;(CAPACITY * 2 /* tracking both request and response sizes */,<a name="line.273"></a>
-<span class="sourceLineNo">274</span>          LOAD_FACTOR, CONCURRENCY_LEVEL);<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span>  public MetricsConnection(final ConnectionImplementation conn) {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    this.scope = conn.toString();<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    this.registry = new MetricsRegistry();<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    final ThreadPoolExecutor batchPool = (ThreadPoolExecutor) conn.getCurrentBatchPool();<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    final ThreadPoolExecutor metaPool = (ThreadPoolExecutor) conn.getCurrentMetaLookupPool();<a name="line.280"></a>
-<span class="sourceLineNo">281</span><a name="line.281"></a>
-<span class="sourceLineNo">282</span>    this.registry.newGauge(this.getClass(), "executorPoolActiveThreads", scope,<a name="line.282"></a>
-<span class="sourceLineNo">283</span>        new RatioGauge() {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>          @Override protected double getNumerator() {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>            return batchPool.getActiveCount();<a name="line.285"></a>
-<span class="sourceLineNo">286</span>          }<a name="line.286"></a>
-<span class="sourceLineNo">287</span>          @Override protected double getDenominator() {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>            return batchPool.getMaximumPoolSize();<a name="line.288"></a>
-<span class="sourceLineNo">289</span>          }<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        });<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    this.registry.newGauge(this.getClass(), "metaPoolActiveThreads", scope,<a name="line.291"></a>
-<span class="sourceLineNo">292</span>        new RatioGauge() {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>          @Override protected double getNumerator() {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>            return metaPool.getActiveCount();<a name="line.294"></a>
+<span class="sourceLineNo">254</span>  private final NewMetric&lt;Histogram&gt; histogramFactory = new NewMetric&lt;Histogram&gt;() {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    @Override public Histogram newMetric(Class&lt;?&gt; clazz, String name, String scope) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      return registry.histogram(name(clazz, name, scope));<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
+<span class="sourceLineNo">258</span>  };<a name="line.258"></a>
+<span class="sourceLineNo">259</span><a name="line.259"></a>
+<span class="sourceLineNo">260</span>  // static metrics<a name="line.260"></a>
+<span class="sourceLineNo">261</span><a name="line.261"></a>
+<span class="sourceLineNo">262</span>  @VisibleForTesting protected final Counter metaCacheHits;<a name="line.262"></a>
+<span class="sourceLineNo">263</span>  @VisibleForTesting protected final Counter metaCacheMisses;<a name="line.263"></a>
+<span class="sourceLineNo">264</span>  @VisibleForTesting protected final CallTracker getTracker;<a name="line.264"></a>
+<span class="sourceLineNo">265</span>  @VisibleForTesting protected final CallTracker scanTracker;<a name="line.265"></a>
+<span class="sourceLineNo">266</span>  @VisibleForTesting protected final CallTracker appendTracker;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>  @VisibleForTesting protected final CallTracker deleteTracker;<a name="line.267"></a>
+<span class="sourceLineNo">268</span>  @VisibleForTesting protected final CallTracker incrementTracker;<a name="line.268"></a>
+<span class="sourceLineNo">269</span>  @VisibleForTesting protected final CallTracker putTracker;<a name="line.269"></a>
+<span class="sourceLineNo">270</span>  @VisibleForTesting protected final CallTracker multiTracker;<a name="line.270"></a>
+<span class="sourceLineNo">271</span>  @VisibleForTesting protected final RunnerStats runnerStats;<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>  // dynamic metrics<a name="line.273"></a>
+<span class="sourceLineNo">274</span><a name="line.274"></a>
+<span class="sourceLineNo">275</span>  // These maps are used to cache references to the metric instances that are managed by the<a name="line.275"></a>
+<span class="sourceLineNo">276</span>  // registry. I don't think their use perfectly removes redundant allocations, but it's<a name="line.276"></a>
+<span class="sourceLineNo">277</span>  // a big improvement over calling registry.newMetric each time.<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  @VisibleForTesting protected final ConcurrentMap&lt;String, Timer&gt; rpcTimers =<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      new ConcurrentHashMap&lt;&gt;(CAPACITY, LOAD_FACTOR, CONCURRENCY_LEVEL);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>  @VisibleForTesting protected final ConcurrentMap&lt;String, Histogram&gt; rpcHistograms =<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      new ConcurrentHashMap&lt;&gt;(CAPACITY * 2 /* tracking both request and response sizes */,<a name="line.281"></a>
+<span class="sourceLineNo">282</span>          LOAD_FACTOR, CONCURRENCY_LEVEL);<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>  public MetricsConnection(final ConnectionImplementation conn) {<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    this.scope = conn.toString();<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    this.registry = new MetricRegistry();<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    final ThreadPoolExecutor batchPool = (ThreadPoolExecutor) conn.getCurrentBatchPool();<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    final ThreadPoolExecutor metaPool = (ThreadPoolExecutor) conn.getCurrentMetaLookupPool();<a name="line.288"></a>
+<span class="sourceLineNo">289</span><a name="line.289"></a>
+<span class="sourceLineNo">290</span>    this.registry.register(name(this.getClass(), "executorPoolActiveThreads", scope),<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        new RatioGauge() {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>          @Override<a name="line.292"></a>
+<span class="sourceLineNo">293</span>          protected Ratio getRatio() {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>            return Ratio.of(batchPool.getActiveCount(), batchPool.getMaximumPoolSize());<a name="line.294"></a>
 <span class="sourceLineNo">295</span>          }<a name="line.295"></a>
-<span class="sourceLineNo">296</span>          @Override protected double getDenominator() {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>            return metaPool.getMaximumPoolSize();<a name="line.297"></a>
-<span class="sourceLineNo">298</span>          }<a name="line.298"></a>
-<span class="sourceLineNo">299</span>        });<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    this.metaCacheHits = registry.newCounter(this.getClass(), "metaCacheHits", scope);<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    this.metaCacheMisses = registry.newCounter(this.getClass(), "metaCacheMisses", scope);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    this.getTracker = new CallTracker(this.registry, "Get", scope);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    this.scanTracker = new CallTracker(this.registry, "Scan", scope);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    this.appendTracker = new CallTracker(this.registry, "Mutate", "Append", scope);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    this.deleteTracker = new CallTracker(this.registry, "Mutate", "Delete", scope);<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    this.incrementTracker = new CallTracker(this.registry, "Mutate", "Increment", scope);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    this.putTracker = new CallTracker(this.registry, "Mutate", "Put", scope);<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    this.multiTracker = new CallTracker(this.registry, "Multi", scope);<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    this.runnerStats = new RunnerStats(this.registry);<a name="line.309"></a>
-<span class="sourceLineNo">310</span><a name="line.310"></a>
-<span class="sourceLineNo">311</span>    this.reporter = new JmxReporter(this.registry);<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    this.reporter.start();<a name="line.312"></a>
-<span class="sourceLineNo">313</span>  }<a name="line.313"></a>
+<span class="sourceLineNo">296</span>        });<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    this.registry.register(name(this.getClass(), "metaPoolActiveThreads", scope),<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        new RatioGauge() {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>          @Override<a name="line.299"></a>
+<span class="sourceLineNo">300</span>          protected Ratio getRatio() {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>            return Ratio.of(metaPool.getActiveCount(), metaPool.getMaximumPoolSize());<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>    this.metaCacheHits = registry.counter(name(this.getClass(), "metaCacheHits", scope));<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    this.metaCacheMisses = registry.counter(name(this.getClass(), "metaCacheMisses", scope));<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    this.getTracker = new CallTracker(this.registry, "Get", scope);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    this.scanTracker = new CallTracker(this.registry, "Scan", scope);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    this.appendTracker = new CallTracker(this.registry, "Mutate", "Append", scope);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    this.deleteTracker = new CallTracker(this.registry, "Mutate", "Delete", scope);<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    this.incrementTracker = new CallTracker(this.registry, "Mutate", "Increment", scope);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    this.putTracker = new CallTracker(this.registry, "Mutate", "Put", scope);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    this.multiTracker = new CallTracker(this.registry, "Multi", scope);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    this.runnerStats = new RunnerStats(this.registry);<a name="line.313"></a>
 <span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span>  public void shutdown() {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    this.reporter.shutdown();<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    this.registry.shutdown();<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  /** Produce an instance of {@link CallStats} for clients to attach to RPCs. */<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  public static CallStats newCallStats() {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    // TODO: instance pool to reduce GC?<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    return new CallStats();<a name="line.323"></a>
-<span class="sourceLineNo">324</span>  }<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>  /** Increment the number of meta cache hits. */<a name="line.326"></a>
-<span class="sourceLineNo">327</span>  public void incrMetaCacheHit() {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    metaCacheHits.inc();<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>  /** Increment the number of meta cache misses. */<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  public void incrMetaCacheMiss() {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    metaCacheMisses.inc();<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  }<a name="line.334"></a>
-<span class="sourceLineNo">335</span><a name="line.335"></a>
-<span class="sourceLineNo">336</span>  /** Increment the number of normal runner counts. */<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  public void incrNormalRunners() {<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    this.runnerStats.incrNormalRunners();<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  }<a name="line.339"></a>
-<span class="sourceLineNo">340</span><a name="line.340"></a>
-<span class="sourceLineNo">341</span>  /** Increment the number of delay runner counts. */<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  public void incrDelayRunners() {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    this.runnerStats.incrDelayRunners();<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  }<a name="line.344"></a>
-<span class="sourceLineNo">345</span><a name="line.345"></a>
-<span class="sourceLineNo">346</span>  /** Update delay interval of delay runner. */<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  public void updateDelayInterval(long interval) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    this.runnerStats.updateDelayInterval(interval);<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  }<a name="line.349"></a>
-<span class="sourceLineNo">350</span><a name="line.350"></a>
-<span class="sourceLineNo">351</span>  /**<a name="line.351"></a>
-<span class="sourceLineNo">352</span>   * Get a metric for {@code key} from {@code map}, or create it with {@code factory}.<a name="line.352"></a>
-<span class="sourceLineNo">353</span>   */<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  private &lt;T&gt; T getMetric(String key, ConcurrentMap&lt;String, T&gt; map, NewMetric&lt;T&gt; factory) {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    T t = map.get(key);<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    if (t == null) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      t = factory.newMetric(this.getClass(), key, scope);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      map.putIfAbsent(key, t);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    }<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    return t;<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>  /** Update call stats for non-critical-path methods */<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  private void updateRpcGeneric(MethodDescriptor method, CallStats stats) {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    final String methodName = method.getService().getName() + "_" + method.getName();<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    getMetric(DRTN_BASE + methodName, rpcTimers, timerFactory)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        .update(stats.getCallTimeMs(), TimeUnit.MILLISECONDS);<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    getMetric(REQ_BASE + methodName, rpcHistograms, histogramFactory)<a name="line.368"></a>
-<span class="sourceLineNo">369</span>        .update(stats.getRequestSizeBytes());<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    getMetric(RESP_BASE + methodName, rpcHistograms, histogramFactory)<a name="line.370"></a>
-<span class="sourceLineNo">371</span>        .update(stats.getResponseSizeBytes());<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>  /** Report RPC context to metrics system. */<a name="line.374"></a>
-<span class="sourceLineNo">375</span>  public void updateRpc(MethodDescriptor method, Message param, CallStats stats) {<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    // this implementation is tied directly to protobuf implementation details. would be better<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    // if we could dispatch based on something static, ie, request Message type.<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    if (method.getService() == ClientService.getDescriptor()) {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      switch(method.getIndex()) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      case 0:<a name="line.380"></a>
-<span class="sourceLineNo">381</span>        assert "Get".equals(method.getName());<a name="line.381"></a>
-<span class="sourceLineNo">382</span>        getTracker.updateRpc(stats);<a name="line.382"></a>
-<span class="sourceLineNo">383</span>        return;<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      case 1:<a name="line.384"></a>
-<span class="sourceLineNo">385</span>        assert "Mutate".equals(method.getName());<a name="line.385"></a>
-<span class="sourceLineNo">386</span>        final MutationType mutationType = ((MutateRequest) param).getMutation().getMutateType();<a name="line.386"></a>
-<span class="sourceLineNo">387</span>        switch(mutationType) {<a name="line.387"></a>
-<span class="sourceLineNo">388</span>        case APPEND:<a name="line.388"></a>
-<span class="sourceLineNo">389</span>          appendTracker.updateRpc(stats);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>          return;<a name="line.390"></a>
-<span class="sourceLineNo">391</span>        case DELETE:<a name="line.391"></a>
-<span class="sourceLineNo">392</span>          deleteTracker.updateRpc(stats);<a name="line.392"></a>
+<span class="sourceLineNo">315</span>    this.reporter = JmxReporter.forRegistry(this.registry).build();<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    this.reporter.start();<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  }<a name="line.317"></a>
+<span class="sourceLineNo">318</span><a name="line.318"></a>
+<span class="sourceLineNo">319</span>  public void shutdown() {<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    this.reporter.stop();<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  }<a name="line.321"></a>
+<span class="sourceLineNo">322</span><a name="line.322"></a>
+<span class="sourceLineNo">323</span>  /** Produce an instance of {@link CallStats} for clients to attach to RPCs. */<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  public static CallStats newCallStats() {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    // TODO: instance pool to reduce GC?<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    return new CallStats();<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>  /** Increment the number of meta cache hits. */<a name="line.329"></a>
+<span class="sourceLineNo">330</span>  public void incrMetaCacheHit() {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    metaCacheHits.inc();<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  }<a name="line.332"></a>
+<span class="sourceLineNo">333</span><a name="line.333"></a>
+<span class="sourceLineNo">334</span>  /** Increment the number of meta cache misses. */<a name="line.334"></a>
+<span class="sourceLineNo">335</span>  public void incrMetaCacheMiss() {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    metaCacheMisses.inc();<a name="line.336"></a>
+<span class="sourceLineNo">337</span>  }<a name="line.337"></a>
+<span class="sourceLineNo">338</span><a name="line.338"></a>
+<span class="sourceLineNo">339</span>  /** Increment the number of normal runner counts. */<a name="line.339"></a>
+<span class="sourceLineNo">340</span>  public void incrNormalRunners() {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    this.runnerStats.incrNormalRunners();<a name="line.341"></a>
+<span class="sourceLineNo">342</span>  }<a name="line.342"></a>
+<span class="sourceLineNo">343</span><a name="line.343"></a>
+<span class="sourceLineNo">344</span>  /** Increment the number of delay runner counts. */<a name="line.344"></a>
+<span class="sourceLineNo">345</span>  public void incrDelayRunners() {<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    this.runnerStats.incrDelayRunners();<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  }<a name="line.347"></a>
+<span class="sourceLineNo">348</span><a name="line.348"></a>
+<span class="sourceLineNo">349</span>  /** Update delay interval of delay runner. */<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  public void updateDelayInterval(long interval) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    this.runnerStats.updateDelayInterval(interval);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>  }<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>  /**<a name="line.354"></a>
+<span class="sourceLineNo">355</span>   * Get a metric for {@code key} from {@code map}, or create it with {@code factory}.<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   */<a name="line.356"></a>
+<span class="sourceLineNo">357</span>  private &lt;T&gt; T getMetric(String key, ConcurrentMap&lt;String, T&gt; map, NewMetric&lt;T&gt; factory) {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    T t = map.get(key);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    if (t == null) {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      t = factory.newMetric(this.getClass(), key, scope);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      map.putIfAbsent(key, t);<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    }<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    return t;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>  }<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>  /** Update call stats for non-critical-path methods */<a name="line.366"></a>
+<span class="sourceLineNo">367</span>  private void updateRpcGeneric(MethodDescriptor method, CallStats stats) {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    final String methodName = method.getService().getName() + "_" + method.getName();<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    getMetric(DRTN_BASE + methodName, rpcTimers, timerFactory)<a name="line.369"></a>
+<span class="sourceLineNo">370</span>        .update(stats.getCallTimeMs(), TimeUnit.MILLISECONDS);<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    getMetric(REQ_BASE + methodName, rpcHistograms, histogramFactory)<a name="line.371"></a>
+<span class="sourceLineNo">372</span>        .update(stats.getRequestSizeBytes());<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    getMetric(RESP_BASE + methodName, rpcHistograms, histogramFactory)<a name="line.373"></a>
+<span class="sourceLineNo">374</span>        .update(stats.getResponseSizeBytes());<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  }<a name="line.375"></a>
+<span class="sourceLineNo">376</span><a name="line.376"></a>
+<span class="sourceLineNo">377</span>  /** Report RPC context to metrics system. */<a name="line.377"></a>
+<span class="sourceLineNo">378</span>  public void updateRpc(MethodDescriptor method, Message param, CallStats stats) {<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    // this implementation is tied directly to protobuf implementation details. would be better<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    // if we could dispatch based on something static, ie, request Message type.<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    if (method.getService() == ClientService.getDescriptor()) {<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      switch(method.getIndex()) {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      case 0:<a name="line.383"></a>
+<span class="sourceLineNo">384</span>        assert "Get".equals(method.getName());<a name="line.384"></a>
+<span class="sourceLineNo">385</span>        getTracker.updateRpc(stats);<a name="line.385"></a>
+<span class="sourceLineNo">386</span>        return;<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      case 1:<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        assert "Mutate".equals(method.getName());<a name="line.388"></a>
+<span class="sourceLineNo">389</span>        final MutationType mutationType = ((MutateRequest) param).getMutation().getMutateType();<a name="line.389"></a>
+<span class="sourceLineNo">390</span>        switch(mutationType) {<a name="line.390"></a>
+<span class="sourceLineNo">391</span>        case APPEND:<a name="line.391"></a>
+<span class="sourceLineNo">392</span>          appendTracker.updateRpc(stats);<a name="line.392"></a>
 <span class="sourceLineNo">393</span>          return;<a name="line.393"></a>
-<span class="sourceLineNo">394</span>        case INCREMENT:<a name="line.394"></a>
-<span class="sourceLineNo">395</span>          incrementTracker.updateRpc(stats);<a name="line.395"></a>
+<span class="sourceLineNo">394</span>        case DELETE:<a name="line.394"></a>
+<span class="sourceLineNo">395</span>          deleteTracker.updateRpc(stats);<a name="line.395"></a>
 <span class="sourceLineNo">396</span>          return;<a name="line.396"></a>
-<span class="sourceLineNo">397</span>        case PUT:<a name="line.397"></a>
-<span class="sourceLineNo">398</span>          putTracker.updateRpc(stats);<a name="line.398"></a>
+<span class="sourceLineNo">397</span>        case INCREMENT:<a name="line.397"></a>
+<span class="sourceLineNo">398</span>          incrementTracker.updateRpc(stats);<a name="line.398"></a>
 <span class="sourceLineNo">399</span>          return;<a name="line.399"></a>
-<span class="sourceLineNo">400</span>        default:<a name="line.400"></a>
-<span class="sourceLineNo">401</span>          throw new RuntimeException("Unrecognized mutation type " + mutationType);<a name="line.401"></a>
-<span class="sourceLineNo">402</span>        }<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      case 2:<a name="line.403"></a>
-<span class="sourceLineNo">404</span>        assert "Scan".equals(method.getName());<a name="line.404"></a>
-<span class="sourceLineNo">405</span>        scanTracker.updateRpc(stats);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>        return;<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      case 3:<a name="line.407"></a>
-<span class="sourceLineNo">408</span>        assert "BulkLoadHFile".equals(method.getName());<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        // use generic implementation<a name="line.409"></a>
-<span class="sourceLineNo">410</span>        break;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      case 4:<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        assert "ExecService".equals(method.getName());<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        // use generic implementation<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        break;<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      case 5:<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        assert "ExecRegionServerService".equals(method.getName());<a name="line.416"></a>
-<span class="sourceLineNo">417</span>        // use generic implementation<a name="line.417"></a>
-<span class="sourceLineNo">418</span>        break;<a name="line.418"></a>
-<span class="sourceLineNo">419</span>      case 6:<a name="line.419"></a>
-<span class="sourceLineNo">420</span>        assert "Multi".equals(method.getName());<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        multiTracker.updateRpc(stats);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        return;<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      default:<a name="line.423"></a>
-<span class="sourceLineNo">424</span>        throw new RuntimeException("Unrecognized ClientService RPC type " + method.getFullName());<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      }<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    }<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    // Fallback to dynamic registry lookup for DDL methods.<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    updateRpcGeneric(method, stats);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>  }<a name="line.429"></a>
-<span class="sourceLineNo">430</span>}<a name="line.430"></a>
+<span class="sourceLineNo">400</span>        case PUT:<a name="line.400"></a>
+<span class="sourceLineNo">401</span>          putTracker.updateRpc(stats);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>          return;<a name="line.402"></a>
+<span class="sourceLineNo">403</span>        default:<a name="line.403"></a>
+<span class="sourceLineNo">404</span>          throw new RuntimeException("Unrecognized mutation type " + mutationType);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>        }<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      case 2:<a name="line.406"></a>
+<span class="sourceLineNo">407</span>        assert "Scan".equals(method.getName());<a name="line.407"></a>
+<span class="sourceLineNo">408</span>        scanTracker.updateRpc(stats);<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        return;<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      case 3:<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        assert "BulkLoadHFile".equals(method.getName());<a name="line.411"></a>
+<span class="sourceLineNo">412</span>        // use generic implementation<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        break;<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      case 4:<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        assert "ExecService".equals(method.getName());<a name="line.415"></a>
+<span class="sourceLineNo">416</span>        // use generic implementation<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        break;<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      case 5:<a name="line.418"></a>
+<span class="sourceLineNo">419</span>        assert "ExecRegionServerService".equals(method.getName());<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        // use generic implementation<a name="line.420"></a>
+<span class="sourceLineNo">421</span>        break;<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      case 6:<a name="line.422"></a>
+<span class="sourceLineNo">423</span>        assert "Multi".equals(method.getName());<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        multiTracker.updateRpc(stats);<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        return;<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      default:<a name="line.426"></a>
+<span class="sourceLineNo">427</span>        throw new RuntimeException("Unrecognized ClientService RPC type " + method.getFullName());<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      }<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    }<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    // Fallback to dynamic registry lookup for DDL methods.<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    updateRpcGeneric(method, stats);<a name="line.431"></a>
+<span class="sourceLineNo">432</span>  }<a name="line.432"></a>
+<span class="sourceLineNo">433</span>}<a name="line.433"></a>
 
 
 


[05/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.html
index 5abbadd..7bf2314 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.html
@@ -110,7 +110,7 @@
 <span class="sourceLineNo">102</span>  @Test<a name="line.102"></a>
 <span class="sourceLineNo">103</span>  public void testEmptyRoll() throws Exception {<a name="line.103"></a>
 <span class="sourceLineNo">104</span>    for (int i = 0; i &lt; 10; ++i) {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>      procStore.periodicRoll();<a name="line.105"></a>
+<span class="sourceLineNo">105</span>      procStore.periodicRollForTesting();<a name="line.105"></a>
 <span class="sourceLineNo">106</span>    }<a name="line.106"></a>
 <span class="sourceLineNo">107</span>    FileStatus[] status = fs.listStatus(logDir);<a name="line.107"></a>
 <span class="sourceLineNo">108</span>    assertEquals(1, status.length);<a name="line.108"></a>
@@ -222,14 +222,14 @@
 <span class="sourceLineNo">214</span>      procStore.update(rootProcs[i-1]);<a name="line.214"></a>
 <span class="sourceLineNo">215</span>    }<a name="line.215"></a>
 <span class="sourceLineNo">216</span>    // insert root-child txn<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    procStore.rollWriter();<a name="line.217"></a>
+<span class="sourceLineNo">217</span>    procStore.rollWriterForTesting();<a name="line.217"></a>
 <span class="sourceLineNo">218</span>    for (int i = 1; i &lt;= rootProcs.length; i++) {<a name="line.218"></a>
 <span class="sourceLineNo">219</span>      TestProcedure b = new TestProcedure(rootProcs.length + i, i);<a name="line.219"></a>
 <span class="sourceLineNo">220</span>      rootProcs[i-1].addStackId(1);<a name="line.220"></a>
 <span class="sourceLineNo">221</span>      procStore.insert(rootProcs[i-1], new Procedure[] { b });<a name="line.221"></a>
 <span class="sourceLineNo">222</span>    }<a name="line.222"></a>
 <span class="sourceLineNo">223</span>    // insert child updates<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    procStore.rollWriter();<a name="line.224"></a>
+<span class="sourceLineNo">224</span>    procStore.rollWriterForTesting();<a name="line.224"></a>
 <span class="sourceLineNo">225</span>    for (int i = 1; i &lt;= rootProcs.length; i++) {<a name="line.225"></a>
 <span class="sourceLineNo">226</span>      procStore.update(new TestProcedure(rootProcs.length + i, i));<a name="line.226"></a>
 <span class="sourceLineNo">227</span>    }<a name="line.227"></a>
@@ -237,347 +237,376 @@
 <span class="sourceLineNo">229</span>    // Stop the store<a name="line.229"></a>
 <span class="sourceLineNo">230</span>    procStore.stop(false);<a name="line.230"></a>
 <span class="sourceLineNo">231</span><a name="line.231"></a>
-<span class="sourceLineNo">232</span>    // Remove 4 byte from the trailer<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    FileStatus[] logs = fs.listStatus(logDir);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    assertEquals(3, logs.length);<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    Arrays.sort(logs, new Comparator&lt;FileStatus&gt;() {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      @Override<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      public int compare(FileStatus o1, FileStatus o2) {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>        return o1.getPath().getName().compareTo(o2.getPath().getName());<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      }<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    });<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>    // Remove the first log, we have insert-txn and updates in the others so everything is fine.<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    fs.delete(logs[0].getPath(), false);<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    LoadCounter loader = new LoadCounter();<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    storeRestart(loader);<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    assertEquals(rootProcs.length * 2, loader.getLoadedCount());<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    assertEquals(0, loader.getCorruptedCount());<a name="line.247"></a>
-<span class="sourceLineNo">248</span><a name="line.248"></a>
-<span class="sourceLineNo">249</span>    // Remove the second log, we have lost any root/parent references<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    fs.delete(logs[1].getPath(), false);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    loader.reset();<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    storeRestart(loader);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    assertEquals(0, loader.getLoadedCount());<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    assertEquals(rootProcs.length, loader.getCorruptedCount());<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    for (Procedure proc: loader.getCorrupted()) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      assertTrue(proc.toString(), proc.getParentProcId() &lt;= rootProcs.length);<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      assertTrue(proc.toString(),<a name="line.257"></a>
-<span class="sourceLineNo">258</span>                  proc.getProcId() &gt; rootProcs.length &amp;&amp;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>                  proc.getProcId() &lt;= (rootProcs.length * 2));<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    }<a name="line.260"></a>
-<span class="sourceLineNo">261</span>  }<a name="line.261"></a>
-<span class="sourceLineNo">262</span><a name="line.262"></a>
-<span class="sourceLineNo">263</span>  @Test(timeout=60000)<a name="line.263"></a>
-<span class="sourceLineNo">264</span>  public void testWalReplayOrder_AB_A() throws Exception {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    /*<a name="line.265"></a>
-<span class="sourceLineNo">266</span>     * | A B | -&gt; | A |<a name="line.266"></a>
-<span class="sourceLineNo">267</span>     */<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    TestProcedure a = new TestProcedure(1, 0);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    TestProcedure b = new TestProcedure(2, 1);<a name="line.269"></a>
-<span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span>    procStore.insert(a, null);<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    a.addStackId(0);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    procStore.update(a);<a name="line.273"></a>
-<span class="sourceLineNo">274</span><a name="line.274"></a>
-<span class="sourceLineNo">275</span>    procStore.insert(a, new Procedure[] { b });<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    b.addStackId(1);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    procStore.update(b);<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>    procStore.rollWriter();<a name="line.279"></a>
-<span class="sourceLineNo">280</span><a name="line.280"></a>
-<span class="sourceLineNo">281</span>    a.addStackId(2);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    procStore.update(a);<a name="line.282"></a>
-<span class="sourceLineNo">283</span><a name="line.283"></a>
-<span class="sourceLineNo">284</span>    storeRestart(new ProcedureStore.ProcedureLoader() {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      @Override<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      public void setMaxProcId(long maxProcId) {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>        assertEquals(2, maxProcId);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      }<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>      @Override<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      public void load(ProcedureIterator procIter) throws IOException {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>        assertTrue(procIter.hasNext());<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        assertEquals(1, procIter.next().getProcId());<a name="line.293"></a>
-<span class="sourceLineNo">294</span>        assertTrue(procIter.hasNext());<a name="line.294"></a>
-<span class="sourceLineNo">295</span>        assertEquals(2, procIter.next().getProcId());<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        assertFalse(procIter.hasNext());<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      }<a name="line.297"></a>
-<span class="sourceLineNo">298</span><a name="line.298"></a>
-<span class="sourceLineNo">299</span>      @Override<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      public void handleCorrupted(ProcedureIterator procIter) throws IOException {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>        assertFalse(procIter.hasNext());<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      }<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    });<a name="line.303"></a>
-<span class="sourceLineNo">304</span>  }<a name="line.304"></a>
-<span class="sourceLineNo">305</span><a name="line.305"></a>
-<span class="sourceLineNo">306</span>  @Test(timeout=60000)<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  public void testWalReplayOrder_ABC_BAD() throws Exception {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    /*<a name="line.308"></a>
-<span class="sourceLineNo">309</span>     * | A B C | -&gt; | B A D |<a name="line.309"></a>
-<span class="sourceLineNo">310</span>     */<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    TestProcedure a = new TestProcedure(1, 0);<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    TestProcedure b = new TestProcedure(2, 1);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    TestProcedure c = new TestProcedure(3, 2);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    TestProcedure d = new TestProcedure(4, 0);<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>    procStore.insert(a, null);<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    a.addStackId(0);<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    procStore.update(a);<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>    procStore.insert(a, new Procedure[] { b });<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    b.addStackId(1);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    procStore.update(b);<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span>    procStore.insert(b, new Procedure[] { c });<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    b.addStackId(2);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    procStore.update(b);<a name="line.326"></a>
-<span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>    procStore.rollWriter();<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>    b.addStackId(3);<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    procStore.update(b);<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>    a.addStackId(4);<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    procStore.update(a);<a name="line.334"></a>
-<span class="sourceLineNo">335</span><a name="line.335"></a>
-<span class="sourceLineNo">336</span>    procStore.insert(d, null);<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    d.addStackId(0);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    procStore.update(d);<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>    storeRestart(new ProcedureStore.ProcedureLoader() {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      @Override<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      public void setMaxProcId(long maxProcId) {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>        assertEquals(4, maxProcId);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      }<a name="line.344"></a>
-<span class="sourceLineNo">345</span><a name="line.345"></a>
-<span class="sourceLineNo">346</span>      @Override<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      public void load(ProcedureIterator procIter) throws IOException {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>        assertTrue(procIter.hasNext());<a name="line.348"></a>
-<span class="sourceLineNo">349</span>        assertEquals(4, procIter.next().getProcId());<a name="line.349"></a>
-<span class="sourceLineNo">350</span>        // TODO: This will be multiple call once we do fast-start<a name="line.350"></a>
-<span class="sourceLineNo">351</span>        //assertFalse(procIter.hasNext());<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>        assertTrue(procIter.hasNext());<a name="line.353"></a>
-<span class="sourceLineNo">354</span>        assertEquals(1, procIter.next().getProcId());<a name="line.354"></a>
-<span class="sourceLineNo">355</span>        assertTrue(procIter.hasNext());<a name="line.355"></a>
-<span class="sourceLineNo">356</span>        assertEquals(2, procIter.next().getProcId());<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        assertTrue(procIter.hasNext());<a name="line.357"></a>
-<span class="sourceLineNo">358</span>        assertEquals(3, procIter.next().getProcId());<a name="line.358"></a>
-<span class="sourceLineNo">359</span>        assertFalse(procIter.hasNext());<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      }<a name="line.360"></a>
-<span class="sourceLineNo">361</span><a name="line.361"></a>
-<span class="sourceLineNo">362</span>      @Override<a name="line.362"></a>
-<span class="sourceLineNo">363</span>      public void handleCorrupted(ProcedureIterator procIter) throws IOException {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        assertFalse(procIter.hasNext());<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      }<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    });<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  }<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>  @Test<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  public void testInsertUpdateDelete() throws Exception {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    final int NTHREAD = 2;<a name="line.371"></a>
-<span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>    procStore.stop(false);<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    fs.delete(logDir, true);<a name="line.374"></a>
-<span class="sourceLineNo">375</span><a name="line.375"></a>
-<span class="sourceLineNo">376</span>    org.apache.hadoop.conf.Configuration conf =<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      new org.apache.hadoop.conf.Configuration(htu.getConfiguration());<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    conf.setBoolean("hbase.procedure.store.wal.use.hsync", false);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    conf.setInt("hbase.procedure.store.wal.periodic.roll.msec", 10000);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    conf.setInt("hbase.procedure.store.wal.roll.threshold", 128 * 1024);<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>    fs.mkdirs(logDir);<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    procStore = ProcedureTestingUtility.createWalStore(conf, fs, logDir);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    procStore.start(NTHREAD);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    procStore.recoverLease();<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span>    LoadCounter loader = new LoadCounter();<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    procStore.load(loader);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    assertEquals(0, loader.getMaxProcId());<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    assertEquals(0, loader.getLoadedCount());<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    assertEquals(0, loader.getCorruptedCount());<a name="line.391"></a>
-<span class="sourceLineNo">392</span><a name="line.392"></a>
-<span class="sourceLineNo">393</span>    final long LAST_PROC_ID = 9999;<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    final Thread[] thread = new Thread[NTHREAD];<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    final AtomicLong procCounter = new AtomicLong((long)Math.round(Math.random() * 100));<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    for (int i = 0; i &lt; thread.length; ++i) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      thread[i] = new Thread() {<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        @Override<a name="line.398"></a>
-<span class="sourceLineNo">399</span>        public void run() {<a name="line.399"></a>
-<span class="sourceLineNo">400</span>          Random rand = new Random();<a name="line.400"></a>
-<span class="sourceLineNo">401</span>          TestProcedure proc;<a name="line.401"></a>
-<span class="sourceLineNo">402</span>          do {<a name="line.402"></a>
-<span class="sourceLineNo">403</span>            proc = new TestProcedure(procCounter.addAndGet(1));<a name="line.403"></a>
-<span class="sourceLineNo">404</span>            // Insert<a name="line.404"></a>
-<span class="sourceLineNo">405</span>            procStore.insert(proc, null);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>            // Update<a name="line.406"></a>
-<span class="sourceLineNo">407</span>            for (int i = 0, nupdates = rand.nextInt(10); i &lt;= nupdates; ++i) {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>              try { Thread.sleep(0, rand.nextInt(15)); } catch (InterruptedException e) {}<a name="line.408"></a>
-<span class="sourceLineNo">409</span>              procStore.update(proc);<a name="line.409"></a>
-<span class="sourceLineNo">410</span>            }<a name="line.410"></a>
-<span class="sourceLineNo">411</span>            // Delete<a name="line.411"></a>
-<span class="sourceLineNo">412</span>            procStore.delete(proc.getProcId());<a name="line.412"></a>
-<span class="sourceLineNo">413</span>          } while (proc.getProcId() &lt; LAST_PROC_ID);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        }<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      };<a name="line.415"></a>
-<span class="sourceLineNo">416</span>      thread[i].start();<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    }<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>    for (int i = 0; i &lt; thread.length; ++i) {<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      thread[i].join();<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    }<a name="line.421"></a>
-<span class="sourceLineNo">422</span><a name="line.422"></a>
-<span class="sourceLineNo">423</span>    procStore.getStoreTracker().dump();<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    assertTrue(procCounter.get() &gt;= LAST_PROC_ID);<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    assertTrue(procStore.getStoreTracker().isEmpty());<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    assertEquals(1, procStore.getActiveLogs().size());<a name="line.426"></a>
-<span class="sourceLineNo">427</span>  }<a name="line.427"></a>
-<span class="sourceLineNo">428</span><a name="line.428"></a>
-<span class="sourceLineNo">429</span>  private void corruptLog(final FileStatus logFile, final long dropBytes)<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      throws IOException {<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    assertTrue(logFile.getLen() &gt; dropBytes);<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    LOG.debug("corrupt log " + logFile.getPath() +<a name="line.432"></a>
-<span class="sourceLineNo">433</span>              " size=" + logFile.getLen() + " drop=" + dropBytes);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    Path tmpPath = new Path(testDir, "corrupted.log");<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    InputStream in = fs.open(logFile.getPath());<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    OutputStream out =  fs.create(tmpPath);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    IOUtils.copyBytes(in, out, logFile.getLen() - dropBytes, true);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    if (!fs.rename(tmpPath, logFile.getPath())) {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      throw new IOException("Unable to rename");<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><a name="line.442"></a>
-<span class="sourceLineNo">443</span>  private void verifyProcIdsOnRestart(final Set&lt;Long&gt; procIds) throws Exception {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    LOG.debug("expected: " + procIds);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    LoadCounter loader = new LoadCounter();<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    storeRestart(loader);<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    assertEquals(procIds.size(), loader.getLoadedCount());<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    assertEquals(0, loader.getCorruptedCount());<a name="line.448"></a>
-<span class="sourceLineNo">449</span>  }<a name="line.449"></a>
+<span class="sourceLineNo">232</span>    // the first log was removed,<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    // we have insert-txn and updates in the others so everything is fine<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    FileStatus[] logs = fs.listStatus(logDir);<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    assertEquals(Arrays.toString(logs), 2, logs.length);<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    Arrays.sort(logs, new Comparator&lt;FileStatus&gt;() {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      @Override<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      public int compare(FileStatus o1, FileStatus o2) {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>        return o1.getPath().getName().compareTo(o2.getPath().getName());<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      }<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    });<a name="line.241"></a>
+<span class="sourceLineNo">242</span><a name="line.242"></a>
+<span class="sourceLineNo">243</span>    LoadCounter loader = new LoadCounter();<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    storeRestart(loader);<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    assertEquals(rootProcs.length * 2, loader.getLoadedCount());<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    assertEquals(0, loader.getCorruptedCount());<a name="line.246"></a>
+<span class="sourceLineNo">247</span><a name="line.247"></a>
+<span class="sourceLineNo">248</span>    // Remove the second log, we have lost all the root/parent references<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    fs.delete(logs[0].getPath(), false);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    loader.reset();<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    storeRestart(loader);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    assertEquals(0, loader.getLoadedCount());<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    assertEquals(rootProcs.length, loader.getCorruptedCount());<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    for (Procedure proc: loader.getCorrupted()) {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      assertTrue(proc.toString(), proc.getParentProcId() &lt;= rootProcs.length);<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      assertTrue(proc.toString(),<a name="line.256"></a>
+<span class="sourceLineNo">257</span>                  proc.getProcId() &gt; rootProcs.length &amp;&amp;<a name="line.257"></a>
+<span class="sourceLineNo">258</span>                  proc.getProcId() &lt;= (rootProcs.length * 2));<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    }<a name="line.259"></a>
+<span class="sourceLineNo">260</span>  }<a name="line.260"></a>
+<span class="sourceLineNo">261</span><a name="line.261"></a>
+<span class="sourceLineNo">262</span>  @Test(timeout=60000)<a name="line.262"></a>
+<span class="sourceLineNo">263</span>  public void testWalReplayOrder_AB_A() throws Exception {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    /*<a name="line.264"></a>
+<span class="sourceLineNo">265</span>     * | A B | -&gt; | A |<a name="line.265"></a>
+<span class="sourceLineNo">266</span>     */<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    TestProcedure a = new TestProcedure(1, 0);<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    TestProcedure b = new TestProcedure(2, 1);<a name="line.268"></a>
+<span class="sourceLineNo">269</span><a name="line.269"></a>
+<span class="sourceLineNo">270</span>    procStore.insert(a, null);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    a.addStackId(0);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    procStore.update(a);<a name="line.272"></a>
+<span class="sourceLineNo">273</span><a name="line.273"></a>
+<span class="sourceLineNo">274</span>    procStore.insert(a, new Procedure[] { b });<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    b.addStackId(1);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    procStore.update(b);<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>    procStore.rollWriterForTesting();<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>    a.addStackId(2);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    procStore.update(a);<a name="line.281"></a>
+<span class="sourceLineNo">282</span><a name="line.282"></a>
+<span class="sourceLineNo">283</span>    storeRestart(new ProcedureStore.ProcedureLoader() {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      @Override<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      public void setMaxProcId(long maxProcId) {<a name="line.285"></a>
+<span class="sourceLineNo">286</span>        assertEquals(2, maxProcId);<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      }<a name="line.287"></a>
+<span class="sourceLineNo">288</span><a name="line.288"></a>
+<span class="sourceLineNo">289</span>      @Override<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      public void load(ProcedureIterator procIter) throws IOException {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        assertTrue(procIter.hasNext());<a name="line.291"></a>
+<span class="sourceLineNo">292</span>        assertEquals(1, procIter.next().getProcId());<a name="line.292"></a>
+<span class="sourceLineNo">293</span>        assertTrue(procIter.hasNext());<a name="line.293"></a>
+<span class="sourceLineNo">294</span>        assertEquals(2, procIter.next().getProcId());<a name="line.294"></a>
+<span class="sourceLineNo">295</span>        assertFalse(procIter.hasNext());<a name="line.295"></a>
+<span class="sourceLineNo">296</span>      }<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>      @Override<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      public void handleCorrupted(ProcedureIterator procIter) throws IOException {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        assertFalse(procIter.hasNext());<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>  }<a name="line.303"></a>
+<span class="sourceLineNo">304</span><a name="line.304"></a>
+<span class="sourceLineNo">305</span>  @Test(timeout=60000)<a name="line.305"></a>
+<span class="sourceLineNo">306</span>  public void testWalReplayOrder_ABC_BAD() throws Exception {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    /*<a name="line.307"></a>
+<span class="sourceLineNo">308</span>     * | A B C | -&gt; | B A D |<a name="line.308"></a>
+<span class="sourceLineNo">309</span>     */<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    TestProcedure a = new TestProcedure(1, 0);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    TestProcedure b = new TestProcedure(2, 1);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    TestProcedure c = new TestProcedure(3, 2);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    TestProcedure d = new TestProcedure(4, 0);<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>    procStore.insert(a, null);<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    a.addStackId(0);<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    procStore.update(a);<a name="line.317"></a>
+<span class="sourceLineNo">318</span><a name="line.318"></a>
+<span class="sourceLineNo">319</span>    procStore.insert(a, new Procedure[] { b });<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    b.addStackId(1);<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    procStore.update(b);<a name="line.321"></a>
+<span class="sourceLineNo">322</span><a name="line.322"></a>
+<span class="sourceLineNo">323</span>    procStore.insert(b, new Procedure[] { c });<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    b.addStackId(2);<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    procStore.update(b);<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>    procStore.rollWriterForTesting();<a name="line.327"></a>
+<span class="sourceLineNo">328</span><a name="line.328"></a>
+<span class="sourceLineNo">329</span>    b.addStackId(3);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    procStore.update(b);<a name="line.330"></a>
+<span class="sourceLineNo">331</span><a name="line.331"></a>
+<span class="sourceLineNo">332</span>    a.addStackId(4);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    procStore.update(a);<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>    procStore.insert(d, null);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    d.addStackId(0);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    procStore.update(d);<a name="line.337"></a>
+<span class="sourceLineNo">338</span><a name="line.338"></a>
+<span class="sourceLineNo">339</span>    storeRestart(new ProcedureStore.ProcedureLoader() {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      @Override<a name="line.340"></a>
+<span class="sourceLineNo">341</span>      public void setMaxProcId(long maxProcId) {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        assertEquals(4, maxProcId);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>      }<a name="line.343"></a>
+<span class="sourceLineNo">344</span><a name="line.344"></a>
+<span class="sourceLineNo">345</span>      @Override<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      public void load(ProcedureIterator procIter) throws IOException {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        assertTrue(procIter.hasNext());<a name="line.347"></a>
+<span class="sourceLineNo">348</span>        assertEquals(4, procIter.next().getProcId());<a name="line.348"></a>
+<span class="sourceLineNo">349</span>        // TODO: This will be multiple call once we do fast-start<a name="line.349"></a>
+<span class="sourceLineNo">350</span>        //assertFalse(procIter.hasNext());<a name="line.350"></a>
+<span class="sourceLineNo">351</span><a name="line.351"></a>
+<span class="sourceLineNo">352</span>        assertTrue(procIter.hasNext());<a name="line.352"></a>
+<span class="sourceLineNo">353</span>        assertEquals(1, procIter.next().getProcId());<a name="line.353"></a>
+<span class="sourceLineNo">354</span>        assertTrue(procIter.hasNext());<a name="line.354"></a>
+<span class="sourceLineNo">355</span>        assertEquals(2, procIter.next().getProcId());<a name="line.355"></a>
+<span class="sourceLineNo">356</span>        assertTrue(procIter.hasNext());<a name="line.356"></a>
+<span class="sourceLineNo">357</span>        assertEquals(3, procIter.next().getProcId());<a name="line.357"></a>
+<span class="sourceLineNo">358</span>        assertFalse(procIter.hasNext());<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      }<a name="line.359"></a>
+<span class="sourceLineNo">360</span><a name="line.360"></a>
+<span class="sourceLineNo">361</span>      @Override<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      public void handleCorrupted(ProcedureIterator procIter) throws IOException {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>        assertFalse(procIter.hasNext());<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      }<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    });<a name="line.365"></a>
+<span class="sourceLineNo">366</span>  }<a name="line.366"></a>
+<span class="sourceLineNo">367</span><a name="line.367"></a>
+<span class="sourceLineNo">368</span>  @Test<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  public void testInsertUpdateDelete() throws Exception {<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    final int NTHREAD = 2;<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>    procStore.stop(false);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    fs.delete(logDir, true);<a name="line.373"></a>
+<span class="sourceLineNo">374</span><a name="line.374"></a>
+<span class="sourceLineNo">375</span>    org.apache.hadoop.conf.Configuration conf =<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      new org.apache.hadoop.conf.Configuration(htu.getConfiguration());<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    conf.setBoolean("hbase.procedure.store.wal.use.hsync", false);<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    conf.setInt("hbase.procedure.store.wal.periodic.roll.msec", 10000);<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    conf.setInt("hbase.procedure.store.wal.roll.threshold", 128 * 1024);<a name="line.379"></a>
+<span class="sourceLineNo">380</span><a name="line.380"></a>
+<span class="sourceLineNo">381</span>    fs.mkdirs(logDir);<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    procStore = ProcedureTestingUtility.createWalStore(conf, fs, logDir);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    procStore.start(NTHREAD);<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    procStore.recoverLease();<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>    LoadCounter loader = new LoadCounter();<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    procStore.load(loader);<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    assertEquals(0, loader.getMaxProcId());<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    assertEquals(0, loader.getLoadedCount());<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    assertEquals(0, loader.getCorruptedCount());<a name="line.390"></a>
+<span class="sourceLineNo">391</span><a name="line.391"></a>
+<span class="sourceLineNo">392</span>    final long LAST_PROC_ID = 9999;<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    final Thread[] thread = new Thread[NTHREAD];<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    final AtomicLong procCounter = new AtomicLong((long)Math.round(Math.random() * 100));<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    for (int i = 0; i &lt; thread.length; ++i) {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      thread[i] = new Thread() {<a name="line.396"></a>
+<span class="sourceLineNo">397</span>        @Override<a name="line.397"></a>
+<span class="sourceLineNo">398</span>        public void run() {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>          Random rand = new Random();<a name="line.399"></a>
+<span class="sourceLineNo">400</span>          TestProcedure proc;<a name="line.400"></a>
+<span class="sourceLineNo">401</span>          do {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>            proc = new TestProcedure(procCounter.addAndGet(1));<a name="line.402"></a>
+<span class="sourceLineNo">403</span>            // Insert<a name="line.403"></a>
+<span class="sourceLineNo">404</span>            procStore.insert(proc, null);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>            // Update<a name="line.405"></a>
+<span class="sourceLineNo">406</span>            for (int i = 0, nupdates = rand.nextInt(10); i &lt;= nupdates; ++i) {<a name="line.406"></a>
+<span class="sourceLineNo">407</span>              try { Thread.sleep(0, rand.nextInt(15)); } catch (InterruptedException e) {}<a name="line.407"></a>
+<span class="sourceLineNo">408</span>              procStore.update(proc);<a name="line.408"></a>
+<span class="sourceLineNo">409</span>            }<a name="line.409"></a>
+<span class="sourceLineNo">410</span>            // Delete<a name="line.410"></a>
+<span class="sourceLineNo">411</span>            procStore.delete(proc.getProcId());<a name="line.411"></a>
+<span class="sourceLineNo">412</span>          } while (proc.getProcId() &lt; LAST_PROC_ID);<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        }<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      };<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      thread[i].start();<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    }<a name="line.416"></a>
+<span class="sourceLineNo">417</span><a name="line.417"></a>
+<span class="sourceLineNo">418</span>    for (int i = 0; i &lt; thread.length; ++i) {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      thread[i].join();<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>    procStore.getStoreTracker().dump();<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    assertTrue(procCounter.get() &gt;= LAST_PROC_ID);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    assertTrue(procStore.getStoreTracker().isEmpty());<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    assertEquals(1, procStore.getActiveLogs().size());<a name="line.425"></a>
+<span class="sourceLineNo">426</span>  }<a name="line.426"></a>
+<span class="sourceLineNo">427</span><a name="line.427"></a>
+<span class="sourceLineNo">428</span>  @Test<a name="line.428"></a>
+<span class="sourceLineNo">429</span>  public void testRollAndRemove() throws IOException {<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    // Insert something in the log<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    Procedure proc1 = new TestSequentialProcedure();<a name="line.431"></a>
+<span class="sourceLineNo">432</span>    procStore.insert(proc1, null);<a name="line.432"></a>
+<span class="sourceLineNo">433</span><a name="line.433"></a>
+<span class="sourceLineNo">434</span>    Procedure proc2 = new TestSequentialProcedure();<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    procStore.insert(proc2, null);<a name="line.435"></a>
+<span class="sourceLineNo">436</span><a name="line.436"></a>
+<span class="sourceLineNo">437</span>    // roll the log, now we have 2<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    procStore.rollWriterForTesting();<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    assertEquals(2, procStore.getActiveLogs().size());<a name="line.439"></a>
+<span class="sourceLineNo">440</span><a name="line.440"></a>
+<span class="sourceLineNo">441</span>    // everything will be up to date in the second log<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    // so we can remove the first one<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    procStore.update(proc1);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    procStore.update(proc2);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    assertEquals(1, procStore.getActiveLogs().size());<a name="line.445"></a>
+<span class="sourceLineNo">446</span><a name="line.446"></a>
+<span class="sourceLineNo">447</span>    // roll the log, now we have 2<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    procStore.rollWriterForTesting();<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    assertEquals(2, procStore.getActiveLogs().size());<a name="line.449"></a>
 <span class="sourceLineNo">450</span><a name="line.450"></a>
-<span class="sourceLineNo">451</span>  private void assertEmptyLogDir() {<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    try {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      FileStatus[] status = fs.listStatus(logDir);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      assertTrue("expected empty state-log dir", status == null || status.length == 0);<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    } catch (FileNotFoundException e) {<a name="line.455"></a>
-<span class="sourceLineNo">456</span>      fail("expected the state-log dir to be present: " + logDir);<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    } catch (IOException e) {<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      fail("got en exception on state-log dir list: " + e.getMessage());<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    }<a name="line.459"></a>
-<span class="sourceLineNo">460</span>  }<a name="line.460"></a>
-<span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>  public static class TestSequentialProcedure extends SequentialProcedure&lt;Void&gt; {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    private static long seqid = 0;<a name="line.463"></a>
-<span class="sourceLineNo">464</span><a name="line.464"></a>
-<span class="sourceLineNo">465</span>    public TestSequentialProcedure() {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      setProcId(++seqid);<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    }<a name="line.467"></a>
-<span class="sourceLineNo">468</span><a name="line.468"></a>
-<span class="sourceLineNo">469</span>    @Override<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    protected Procedure[] execute(Void env) { return null; }<a name="line.470"></a>
+<span class="sourceLineNo">451</span>    // remove everything active<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    // so we can remove all the logs<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    procStore.delete(proc1.getProcId());<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    procStore.delete(proc2.getProcId());<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    assertEquals(1, procStore.getActiveLogs().size());<a name="line.455"></a>
+<span class="sourceLineNo">456</span>  }<a name="line.456"></a>
+<span class="sourceLineNo">457</span><a name="line.457"></a>
+<span class="sourceLineNo">458</span>  private void corruptLog(final FileStatus logFile, final long dropBytes)<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      throws IOException {<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    assertTrue(logFile.getLen() &gt; dropBytes);<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    LOG.debug("corrupt log " + logFile.getPath() +<a name="line.461"></a>
+<span class="sourceLineNo">462</span>              " size=" + logFile.getLen() + " drop=" + dropBytes);<a name="line.462"></a>
+<span class="sourceLineNo">463</span>    Path tmpPath = new Path(testDir, "corrupted.log");<a name="line.463"></a>
+<span class="sourceLineNo">464</span>    InputStream in = fs.open(logFile.getPath());<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    OutputStream out =  fs.create(tmpPath);<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    IOUtils.copyBytes(in, out, logFile.getLen() - dropBytes, true);<a name="line.466"></a>
+<span class="sourceLineNo">467</span>    if (!fs.rename(tmpPath, logFile.getPath())) {<a name="line.467"></a>
+<span class="sourceLineNo">468</span>      throw new IOException("Unable to rename");<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    }<a name="line.469"></a>
+<span class="sourceLineNo">470</span>  }<a name="line.470"></a>
 <span class="sourceLineNo">471</span><a name="line.471"></a>
-<span class="sourceLineNo">472</span>    @Override<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    protected void rollback(Void env) { }<a name="line.473"></a>
-<span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span>    @Override<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    protected boolean abort(Void env) { return false; }<a name="line.476"></a>
-<span class="sourceLineNo">477</span><a name="line.477"></a>
-<span class="sourceLineNo">478</span>    @Override<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    protected void serializeStateData(final OutputStream stream) throws IOException {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>      long procId = getProcId();<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      if (procId % 2 == 0) {<a name="line.481"></a>
-<span class="sourceLineNo">482</span>        stream.write(Bytes.toBytes(procId));<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><a name="line.485"></a>
-<span class="sourceLineNo">486</span>    @Override<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    protected void deserializeStateData(InputStream stream) throws IOException {<a name="line.487"></a>
-<span class="sourceLineNo">488</span>      long procId = getProcId();<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      if (procId % 2 == 0) {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>        byte[] bProcId = new byte[8];<a name="line.490"></a>
-<span class="sourceLineNo">491</span>        assertEquals(8, stream.read(bProcId));<a name="line.491"></a>
-<span class="sourceLineNo">492</span>        assertEquals(procId, Bytes.toLong(bProcId));<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      } else {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>        assertEquals(0, stream.available());<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      }<a name="line.495"></a>
+<span class="sourceLineNo">472</span>  private void verifyProcIdsOnRestart(final Set&lt;Long&gt; procIds) throws Exception {<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    LOG.debug("expected: " + procIds);<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    LoadCounter loader = new LoadCounter();<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    storeRestart(loader);<a name="line.475"></a>
+<span class="sourceLineNo">476</span>    assertEquals(procIds.size(), loader.getLoadedCount());<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    assertEquals(0, loader.getCorruptedCount());<a name="line.477"></a>
+<span class="sourceLineNo">478</span>  }<a name="line.478"></a>
+<span class="sourceLineNo">479</span><a name="line.479"></a>
+<span class="sourceLineNo">480</span>  private void assertEmptyLogDir() {<a name="line.480"></a>
+<span class="sourceLineNo">481</span>    try {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>      FileStatus[] status = fs.listStatus(logDir);<a name="line.482"></a>
+<span class="sourceLineNo">483</span>      assertTrue("expected empty state-log dir", status == null || status.length == 0);<a name="line.483"></a>
+<span class="sourceLineNo">484</span>    } catch (FileNotFoundException e) {<a name="line.484"></a>
+<span class="sourceLineNo">485</span>      fail("expected the state-log dir to be present: " + logDir);<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    } catch (IOException e) {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>      fail("got en exception on state-log dir list: " + e.getMessage());<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    }<a name="line.488"></a>
+<span class="sourceLineNo">489</span>  }<a name="line.489"></a>
+<span class="sourceLineNo">490</span><a name="line.490"></a>
+<span class="sourceLineNo">491</span>  public static class TestSequentialProcedure extends SequentialProcedure&lt;Void&gt; {<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    private static long seqid = 0;<a name="line.492"></a>
+<span class="sourceLineNo">493</span><a name="line.493"></a>
+<span class="sourceLineNo">494</span>    public TestSequentialProcedure() {<a name="line.494"></a>
+<span class="sourceLineNo">495</span>      setProcId(++seqid);<a name="line.495"></a>
 <span class="sourceLineNo">496</span>    }<a name="line.496"></a>
-<span class="sourceLineNo">497</span>  }<a name="line.497"></a>
-<span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>  private class LoadCounter implements ProcedureStore.ProcedureLoader {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    private final ArrayList&lt;Procedure&gt; corrupted = new ArrayList&lt;Procedure&gt;();<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    private final ArrayList&lt;Procedure&gt; loaded = new ArrayList&lt;Procedure&gt;();<a name="line.501"></a>
-<span class="sourceLineNo">502</span><a name="line.502"></a>
-<span class="sourceLineNo">503</span>    private Set&lt;Long&gt; procIds;<a name="line.503"></a>
-<span class="sourceLineNo">504</span>    private long maxProcId = 0;<a name="line.504"></a>
-<span class="sourceLineNo">505</span><a name="line.505"></a>
-<span class="sourceLineNo">506</span>    public LoadCounter() {<a name="line.506"></a>
-<span class="sourceLineNo">507</span>      this(null);<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    }<a name="line.508"></a>
-<span class="sourceLineNo">509</span><a name="line.509"></a>
-<span class="sourceLineNo">510</span>    public LoadCounter(final Set&lt;Long&gt; procIds) {<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      this.procIds = procIds;<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    }<a name="line.512"></a>
-<span class="sourceLineNo">513</span><a name="line.513"></a>
-<span class="sourceLineNo">514</span>    public void reset() {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      reset(null);<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    }<a name="line.516"></a>
-<span class="sourceLineNo">517</span><a name="line.517"></a>
-<span class="sourceLineNo">518</span>    public void reset(final Set&lt;Long&gt; procIds) {<a name="line.518"></a>
-<span class="sourceLineNo">519</span>      corrupted.clear();<a name="line.519"></a>
-<span class="sourceLineNo">520</span>      loaded.clear();<a name="line.520"></a>
-<span class="sourceLineNo">521</span>      this.procIds = procIds;<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      this.maxProcId = 0;<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    }<a name="line.523"></a>
-<span class="sourceLineNo">524</span><a name="line.524"></a>
-<span class="sourceLineNo">525</span>    public long getMaxProcId() {<a name="line.525"></a>
-<span class="sourceLineNo">526</span>      return maxProcId;<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    }<a name="line.527"></a>
-<span class="sourceLineNo">528</span><a name="line.528"></a>
-<span class="sourceLineNo">529</span>    public ArrayList&lt;Procedure&gt; getLoaded() {<a name="line.529"></a>
-<span class="sourceLineNo">530</span>      return loaded;<a name="line.530"></a>
-<span class="sourceLineNo">531</span>    }<a name="line.531"></a>
-<span class="sourceLineNo">532</span><a name="line.532"></a>
-<span class="sourceLineNo">533</span>    public int getLoadedCount() {<a name="line.533"></a>
-<span class="sourceLineNo">534</span>      return loaded.size();<a name="line.534"></a>
-<span class="sourceLineNo">535</span>    }<a name="line.535"></a>
-<span class="sourceLineNo">536</span><a name="line.536"></a>
-<span class="sourceLineNo">537</span>    public ArrayList&lt;Procedure&gt; getCorrupted() {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>      return corrupted;<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    }<a name="line.539"></a>
-<span class="sourceLineNo">540</span><a name="line.540"></a>
-<span class="sourceLineNo">541</span>    public int getCorruptedCount() {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>      return corrupted.size();<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    }<a name="line.543"></a>
-<span class="sourceLineNo">544</span><a name="line.544"></a>
-<span class="sourceLineNo">545</span>    @Override<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    public void setMaxProcId(long maxProcId) {<a name="line.546"></a>
-<span class="sourceLineNo">547</span>      maxProcId = maxProcId;<a name="line.547"></a>
-<span class="sourceLineNo">548</span>    }<a name="line.548"></a>
-<span class="sourceLineNo">549</span><a name="line.549"></a>
-<span class="sourceLineNo">550</span>    @Override<a name="line.550"></a>
-<span class="sourceLineNo">551</span>    public void load(ProcedureIterator procIter) throws IOException {<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      while (procIter.hasNext()) {<a name="line.552"></a>
-<span class="sourceLineNo">553</span>        Procedure proc = procIter.next();<a name="line.553"></a>
-<span class="sourceLineNo">554</span>        LOG.debug("loading procId=" + proc.getProcId() + ": " + proc);<a name="line.554"></a>
-<span class="sourceLineNo">555</span>        if (procIds != null) {<a name="line.555"></a>
-<span class="sourceLineNo">556</span>          assertTrue("procId=" + proc.getProcId() + " unexpected",<a name="line.556"></a>
-<span class="sourceLineNo">557</span>                     procIds.contains(proc.getProcId()));<a name="line.557"></a>
-<span class="sourceLineNo">558</span>        }<a name="line.558"></a>
-<span class="sourceLineNo">559</span>        loaded.add(proc);<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      }<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    }<a name="line.561"></a>
-<span class="sourceLineNo">562</span><a name="line.562"></a>
-<span class="sourceLineNo">563</span>    @Override<a name="line.563"></a>
-<span class="sourceLineNo">564</span>    public void handleCorrupted(ProcedureIterator procIter) throws IOException {<a name="line.564"></a>
-<span class="sourceLineNo">565</span>      while (procIter.hasNext()) {<a name="line.565"></a>
-<span class="sourceLineNo">566</span>        Procedure proc = procIter.next();<a name="line.566"></a>
-<span class="sourceLineNo">567</span>        LOG.debug("corrupted procId=" + proc.getProcId() + ": " + proc);<a name="line.567"></a>
-<span class="sourceLineNo">568</span>        corrupted.add(proc);<a name="line.568"></a>
-<span class="sourceLineNo">569</span>      }<a name="line.569"></a>
-<span class="sourceLineNo">570</span>    }<a name="line.570"></a>
-<span class="sourceLineNo">571</span>  }<a name="line.571"></a>
-<span class="sourceLineNo">572</span>}<a name="line.572"></a>
+<span class="sourceLineNo">497</span><a name="line.497"></a>
+<span class="sourceLineNo">498</span>    @Override<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    protected Procedure[] execute(Void env) { return null; }<a name="line.499"></a>
+<span class="sourceLineNo">500</span><a name="line.500"></a>
+<span class="sourceLineNo">501</span>    @Override<a name="line.501"></a>
+<span class="sourceLineNo">502</span>    protected void rollback(Void env) { }<a name="line.502"></a>
+<span class="sourceLineNo">503</span><a name="line.503"></a>
+<span class="sourceLineNo">504</span>    @Override<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    protected boolean abort(Void env) { return false; }<a name="line.505"></a>
+<span class="sourceLineNo">506</span><a name="line.506"></a>
+<span class="sourceLineNo">507</span>    @Override<a name="line.507"></a>
+<span class="sourceLineNo">508</span>    protected void serializeStateData(final OutputStream stream) throws IOException {<a name="line.508"></a>
+<span class="sourceLineNo">509</span>      long procId = getProcId();<a name="line.509"></a>
+<span class="sourceLineNo">510</span>      if (procId % 2 == 0) {<a name="line.510"></a>
+<span class="sourceLineNo">511</span>        stream.write(Bytes.toBytes(procId));<a name="line.511"></a>
+<span class="sourceLineNo">512</span>      }<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    }<a name="line.513"></a>
+<span class="sourceLineNo">514</span><a name="line.514"></a>
+<span class="sourceLineNo">515</span>    @Override<a name="line.515"></a>
+<span class="sourceLineNo">516</span>    protected void deserializeStateData(InputStream stream) throws IOException {<a name="line.516"></a>
+<span class="sourceLineNo">517</span>      long procId = getProcId();<a name="line.517"></a>
+<span class="sourceLineNo">518</span>      if (procId % 2 == 0) {<a name="line.518"></a>
+<span class="sourceLineNo">519</span>        byte[] bProcId = new byte[8];<a name="line.519"></a>
+<span class="sourceLineNo">520</span>        assertEquals(8, stream.read(bProcId));<a name="line.520"></a>
+<span class="sourceLineNo">521</span>        assertEquals(procId, Bytes.toLong(bProcId));<a name="line.521"></a>
+<span class="sourceLineNo">522</span>      } else {<a name="line.522"></a>
+<span class="sourceLineNo">523</span>        assertEquals(0, stream.available());<a name="line.523"></a>
+<span class="sourceLineNo">524</span>      }<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    }<a name="line.525"></a>
+<span class="sourceLineNo">526</span>  }<a name="line.526"></a>
+<span class="sourceLineNo">527</span><a name="line.527"></a>
+<span class="sourceLineNo">528</span>  private class LoadCounter implements ProcedureStore.ProcedureLoader {<a name="line.528"></a>
+<span class="sourceLineNo">529</span>    private final ArrayList&lt;Procedure&gt; corrupted = new ArrayList&lt;Procedure&gt;();<a name="line.529"></a>
+<span class="sourceLineNo">530</span>    private final ArrayList&lt;Procedure&gt; loaded = new ArrayList&lt;Procedure&gt;();<a name="line.530"></a>
+<span class="sourceLineNo">531</span><a name="line.531"></a>
+<span class="sourceLineNo">532</span>    private Set&lt;Long&gt; procIds;<a name="line.532"></a>
+<span class="sourceLineNo">533</span>    private long maxProcId = 0;<a name="line.533"></a>
+<span class="sourceLineNo">534</span><a name="line.534"></a>
+<span class="sourceLineNo">535</span>    public LoadCounter() {<a name="line.535"></a>
+<span class="sourceLineNo">536</span>      this(null);<a name="line.536"></a>
+<span class="sourceLineNo">537</span>    }<a name="line.537"></a>
+<span class="sourceLineNo">538</span><a name="line.538"></a>
+<span class="sourceLineNo">539</span>    public LoadCounter(final Set&lt;Long&gt; procIds) {<a name="line.539"></a>
+<span class="sourceLineNo">540</span>      this.procIds = procIds;<a name="line.540"></a>
+<span class="sourceLineNo">541</span>    }<a name="line.541"></a>
+<span class="sourceLineNo">542</span><a name="line.542"></a>
+<span class="sourceLineNo">543</span>    public void reset() {<a name="line.543"></a>
+<span class="sourceLineNo">544</span>      reset(null);<a name="line.544"></a>
+<span class="sourceLineNo">545</span>    }<a name="line.545"></a>
+<span class="sourceLineNo">546</span><a name="line.546"></a>
+<span class="sourceLineNo">547</span>    public void reset(final Set&lt;Long&gt; procIds) {<a name="line.547"></a>
+<span class="sourceLineNo">548</span>      corrupted.clear();<a name="line.548"></a>
+<span class="sourceLineNo">549</span>      loaded.clear();<a name="line.549"></a>
+<span class="sourceLineNo">550</span>      this.procIds = procIds;<a name="line.550"></a>
+<span class="sourceLineNo">551</span>      this.maxProcId = 0;<a name="line.551"></a>
+<span class="sourceLineNo">552</span>    }<a name="line.552"></a>
+<span class="sourceLineNo">553</span><a name="line.553"></a>
+<span class="sourceLineNo">554</span>    public long getMaxProcId() {<a name="line.554"></a>
+<span class="sourceLineNo">555</span>      return maxProcId;<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    }<a name="line.556"></a>
+<span class="sourceLineNo">557</span><a name="line.557"></a>
+<span class="sourceLineNo">558</span>    public ArrayList&lt;Procedure&gt; getLoaded() {<a name="line.558"></a>
+<span class="sourceLineNo">559</span>      return loaded;<a name="line.559"></a>
+<span class="sourceLineNo">560</span>    }<a name="line.560"></a>
+<span class="sourceLineNo">561</span><a name="line.561"></a>
+<span class="sourceLineNo">562</span>    public int getLoadedCount() {<a name="line.562"></a>
+<span class="sourceLineNo">563</span>      return loaded.size();<a name="line.563"></a>
+<span class="sourceLineNo">564</span>    }<a name="line.564"></a>
+<span class="sourceLineNo">565</span><a name="line.565"></a>
+<span class="sourceLineNo">566</span>    public ArrayList&lt;Procedure&gt; getCorrupted() {<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      return corrupted;<a name="line.567"></a>
+<span class="sourceLineNo">568</span>    }<a name="line.568"></a>
+<span class="sourceLineNo">569</span><a name="line.569"></a>
+<span class="sourceLineNo">570</span>    public int getCorruptedCount() {<a name="line.570"></a>
+<span class="sourceLineNo">571</span>      return corrupted.size();<a name="line.571"></a>
+<span class="sourceLineNo">572</span>    }<a name="line.572"></a>
+<span class="sourceLineNo">573</span><a name="line.573"></a>
+<span class="sourceLineNo">574</span>    @Override<a name="line.574"></a>
+<span class="sourceLineNo">575</span>    public void setMaxProcId(long maxProcId) {<a name="line.575"></a>
+<span class="sourceLineNo">576</span>      maxProcId = maxProcId;<a name="line.576"></a>
+<span class="sourceLineNo">577</span>    }<a name="line.577"></a>
+<span class="sourceLineNo">578</span><a name="line.578"></a>
+<span class="sourceLineNo">579</span>    @Override<a name="line.579"></a>
+<span class="sourceLineNo">580</span>    public void load(ProcedureIterator procIter) throws IOException {<a name="line.580"></a>
+<span class="sourceLineNo">581</span>      while (procIter.hasNext()) {<a name="line.581"></a>
+<span class="sourceLineNo">582</span>        Procedure proc = procIter.next();<a name="line.582"></a>
+<span class="sourceLineNo">583</span>        LOG.debug("loading procId=" + proc.getProcId() + ": " + proc);<a name="line.583"></a>
+<span class="sourceLineNo">584</span>        if (procIds != null) {<a name="line.584"></a>
+<span class="sourceLineNo">585</span>          assertTrue("procId=" + proc.getProcId() + " unexpected",<a name="line.585"></a>
+<span class="sourceLineNo">586</span>                     procIds.contains(proc.getProcId()));<a name="line.586"></a>
+<span class="sourceLineNo">587</span>        }<a name="line.587"></a>
+<span class="sourceLineNo">588</span>        loaded.add(proc);<a name="line.588"></a>
+<span class="sourceLineNo">589</span>      }<a name="line.589"></a>
+<span class="sourceLineNo">590</span>    }<a name="line.590"></a>
+<span class="sourceLineNo">591</span><a name="line.591"></a>
+<span class="sourceLineNo">592</span>    @Override<a name="line.592"></a>
+<span class="sourceLineNo">593</span>    public void handleCorrupted(ProcedureIterator procIter) throws IOException {<a name="line.593"></a>
+<span class="sourceLineNo">594</span>      while (procIter.hasNext()) {<a name="line.594"></a>
+<span class="sourceLineNo">595</span>        Procedure proc = procIter.next();<a name="line.595"></a>
+<span class="sourceLineNo">596</span>        LOG.debug("corrupted procId=" + proc.getProcId() + ": " + proc);<a name="line.596"></a>
+<span class="sourceLineNo">597</span>        corrupted.add(proc);<a name="line.597"></a>
+<span class="sourceLineNo">598</span>      }<a name="line.598"></a>
+<span class="sourceLineNo">599</span>    }<a name="line.599"></a>
+<span class="sourceLineNo">600</span>  }<a name="line.600"></a>
+<span class="sourceLineNo">601</span>}<a name="line.601"></a>
 
 
 


[45/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html
index 76a68c9..dbbf9af 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html
@@ -36,7 +36,7 @@
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="strong">Prev Class</span></a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="strong">Next Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="strong">Next Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../../index.html?org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html" target="_top">Frames</a></li>
@@ -60,7 +60,7 @@
 <div>
 <ul class="subNavList">
 <li>Summary:&nbsp;</li>
-<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#nested_class_summary">Nested</a>&nbsp;|&nbsp;</li>
 <li><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li>
 <li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method_summary">Method</a></li>
@@ -86,13 +86,7 @@
 <li><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
 <li>
 <ul class="inheritance">
-<li>com.yammer.metrics.reporting.AbstractReporter</li>
-<li>
-<ul class="inheritance">
-<li>com.yammer.metrics.reporting.AbstractPollingReporter</li>
-<li>
-<ul class="inheritance">
-<li>com.yammer.metrics.reporting.ConsoleReporter</li>
+<li>com.codahale.metrics.ScheduledReporter</li>
 <li>
 <ul class="inheritance">
 <li>org.apache.hadoop.hbase.io.hfile.HFilePrettyPrinter.SimpleReporter</li>
@@ -101,16 +95,12 @@
 </ul>
 </li>
 </ul>
-</li>
-</ul>
-</li>
-</ul>
 <div class="description">
 <ul class="blockList">
 <li class="blockList">
 <dl>
 <dt>All Implemented Interfaces:</dt>
-<dd>com.yammer.metrics.core.MetricProcessor&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/io/PrintStream.html?is-external=true" title="class or interface in java.io">PrintStream</a>&gt;, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></dd>
+<dd>com.codahale.metrics.Reporter, <a href="http://docs.oracle.com/javase/7/docs/api/java/io/Closeable.html?is-external=true" title="class or interface in java.io">Closeable</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/AutoCloseable.html?is-external=true" title="class or interface in java.lang">AutoCloseable</a></dd>
 </dl>
 <dl>
 <dt>Enclosing class:</dt>
@@ -118,14 +108,37 @@
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.613">HFilePrettyPrinter.SimpleReporter</a>
-extends com.yammer.metrics.reporting.ConsoleReporter</pre>
+<pre>private static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.630">HFilePrettyPrinter.SimpleReporter</a>
+extends com.codahale.metrics.ScheduledReporter</pre>
+<div class="block">Almost identical to ConsoleReporter, but extending ScheduledReporter,
+ as extending ConsoleReporter in this version of dropwizard is now too much trouble.</div>
 </li>
 </ul>
 </div>
 <div class="summary">
 <ul class="blockList">
 <li class="blockList">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="nested_class_summary">
+<!--   -->
+</a>
+<h3>Nested Class Summary</h3>
+<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
+<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Class and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static class&nbsp;</code></td>
+<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.SimpleReporter.Builder</a></strong></code>
+<div class="block">A builder for <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html" title="class in org.apache.hadoop.hbase.io.hfile"><code>HFilePrettyPrinter.SimpleReporter</code></a> instances.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
 <!-- =========== FIELD SUMMARY =========== -->
 <ul class="blockList">
 <li class="blockList"><a name="field_summary">
@@ -139,8 +152,16 @@ extends com.yammer.metrics.reporting.ConsoleReporter</pre>
 <th class="colLast" scope="col">Field and Description</th>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/7/docs/api/java/text/DateFormat.html?is-external=true" title="class or interface in java.text">DateFormat</a></code></td>
+<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html#dateFormat">dateFormat</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/Locale.html?is-external=true" title="class or interface in java.util">Locale</a></code></td>
+<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html#locale">locale</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/7/docs/api/java/io/PrintStream.html?is-external=true" title="class or interface in java.io">PrintStream</a></code></td>
-<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html#out">out</a></strong></code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html#output">output</a></strong></code>&nbsp;</td>
 </tr>
 </table>
 </li>
@@ -154,11 +175,18 @@ extends com.yammer.metrics.reporting.ConsoleReporter</pre>
 <table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
 <caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
 <tr>
-<th class="colOne" scope="col">Constructor and Description</th>
+<th class="colFirst" scope="col">Modifier</th>
+<th class="colLast" scope="col">Constructor and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colOne"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html#HFilePrettyPrinter.SimpleReporter(com.yammer.metrics.core.MetricsRegistry,%20java.io.PrintStream)">HFilePrettyPrinter.SimpleReporter</a></strong>(com.yammer.metrics.core.MetricsRegistry&nbsp;metricsRegistry,
-                                                                  <a href="http://docs.oracle.com/javase/7/docs/api/java/io/PrintStream.html?is-external=true" title="class or interface in java.io">PrintStream</a>&nbsp;out)</code>&nbsp;</td>
+<td class="colFirst"><code>private </code></td>
+<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html#HFilePrettyPrinter.SimpleReporter(com.codahale.metrics.MetricRegistry,%20java.io.PrintStream,%20java.util.Locale,%20java.util.TimeZone,%20java.util.concurrent.TimeUnit,%20java.util.concurrent.TimeUnit,%20com.codahale.metrics.MetricFilter)">HFilePrettyPrinter.SimpleReporter</a></strong>(com.codahale.metrics.MetricRegistry&nbsp;registry,
+                                                                  <a href="http://docs.oracle.com/javase/7/docs/api/java/io/PrintStream.html?is-external=true" title="class or interface in java.io">PrintStream</a>&nbsp;output,
+                                                                  <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a>&nbsp;locale,
+                                                                  <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TimeZone.html?is-external=true" title="class or interface in java.util">TimeZone</a>&nbsp;timeZone,
+                                                                  <a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/TimeUnit.html?is-external=true" title="class or interface in java.util.concurrent">TimeUnit</a>&nbsp;rateUnit,
+                                                                  <a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/TimeUnit.html?is-external=true" title="class or interface in java.util.concurrent">TimeUnit</a>&nbsp;durationUnit,
+                                                                  com.codahale.metrics.MetricFilter&nbsp;filter)</code>&nbsp;</td>
 </tr>
 </table>
 </li>
@@ -176,36 +204,30 @@ extends com.yammer.metrics.reporting.ConsoleReporter</pre>
 <th class="colLast" scope="col">Method and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html#processHistogram(com.yammer.metrics.core.MetricName,%20com.yammer.metrics.core.Histogram,%20java.io.PrintStream)">processHistogram</a></strong>(com.yammer.metrics.core.MetricName&nbsp;name,
-                                com.yammer.metrics.core.Histogram&nbsp;histogram,
-                                <a href="http://docs.oracle.com/javase/7/docs/api/java/io/PrintStream.html?is-external=true" title="class or interface in java.io">PrintStream</a>&nbsp;stream)</code>&nbsp;</td>
+<td class="colFirst"><code>static <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.SimpleReporter.Builder</a></code></td>
+<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html#forRegistry(com.codahale.metrics.MetricRegistry)">forRegistry</a></strong>(com.codahale.metrics.MetricRegistry&nbsp;registry)</code>
+<div class="block">Returns a new <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html" title="class in org.apache.hadoop.hbase.io.hfile"><code>HFilePrettyPrinter.SimpleReporter.Builder</code></a> for <code>ConsoleReporter</code>.</div>
+</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html#printHistogram(com.codahale.metrics.Histogram)">printHistogram</a></strong>(com.codahale.metrics.Histogram&nbsp;histogram)</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/io/hfile/HFilePrettyPrinter.SimpleReporter.html#run()">run</a></strong>()</code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html#report(java.util.SortedMap,%20java.util.SortedMap,%20java.util.SortedMap,%20java.util.SortedMap,%20java.util.SortedMap)">report</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/SortedMap.html?is-external=true" title="class or interface in java.util">SortedMap</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>,com.codahale.metrics.Gauge&gt;&nbsp;gauges,
+            <a href="http://docs.oracle.com/javase/7/docs/api/java/util/SortedMap.html?is-external=true" title="class or interface in java.util">SortedMap</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>,com.codahale.metrics.Counter&gt;&nbsp;counters,
+            <a href="http://docs.oracle.com/javase/7/docs/api/java/util/SortedMap.html?is-external=true" title="class or interface in java.util">SortedMap</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>,com.codahale.metrics.Histogram&gt;&nbsp;histograms,
+            <a href="http://docs.oracle.com/javase/7/docs/api/java/util/SortedMap.html?is-external=true" title="class or interface in java.util">SortedMap</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>,com.codahale.metrics.Meter&gt;&nbsp;meters,
+            <a href="http://docs.oracle.com/javase/7/docs/api/java/util/SortedMap.html?is-external=true" title="class or interface in java.util">SortedMap</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>,com.codahale.metrics.Timer&gt;&nbsp;timers)</code>&nbsp;</td>
 </tr>
 </table>
 <ul class="blockList">
-<li class="blockList"><a name="methods_inherited_from_class_com.yammer.metrics.reporting.ConsoleReporter">
+<li class="blockList"><a name="methods_inherited_from_class_com.codahale.metrics.ScheduledReporter">
 <!--   -->
 </a>
-<h3>Methods inherited from class&nbsp;com.yammer.metrics.reporting.ConsoleReporter</h3>
-<code>enable, enable, processCounter, processGauge, processMeter, processTimer</code></li>
-</ul>
-<ul class="blockList">
-<li class="blockList"><a name="methods_inherited_from_class_com.yammer.metrics.reporting.AbstractPollingReporter">
-<!--   -->
-</a>
-<h3>Methods inherited from class&nbsp;com.yammer.metrics.reporting.AbstractPollingReporter</h3>
-<code>shutdown, shutdown, start</code></li>
-</ul>
-<ul class="blockList">
-<li class="blockList"><a name="methods_inherited_from_class_com.yammer.metrics.reporting.AbstractReporter">
-<!--   -->
-</a>
-<h3>Methods inherited from class&nbsp;com.yammer.metrics.reporting.AbstractReporter</h3>
-<code>getMetricsRegistry</code></li>
+<h3>Methods inherited from class&nbsp;com.codahale.metrics.ScheduledReporter</h3>
+<code>close, convertDuration, convertRate, getDurationUnit, getRateUnit, report, start, stop</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
@@ -228,13 +250,31 @@ extends com.yammer.metrics.reporting.ConsoleReporter</pre>
 <!--   -->
 </a>
 <h3>Field Detail</h3>
-<a name="out">
+<a name="output">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>output</h4>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/io/PrintStream.html?is-external=true" title="class or interface in java.io">PrintStream</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html#line.703">output</a></pre>
+</li>
+</ul>
+<a name="locale">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>locale</h4>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html#line.704">locale</a></pre>
+</li>
+</ul>
+<a name="dateFormat">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>out</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/io/PrintStream.html?is-external=true" title="class or interface in java.io">PrintStream</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html#line.614">out</a></pre>
+<h4>dateFormat</h4>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/text/DateFormat.html?is-external=true" title="class or interface in java.text">DateFormat</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html#line.705">dateFormat</a></pre>
 </li>
 </ul>
 </li>
@@ -245,14 +285,19 @@ extends com.yammer.metrics.reporting.ConsoleReporter</pre>
 <!--   -->
 </a>
 <h3>Constructor Detail</h3>
-<a name="HFilePrettyPrinter.SimpleReporter(com.yammer.metrics.core.MetricsRegistry, java.io.PrintStream)">
+<a name="HFilePrettyPrinter.SimpleReporter(com.codahale.metrics.MetricRegistry, java.io.PrintStream, java.util.Locale, java.util.TimeZone, java.util.concurrent.TimeUnit, java.util.concurrent.TimeUnit, com.codahale.metrics.MetricFilter)">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>HFilePrettyPrinter.SimpleReporter</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html#line.616">HFilePrettyPrinter.SimpleReporter</a>(com.yammer.metrics.core.MetricsRegistry&nbsp;metricsRegistry,
-                                 <a href="http://docs.oracle.com/javase/7/docs/api/java/io/PrintStream.html?is-external=true" title="class or interface in java.io">PrintStream</a>&nbsp;out)</pre>
+<pre>private&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html#line.707">HFilePrettyPrinter.SimpleReporter</a>(com.codahale.metrics.MetricRegistry&nbsp;registry,
+                                 <a href="http://docs.oracle.com/javase/7/docs/api/java/io/PrintStream.html?is-external=true" title="class or interface in java.io">PrintStream</a>&nbsp;output,
+                                 <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Locale.html?is-external=true" title="class or interface in java.util">Locale</a>&nbsp;locale,
+                                 <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TimeZone.html?is-external=true" title="class or interface in java.util">TimeZone</a>&nbsp;timeZone,
+                                 <a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/TimeUnit.html?is-external=true" title="class or interface in java.util.concurrent">TimeUnit</a>&nbsp;rateUnit,
+                                 <a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/TimeUnit.html?is-external=true" title="class or interface in java.util.concurrent">TimeUnit</a>&nbsp;durationUnit,
+                                 com.codahale.metrics.MetricFilter&nbsp;filter)</pre>
 </li>
 </ul>
 </li>
@@ -263,36 +308,42 @@ extends com.yammer.metrics.reporting.ConsoleReporter</pre>
 <!--   -->
 </a>
 <h3>Method Detail</h3>
-<a name="run()">
+<a name="forRegistry(com.codahale.metrics.MetricRegistry)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>run</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html#line.622">run</a>()</pre>
+<h4>forRegistry</h4>
+<pre>public static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.SimpleReporter.Builder</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html#line.637">forRegistry</a>(com.codahale.metrics.MetricRegistry&nbsp;registry)</pre>
+<div class="block">Returns a new <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html" title="class in org.apache.hadoop.hbase.io.hfile"><code>HFilePrettyPrinter.SimpleReporter.Builder</code></a> for <code>ConsoleReporter</code>.</div>
+<dl><dt><span class="strong">Parameters:</span></dt><dd><code>registry</code> - the registry to report</dd>
+<dt><span class="strong">Returns:</span></dt><dd>a <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html" title="class in org.apache.hadoop.hbase.io.hfile"><code>HFilePrettyPrinter.SimpleReporter.Builder</code></a> instance for a <code>ConsoleReporter</code></dd></dl>
+</li>
+</ul>
+<a name="report(java.util.SortedMap, java.util.SortedMap, java.util.SortedMap, java.util.SortedMap, java.util.SortedMap)">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>report</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html#line.725">report</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/SortedMap.html?is-external=true" title="class or interface in java.util">SortedMap</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>,com.codahale.metrics.Gauge&gt;&nbsp;gauges,
+          <a href="http://docs.oracle.com/javase/7/docs/api/java/util/SortedMap.html?is-external=true" title="class or interface in java.util">SortedMap</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>,com.codahale.metrics.Counter&gt;&nbsp;counters,
+          <a href="http://docs.oracle.com/javase/7/docs/api/java/util/SortedMap.html?is-external=true" title="class or interface in java.util">SortedMap</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>,com.codahale.metrics.Histogram&gt;&nbsp;histograms,
+          <a href="http://docs.oracle.com/javase/7/docs/api/java/util/SortedMap.html?is-external=true" title="class or interface in java.util">SortedMap</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>,com.codahale.metrics.Meter&gt;&nbsp;meters,
+          <a href="http://docs.oracle.com/javase/7/docs/api/java/util/SortedMap.html?is-external=true" title="class or interface in java.util">SortedMap</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>,com.codahale.metrics.Timer&gt;&nbsp;timers)</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
-<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html?is-external=true#run()" title="class or interface in java.lang">run</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></code></dd>
-<dt><strong>Overrides:</strong></dt>
-<dd><code>run</code>&nbsp;in class&nbsp;<code>com.yammer.metrics.reporting.ConsoleReporter</code></dd>
+<dd><code>report</code>&nbsp;in class&nbsp;<code>com.codahale.metrics.ScheduledReporter</code></dd>
 </dl>
 </li>
 </ul>
-<a name="processHistogram(com.yammer.metrics.core.MetricName, com.yammer.metrics.core.Histogram, java.io.PrintStream)">
+<a name="printHistogram(com.codahale.metrics.Histogram)">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>processHistogram</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html#line.639">processHistogram</a>(com.yammer.metrics.core.MetricName&nbsp;name,
-                    com.yammer.metrics.core.Histogram&nbsp;histogram,
-                    <a href="http://docs.oracle.com/javase/7/docs/api/java/io/PrintStream.html?is-external=true" title="class or interface in java.io">PrintStream</a>&nbsp;stream)</pre>
-<dl>
-<dt><strong>Specified by:</strong></dt>
-<dd><code>processHistogram</code>&nbsp;in interface&nbsp;<code>com.yammer.metrics.core.MetricProcessor&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/io/PrintStream.html?is-external=true" title="class or interface in java.io">PrintStream</a>&gt;</code></dd>
-<dt><strong>Overrides:</strong></dt>
-<dd><code>processHistogram</code>&nbsp;in class&nbsp;<code>com.yammer.metrics.reporting.ConsoleReporter</code></dd>
-</dl>
+<h4>printHistogram</h4>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html#line.744">printHistogram</a>(com.codahale.metrics.Histogram&nbsp;histogram)</pre>
 </li>
 </ul>
 </li>
@@ -322,7 +373,7 @@ extends com.yammer.metrics.reporting.ConsoleReporter</pre>
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="strong">Prev Class</span></a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="strong">Next Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="strong">Next Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../../index.html?org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html" target="_top">Frames</a></li>
@@ -346,7 +397,7 @@ extends com.yammer.metrics.reporting.ConsoleReporter</pre>
 <div>
 <ul class="subNavList">
 <li>Summary:&nbsp;</li>
-<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#nested_class_summary">Nested</a>&nbsp;|&nbsp;</li>
 <li><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li>
 <li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method_summary">Method</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html
index fd87ec7..6dfd981 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html
@@ -106,7 +106,7 @@
 <br>
 <pre><a href="../../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.LimitedPrivate.html" title="annotation in org.apache.hadoop.hbase.classification">@InterfaceAudience.LimitedPrivate</a>(<a href="../../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.LimitedPrivate.html#value()">value</a>="Tools")
 <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/io/hfile/HFilePrettyPrinter.html#line.88">HFilePrettyPrinter</a>
+public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.98">HFilePrettyPrinter</a>
 extends org.apache.hadoop.conf.Configured
 implements org.apache.hadoop.util.Tool</pre>
 <div class="block">Implements pretty-printing functionality for <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFile.html" title="class in org.apache.hadoop.hbase.io.hfile"><code>HFile</code></a>s.</div>
@@ -134,7 +134,10 @@ implements org.apache.hadoop.util.Tool</pre>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private static class&nbsp;</code></td>
-<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.SimpleReporter</a></strong></code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.SimpleReporter</a></strong></code>
+<div class="block">Almost identical to ConsoleReporter, but extending ScheduledReporter,
+ as extending ConsoleReporter in this version of dropwizard is now too much trouble.</div>
+</td>
 </tr>
 </table>
 </li>
@@ -370,7 +373,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <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/io/hfile/HFilePrettyPrinter.html#line.90">LOG</a></pre>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.100">LOG</a></pre>
 </li>
 </ul>
 <a name="options">
@@ -379,7 +382,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>options</h4>
-<pre>private&nbsp;org.apache.commons.cli.Options <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.92">options</a></pre>
+<pre>private&nbsp;org.apache.commons.cli.Options <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.102">options</a></pre>
 </li>
 </ul>
 <a name="verbose">
@@ -388,7 +391,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>verbose</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.94">verbose</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.104">verbose</a></pre>
 </li>
 </ul>
 <a name="printValue">
@@ -397,7 +400,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>printValue</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.95">printValue</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.105">printValue</a></pre>
 </li>
 </ul>
 <a name="printKey">
@@ -406,7 +409,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>printKey</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.96">printKey</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.106">printKey</a></pre>
 </li>
 </ul>
 <a name="shouldPrintMeta">
@@ -415,7 +418,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>shouldPrintMeta</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.97">shouldPrintMeta</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.107">shouldPrintMeta</a></pre>
 </li>
 </ul>
 <a name="printBlockIndex">
@@ -424,7 +427,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>printBlockIndex</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.98">printBlockIndex</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.108">printBlockIndex</a></pre>
 </li>
 </ul>
 <a name="printBlockHeaders">
@@ -433,7 +436,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>printBlockHeaders</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.99">printBlockHeaders</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.109">printBlockHeaders</a></pre>
 </li>
 </ul>
 <a name="printStats">
@@ -442,7 +445,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>printStats</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.100">printStats</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.110">printStats</a></pre>
 </li>
 </ul>
 <a name="checkRow">
@@ -451,7 +454,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>checkRow</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.101">checkRow</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.111">checkRow</a></pre>
 </li>
 </ul>
 <a name="checkFamily">
@@ -460,7 +463,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>checkFamily</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.102">checkFamily</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.112">checkFamily</a></pre>
 </li>
 </ul>
 <a name="isSeekToRow">
@@ -469,7 +472,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>isSeekToRow</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.103">isSeekToRow</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.113">isSeekToRow</a></pre>
 </li>
 </ul>
 <a name="checkMobIntegrity">
@@ -478,7 +481,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>checkMobIntegrity</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.104">checkMobIntegrity</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.114">checkMobIntegrity</a></pre>
 </li>
 </ul>
 <a name="mobFileLocations">
@@ -487,7 +490,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>mobFileLocations</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/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.fs.Path&gt;&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.105">mobFileLocations</a></pre>
+<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/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.fs.Path&gt;&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.115">mobFileLocations</a></pre>
 </li>
 </ul>
 <a name="FOUND_MOB_FILES_CACHE_CAPACITY">
@@ -496,7 +499,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>FOUND_MOB_FILES_CACHE_CAPACITY</h4>
-<pre>private static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.106">FOUND_MOB_FILES_CACHE_CAPACITY</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.116">FOUND_MOB_FILES_CACHE_CAPACITY</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.io.hfile.HFilePrettyPrinter.FOUND_MOB_FILES_CACHE_CAPACITY">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -506,7 +509,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>MISSING_MOB_FILES_CACHE_CAPACITY</h4>
-<pre>private static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.107">MISSING_MOB_FILES_CACHE_CAPACITY</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.117">MISSING_MOB_FILES_CACHE_CAPACITY</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.io.hfile.HFilePrettyPrinter.MISSING_MOB_FILES_CACHE_CAPACITY">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -516,7 +519,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>row</h4>
-<pre>private&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.112">row</a></pre>
+<pre>private&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.122">row</a></pre>
 <div class="block">The row which the user wants to specify and print all the KeyValues for.</div>
 </li>
 </ul>
@@ -526,7 +529,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>files</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;org.apache.hadoop.fs.Path&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.114">files</a></pre>
+<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;org.apache.hadoop.fs.Path&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.124">files</a></pre>
 </li>
 </ul>
 <a name="count">
@@ -535,7 +538,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>count</h4>
-<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.115">count</a></pre>
+<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.125">count</a></pre>
 </li>
 </ul>
 <a name="FOUR_SPACES">
@@ -544,7 +547,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>FOUR_SPACES</h4>
-<pre>private 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/io/hfile/HFilePrettyPrinter.html#line.117">FOUR_SPACES</a></pre>
+<pre>private 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/io/hfile/HFilePrettyPrinter.html#line.127">FOUR_SPACES</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.io.hfile.HFilePrettyPrinter.FOUR_SPACES">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -562,7 +565,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>HFilePrettyPrinter</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.119">HFilePrettyPrinter</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.129">HFilePrettyPrinter</a>()</pre>
 </li>
 </ul>
 <a name="HFilePrettyPrinter(org.apache.hadoop.conf.Configuration)">
@@ -571,7 +574,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>HFilePrettyPrinter</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.124">HFilePrettyPrinter</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.134">HFilePrettyPrinter</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 </li>
 </ul>
 </li>
@@ -588,7 +591,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>init</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.129">init</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.139">init</a>()</pre>
 </li>
 </ul>
 <a name="parseOptions(java.lang.String[])">
@@ -597,7 +600,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>parseOptions</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.154">parseOptions</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;args)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.164">parseOptions</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;args)
                      throws org.apache.commons.cli.ParseException,
                             <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>
@@ -611,7 +614,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.229">run</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;args)</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.239">run</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;args)</pre>
 <div class="block">Runs the command-line pretty-printer, and returns the desired command
  exit code (zero for success, non-zero for failure).</div>
 <dl>
@@ -626,7 +629,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>processFile</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.262">processFile</a>(org.apache.hadoop.fs.Path&nbsp;file)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.272">processFile</a>(org.apache.hadoop.fs.Path&nbsp;file)
                   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>
@@ -638,7 +641,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>scanKeysValues</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.332">scanKeysValues</a>(org.apache.hadoop.fs.Path&nbsp;file,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.342">scanKeysValues</a>(org.apache.hadoop.fs.Path&nbsp;file,
                   <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.KeyValueStatsCollector</a>&nbsp;fileStats,
                   <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanner.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileScanner</a>&nbsp;scanner,
                   byte[]&nbsp;row)
@@ -653,7 +656,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>mobFileExists</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.423">mobFileExists</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.433">mobFileExists</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
                     <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tn,
                     <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;mobFileName,
                     <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;family,
@@ -671,7 +674,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>evictMobFilesIfNecessary</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.461">evictMobFilesIfNecessary</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="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;mobFileNames,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.471">evictMobFilesIfNecessary</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="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;mobFileNames,
                             int&nbsp;limit)</pre>
 <div class="block">Evicts the cached mob files if the set is larger than the limit.</div>
 </li>
@@ -682,7 +685,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>asSeparateLines</h4>
-<pre>private 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/io/hfile/HFilePrettyPrinter.html#line.479">asSeparateLines</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;keyValueStr)</pre>
+<pre>private 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/io/hfile/HFilePrettyPrinter.html#line.489">asSeparateLines</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;keyValueStr)</pre>
 <div class="block">Format a string of the form "k1=v1, k2=v2, ..." into separate lines
  with a four-space indentation.</div>
 </li>
@@ -693,7 +696,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>printMeta</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.484">printMeta</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFile.Reader.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFile.Reader</a>&nbsp;reader,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.494">printMeta</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFile.Reader.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFile.Reader</a>&nbsp;reader,
              <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;byte[],byte[]&gt;&nbsp;fileInfo)
                 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>
@@ -706,7 +709,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>main</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.645">main</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;args)
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.760">main</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;args)
                  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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html
index 411f5bb..554548f 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html
@@ -35,7 +35,7 @@
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="strong">Prev Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="strong">Prev Class</span></a></li>
 <li><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.BlockIndexNotLoadedException.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="strong">Next Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -1694,7 +1694,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFile.Rea
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="strong">Prev Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="strong">Prev Class</span></a></li>
 <li><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.BlockIndexNotLoadedException.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="strong">Next Class</span></a></li>
 </ul>
 <ul class="navList">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/hbase/io/hfile/class-use/HFilePrettyPrinter.SimpleReporter.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/class-use/HFilePrettyPrinter.SimpleReporter.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/class-use/HFilePrettyPrinter.SimpleReporter.html
index 91c6cd8..d9a988a 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/class-use/HFilePrettyPrinter.SimpleReporter.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/class-use/HFilePrettyPrinter.SimpleReporter.html
@@ -103,6 +103,21 @@
 </tr>
 </tbody>
 </table>
+<table border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
+<caption><span>Methods in <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/package-summary.html">org.apache.hadoop.hbase.io.hfile</a> that return <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.SimpleReporter</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.SimpleReporter</a></code></td>
+<td class="colLast"><span class="strong">HFilePrettyPrinter.SimpleReporter.Builder.</span><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html#build()">build</a></strong>()</code>
+<div class="block">Builds a <code>ConsoleReporter</code> with the given properties.</div>
+</td>
+</tr>
+</tbody>
+</table>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/hbase/io/hfile/package-frame.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-frame.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-frame.html
index d112e5e..2a0e7ff 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-frame.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-frame.html
@@ -66,6 +66,7 @@
 <li><a href="HFilePrettyPrinter.html" title="class in org.apache.hadoop.hbase.io.hfile" target="classFrame">HFilePrettyPrinter</a></li>
 <li><a href="HFilePrettyPrinter.KeyValueStatsCollector.html" title="class in org.apache.hadoop.hbase.io.hfile" target="classFrame">HFilePrettyPrinter.KeyValueStatsCollector</a></li>
 <li><a href="HFilePrettyPrinter.SimpleReporter.html" title="class in org.apache.hadoop.hbase.io.hfile" target="classFrame">HFilePrettyPrinter.SimpleReporter</a></li>
+<li><a href="HFilePrettyPrinter.SimpleReporter.Builder.html" title="class in org.apache.hadoop.hbase.io.hfile" target="classFrame">HFilePrettyPrinter.SimpleReporter.Builder</a></li>
 <li><a href="HFileReaderImpl.html" title="class in org.apache.hadoop.hbase.io.hfile" target="classFrame">HFileReaderImpl</a></li>
 <li><a href="HFileReaderImpl.EncodedScanner.html" title="class in org.apache.hadoop.hbase.io.hfile" target="classFrame">HFileReaderImpl.EncodedScanner</a></li>
 <li><a href="HFileReaderImpl.HFileScannerImpl.html" title="class in org.apache.hadoop.hbase.io.hfile" target="classFrame">HFileReaderImpl.HFileScannerImpl</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/hbase/io/hfile/package-summary.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-summary.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-summary.html
index 98b5a97..88171da 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-summary.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-summary.html
@@ -406,51 +406,60 @@
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.SimpleReporter</a></td>
-<td class="colLast">&nbsp;</td>
+<td class="colLast">
+<div class="block">Almost identical to ConsoleReporter, but extending ScheduledReporter,
+ as extending ConsoleReporter in this version of dropwizard is now too much trouble.</div>
+</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.SimpleReporter.Builder</a></td>
+<td class="colLast">
+<div class="block">A builder for <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html" title="class in org.apache.hadoop.hbase.io.hfile"><code>HFilePrettyPrinter.SimpleReporter</code></a> instances.</div>
+</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileReaderImpl</a></td>
 <td class="colLast">
 <div class="block">Implementation that can handle all hfile versions of <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFile.Reader.html" title="interface in org.apache.hadoop.hbase.io.hfile"><code>HFile.Reader</code></a>.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.EncodedScanner.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileReaderImpl.EncodedScanner</a></td>
 <td class="colLast">
 <div class="block">Scanner that operates on encoded data blocks.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.HFileScannerImpl.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileReaderImpl.HFileScannerImpl</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.HFileScannerImpl.ShareableMemoryKeyValue.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileReaderImpl.HFileScannerImpl.ShareableMemoryKeyValue</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.HFileScannerImpl.ShareableMemoryNoTagsKeyValue.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileReaderImpl.HFileScannerImpl.ShareableMemoryNoTagsKeyValue</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.HFileScannerImpl.ShareableMemoryOffheapKeyValue.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileReaderImpl.HFileScannerImpl.ShareableMemoryOffheapKeyValue</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileWriterFactory.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileWriterFactory</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileWriterImpl.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileWriterImpl</a></td>
 <td class="colLast">
 <div class="block">Common functionality needed by all versions of <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFile.html" title="class in org.apache.hadoop.hbase.io.hfile"><code>HFile</code></a> writers.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/InclusiveCombinedBlockCache.html" title="class in org.apache.hadoop.hbase.io.hfile">InclusiveCombinedBlockCache</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/LruBlockCache.html" title="class in org.apache.hadoop.hbase.io.hfile">LruBlockCache</a></td>
 <td class="colLast">
 <div class="block">A block cache implementation that is memory-aware using <a href="../../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title="interface in org.apache.hadoop.hbase.io"><code>HeapSize</code></a>,
@@ -459,46 +468,46 @@
  constant-time <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#cacheBlock(org.apache.hadoop.hbase.io.hfile.BlockCacheKey,%20org.apache.hadoop.hbase.io.hfile.Cacheable,%20boolean,%20boolean)"><code>LruBlockCache.cacheBlock(org.apache.hadoop.hbase.io.hfile.BlockCacheKey, org.apache.hadoop.hbase.io.hfile.Cacheable, boolean, boolean)</code></a> and <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#getBlock(org.apache.hadoop.hbase.io.hfile.BlockCacheKey,%20boolean,%20boolean,%20boolean)"><code>LruBlockCache.getBlock(org.apache.hadoop.hbase.io.hfile.BlockCacheKey, boolean, boolean, boolean)</code></a> operations.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/LruBlockCache.EvictionThread.html" title="class in org.apache.hadoop.hbase.io.hfile">LruBlockCache.EvictionThread</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/LruBlockCache.StatisticsThread.html" title="class in org.apache.hadoop.hbase.io.hfile">LruBlockCache.StatisticsThread</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/LruCachedBlock.html" title="class in org.apache.hadoop.hbase.io.hfile">LruCachedBlock</a></td>
 <td class="colLast">
 <div class="block">Represents an entry in the <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/LruBlockCache.html" title="class in org.apache.hadoop.hbase.io.hfile"><code>LruBlockCache</code></a>.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/LruCachedBlockQueue.html" title="class in org.apache.hadoop.hbase.io.hfile">LruCachedBlockQueue</a></td>
 <td class="colLast">
 <div class="block">A memory-bound queue that will grow until an element brings
  total size &gt;= maxSize.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/MemcachedBlockCache.html" title="class in org.apache.hadoop.hbase.io.hfile">MemcachedBlockCache</a></td>
 <td class="colLast">
 <div class="block">Class to store blocks into memcached.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/MemcachedBlockCache.HFileBlockTranscoder.html" title="class in org.apache.hadoop.hbase.io.hfile">MemcachedBlockCache.HFileBlockTranscoder</a></td>
 <td class="colLast">
 <div class="block">Class to encode and decode an HFileBlock to and from memecached's resulting byte arrays.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/NoOpDataBlockEncoder.html" title="class in org.apache.hadoop.hbase.io.hfile">NoOpDataBlockEncoder</a></td>
 <td class="colLast">
 <div class="block">Does not perform any kind of encoding/decoding.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/PrefetchExecutor.html" title="class in org.apache.hadoop.hbase.io.hfile">PrefetchExecutor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/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 47b3738..d95d30f 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -73,19 +73,6 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang"><span class="strong">Object</span></a>
 <ul>
-<li type="circle">com.yammer.metrics.reporting.AbstractReporter
-<ul>
-<li type="circle">com.yammer.metrics.reporting.AbstractPollingReporter (implements java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a>)
-<ul>
-<li type="circle">com.yammer.metrics.reporting.ConsoleReporter (implements com.yammer.metrics.core.MetricProcessor&lt;T&gt;)
-<ul>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="strong">HFilePrettyPrinter.SimpleReporter</span></a></li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-</li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="strong">AgeSnapshot</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheKey.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="strong">BlockCacheKey</span></a> (implements org.apache.hadoop.hbase.io.<a href="../../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title="interface in org.apache.hadoop.hbase.io">HeapSize</a>, 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>)</li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCachesIterator.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="strong">BlockCachesIterator</span></a> (implements java.util.<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;E&gt;)</li>
@@ -158,6 +145,7 @@
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileContextBuilder.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="strong">HFileContextBuilder</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoderImpl.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="strong">HFileDataBlockEncoderImpl</span></a> (implements org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoder.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileDataBlockEncoder</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="strong">HFilePrettyPrinter.KeyValueStatsCollector</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="strong">HFilePrettyPrinter.SimpleReporter.Builder</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="strong">HFileReaderImpl</span></a> (implements org.apache.hadoop.conf.Configurable, org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFile.Reader.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFile.Reader</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.HFileScannerImpl.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="strong">HFileReaderImpl.HFileScannerImpl</span></a> (implements org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanner.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileScanner</a>)
 <ul>
@@ -196,6 +184,11 @@
 </ul>
 </li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/PrefetchExecutor.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="strong">PrefetchExecutor</span></a></li>
+<li type="circle">com.codahale.metrics.ScheduledReporter (implements java.io.<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Closeable.html?is-external=true" title="class or interface in java.io">Closeable</a>, com.codahale.metrics.Reporter)
+<ul>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="strong">HFilePrettyPrinter.SimpleReporter</span></a></li>
+</ul>
+</li>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang"><span class="strong">Thread</span></a> (implements java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a>)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/LruBlockCache.StatisticsThread.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="strong">LruBlockCache.StatisticsThread</span></a></li>
@@ -291,11 +284,11 @@
 <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/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/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.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/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/HFileBlock.Writer.State.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="strong">HFileBlock.Writer.State</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/hbase/io/hfile/package-use.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-use.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-use.html
index 40694d2..3e0c39d 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-use.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-use.html
@@ -431,23 +431,31 @@
 <td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/class-use/HFilePrettyPrinter.KeyValueStatsCollector.html#org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.KeyValueStatsCollector</a>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/class-use/HFilePrettyPrinter.SimpleReporter.html#org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.SimpleReporter</a>&nbsp;</td>
+<td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/class-use/HFilePrettyPrinter.SimpleReporter.html#org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.SimpleReporter</a>
+<div class="block">Almost identical to ConsoleReporter, but extending ScheduledReporter,
+ as extending ConsoleReporter in this version of dropwizard is now too much trouble.</div>
+</td>
 </tr>
 <tr class="rowColor">
-<td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/class-use/HFileReaderImpl.HFileScannerImpl.html#org.apache.hadoop.hbase.io.hfile">HFileReaderImpl.HFileScannerImpl</a>&nbsp;</td>
+<td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/class-use/HFilePrettyPrinter.SimpleReporter.Builder.html#org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.SimpleReporter.Builder</a>
+<div class="block">A builder for <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html" title="class in org.apache.hadoop.hbase.io.hfile"><code>HFilePrettyPrinter.SimpleReporter</code></a> instances.</div>
+</td>
 </tr>
 <tr class="altColor">
+<td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/class-use/HFileReaderImpl.HFileScannerImpl.html#org.apache.hadoop.hbase.io.hfile">HFileReaderImpl.HFileScannerImpl</a>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/class-use/HFileScanner.html#org.apache.hadoop.hbase.io.hfile">HFileScanner</a>
 <div class="block">A scanner allows you to position yourself within a HFile and
  scan through it.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/class-use/InlineBlockWriter.html#org.apache.hadoop.hbase.io.hfile">InlineBlockWriter</a>
 <div class="block">A way to write "inline" blocks into an <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFile.html" title="class in org.apache.hadoop.hbase.io.hfile"><code>HFile</code></a>.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/class-use/LruBlockCache.html#org.apache.hadoop.hbase.io.hfile">LruBlockCache</a>
 <div class="block">A block cache implementation that is memory-aware using <a href="../../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title="interface in org.apache.hadoop.hbase.io"><code>HeapSize</code></a>,
  memory-bound using an LRU eviction algorithm, and concurrent: backed by a
@@ -455,36 +463,36 @@
  constant-time <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#cacheBlock(org.apache.hadoop.hbase.io.hfile.BlockCacheKey,%20org.apache.hadoop.hbase.io.hfile.Cacheable,%20boolean,%20boolean)"><code>LruBlockCache.cacheBlock(org.apache.hadoop.hbase.io.hfile.BlockCacheKey, org.apache.hadoop.hbase.io.hfile.Cacheable, boolean, boolean)</code></a> and <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/LruBlockCache.html#getBlock(org.apache.hadoop.hbase.io.hfile.BlockCacheKey,%20boolean,%20boolean,%20boolean)"><code>LruBlockCache.getBlock(org.apache.hadoop.hbase.io.hfile.BlockCacheKey, boolean, boolean, boolean)</code></a> operations.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/class-use/LruBlockCache.BlockBucket.html#org.apache.hadoop.hbase.io.hfile">LruBlockCache.BlockBucket</a>
 <div class="block">Used to group blocks into priority buckets.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/class-use/LruBlockCache.EvictionThread.html#org.apache.hadoop.hbase.io.hfile">LruBlockCache.EvictionThread</a>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/class-use/LruCachedBlock.html#org.apache.hadoop.hbase.io.hfile">LruCachedBlock</a>
 <div class="block">Represents an entry in the <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/LruBlockCache.html" title="class in org.apache.hadoop.hbase.io.hfile"><code>LruBlockCache</code></a>.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/class-use/LruCachedBlockQueue.html#org.apache.hadoop.hbase.io.hfile">LruCachedBlockQueue</a>
 <div class="block">A memory-bound queue that will grow until an element brings
  total size &gt;= maxSize.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/class-use/MemcachedBlockCache.HFileBlockTranscoder.html#org.apache.hadoop.hbase.io.hfile">MemcachedBlockCache.HFileBlockTranscoder</a>
 <div class="block">Class to encode and decode an HFileBlock to and from memecached's resulting byte arrays.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/class-use/NoOpDataBlockEncoder.html#org.apache.hadoop.hbase.io.hfile">NoOpDataBlockEncoder</a>
 <div class="block">Does not perform any kind of encoding/decoding.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/class-use/ResizableBlockCache.html#org.apache.hadoop.hbase.io.hfile">ResizableBlockCache</a>
 <div class="block">BlockCache which is resizable.</div>
 </td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/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 1d21a59..0165f73 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
@@ -268,9 +268,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.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/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/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/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/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>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/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 7c5b287..b8e2596 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
@@ -290,11 +290,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.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/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/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/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.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/MetricsMasterSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.master"><span class="strong">MetricsMasterSourceFactoryImpl.FactoryStorage</span></a></li>
 </ul>
 </li>
 </ul>


[34/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html b/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html
index 174b98f..c847641 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html
@@ -111,543 +111,549 @@
 <span class="sourceLineNo">103</span>   */<a name="line.103"></a>
 <span class="sourceLineNo">104</span>  private static Set&lt;String&gt; coprocessorNames =<a name="line.104"></a>
 <span class="sourceLineNo">105</span>      Collections.synchronizedSet(new HashSet&lt;String&gt;());<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public static Set&lt;String&gt; getLoadedCoprocessors() {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      return coprocessorNames;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>  }<a name="line.108"></a>
-<span class="sourceLineNo">109</span><a name="line.109"></a>
-<span class="sourceLineNo">110</span>  /**<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   * Used to create a parameter to the HServerLoad constructor so that<a name="line.111"></a>
-<span class="sourceLineNo">112</span>   * HServerLoad can provide information about the coprocessors loaded by this<a name="line.112"></a>
-<span class="sourceLineNo">113</span>   * regionserver.<a name="line.113"></a>
-<span class="sourceLineNo">114</span>   * (HBASE-4070: Improve region server metrics to report loaded coprocessors<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   * to master).<a name="line.115"></a>
-<span class="sourceLineNo">116</span>   */<a name="line.116"></a>
-<span class="sourceLineNo">117</span>  public Set&lt;String&gt; getCoprocessors() {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    Set&lt;String&gt; returnValue = new TreeSet&lt;String&gt;();<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    for (CoprocessorEnvironment e: coprocessors) {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      returnValue.add(e.getInstance().getClass().getSimpleName());<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    return returnValue;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  }<a name="line.123"></a>
-<span class="sourceLineNo">124</span><a name="line.124"></a>
-<span class="sourceLineNo">125</span>  /**<a name="line.125"></a>
-<span class="sourceLineNo">126</span>   * Load system coprocessors once only. Read the class names from configuration.<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   * Called by constructor.<a name="line.127"></a>
-<span class="sourceLineNo">128</span>   */<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  protected void loadSystemCoprocessors(Configuration conf, String confKey) {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    boolean coprocessorsEnabled = conf.getBoolean(COPROCESSORS_ENABLED_CONF_KEY,<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      DEFAULT_COPROCESSORS_ENABLED);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    if (!coprocessorsEnabled) {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      return;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    }<a name="line.134"></a>
-<span class="sourceLineNo">135</span><a name="line.135"></a>
-<span class="sourceLineNo">136</span>    Class&lt;?&gt; implClass = null;<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>    // load default coprocessors from configure file<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    String[] defaultCPClasses = conf.getStrings(confKey);<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    if (defaultCPClasses == null || defaultCPClasses.length == 0)<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      return;<a name="line.141"></a>
-<span class="sourceLineNo">142</span><a name="line.142"></a>
-<span class="sourceLineNo">143</span>    int priority = Coprocessor.PRIORITY_SYSTEM;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    for (String className : defaultCPClasses) {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      className = className.trim();<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      if (findCoprocessor(className) != null) {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>        // If already loaded will just continue<a name="line.147"></a>
-<span class="sourceLineNo">148</span>        LOG.warn("Attempted duplicate loading of " + className + "; skipped");<a name="line.148"></a>
-<span class="sourceLineNo">149</span>        continue;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      }<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      ClassLoader cl = this.getClass().getClassLoader();<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      Thread.currentThread().setContextClassLoader(cl);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      try {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>        implClass = cl.loadClass(className);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>        // Add coprocessors as we go to guard against case where a coprocessor is specified twice<a name="line.155"></a>
-<span class="sourceLineNo">156</span>        // in the configuration<a name="line.156"></a>
-<span class="sourceLineNo">157</span>        this.coprocessors.add(loadInstance(implClass, Coprocessor.PRIORITY_SYSTEM, conf));<a name="line.157"></a>
-<span class="sourceLineNo">158</span>        LOG.info("System coprocessor " + className + " was loaded " +<a name="line.158"></a>
-<span class="sourceLineNo">159</span>            "successfully with priority (" + priority++ + ").");<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      } catch (Throwable t) {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        // We always abort if system coprocessors cannot be loaded<a name="line.161"></a>
-<span class="sourceLineNo">162</span>        abortServer(className, t);<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>  }<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>   * Load a coprocessor implementation into the host<a name="line.168"></a>
-<span class="sourceLineNo">169</span>   * @param path path to implementation jar<a name="line.169"></a>
-<span class="sourceLineNo">170</span>   * @param className the main class name<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   * @param priority chaining priority<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   * @param conf configuration for coprocessor<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   * @throws java.io.IOException Exception<a name="line.173"></a>
-<span class="sourceLineNo">174</span>   */<a name="line.174"></a>
-<span class="sourceLineNo">175</span>  public E load(Path path, String className, int priority,<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      Configuration conf) throws IOException {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    Class&lt;?&gt; implClass = null;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    LOG.debug("Loading coprocessor class " + className + " with path " +<a name="line.178"></a>
-<span class="sourceLineNo">179</span>        path + " and priority " + priority);<a name="line.179"></a>
-<span class="sourceLineNo">180</span><a name="line.180"></a>
-<span class="sourceLineNo">181</span>    ClassLoader cl = null;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    if (path == null) {<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      try {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>        implClass = getClass().getClassLoader().loadClass(className);<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      } catch (ClassNotFoundException e) {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>        throw new IOException("No jar path specified for " + className);<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      }<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    } else {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      cl = CoprocessorClassLoader.getClassLoader(<a name="line.189"></a>
-<span class="sourceLineNo">190</span>        path, getClass().getClassLoader(), pathPrefix, conf);<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      try {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>        implClass = cl.loadClass(className);<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      } catch (ClassNotFoundException e) {<a name="line.193"></a>
-<span class="sourceLineNo">194</span>        throw new IOException("Cannot load external coprocessor class " + className, e);<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      }<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    }<a name="line.196"></a>
-<span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>    //load custom code for coprocessor<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    Thread currentThread = Thread.currentThread();<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    ClassLoader hostClassLoader = currentThread.getContextClassLoader();<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    try{<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      // switch temporarily to the thread classloader for custom CP<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      currentThread.setContextClassLoader(cl);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      E cpInstance = loadInstance(implClass, priority, conf);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      return cpInstance;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    } finally {<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      // restore the fresh (host) classloader<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      currentThread.setContextClassLoader(hostClassLoader);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    }<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  }<a name="line.210"></a>
-<span class="sourceLineNo">211</span><a name="line.211"></a>
-<span class="sourceLineNo">212</span>  /**<a name="line.212"></a>
-<span class="sourceLineNo">213</span>   * @param implClass Implementation class<a name="line.213"></a>
-<span class="sourceLineNo">214</span>   * @param priority priority<a name="line.214"></a>
-<span class="sourceLineNo">215</span>   * @param conf configuration<a name="line.215"></a>
-<span class="sourceLineNo">216</span>   * @throws java.io.IOException Exception<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   */<a name="line.217"></a>
-<span class="sourceLineNo">218</span>  public void load(Class&lt;?&gt; implClass, int priority, Configuration conf)<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      throws IOException {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    E env = loadInstance(implClass, priority, conf);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    coprocessors.add(env);<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>  /**<a name="line.224"></a>
-<span class="sourceLineNo">225</span>   * @param implClass Implementation class<a name="line.225"></a>
-<span class="sourceLineNo">226</span>   * @param priority priority<a name="line.226"></a>
-<span class="sourceLineNo">227</span>   * @param conf configuration<a name="line.227"></a>
-<span class="sourceLineNo">228</span>   * @throws java.io.IOException Exception<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   */<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  public E loadInstance(Class&lt;?&gt; implClass, int priority, Configuration conf)<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      throws IOException {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    if (!Coprocessor.class.isAssignableFrom(implClass)) {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      throw new IOException("Configured class " + implClass.getName() + " must implement "<a name="line.233"></a>
-<span class="sourceLineNo">234</span>          + Coprocessor.class.getName() + " interface ");<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    }<a name="line.235"></a>
-<span class="sourceLineNo">236</span><a name="line.236"></a>
-<span class="sourceLineNo">237</span>    // create the instance<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    Coprocessor impl;<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    Object o = null;<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    try {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      o = implClass.newInstance();<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      impl = (Coprocessor)o;<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    } catch (InstantiationException e) {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      throw new IOException(e);<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    } catch (IllegalAccessException e) {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      throw new IOException(e);<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    }<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    // create the environment<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    E env = createEnvironment(implClass, impl, priority, loadSequence.incrementAndGet(), conf);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    if (env instanceof Environment) {<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      ((Environment)env).startup();<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    }<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    // HBASE-4014: maintain list of loaded coprocessors for later crash analysis<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    // if server (master or regionserver) aborts.<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    coprocessorNames.add(implClass.getName());<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    return env;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>  }<a name="line.257"></a>
-<span class="sourceLineNo">258</span><a name="line.258"></a>
-<span class="sourceLineNo">259</span>  /**<a name="line.259"></a>
-<span class="sourceLineNo">260</span>   * Called when a new Coprocessor class is loaded<a name="line.260"></a>
-<span class="sourceLineNo">261</span>   */<a name="line.261"></a>
-<span class="sourceLineNo">262</span>  public abstract E createEnvironment(Class&lt;?&gt; implClass, Coprocessor instance,<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      int priority, int sequence, Configuration conf);<a name="line.263"></a>
-<span class="sourceLineNo">264</span><a name="line.264"></a>
-<span class="sourceLineNo">265</span>  public void shutdown(CoprocessorEnvironment e) {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    if (e instanceof Environment) {<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      if (LOG.isDebugEnabled()) {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>        LOG.debug("Stop coprocessor " + e.getInstance().getClass().getName());<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      }<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      ((Environment)e).shutdown();<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    } else {<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      LOG.warn("Shutdown called on unknown environment: "+<a name="line.272"></a>
-<span class="sourceLineNo">273</span>          e.getClass().getName());<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    }<a name="line.274"></a>
-<span class="sourceLineNo">275</span>  }<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>  /**<a name="line.277"></a>
-<span class="sourceLineNo">278</span>   * Find a coprocessor implementation by class name<a name="line.278"></a>
-<span class="sourceLineNo">279</span>   * @param className the class name<a name="line.279"></a>
-<span class="sourceLineNo">280</span>   * @return the coprocessor, or null if not found<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   */<a name="line.281"></a>
-<span class="sourceLineNo">282</span>  public Coprocessor findCoprocessor(String className) {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    for (E env: coprocessors) {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      if (env.getInstance().getClass().getName().equals(className) ||<a name="line.284"></a>
-<span class="sourceLineNo">285</span>          env.getInstance().getClass().getSimpleName().equals(className)) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>        return env.getInstance();<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>    return null;<a name="line.289"></a>
-<span class="sourceLineNo">290</span>  }<a name="line.290"></a>
-<span class="sourceLineNo">291</span><a name="line.291"></a>
-<span class="sourceLineNo">292</span>  /**<a name="line.292"></a>
-<span class="sourceLineNo">293</span>   * Find list of coprocessors that extend/implement the given class/interface<a name="line.293"></a>
-<span class="sourceLineNo">294</span>   * @param cls the class/interface to look for<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   * @return the list of coprocessors, or null if not found<a name="line.295"></a>
-<span class="sourceLineNo">296</span>   */<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  public &lt;T extends Coprocessor&gt; List&lt;T&gt; findCoprocessors(Class&lt;T&gt; cls) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    ArrayList&lt;T&gt; ret = new ArrayList&lt;T&gt;();<a name="line.298"></a>
-<span class="sourceLineNo">299</span><a name="line.299"></a>
-<span class="sourceLineNo">300</span>    for (E env: coprocessors) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      Coprocessor cp = env.getInstance();<a name="line.301"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>  public static Set&lt;String&gt; getLoadedCoprocessors() {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    synchronized (coprocessorNames) {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      return new HashSet(coprocessorNames);<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    }<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  }<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>  /**<a name="line.113"></a>
+<span class="sourceLineNo">114</span>   * Used to create a parameter to the HServerLoad constructor so that<a name="line.114"></a>
+<span class="sourceLineNo">115</span>   * HServerLoad can provide information about the coprocessors loaded by this<a name="line.115"></a>
+<span class="sourceLineNo">116</span>   * regionserver.<a name="line.116"></a>
+<span class="sourceLineNo">117</span>   * (HBASE-4070: Improve region server metrics to report loaded coprocessors<a name="line.117"></a>
+<span class="sourceLineNo">118</span>   * to master).<a name="line.118"></a>
+<span class="sourceLineNo">119</span>   */<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  public Set&lt;String&gt; getCoprocessors() {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    Set&lt;String&gt; returnValue = new TreeSet&lt;String&gt;();<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    for (CoprocessorEnvironment e: coprocessors) {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      returnValue.add(e.getInstance().getClass().getSimpleName());<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    }<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    return returnValue;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>  }<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>  /**<a name="line.128"></a>
+<span class="sourceLineNo">129</span>   * Load system coprocessors once only. Read the class names from configuration.<a name="line.129"></a>
+<span class="sourceLineNo">130</span>   * Called by constructor.<a name="line.130"></a>
+<span class="sourceLineNo">131</span>   */<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  protected void loadSystemCoprocessors(Configuration conf, String confKey) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    boolean coprocessorsEnabled = conf.getBoolean(COPROCESSORS_ENABLED_CONF_KEY,<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      DEFAULT_COPROCESSORS_ENABLED);<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    if (!coprocessorsEnabled) {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      return;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    }<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>    Class&lt;?&gt; implClass = null;<a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>    // load default coprocessors from configure file<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    String[] defaultCPClasses = conf.getStrings(confKey);<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    if (defaultCPClasses == null || defaultCPClasses.length == 0)<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      return;<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>    int priority = Coprocessor.PRIORITY_SYSTEM;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    for (String className : defaultCPClasses) {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      className = className.trim();<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      if (findCoprocessor(className) != null) {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>        // If already loaded will just continue<a name="line.150"></a>
+<span class="sourceLineNo">151</span>        LOG.warn("Attempted duplicate loading of " + className + "; skipped");<a name="line.151"></a>
+<span class="sourceLineNo">152</span>        continue;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      }<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      ClassLoader cl = this.getClass().getClassLoader();<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      Thread.currentThread().setContextClassLoader(cl);<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      try {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>        implClass = cl.loadClass(className);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>        // Add coprocessors as we go to guard against case where a coprocessor is specified twice<a name="line.158"></a>
+<span class="sourceLineNo">159</span>        // in the configuration<a name="line.159"></a>
+<span class="sourceLineNo">160</span>        this.coprocessors.add(loadInstance(implClass, Coprocessor.PRIORITY_SYSTEM, conf));<a name="line.160"></a>
+<span class="sourceLineNo">161</span>        LOG.info("System coprocessor " + className + " was loaded " +<a name="line.161"></a>
+<span class="sourceLineNo">162</span>            "successfully with priority (" + priority++ + ").");<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      } catch (Throwable t) {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        // We always abort if system coprocessors cannot be loaded<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        abortServer(className, t);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      }<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    }<a name="line.167"></a>
+<span class="sourceLineNo">168</span>  }<a name="line.168"></a>
+<span class="sourceLineNo">169</span><a name="line.169"></a>
+<span class="sourceLineNo">170</span>  /**<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   * Load a coprocessor implementation into the host<a name="line.171"></a>
+<span class="sourceLineNo">172</span>   * @param path path to implementation jar<a name="line.172"></a>
+<span class="sourceLineNo">173</span>   * @param className the main class name<a name="line.173"></a>
+<span class="sourceLineNo">174</span>   * @param priority chaining priority<a name="line.174"></a>
+<span class="sourceLineNo">175</span>   * @param conf configuration for coprocessor<a name="line.175"></a>
+<span class="sourceLineNo">176</span>   * @throws java.io.IOException Exception<a name="line.176"></a>
+<span class="sourceLineNo">177</span>   */<a name="line.177"></a>
+<span class="sourceLineNo">178</span>  public E load(Path path, String className, int priority,<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      Configuration conf) throws IOException {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    Class&lt;?&gt; implClass = null;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    LOG.debug("Loading coprocessor class " + className + " with path " +<a name="line.181"></a>
+<span class="sourceLineNo">182</span>        path + " and priority " + priority);<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span>    ClassLoader cl = null;<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    if (path == null) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      try {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>        implClass = getClass().getClassLoader().loadClass(className);<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      } catch (ClassNotFoundException e) {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>        throw new IOException("No jar path specified for " + className);<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      }<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    } else {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      cl = CoprocessorClassLoader.getClassLoader(<a name="line.192"></a>
+<span class="sourceLineNo">193</span>        path, getClass().getClassLoader(), pathPrefix, conf);<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      try {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>        implClass = cl.loadClass(className);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      } catch (ClassNotFoundException e) {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>        throw new IOException("Cannot load external coprocessor class " + className, e);<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><a name="line.200"></a>
+<span class="sourceLineNo">201</span>    //load custom code for coprocessor<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    Thread currentThread = Thread.currentThread();<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    ClassLoader hostClassLoader = currentThread.getContextClassLoader();<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    try{<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      // switch temporarily to the thread classloader for custom CP<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      currentThread.setContextClassLoader(cl);<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      E cpInstance = loadInstance(implClass, priority, conf);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      return cpInstance;<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    } finally {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      // restore the fresh (host) classloader<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      currentThread.setContextClassLoader(hostClassLoader);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    }<a name="line.212"></a>
+<span class="sourceLineNo">213</span>  }<a name="line.213"></a>
+<span class="sourceLineNo">214</span><a name="line.214"></a>
+<span class="sourceLineNo">215</span>  /**<a name="line.215"></a>
+<span class="sourceLineNo">216</span>   * @param implClass Implementation class<a name="line.216"></a>
+<span class="sourceLineNo">217</span>   * @param priority priority<a name="line.217"></a>
+<span class="sourceLineNo">218</span>   * @param conf configuration<a name="line.218"></a>
+<span class="sourceLineNo">219</span>   * @throws java.io.IOException Exception<a name="line.219"></a>
+<span class="sourceLineNo">220</span>   */<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  public void load(Class&lt;?&gt; implClass, int priority, Configuration conf)<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      throws IOException {<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    E env = loadInstance(implClass, priority, conf);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    coprocessors.add(env);<a name="line.224"></a>
+<span class="sourceLineNo">225</span>  }<a name="line.225"></a>
+<span class="sourceLineNo">226</span><a name="line.226"></a>
+<span class="sourceLineNo">227</span>  /**<a name="line.227"></a>
+<span class="sourceLineNo">228</span>   * @param implClass Implementation class<a name="line.228"></a>
+<span class="sourceLineNo">229</span>   * @param priority priority<a name="line.229"></a>
+<span class="sourceLineNo">230</span>   * @param conf configuration<a name="line.230"></a>
+<span class="sourceLineNo">231</span>   * @throws java.io.IOException Exception<a name="line.231"></a>
+<span class="sourceLineNo">232</span>   */<a name="line.232"></a>
+<span class="sourceLineNo">233</span>  public E loadInstance(Class&lt;?&gt; implClass, int priority, Configuration conf)<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      throws IOException {<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    if (!Coprocessor.class.isAssignableFrom(implClass)) {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      throw new IOException("Configured class " + implClass.getName() + " must implement "<a name="line.236"></a>
+<span class="sourceLineNo">237</span>          + Coprocessor.class.getName() + " interface ");<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>    // create the instance<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    Coprocessor impl;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    Object o = null;<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    try {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      o = implClass.newInstance();<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      impl = (Coprocessor)o;<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    } catch (InstantiationException e) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      throw new IOException(e);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    } catch (IllegalAccessException e) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      throw new IOException(e);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    }<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    // create the environment<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    E env = createEnvironment(implClass, impl, priority, loadSequence.incrementAndGet(), conf);<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    if (env instanceof Environment) {<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      ((Environment)env).startup();<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    // HBASE-4014: maintain list of loaded coprocessors for later crash analysis<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    // if server (master or regionserver) aborts.<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    coprocessorNames.add(implClass.getName());<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    return env;<a name="line.259"></a>
+<span class="sourceLineNo">260</span>  }<a name="line.260"></a>
+<span class="sourceLineNo">261</span><a name="line.261"></a>
+<span class="sourceLineNo">262</span>  /**<a name="line.262"></a>
+<span class="sourceLineNo">263</span>   * Called when a new Coprocessor class is loaded<a name="line.263"></a>
+<span class="sourceLineNo">264</span>   */<a name="line.264"></a>
+<span class="sourceLineNo">265</span>  public abstract E createEnvironment(Class&lt;?&gt; implClass, Coprocessor instance,<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      int priority, int sequence, Configuration conf);<a name="line.266"></a>
+<span class="sourceLineNo">267</span><a name="line.267"></a>
+<span class="sourceLineNo">268</span>  public void shutdown(CoprocessorEnvironment e) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    if (e instanceof Environment) {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      if (LOG.isDebugEnabled()) {<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        LOG.debug("Stop coprocessor " + e.getInstance().getClass().getName());<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      }<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      ((Environment)e).shutdown();<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    } else {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      LOG.warn("Shutdown called on unknown environment: "+<a name="line.275"></a>
+<span class="sourceLineNo">276</span>          e.getClass().getName());<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    }<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  }<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>  /**<a name="line.280"></a>
+<span class="sourceLineNo">281</span>   * Find a coprocessor implementation by class name<a name="line.281"></a>
+<span class="sourceLineNo">282</span>   * @param className the class name<a name="line.282"></a>
+<span class="sourceLineNo">283</span>   * @return the coprocessor, or null if not found<a name="line.283"></a>
+<span class="sourceLineNo">284</span>   */<a name="line.284"></a>
+<span class="sourceLineNo">285</span>  public Coprocessor findCoprocessor(String className) {<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    for (E env: coprocessors) {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      if (env.getInstance().getClass().getName().equals(className) ||<a name="line.287"></a>
+<span class="sourceLineNo">288</span>          env.getInstance().getClass().getSimpleName().equals(className)) {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>        return env.getInstance();<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      }<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    }<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    return null;<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  }<a name="line.293"></a>
+<span class="sourceLineNo">294</span><a name="line.294"></a>
+<span class="sourceLineNo">295</span>  /**<a name="line.295"></a>
+<span class="sourceLineNo">296</span>   * Find list of coprocessors that extend/implement the given class/interface<a name="line.296"></a>
+<span class="sourceLineNo">297</span>   * @param cls the class/interface to look for<a name="line.297"></a>
+<span class="sourceLineNo">298</span>   * @return the list of coprocessors, or null if not found<a name="line.298"></a>
+<span class="sourceLineNo">299</span>   */<a name="line.299"></a>
+<span class="sourceLineNo">300</span>  public &lt;T extends Coprocessor&gt; List&lt;T&gt; findCoprocessors(Class&lt;T&gt; cls) {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    ArrayList&lt;T&gt; ret = new ArrayList&lt;T&gt;();<a name="line.301"></a>
 <span class="sourceLineNo">302</span><a name="line.302"></a>
-<span class="sourceLineNo">303</span>      if(cp != null) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        if (cls.isAssignableFrom(cp.getClass())) {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>          ret.add((T)cp);<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>    return ret;<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  }<a name="line.310"></a>
-<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span>  /**<a name="line.312"></a>
-<span class="sourceLineNo">313</span>   * Find a coprocessor environment by class name<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   * @param className the class name<a name="line.314"></a>
-<span class="sourceLineNo">315</span>   * @return the coprocessor, or null if not found<a name="line.315"></a>
-<span class="sourceLineNo">316</span>   */<a name="line.316"></a>
-<span class="sourceLineNo">317</span>  public CoprocessorEnvironment findCoprocessorEnvironment(String className) {<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    for (E env: coprocessors) {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      if (env.getInstance().getClass().getName().equals(className) ||<a name="line.319"></a>
-<span class="sourceLineNo">320</span>          env.getInstance().getClass().getSimpleName().equals(className)) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>        return env;<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      }<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    }<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    return null;<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  }<a name="line.325"></a>
-<span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>  /**<a name="line.327"></a>
-<span class="sourceLineNo">328</span>   * Retrieves the set of classloaders used to instantiate Coprocessor classes defined in external<a name="line.328"></a>
-<span class="sourceLineNo">329</span>   * jar files.<a name="line.329"></a>
-<span class="sourceLineNo">330</span>   * @return A set of ClassLoader instances<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   */<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  Set&lt;ClassLoader&gt; getExternalClassLoaders() {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    Set&lt;ClassLoader&gt; externalClassLoaders = new HashSet&lt;ClassLoader&gt;();<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    final ClassLoader systemClassLoader = this.getClass().getClassLoader();<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    for (E env : coprocessors) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>      ClassLoader cl = env.getInstance().getClass().getClassLoader();<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      if (cl != systemClassLoader){<a name="line.337"></a>
-<span class="sourceLineNo">338</span>        //do not include system classloader<a name="line.338"></a>
-<span class="sourceLineNo">339</span>        externalClassLoaders.add(cl);<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      }<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    }<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    return externalClassLoaders;<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  }<a name="line.343"></a>
-<span class="sourceLineNo">344</span><a name="line.344"></a>
-<span class="sourceLineNo">345</span>  /**<a name="line.345"></a>
-<span class="sourceLineNo">346</span>   * Environment priority comparator.<a name="line.346"></a>
-<span class="sourceLineNo">347</span>   * Coprocessors are chained in sorted order.<a name="line.347"></a>
-<span class="sourceLineNo">348</span>   */<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  static class EnvironmentPriorityComparator<a name="line.349"></a>
-<span class="sourceLineNo">350</span>      implements Comparator&lt;CoprocessorEnvironment&gt; {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    public int compare(final CoprocessorEnvironment env1,<a name="line.351"></a>
-<span class="sourceLineNo">352</span>        final CoprocessorEnvironment env2) {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      if (env1.getPriority() &lt; env2.getPriority()) {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>        return -1;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      } else if (env1.getPriority() &gt; env2.getPriority()) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>        return 1;<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      }<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      if (env1.getLoadSequence() &lt; env2.getLoadSequence()) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>        return -1;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      } else if (env1.getLoadSequence() &gt; env2.getLoadSequence()) {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>        return 1;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      }<a name="line.362"></a>
-<span class="sourceLineNo">363</span>      return 0;<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    }<a name="line.364"></a>
-<span class="sourceLineNo">365</span>  }<a name="line.365"></a>
-<span class="sourceLineNo">366</span><a name="line.366"></a>
-<span class="sourceLineNo">367</span>  /**<a name="line.367"></a>
-<span class="sourceLineNo">368</span>   * Encapsulation of the environment of each coprocessor<a name="line.368"></a>
-<span class="sourceLineNo">369</span>   */<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  public static class Environment implements CoprocessorEnvironment {<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span>    /** The coprocessor */<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    public Coprocessor impl;<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    /** Chaining priority */<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    protected int priority = Coprocessor.PRIORITY_USER;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    /** Current coprocessor state */<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    Coprocessor.State state = Coprocessor.State.UNINSTALLED;<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    /** Accounting for tables opened by the coprocessor */<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    protected List&lt;Table&gt; openTables =<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      Collections.synchronizedList(new ArrayList&lt;Table&gt;());<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    private int seq;<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    private Configuration conf;<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    private ClassLoader classLoader;<a name="line.383"></a>
-<span class="sourceLineNo">384</span><a name="line.384"></a>
-<span class="sourceLineNo">385</span>    /**<a name="line.385"></a>
-<span class="sourceLineNo">386</span>     * Constructor<a name="line.386"></a>
-<span class="sourceLineNo">387</span>     * @param impl the coprocessor instance<a name="line.387"></a>
-<span class="sourceLineNo">388</span>     * @param priority chaining priority<a name="line.388"></a>
-<span class="sourceLineNo">389</span>     */<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    public Environment(final Coprocessor impl, final int priority,<a name="line.390"></a>
-<span class="sourceLineNo">391</span>        final int seq, final Configuration conf) {<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      this.impl = impl;<a name="line.392"></a>
-<span class="sourceLineNo">393</span>      this.classLoader = impl.getClass().getClassLoader();<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      this.priority = priority;<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      this.state = Coprocessor.State.INSTALLED;<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      this.seq = seq;<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      this.conf = conf;<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    }<a name="line.398"></a>
-<span class="sourceLineNo">399</span><a name="line.399"></a>
-<span class="sourceLineNo">400</span>    /** Initialize the environment */<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    public void startup() throws IOException {<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      if (state == Coprocessor.State.INSTALLED ||<a name="line.402"></a>
-<span class="sourceLineNo">403</span>          state == Coprocessor.State.STOPPED) {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>        state = Coprocessor.State.STARTING;<a name="line.404"></a>
-<span class="sourceLineNo">405</span>        Thread currentThread = Thread.currentThread();<a name="line.405"></a>
-<span class="sourceLineNo">406</span>        ClassLoader hostClassLoader = currentThread.getContextClassLoader();<a name="line.406"></a>
-<span class="sourceLineNo">407</span>        try {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>          currentThread.setContextClassLoader(this.getClassLoader());<a name="line.408"></a>
-<span class="sourceLineNo">409</span>          impl.start(this);<a name="line.409"></a>
-<span class="sourceLineNo">410</span>          state = Coprocessor.State.ACTIVE;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>        } finally {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>          currentThread.setContextClassLoader(hostClassLoader);<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        }<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      } else {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>        LOG.warn("Not starting coprocessor "+impl.getClass().getName()+<a name="line.415"></a>
-<span class="sourceLineNo">416</span>            " because not inactive (state="+state.toString()+")");<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      }<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    }<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>    /** Clean up the environment */<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    protected void shutdown() {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      if (state == Coprocessor.State.ACTIVE) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>        state = Coprocessor.State.STOPPING;<a name="line.423"></a>
-<span class="sourceLineNo">424</span>        Thread currentThread = Thread.currentThread();<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        ClassLoader hostClassLoader = currentThread.getContextClassLoader();<a name="line.425"></a>
-<span class="sourceLineNo">426</span>        try {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>          currentThread.setContextClassLoader(this.getClassLoader());<a name="line.427"></a>
-<span class="sourceLineNo">428</span>          impl.stop(this);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>          state = Coprocessor.State.STOPPED;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        } catch (IOException ioe) {<a name="line.430"></a>
-<span class="sourceLineNo">431</span>          LOG.error("Error stopping coprocessor "+impl.getClass().getName(), ioe);<a name="line.431"></a>
-<span class="sourceLineNo">432</span>        } finally {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          currentThread.setContextClassLoader(hostClassLoader);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>        }<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      } else {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>        LOG.warn("Not stopping coprocessor "+impl.getClass().getName()+<a name="line.436"></a>
-<span class="sourceLineNo">437</span>            " because not active (state="+state.toString()+")");<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      }<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      // clean up any table references<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      for (Table table: openTables) {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>        try {<a name="line.441"></a>
-<span class="sourceLineNo">442</span>          ((HTableWrapper)table).internalClose();<a name="line.442"></a>
-<span class="sourceLineNo">443</span>        } catch (IOException e) {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>          // nothing can be done here<a name="line.444"></a>
-<span class="sourceLineNo">445</span>          LOG.warn("Failed to close " +<a name="line.445"></a>
-<span class="sourceLineNo">446</span>              table.getName(), e);<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        }<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      }<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    }<a name="line.449"></a>
-<span class="sourceLineNo">450</span><a name="line.450"></a>
-<span class="sourceLineNo">451</span>    @Override<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    public Coprocessor getInstance() {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      return impl;<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
-<span class="sourceLineNo">455</span><a name="line.455"></a>
-<span class="sourceLineNo">456</span>    @Override<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    public ClassLoader getClassLoader() {<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      return classLoader;<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    }<a name="line.459"></a>
-<span class="sourceLineNo">460</span><a name="line.460"></a>
-<span class="sourceLineNo">461</span>    @Override<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    public int getPriority() {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      return priority;<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    }<a name="line.464"></a>
-<span class="sourceLineNo">465</span><a name="line.465"></a>
-<span class="sourceLineNo">466</span>    @Override<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    public int getLoadSequence() {<a name="line.467"></a>
-<span class="sourceLineNo">468</span>      return seq;<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    }<a name="line.469"></a>
-<span class="sourceLineNo">470</span><a name="line.470"></a>
-<span class="sourceLineNo">471</span>    /** @return the coprocessor environment version */<a name="line.471"></a>
+<span class="sourceLineNo">303</span>    for (E env: coprocessors) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      Coprocessor cp = env.getInstance();<a name="line.304"></a>
+<span class="sourceLineNo">305</span><a name="line.305"></a>
+<span class="sourceLineNo">306</span>      if(cp != null) {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>        if (cls.isAssignableFrom(cp.getClass())) {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>          ret.add((T)cp);<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>    return ret;<a name="line.312"></a>
+<span class="sourceLineNo">313</span>  }<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>  /**<a name="line.315"></a>
+<span class="sourceLineNo">316</span>   * Find a coprocessor environment by class name<a name="line.316"></a>
+<span class="sourceLineNo">317</span>   * @param className the class name<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   * @return the coprocessor, or null if not found<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   */<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  public CoprocessorEnvironment findCoprocessorEnvironment(String className) {<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    for (E env: coprocessors) {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      if (env.getInstance().getClass().getName().equals(className) ||<a name="line.322"></a>
+<span class="sourceLineNo">323</span>          env.getInstance().getClass().getSimpleName().equals(className)) {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>        return env;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      }<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    }<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    return null;<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  }<a name="line.328"></a>
+<span class="sourceLineNo">329</span><a name="line.329"></a>
+<span class="sourceLineNo">330</span>  /**<a name="line.330"></a>
+<span class="sourceLineNo">331</span>   * Retrieves the set of classloaders used to instantiate Coprocessor classes defined in external<a name="line.331"></a>
+<span class="sourceLineNo">332</span>   * jar files.<a name="line.332"></a>
+<span class="sourceLineNo">333</span>   * @return A set of ClassLoader instances<a name="line.333"></a>
+<span class="sourceLineNo">334</span>   */<a name="line.334"></a>
+<span class="sourceLineNo">335</span>  Set&lt;ClassLoader&gt; getExternalClassLoaders() {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    Set&lt;ClassLoader&gt; externalClassLoaders = new HashSet&lt;ClassLoader&gt;();<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    final ClassLoader systemClassLoader = this.getClass().getClassLoader();<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    for (E env : coprocessors) {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      ClassLoader cl = env.getInstance().getClass().getClassLoader();<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      if (cl != systemClassLoader){<a name="line.340"></a>
+<span class="sourceLineNo">341</span>        //do not include system classloader<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        externalClassLoaders.add(cl);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>      }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    }<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    return externalClassLoaders;<a name="line.345"></a>
+<span class="sourceLineNo">346</span>  }<a name="line.346"></a>
+<span class="sourceLineNo">347</span><a name="line.347"></a>
+<span class="sourceLineNo">348</span>  /**<a name="line.348"></a>
+<span class="sourceLineNo">349</span>   * Environment priority comparator.<a name="line.349"></a>
+<span class="sourceLineNo">350</span>   * Coprocessors are chained in sorted order.<a name="line.350"></a>
+<span class="sourceLineNo">351</span>   */<a name="line.351"></a>
+<span class="sourceLineNo">352</span>  static class EnvironmentPriorityComparator<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      implements Comparator&lt;CoprocessorEnvironment&gt; {<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    @Override<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    public int compare(final CoprocessorEnvironment env1,<a name="line.355"></a>
+<span class="sourceLineNo">356</span>        final CoprocessorEnvironment env2) {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>      if (env1.getPriority() &lt; env2.getPriority()) {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>        return -1;<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      } else if (env1.getPriority() &gt; env2.getPriority()) {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>        return 1;<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      }<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      if (env1.getLoadSequence() &lt; env2.getLoadSequence()) {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>        return -1;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      } else if (env1.getLoadSequence() &gt; env2.getLoadSequence()) {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>        return 1;<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      }<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      return 0;<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    }<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  }<a name="line.369"></a>
+<span class="sourceLineNo">370</span><a name="line.370"></a>
+<span class="sourceLineNo">371</span>  /**<a name="line.371"></a>
+<span class="sourceLineNo">372</span>   * Encapsulation of the environment of each coprocessor<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   */<a name="line.373"></a>
+<span class="sourceLineNo">374</span>  public static class Environment implements CoprocessorEnvironment {<a name="line.374"></a>
+<span class="sourceLineNo">375</span><a name="line.375"></a>
+<span class="sourceLineNo">376</span>    /** The coprocessor */<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    public Coprocessor impl;<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    /** Chaining priority */<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    protected int priority = Coprocessor.PRIORITY_USER;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    /** Current coprocessor state */<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    Coprocessor.State state = Coprocessor.State.UNINSTALLED;<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    /** Accounting for tables opened by the coprocessor */<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    protected List&lt;Table&gt; openTables =<a name="line.383"></a>
+<span class="sourceLineNo">384</span>      Collections.synchronizedList(new ArrayList&lt;Table&gt;());<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    private int seq;<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    private Configuration conf;<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    private ClassLoader classLoader;<a name="line.387"></a>
+<span class="sourceLineNo">388</span><a name="line.388"></a>
+<span class="sourceLineNo">389</span>    /**<a name="line.389"></a>
+<span class="sourceLineNo">390</span>     * Constructor<a name="line.390"></a>
+<span class="sourceLineNo">391</span>     * @param impl the coprocessor instance<a name="line.391"></a>
+<span class="sourceLineNo">392</span>     * @param priority chaining priority<a name="line.392"></a>
+<span class="sourceLineNo">393</span>     */<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    public Environment(final Coprocessor impl, final int priority,<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        final int seq, final Configuration conf) {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      this.impl = impl;<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      this.classLoader = impl.getClass().getClassLoader();<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      this.priority = priority;<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      this.state = Coprocessor.State.INSTALLED;<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      this.seq = seq;<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      this.conf = conf;<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    }<a name="line.402"></a>
+<span class="sourceLineNo">403</span><a name="line.403"></a>
+<span class="sourceLineNo">404</span>    /** Initialize the environment */<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    public void startup() throws IOException {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      if (state == Coprocessor.State.INSTALLED ||<a name="line.406"></a>
+<span class="sourceLineNo">407</span>          state == Coprocessor.State.STOPPED) {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>        state = Coprocessor.State.STARTING;<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        Thread currentThread = Thread.currentThread();<a name="line.409"></a>
+<span class="sourceLineNo">410</span>        ClassLoader hostClassLoader = currentThread.getContextClassLoader();<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        try {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>          currentThread.setContextClassLoader(this.getClassLoader());<a name="line.412"></a>
+<span class="sourceLineNo">413</span>          impl.start(this);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>          state = Coprocessor.State.ACTIVE;<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        } finally {<a name="line.415"></a>
+<span class="sourceLineNo">416</span>          currentThread.setContextClassLoader(hostClassLoader);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        }<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      } else {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>        LOG.warn("Not starting coprocessor "+impl.getClass().getName()+<a name="line.419"></a>
+<span class="sourceLineNo">420</span>            " because not inactive (state="+state.toString()+")");<a name="line.420"></a>
+<span class="sourceLineNo">421</span>      }<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    }<a name="line.422"></a>
+<span class="sourceLineNo">423</span><a name="line.423"></a>
+<span class="sourceLineNo">424</span>    /** Clean up the environment */<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    protected void shutdown() {<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      if (state == Coprocessor.State.ACTIVE) {<a name="line.426"></a>
+<span class="sourceLineNo">427</span>        state = Coprocessor.State.STOPPING;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>        Thread currentThread = Thread.currentThread();<a name="line.428"></a>
+<span class="sourceLineNo">429</span>        ClassLoader hostClassLoader = currentThread.getContextClassLoader();<a name="line.429"></a>
+<span class="sourceLineNo">430</span>        try {<a name="line.430"></a>
+<span class="sourceLineNo">431</span>          currentThread.setContextClassLoader(this.getClassLoader());<a name="line.431"></a>
+<span class="sourceLineNo">432</span>          impl.stop(this);<a name="line.432"></a>
+<span class="sourceLineNo">433</span>          state = Coprocessor.State.STOPPED;<a name="line.433"></a>
+<span class="sourceLineNo">434</span>        } catch (IOException ioe) {<a name="line.434"></a>
+<span class="sourceLineNo">435</span>          LOG.error("Error stopping coprocessor "+impl.getClass().getName(), ioe);<a name="line.435"></a>
+<span class="sourceLineNo">436</span>        } finally {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>          currentThread.setContextClassLoader(hostClassLoader);<a name="line.437"></a>
+<span class="sourceLineNo">438</span>        }<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      } else {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>        LOG.warn("Not stopping coprocessor "+impl.getClass().getName()+<a name="line.440"></a>
+<span class="sourceLineNo">441</span>            " because not active (state="+state.toString()+")");<a name="line.441"></a>
+<span class="sourceLineNo">442</span>      }<a name="line.442"></a>
+<span class="sourceLineNo">443</span>      synchronized (openTables) {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>        // clean up any table references<a name="line.444"></a>
+<span class="sourceLineNo">445</span>        for (Table table: openTables) {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>          try {<a name="line.446"></a>
+<span class="sourceLineNo">447</span>            ((HTableWrapper)table).internalClose();<a name="line.447"></a>
+<span class="sourceLineNo">448</span>          } catch (IOException e) {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>            // nothing can be done here<a name="line.449"></a>
+<span class="sourceLineNo">450</span>            LOG.warn("Failed to close " +<a name="line.450"></a>
+<span class="sourceLineNo">451</span>                table.getName(), e);<a name="line.451"></a>
+<span class="sourceLineNo">452</span>          }<a name="line.452"></a>
+<span class="sourceLineNo">453</span>        }<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      }<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    }<a name="line.455"></a>
+<span class="sourceLineNo">456</span><a name="line.456"></a>
+<span class="sourceLineNo">457</span>    @Override<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    public Coprocessor getInstance() {<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      return impl;<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    }<a name="line.460"></a>
+<span class="sourceLineNo">461</span><a name="line.461"></a>
+<span class="sourceLineNo">462</span>    @Override<a name="line.462"></a>
+<span class="sourceLineNo">463</span>    public ClassLoader getClassLoader() {<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      return classLoader;<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    }<a name="line.465"></a>
+<span class="sourceLineNo">466</span><a name="line.466"></a>
+<span class="sourceLineNo">467</span>    @Override<a name="line.467"></a>
+<span class="sourceLineNo">468</span>    public int getPriority() {<a name="line.468"></a>
+<span class="sourceLineNo">469</span>      return priority;<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    }<a name="line.470"></a>
+<span class="sourceLineNo">471</span><a name="line.471"></a>
 <span class="sourceLineNo">472</span>    @Override<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    public int getVersion() {<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      return Coprocessor.VERSION;<a name="line.474"></a>
+<span class="sourceLineNo">473</span>    public int getLoadSequence() {<a name="line.473"></a>
+<span class="sourceLineNo">474</span>      return seq;<a name="line.474"></a>
 <span class="sourceLineNo">475</span>    }<a name="line.475"></a>
 <span class="sourceLineNo">476</span><a name="line.476"></a>
-<span class="sourceLineNo">477</span>    /** @return the HBase release */<a name="line.477"></a>
+<span class="sourceLineNo">477</span>    /** @return the coprocessor environment version */<a name="line.477"></a>
 <span class="sourceLineNo">478</span>    @Override<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    public String getHBaseVersion() {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>      return VersionInfo.getVersion();<a name="line.480"></a>
+<span class="sourceLineNo">479</span>    public int getVersion() {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>      return Coprocessor.VERSION;<a name="line.480"></a>
 <span class="sourceLineNo">481</span>    }<a name="line.481"></a>
 <span class="sourceLineNo">482</span><a name="line.482"></a>
-<span class="sourceLineNo">483</span>    @Override<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    public Configuration getConfiguration() {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      return conf;<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    }<a name="line.486"></a>
-<span class="sourceLineNo">487</span><a name="line.487"></a>
-<span class="sourceLineNo">488</span>    /**<a name="line.488"></a>
-<span class="sourceLineNo">489</span>     * Open a table from within the Coprocessor environment<a name="line.489"></a>
-<span class="sourceLineNo">490</span>     * @param tableName the table name<a name="line.490"></a>
-<span class="sourceLineNo">491</span>     * @return an interface for manipulating the table<a name="line.491"></a>
-<span class="sourceLineNo">492</span>     * @exception java.io.IOException Exception<a name="line.492"></a>
-<span class="sourceLineNo">493</span>     */<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    @Override<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    public Table getTable(TableName tableName) throws IOException {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>      return this.getTable(tableName, HTable.getDefaultExecutor(getConfiguration()));<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    }<a name="line.497"></a>
-<span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>    /**<a name="line.499"></a>
-<span class="sourceLineNo">500</span>     * Open a table from within the Coprocessor environment<a name="line.500"></a>
-<span class="sourceLineNo">501</span>     * @param tableName the table name<a name="line.501"></a>
-<span class="sourceLineNo">502</span>     * @return an interface for manipulating the table<a name="line.502"></a>
-<span class="sourceLineNo">503</span>     * @exception java.io.IOException Exception<a name="line.503"></a>
-<span class="sourceLineNo">504</span>     */<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    @Override<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    public Table getTable(TableName tableName, ExecutorService pool) throws IOException {<a name="line.506"></a>
-<span class="sourceLineNo">507</span>      return HTableWrapper.createWrapper(openTables, tableName, this, pool);<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    }<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  }<a name="line.509"></a>
-<span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>  protected void abortServer(final CoprocessorEnvironment environment, final Throwable e) {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    abortServer(environment.getInstance().getClass().getName(), e);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>  }<a name="line.513"></a>
-<span class="sourceLineNo">514</span><a name="line.514"></a>
-<span class="sourceLineNo">515</span>  protected void abortServer(final String coprocessorName, final Throwable e) {<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    String message = "The coprocessor " + coprocessorName + " threw " + e.toString();<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    LOG.error(message, e);<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    if (abortable != null) {<a name="line.518"></a>
-<span class="sourceLineNo">519</span>      abortable.abort(message, e);<a name="line.519"></a>
-<span class="sourceLineNo">520</span>    } else {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>      LOG.warn("No available Abortable, process was not aborted");<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    }<a name="line.522"></a>
-<span class="sourceLineNo">523</span>  }<a name="line.523"></a>
-<span class="sourceLineNo">524</span><a name="line.524"></a>
-<span class="sourceLineNo">525</span>  /**<a name="line.525"></a>
-<span class="sourceLineNo">526</span>   * This is used by coprocessor hooks which are declared to throw IOException<a name="line.526"></a>
-<span class="sourceLineNo">527</span>   * (or its subtypes). For such hooks, we should handle throwable objects<a name="line.527"></a>
-<span class="sourceLineNo">528</span>   * depending on the Throwable's type. Those which are instances of<a name="line.528"></a>
-<span class="sourceLineNo">529</span>   * IOException should be passed on to the client. This is in conformance with<a name="line.529"></a>
-<span class="sourceLineNo">530</span>   * the HBase idiom regarding IOException: that it represents a circumstance<a name="line.530"></a>
-<span class="sourceLineNo">531</span>   * that should be passed along to the client for its own handling. For<a name="line.531"></a>
-<span class="sourceLineNo">532</span>   * example, a coprocessor that implements access controls would throw a<a name="line.532"></a>
-<span class="sourceLineNo">533</span>   * subclass of IOException, such as AccessDeniedException, in its preGet()<a name="line.533"></a>
-<span class="sourceLineNo">534</span>   * method to prevent an unauthorized client's performing a Get on a particular<a name="line.534"></a>
-<span class="sourceLineNo">535</span>   * table.<a name="line.535"></a>
-<span class="sourceLineNo">536</span>   * @param env Coprocessor Environment<a name="line.536"></a>
-<span class="sourceLineNo">537</span>   * @param e Throwable object thrown by coprocessor.<a name="line.537"></a>
-<span class="sourceLineNo">538</span>   * @exception IOException Exception<a name="line.538"></a>
-<span class="sourceLineNo">539</span>   */<a name="line.539"></a>
-<span class="sourceLineNo">540</span>  protected void handleCoprocessorThrowable(final CoprocessorEnvironment env, final Throwable e)<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      throws IOException {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    if (e instanceof IOException) {<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      throw (IOException)e;<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    }<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    // If we got here, e is not an IOException. A loaded coprocessor has a<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    // fatal bug, and the server (master or regionserver) should remove the<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    // faulty coprocessor from its set of active coprocessors. Setting<a name="line.547"></a>
-<span class="sourceLineNo">548</span>    // 'hbase.coprocessor.abortonerror' to true will cause abortServer(),<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    // which may be useful in development and testing environments where<a name="line.549"></a>
-<span class="sourceLineNo">550</span>    // 'failing fast' for error analysis is desired.<a name="line.550"></a>
-<span class="sourceLineNo">551</span>    if (env.getConfiguration().getBoolean(ABORT_ON_ERROR_KEY, DEFAULT_ABORT_ON_ERROR)) {<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      // server is configured to abort.<a name="line.552"></a>
-<span class="sourceLineNo">553</span>      abortServer(env, e);<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    } else {<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      LOG.error("Removing coprocessor '" + env.toString() + "' from " +<a name="line.555"></a>
-<span class="sourceLineNo">556</span>          "environment because it threw:  " + e,e);<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      coprocessors.remove(env);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      try {<a name="line.558"></a>
-<span class="sourceLineNo">559</span>        shutdown(env);<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      } catch (Exception x) {<a name="line.560"></a>
-<span class="sourceLineNo">561</span>        LOG.error("Uncaught exception when shutting down coprocessor '"<a name="line.561"></a>
-<span class="sourceLineNo">562</span>            + env.toString() + "'", x);<a name="line.562"></a>
-<span class="sourceLineNo">563</span>      }<a name="line.563"></a>
-<span class="sourceLineNo">564</span>      throw new DoNotRetryIOException("Coprocessor: '" + env.toString() +<a name="line.564"></a>
-<span class="sourceLineNo">565</span>          "' threw: '" + e + "' and has been removed from the active " +<a name="line.565"></a>
-<span class="sourceLineNo">566</span>          "coprocessor set.", e);<a name="line.566"></a>
-<span class="sourceLineNo">567</span>    }<a name="line.567"></a>
-<span class="sourceLineNo">568</span>  }<a name="line.568"></a>
-<span class="sourceLineNo">569</span><a name="line.569"></a>
-<span class="sourceLineNo">570</span>  /**<a name="line.570"></a>
-<span class="sourceLineNo">571</span>   * Used to gracefully handle fallback to deprecated methods when we<a name="line.571"></a>
-<span class="sourceLineNo">572</span>   * evolve coprocessor APIs.<a name="line.572"></a>
-<span class="sourceLineNo">573</span>   *<a name="line.573"></a>
-<span class="sourceLineNo">574</span>   * When a particular Coprocessor API is updated to change methods, hosts can support fallback<a name="line.574"></a>
-<span class="sourceLineNo">575</span>   * to the deprecated API by using this method to determine if an instance implements the new API.<a name="line.575"></a>
-<span class="sourceLineNo">576</span>   * In the event that said support is partial, then in the face of a runtime issue that prevents<a name="line.576"></a>
-<span class="sourceLineNo">577</span>   * proper operation {@link #legacyWarning(Class, String)} should be used to let operators know.<a name="line.577"></a>
-<span class="sourceLineNo">578</span>   *<a name="line.578"></a>
-<span class="sourceLineNo">579</span>   * For examples of this in action, see the implementation of<a name="line.579"></a>
-<span class="sourceLineNo">580</span>   * &lt;ul&gt;<a name="line.580"></a>
-<span class="sourceLineNo">581</span>   *   &lt;li&gt;{@link org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost}<a name="line.581"></a>
-<span class="sourceLineNo">582</span>   *   &lt;li&gt;{@link org.apache.hadoop.hbase.regionserver.wal.WALCoprocessorHost}<a name="line.582"></a>
-<span class="sourceLineNo">583</span>   * &lt;/ul&gt;<a name="line.583"></a>
+<span class="sourceLineNo">483</span>    /** @return the HBase release */<a name="line.483"></a>
+<span class="sourceLineNo">484</span>    @Override<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    public String getHBaseVersion() {<a name="line.485"></a>
+<span class="sourceLineNo">486</span>      return VersionInfo.getVersion();<a name="line.486"></a>
+<span class="sourceLineNo">487</span>    }<a name="line.487"></a>
+<span class="sourceLineNo">488</span><a name="line.488"></a>
+<span class="sourceLineNo">489</span>    @Override<a name="line.489"></a>
+<span class="sourceLineNo">490</span>    public Configuration getConfiguration() {<a name="line.490"></a>
+<span class="sourceLineNo">491</span>      return conf;<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    }<a name="line.492"></a>
+<span class="sourceLineNo">493</span><a name="line.493"></a>
+<span class="sourceLineNo">494</span>    /**<a name="line.494"></a>
+<span class="sourceLineNo">495</span>     * Open a table from within the Coprocessor environment<a name="line.495"></a>
+<span class="sourceLineNo">496</span>     * @param tableName the table name<a name="line.496"></a>
+<span class="sourceLineNo">497</span>     * @return an interface for manipulating the table<a name="line.497"></a>
+<span class="sourceLineNo">498</span>     * @exception java.io.IOException Exception<a name="line.498"></a>
+<span class="sourceLineNo">499</span>     */<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    @Override<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    public Table getTable(TableName tableName) throws IOException {<a name="line.501"></a>
+<span class="sourceLineNo">502</span>      return this.getTable(tableName, HTable.getDefaultExecutor(getConfiguration()));<a name="line.502"></a>
+<span class="sourceLineNo">503</span>    }<a name="line.503"></a>
+<span class="sourceLineNo">504</span><a name="line.504"></a>
+<span class="sourceLineNo">505</span>    /**<a name="line.505"></a>
+<span class="sourceLineNo">506</span>     * Open a table from within the Coprocessor environment<a name="line.506"></a>
+<span class="sourceLineNo">507</span>     * @param tableName the table name<a name="line.507"></a>
+<span class="sourceLineNo">508</span>     * @return an interface for manipulating the table<a name="line.508"></a>
+<span class="sourceLineNo">509</span>     * @exception java.io.IOException Exception<a name="line.509"></a>
+<span class="sourceLineNo">510</span>     */<a name="line.510"></a>
+<span class="sourceLineNo">511</span>    @Override<a name="line.511"></a>
+<span class="sourceLineNo">512</span>    public Table getTable(TableName tableName, ExecutorService pool) throws IOException {<a name="line.512"></a>
+<span class="sourceLineNo">513</span>      return HTableWrapper.createWrapper(openTables, tableName, this, pool);<a name="line.513"></a>
+<span class="sourceLineNo">514</span>    }<a name="line.514"></a>
+<span class="sourceLineNo">515</span>  }<a name="line.515"></a>
+<span class="sourceLineNo">516</span><a name="line.516"></a>
+<span class="sourceLineNo">517</span>  protected void abortServer(final CoprocessorEnvironment environment, final Throwable e) {<a name="line.517"></a>
+<span class="sourceLineNo">518</span>    abortServer(environment.getInstance().getClass().getName(), e);<a name="line.518"></a>
+<span class="sourceLineNo">519</span>  }<a name="line.519"></a>
+<span class="sourceLineNo">520</span><a name="line.520"></a>
+<span class="sourceLineNo">521</span>  protected void abortServer(final String coprocessorName, final Throwable e) {<a name="line.521"></a>
+<span class="sourceLineNo">522</span>    String message = "The coprocessor " + coprocessorName + " threw " + e.toString();<a name="line.522"></a>
+<span class="sourceLineNo">523</span>    LOG.error(message, e);<a name="line.523"></a>
+<span class="sourceLineNo">524</span>    if (abortable != null) {<a name="line.524"></a>
+<span class="sourceLineNo">525</span>      abortable.abort(message, e);<a name="line.525"></a>
+<span class="sourceLineNo">526</span>    } else {<a name="line.526"></a>
+<span class="sourceLineNo">527</span>      LOG.warn("No available Abortable, process was not aborted");<a name="line.527"></a>
+<span class="sourceLineNo">528</span>    }<a name="line.528"></a>
+<span class="sourceLineNo">529</span>  }<a name="line.529"></a>
+<span class="sourceLineNo">530</span><a name="line.530"></a>
+<span class="sourceLineNo">531</span>  /**<a name="line.531"></a>
+<span class="sourceLineNo">532</span>   * This is used by coprocessor hooks which are declared to throw IOException<a name="line.532"></a>
+<span class="sourceLineNo">533</span>   * (or its subtypes). For such hooks, we should handle throwable objects<a name="line.533"></a>
+<span class="sourceLineNo">534</span>   * depending on the Throwable's type. Those which are instances of<a name="line.534"></a>
+<span class="sourceLineNo">535</span>   * IOException should be passed on to the client. This is in conformance with<a name="line.535"></a>
+<span class="sourceLineNo">536</span>   * the HBase idiom regarding IOException: that it represents a circumstance<a name="line.536"></a>
+<span class="sourceLineNo">537</span>   * that should be passed along to the client for its own handling. For<a name="line.537"></a>
+<span class="sourceLineNo">538</span>   * example, a coprocessor that implements access controls would throw a<a name="line.538"></a>
+<span class="sourceLineNo">539</span>   * subclass of IOException, such as AccessDeniedException, in its preGet()<a name="line.539"></a>
+<span class="sourceLineNo">540</span>   * method to prevent an unauthorized client's performing a Get on a particular<a name="line.540"></a>
+<span class="sourceLineNo">541</span>   * table.<a name="line.541"></a>
+<span class="sourceLineNo">542</span>   * @param env Coprocessor Environment<a name="line.542"></a>
+<span class="sourceLineNo">543</span>   * @param e Throwable object thrown by coprocessor.<a name="line.543"></a>
+<span class="sourceLineNo">544</span>   * @exception IOException Exception<a name="line.544"></a>
+<span class="sourceLineNo">545</span>   */<a name="line.545"></a>
+<span class="sourceLineNo">546</span>  protected void handleCoprocessorThrowable(final CoprocessorEnvironment env, final Throwable e)<a name="line.546"></a>
+<span class="sourceLineNo">547</span>      throws IOException {<a name="line.547"></a>
+<span class="sourceLineNo">548</span>    if (e instanceof IOException) {<a name="line.548"></a>
+<span class="sourceLineNo">549</span>      throw (IOException)e;<a name="line.549"></a>
+<span class="sourceLineNo">550</span>    }<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    // If we got here, e is not an IOException. A loaded coprocessor has a<a name="line.551"></a>
+<span class="sourceLineNo">552</span>    // fatal bug, and the server (master or regionserver) should remove the<a name="line.552"></a>
+<span class="sourceLineNo">553</span>    // faulty coprocessor from its set of active coprocessors. Setting<a name="line.553"></a>
+<span class="sourceLineNo">554</span>    // 'hbase.coprocessor.abortonerror' to true will cause abortServer(),<a name="line.554"></a>
+<span class="sourceLineNo">555</span>    // which may be useful in development and testing environments where<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    // 'failing fast' for error analysis is desired.<a name="line.556"></a>
+<span class="sourceLineNo">557</span>    if (env.getConfiguration().getBoolean(ABORT_ON_ERROR_KEY, DEFAULT_ABORT_ON_ERROR)) {<a name="line.557"></a>
+<span class="sourceLineNo">558</spa

<TRUNCATED>

[21/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html b/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html
index 9a2a5bc..f6c7b80 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html
@@ -35,574 +35,567 @@
 <span class="sourceLineNo">027</span><a name="line.27"></a>
 <span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.28"></a>
 <span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.classification.InterfaceStability;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.protobuf.generated.ProcedureProtos;<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> * Keeps track of live procedures.<a name="line.34"></a>
-<span class="sourceLineNo">035</span> *<a name="line.35"></a>
-<span class="sourceLineNo">036</span> * It can be used by the ProcedureStore to identify which procedures are already<a name="line.36"></a>
-<span class="sourceLineNo">037</span> * deleted/completed to avoid the deserialization step on restart.<a name="line.37"></a>
-<span class="sourceLineNo">038</span> */<a name="line.38"></a>
-<span class="sourceLineNo">039</span>@InterfaceAudience.Private<a name="line.39"></a>
-<span class="sourceLineNo">040</span>@InterfaceStability.Evolving<a name="line.40"></a>
-<span class="sourceLineNo">041</span>public class ProcedureStoreTracker {<a name="line.41"></a>
-<span class="sourceLineNo">042</span>  private final TreeMap&lt;Long, BitSetNode&gt; map = new TreeMap&lt;Long, BitSetNode&gt;();<a name="line.42"></a>
-<span class="sourceLineNo">043</span><a name="line.43"></a>
-<span class="sourceLineNo">044</span>  private boolean keepDeletes = false;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>  private boolean partial = false;<a name="line.45"></a>
-<span class="sourceLineNo">046</span><a name="line.46"></a>
-<span class="sourceLineNo">047</span>  private long minUpdatedProcId = Long.MAX_VALUE;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>  private long maxUpdatedProcId = Long.MIN_VALUE;<a name="line.48"></a>
-<span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>  public enum DeleteState { YES, NO, MAYBE }<a name="line.50"></a>
-<span class="sourceLineNo">051</span><a name="line.51"></a>
-<span class="sourceLineNo">052</span>  public static class BitSetNode {<a name="line.52"></a>
-<span class="sourceLineNo">053</span>    private final static long WORD_MASK = 0xffffffffffffffffL;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>    private final static int ADDRESS_BITS_PER_WORD = 6;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>    private final static int BITS_PER_WORD = 1 &lt;&lt; ADDRESS_BITS_PER_WORD;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>    private final static int MAX_NODE_SIZE = 1 &lt;&lt; ADDRESS_BITS_PER_WORD;<a name="line.56"></a>
-<span class="sourceLineNo">057</span><a name="line.57"></a>
-<span class="sourceLineNo">058</span>    private final boolean partial;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>    private long[] updated;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>    private long[] deleted;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>    private long start;<a name="line.61"></a>
-<span class="sourceLineNo">062</span><a name="line.62"></a>
-<span class="sourceLineNo">063</span>    public void dump() {<a name="line.63"></a>
-<span class="sourceLineNo">064</span>      System.out.printf("%06d:%06d min=%d max=%d%n", getStart(), getEnd(),<a name="line.64"></a>
-<span class="sourceLineNo">065</span>        getMinProcId(), getMaxProcId());<a name="line.65"></a>
-<span class="sourceLineNo">066</span>      System.out.println("Update:");<a name="line.66"></a>
-<span class="sourceLineNo">067</span>      for (int i = 0; i &lt; updated.length; ++i) {<a name="line.67"></a>
-<span class="sourceLineNo">068</span>        for (int j = 0; j &lt; BITS_PER_WORD; ++j) {<a name="line.68"></a>
-<span class="sourceLineNo">069</span>          System.out.print((updated[i] &amp; (1L &lt;&lt; j)) != 0 ? "1" : "0");<a name="line.69"></a>
-<span class="sourceLineNo">070</span>        }<a name="line.70"></a>
-<span class="sourceLineNo">071</span>        System.out.println(" " + i);<a name="line.71"></a>
-<span class="sourceLineNo">072</span>      }<a name="line.72"></a>
-<span class="sourceLineNo">073</span>      System.out.println();<a name="line.73"></a>
-<span class="sourceLineNo">074</span>      System.out.println("Delete:");<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      for (int i = 0; i &lt; deleted.length; ++i) {<a name="line.75"></a>
-<span class="sourceLineNo">076</span>        for (int j = 0; j &lt; BITS_PER_WORD; ++j) {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>          System.out.print((deleted[i] &amp; (1L &lt;&lt; j)) != 0 ? "1" : "0");<a name="line.77"></a>
-<span class="sourceLineNo">078</span>        }<a name="line.78"></a>
-<span class="sourceLineNo">079</span>        System.out.println(" " + i);<a name="line.79"></a>
-<span class="sourceLineNo">080</span>      }<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      System.out.println();<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 BitSetNode(final long procId, final boolean partial) {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      start = alignDown(procId);<a name="line.85"></a>
-<span class="sourceLineNo">086</span><a name="line.86"></a>
-<span class="sourceLineNo">087</span>      int count = 1;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>      updated = new long[count];<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      deleted = new long[count];<a name="line.89"></a>
-<span class="sourceLineNo">090</span>      for (int i = 0; i &lt; count; ++i) {<a name="line.90"></a>
-<span class="sourceLineNo">091</span>        updated[i] = 0;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>        deleted[i] = partial ? 0 : WORD_MASK;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      }<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>      this.partial = partial;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      updateState(procId, false);<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 BitSetNode(final long start, final long[] updated, final long[] deleted) {<a name="line.99"></a>
-<span class="sourceLineNo">100</span>      this.start = start;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      this.updated = updated;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      this.deleted = deleted;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      this.partial = false;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    }<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>    public void update(final long procId) {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      updateState(procId, false);<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    }<a name="line.108"></a>
-<span class="sourceLineNo">109</span><a name="line.109"></a>
-<span class="sourceLineNo">110</span>    public void delete(final long procId) {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      updateState(procId, true);<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    }<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>    public Long getStart() {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      return start;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    }<a name="line.116"></a>
-<span class="sourceLineNo">117</span><a name="line.117"></a>
-<span class="sourceLineNo">118</span>    public Long getEnd() {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      return start + (updated.length &lt;&lt; ADDRESS_BITS_PER_WORD) - 1;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    }<a name="line.120"></a>
-<span class="sourceLineNo">121</span><a name="line.121"></a>
-<span class="sourceLineNo">122</span>    public boolean contains(final long procId) {<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      return start &lt;= procId &amp;&amp; procId &lt;= getEnd();<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>    public DeleteState isDeleted(final long procId) {<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      int bitmapIndex = getBitmapIndex(procId);<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      int wordIndex = bitmapIndex &gt;&gt; ADDRESS_BITS_PER_WORD;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      if (wordIndex &gt;= deleted.length) {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>        return DeleteState.MAYBE;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      }<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      return (deleted[wordIndex] &amp; (1L &lt;&lt; bitmapIndex)) != 0 ? DeleteState.YES : DeleteState.NO;<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>    private boolean isUpdated(final long procId) {<a name="line.135"></a>
-<span class="sourceLineNo">136</span>      int bitmapIndex = getBitmapIndex(procId);<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      int wordIndex = bitmapIndex &gt;&gt; ADDRESS_BITS_PER_WORD;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      if (wordIndex &gt;= updated.length) {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>        return false;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      }<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      return (updated[wordIndex] &amp; (1L &lt;&lt; bitmapIndex)) != 0;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    }<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>    public boolean isUpdated() {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      // TODO: cache the value<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      for (int i = 0; i &lt; updated.length; ++i) {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>        if ((updated[i] | deleted[i]) != WORD_MASK) {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>          return false;<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>      return true;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    }<a name="line.152"></a>
-<span class="sourceLineNo">153</span><a name="line.153"></a>
-<span class="sourceLineNo">154</span>    public boolean isEmpty() {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      // TODO: cache the value<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      for (int i = 0; i &lt; deleted.length; ++i) {<a name="line.156"></a>
-<span class="sourceLineNo">157</span>        if (deleted[i] != WORD_MASK) {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>          return false;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>        }<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      }<a name="line.160"></a>
-<span class="sourceLineNo">161</span>      return true;<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>    public void resetUpdates() {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      for (int i = 0; i &lt; updated.length; ++i) {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>        updated[i] = 0;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      }<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    }<a name="line.168"></a>
-<span class="sourceLineNo">169</span><a name="line.169"></a>
-<span class="sourceLineNo">170</span>    public void undeleteAll() {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      for (int i = 0; i &lt; updated.length; ++i) {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>        deleted[i] = 0;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      }<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    }<a name="line.174"></a>
-<span class="sourceLineNo">175</span><a name="line.175"></a>
-<span class="sourceLineNo">176</span>    public void unsetPartialFlag() {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      for (int i = 0; i &lt; updated.length; ++i) {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>        for (int j = 0; j &lt; BITS_PER_WORD; ++j) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>          if ((updated[i] &amp; (1L &lt;&lt; j)) == 0) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>            deleted[i] |= (1L &lt;&lt; j);<a name="line.180"></a>
-<span class="sourceLineNo">181</span>          }<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        }<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      }<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>    public ProcedureProtos.ProcedureStoreTracker.TrackerNode convert() {<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      ProcedureProtos.ProcedureStoreTracker.TrackerNode.Builder builder =<a name="line.187"></a>
-<span class="sourceLineNo">188</span>        ProcedureProtos.ProcedureStoreTracker.TrackerNode.newBuilder();<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      builder.setStartId(start);<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      for (int i = 0; i &lt; updated.length; ++i) {<a name="line.190"></a>
-<span class="sourceLineNo">191</span>        builder.addUpdated(updated[i]);<a name="line.191"></a>
-<span class="sourceLineNo">192</span>        builder.addDeleted(deleted[i]);<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      }<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      return builder.build();<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    }<a name="line.195"></a>
-<span class="sourceLineNo">196</span><a name="line.196"></a>
-<span class="sourceLineNo">197</span>    public static BitSetNode convert(ProcedureProtos.ProcedureStoreTracker.TrackerNode data) {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      long start = data.getStartId();<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      int size = data.getUpdatedCount();<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      long[] updated = new long[size];<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      long[] deleted = new long[size];<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      for (int i = 0; i &lt; size; ++i) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>        updated[i] = data.getUpdated(i);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>        deleted[i] = data.getDeleted(i);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      }<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      return new BitSetNode(start, updated, deleted);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    }<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>    // ========================================================================<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    //  Grow/Merge Helpers<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    // ========================================================================<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    public boolean canGrow(final long procId) {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      return Math.abs(procId - start) &lt; MAX_NODE_SIZE;<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>    public boolean canMerge(final BitSetNode rightNode) {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      assert start &lt; rightNode.getEnd();<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      return (rightNode.getEnd() - start) &lt; MAX_NODE_SIZE;<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>    public void grow(final long procId) {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      int delta, offset;<a name="line.222"></a>
-<span class="sourceLineNo">223</span><a name="line.223"></a>
-<span class="sourceLineNo">224</span>      if (procId &lt; start) {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>        // add to head<a name="line.225"></a>
-<span class="sourceLineNo">226</span>        long newStart = alignDown(procId);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>        delta = (int)(start - newStart) &gt;&gt; ADDRESS_BITS_PER_WORD;<a name="line.227"></a>
-<span class="sourceLineNo">228</span>        offset = delta;<a name="line.228"></a>
-<span class="sourceLineNo">229</span>        start = newStart;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      } else {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>        // Add to tail<a name="line.231"></a>
-<span class="sourceLineNo">232</span>        long newEnd = alignUp(procId + 1);<a name="line.232"></a>
-<span class="sourceLineNo">233</span>        delta = (int)(newEnd - getEnd()) &gt;&gt; ADDRESS_BITS_PER_WORD;<a name="line.233"></a>
-<span class="sourceLineNo">234</span>        offset = 0;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      }<a name="line.235"></a>
-<span class="sourceLineNo">236</span><a name="line.236"></a>
-<span class="sourceLineNo">237</span>      long[] newBitmap;<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      int oldSize = updated.length;<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>      newBitmap = new long[oldSize + delta];<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      for (int i = 0; i &lt; newBitmap.length; ++i) {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>        newBitmap[i] = 0;<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      }<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      System.arraycopy(updated, 0, newBitmap, offset, oldSize);<a name="line.244"></a>
-<span class="sourceLineNo">245</span>      updated = newBitmap;<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>      newBitmap = new long[deleted.length + delta];<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      for (int i = 0; i &lt; newBitmap.length; ++i) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        newBitmap[i] = partial ? 0 : WORD_MASK;<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      }<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      System.arraycopy(deleted, 0, newBitmap, offset, oldSize);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      deleted = newBitmap;<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>    public void merge(final BitSetNode rightNode) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      int delta = (int)(rightNode.getEnd() - getEnd()) &gt;&gt; ADDRESS_BITS_PER_WORD;<a name="line.256"></a>
-<span class="sourceLineNo">257</span><a name="line.257"></a>
-<span class="sourceLineNo">258</span>      long[] newBitmap;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      int oldSize = updated.length;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      int newSize = (delta - rightNode.updated.length);<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      int offset = oldSize + newSize;<a name="line.261"></a>
-<span class="sourceLineNo">262</span><a name="line.262"></a>
-<span class="sourceLineNo">263</span>      newBitmap = new long[oldSize + delta];<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      System.arraycopy(updated, 0, newBitmap, 0, oldSize);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      System.arraycopy(rightNode.updated, 0, newBitmap, offset, rightNode.updated.length);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      updated = newBitmap;<a name="line.266"></a>
-<span class="sourceLineNo">267</span><a name="line.267"></a>
-<span class="sourceLineNo">268</span>      newBitmap = new long[oldSize + delta];<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      System.arraycopy(deleted, 0, newBitmap, 0, oldSize);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      System.arraycopy(rightNode.deleted, 0, newBitmap, offset, rightNode.deleted.length);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      deleted = newBitmap;<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>      for (int i = 0; i &lt; newSize; ++i) {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        updated[offset + i] = 0;<a name="line.274"></a>
-<span class="sourceLineNo">275</span>        deleted[offset + i] = partial ? 0 : WORD_MASK;<a name="line.275"></a>
-<span class="sourceLineNo">276</span>      }<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    }<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>    @Override<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    public String toString() {<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      return "BitSetNode(" + getStart() + "-" + getEnd() + ")";<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    }<a name="line.282"></a>
-<span class="sourceLineNo">283</span><a name="line.283"></a>
-<span class="sourceLineNo">284</span>    // ========================================================================<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    //  Min/Max Helpers<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    // ========================================================================<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    public long getMinProcId() {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      long minProcId = start;<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      for (int i = 0; i &lt; deleted.length; ++i) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        if (deleted[i] == 0) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>          return(minProcId);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>        }<a name="line.292"></a>
-<span class="sourceLineNo">293</span><a name="line.293"></a>
-<span class="sourceLineNo">294</span>        if (deleted[i] != WORD_MASK) {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>          for (int j = 0; j &lt; BITS_PER_WORD; ++j) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>            if ((deleted[i] &amp; (1L &lt;&lt; j)) != 0) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>              return minProcId + j;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>            }<a name="line.298"></a>
-<span class="sourceLineNo">299</span>          }<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        }<a name="line.300"></a>
-<span class="sourceLineNo">301</span><a name="line.301"></a>
-<span class="sourceLineNo">302</span>        minProcId += BITS_PER_WORD;<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      }<a name="line.303"></a>
-<span class="sourceLineNo">304</span>      return minProcId;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    }<a name="line.305"></a>
-<span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>    public long getMaxProcId() {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>      long maxProcId = getEnd();<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      for (int i = deleted.length - 1; i &gt;= 0; --i) {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>        if (deleted[i] == 0) {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>          return maxProcId;<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>        if (deleted[i] != WORD_MASK) {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>          for (int j = BITS_PER_WORD - 1; j &gt;= 0; --j) {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>            if ((deleted[i] &amp; (1L &lt;&lt; j)) == 0) {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>              return maxProcId - (BITS_PER_WORD - 1 - j);<a name="line.317"></a>
-<span class="sourceLineNo">318</span>            }<a name="line.318"></a>
-<span class="sourceLineNo">319</span>          }<a name="line.319"></a>
-<span class="sourceLineNo">320</span>        }<a name="line.320"></a>
-<span class="sourceLineNo">321</span>        maxProcId -= BITS_PER_WORD;<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      }<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      return maxProcId;<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    }<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>    // ========================================================================<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    //  Bitmap Helpers<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    // ========================================================================<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    private int getBitmapIndex(final long procId) {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>      return (int)(procId - start);<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    }<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>    private void updateState(final long procId, final boolean isDeleted) {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      int bitmapIndex = getBitmapIndex(procId);<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      int wordIndex = bitmapIndex &gt;&gt; ADDRESS_BITS_PER_WORD;<a name="line.335"></a>
-<span class="sourceLineNo">336</span>      long value = (1L &lt;&lt; bitmapIndex);<a name="line.336"></a>
-<span class="sourceLineNo">337</span><a name="line.337"></a>
-<span class="sourceLineNo">338</span>      if (isDeleted) {<a name="line.338"></a>
-<span class="sourceLineNo">339</span>        updated[wordIndex] |= value;<a name="line.339"></a>
-<span class="sourceLineNo">340</span>        deleted[wordIndex] |= value;<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      } else {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>        updated[wordIndex] |= value;<a name="line.342"></a>
-<span class="sourceLineNo">343</span>        deleted[wordIndex] &amp;= ~value;<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      }<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    }<a name="line.345"></a>
-<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span>    // ========================================================================<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    //  Helpers<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    // ========================================================================<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    private static long alignUp(final long x) {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      return (x + (BITS_PER_WORD - 1)) &amp; -BITS_PER_WORD;<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
-<span class="sourceLineNo">353</span><a name="line.353"></a>
-<span class="sourceLineNo">354</span>    private static long alignDown(final long x) {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      return x &amp; -BITS_PER_WORD;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    }<a name="line.356"></a>
-<span class="sourceLineNo">357</span>  }<a name="line.357"></a>
-<span class="sourceLineNo">358</span><a name="line.358"></a>
-<span class="sourceLineNo">359</span>  public void insert(final Procedure proc, final Procedure[] subprocs) {<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    insert(proc.getProcId());<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    if (subprocs != null) {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      for (int i = 0; i &lt; subprocs.length; ++i) {<a name="line.362"></a>
-<span class="sourceLineNo">363</span>        insert(subprocs[i].getProcId());<a name="line.363"></a>
-<span class="sourceLineNo">364</span>      }<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    }<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  }<a name="line.366"></a>
-<span class="sourceLineNo">367</span><a name="line.367"></a>
-<span class="sourceLineNo">368</span>  public void update(final Procedure proc) {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    update(proc.getProcId());<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span>  public void insert(long procId) {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    BitSetNode node = getOrCreateNode(procId);<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    node.update(procId);<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    trackProcIds(procId);<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  }<a name="line.376"></a>
-<span class="sourceLineNo">377</span><a name="line.377"></a>
-<span class="sourceLineNo">378</span>  public void update(long procId) {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    Map.Entry&lt;Long, BitSetNode&gt; entry = map.floorEntry(procId);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    assert entry != null : "expected node to update procId=" + procId;<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>    BitSetNode node = entry.getValue();<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    assert node.contains(procId);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    node.update(procId);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    trackProcIds(procId);<a name="line.385"></a>
-<span class="sourceLineNo">386</span>  }<a name="line.386"></a>
-<span class="sourceLineNo">387</span><a name="line.387"></a>
-<span class="sourceLineNo">388</span>  public void delete(long procId) {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    Map.Entry&lt;Long, BitSetNode&gt; entry = map.floorEntry(procId);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    assert entry != null : "expected node to delete procId=" + procId;<a name="line.390"></a>
-<span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span>    BitSetNode node = entry.getValue();<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    assert node.contains(procId) : "expected procId in the node";<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    node.delete(procId);<a name="line.394"></a>
-<span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>    if (!keepDeletes &amp;&amp; node.isEmpty()) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      // TODO: RESET if (map.size() == 1)<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      map.remove(entry.getKey());<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>    trackProcIds(procId);<a name="line.401"></a>
-<span class="sourceLineNo">402</span>  }<a name="line.402"></a>
-<span class="sourceLineNo">403</span><a name="line.403"></a>
-<span class="sourceLineNo">404</span>  private void trackProcIds(long procId) {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    minUpdatedProcId = Math.min(minUpdatedProcId, procId);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    maxUpdatedProcId = Math.max(maxUpdatedProcId, procId);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  }<a name="line.407"></a>
-<span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>  public long getUpdatedMinProcId() {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    return minUpdatedProcId;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>  }<a name="line.411"></a>
-<span class="sourceLineNo">412</span><a name="line.412"></a>
-<span class="sourceLineNo">413</span>  public long getUpdatedMaxProcId() {<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    return maxUpdatedProcId;<a name="line.414"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.protobuf.generated.ProcedureProtos;<a name="line.30"></a>
+<span class="sourceLineNo">031</span><a name="line.31"></a>
+<span class="sourceLineNo">032</span>/**<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * Keeps track of live procedures.<a name="line.33"></a>
+<span class="sourceLineNo">034</span> *<a name="line.34"></a>
+<span class="sourceLineNo">035</span> * It can be used by the ProcedureStore to identify which procedures are already<a name="line.35"></a>
+<span class="sourceLineNo">036</span> * deleted/completed to avoid the deserialization step on restart.<a name="line.36"></a>
+<span class="sourceLineNo">037</span> */<a name="line.37"></a>
+<span class="sourceLineNo">038</span>@InterfaceAudience.Private<a name="line.38"></a>
+<span class="sourceLineNo">039</span>@InterfaceStability.Evolving<a name="line.39"></a>
+<span class="sourceLineNo">040</span>public class ProcedureStoreTracker {<a name="line.40"></a>
+<span class="sourceLineNo">041</span>  private final TreeMap&lt;Long, BitSetNode&gt; map = new TreeMap&lt;Long, BitSetNode&gt;();<a name="line.41"></a>
+<span class="sourceLineNo">042</span><a name="line.42"></a>
+<span class="sourceLineNo">043</span>  private boolean keepDeletes = false;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>  private boolean partial = false;<a name="line.44"></a>
+<span class="sourceLineNo">045</span><a name="line.45"></a>
+<span class="sourceLineNo">046</span>  private long minUpdatedProcId = Long.MAX_VALUE;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>  private long maxUpdatedProcId = Long.MIN_VALUE;<a name="line.47"></a>
+<span class="sourceLineNo">048</span><a name="line.48"></a>
+<span class="sourceLineNo">049</span>  public enum DeleteState { YES, NO, MAYBE }<a name="line.49"></a>
+<span class="sourceLineNo">050</span><a name="line.50"></a>
+<span class="sourceLineNo">051</span>  public static class BitSetNode {<a name="line.51"></a>
+<span class="sourceLineNo">052</span>    private final static long WORD_MASK = 0xffffffffffffffffL;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>    private final static int ADDRESS_BITS_PER_WORD = 6;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>    private final static int BITS_PER_WORD = 1 &lt;&lt; ADDRESS_BITS_PER_WORD;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>    private final static int MAX_NODE_SIZE = 1 &lt;&lt; ADDRESS_BITS_PER_WORD;<a name="line.55"></a>
+<span class="sourceLineNo">056</span><a name="line.56"></a>
+<span class="sourceLineNo">057</span>    private final boolean partial;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    private long[] updated;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    private long[] deleted;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>    private long start;<a name="line.60"></a>
+<span class="sourceLineNo">061</span><a name="line.61"></a>
+<span class="sourceLineNo">062</span>    public void dump() {<a name="line.62"></a>
+<span class="sourceLineNo">063</span>      System.out.printf("%06d:%06d min=%d max=%d%n", getStart(), getEnd(),<a name="line.63"></a>
+<span class="sourceLineNo">064</span>        getMinProcId(), getMaxProcId());<a name="line.64"></a>
+<span class="sourceLineNo">065</span>      System.out.println("Update:");<a name="line.65"></a>
+<span class="sourceLineNo">066</span>      for (int i = 0; i &lt; updated.length; ++i) {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>        for (int j = 0; j &lt; BITS_PER_WORD; ++j) {<a name="line.67"></a>
+<span class="sourceLineNo">068</span>          System.out.print((updated[i] &amp; (1L &lt;&lt; j)) != 0 ? "1" : "0");<a name="line.68"></a>
+<span class="sourceLineNo">069</span>        }<a name="line.69"></a>
+<span class="sourceLineNo">070</span>        System.out.println(" " + i);<a name="line.70"></a>
+<span class="sourceLineNo">071</span>      }<a name="line.71"></a>
+<span class="sourceLineNo">072</span>      System.out.println();<a name="line.72"></a>
+<span class="sourceLineNo">073</span>      System.out.println("Delete:");<a name="line.73"></a>
+<span class="sourceLineNo">074</span>      for (int i = 0; i &lt; deleted.length; ++i) {<a name="line.74"></a>
+<span class="sourceLineNo">075</span>        for (int j = 0; j &lt; BITS_PER_WORD; ++j) {<a name="line.75"></a>
+<span class="sourceLineNo">076</span>          System.out.print((deleted[i] &amp; (1L &lt;&lt; j)) != 0 ? "1" : "0");<a name="line.76"></a>
+<span class="sourceLineNo">077</span>        }<a name="line.77"></a>
+<span class="sourceLineNo">078</span>        System.out.println(" " + i);<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      }<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      System.out.println();<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    }<a name="line.81"></a>
+<span class="sourceLineNo">082</span><a name="line.82"></a>
+<span class="sourceLineNo">083</span>    public BitSetNode(final long procId, final boolean partial) {<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      start = alignDown(procId);<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>      int count = 1;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>      updated = new long[count];<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      deleted = new long[count];<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      for (int i = 0; i &lt; count; ++i) {<a name="line.89"></a>
+<span class="sourceLineNo">090</span>        updated[i] = 0;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>        deleted[i] = partial ? 0 : WORD_MASK;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>      }<a name="line.92"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span>      this.partial = partial;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>      updateState(procId, false);<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>    protected BitSetNode(final long start, final long[] updated, final long[] deleted) {<a name="line.98"></a>
+<span class="sourceLineNo">099</span>      this.start = start;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      this.updated = updated;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      this.deleted = deleted;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>      this.partial = false;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    }<a name="line.103"></a>
+<span class="sourceLineNo">104</span><a name="line.104"></a>
+<span class="sourceLineNo">105</span>    public void update(final long procId) {<a name="line.105"></a>
+<span class="sourceLineNo">106</span>      updateState(procId, false);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    }<a name="line.107"></a>
+<span class="sourceLineNo">108</span><a name="line.108"></a>
+<span class="sourceLineNo">109</span>    public void delete(final long procId) {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      updateState(procId, true);<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    }<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>    public Long getStart() {<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      return start;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    }<a name="line.115"></a>
+<span class="sourceLineNo">116</span><a name="line.116"></a>
+<span class="sourceLineNo">117</span>    public Long getEnd() {<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      return start + (updated.length &lt;&lt; ADDRESS_BITS_PER_WORD) - 1;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    }<a name="line.119"></a>
+<span class="sourceLineNo">120</span><a name="line.120"></a>
+<span class="sourceLineNo">121</span>    public boolean contains(final long procId) {<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      return start &lt;= procId &amp;&amp; procId &lt;= getEnd();<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    }<a name="line.123"></a>
+<span class="sourceLineNo">124</span><a name="line.124"></a>
+<span class="sourceLineNo">125</span>    public DeleteState isDeleted(final long procId) {<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      int bitmapIndex = getBitmapIndex(procId);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      int wordIndex = bitmapIndex &gt;&gt; ADDRESS_BITS_PER_WORD;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      if (wordIndex &gt;= deleted.length) {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>        return DeleteState.MAYBE;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      }<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      return (deleted[wordIndex] &amp; (1L &lt;&lt; bitmapIndex)) != 0 ? DeleteState.YES : DeleteState.NO;<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>    private boolean isUpdated(final long procId) {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      int bitmapIndex = getBitmapIndex(procId);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      int wordIndex = bitmapIndex &gt;&gt; ADDRESS_BITS_PER_WORD;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      if (wordIndex &gt;= updated.length) {<a name="line.137"></a>
+<span class="sourceLineNo">138</span>        return false;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>      }<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      return (updated[wordIndex] &amp; (1L &lt;&lt; bitmapIndex)) != 0;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    }<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>    public boolean isUpdated() {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      // TODO: cache the value<a name="line.144"></a>
+<span class="sourceLineNo">145</span>      for (int i = 0; i &lt; updated.length; ++i) {<a name="line.145"></a>
+<span class="sourceLineNo">146</span>        if ((updated[i] | deleted[i]) != WORD_MASK) {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>          return false;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>        }<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      }<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      return true;<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>    public boolean isEmpty() {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      // TODO: cache the value<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      for (int i = 0; i &lt; deleted.length; ++i) {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>        if (deleted[i] != WORD_MASK) {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>          return false;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>        }<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      }<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      return true;<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>    public void resetUpdates() {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      for (int i = 0; i &lt; updated.length; ++i) {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        updated[i] = 0;<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>    public void undeleteAll() {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      for (int i = 0; i &lt; updated.length; ++i) {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>        deleted[i] = 0;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      }<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    }<a name="line.173"></a>
+<span class="sourceLineNo">174</span><a name="line.174"></a>
+<span class="sourceLineNo">175</span>    public void unsetPartialFlag() {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      for (int i = 0; i &lt; updated.length; ++i) {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>        for (int j = 0; j &lt; BITS_PER_WORD; ++j) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>          if ((updated[i] &amp; (1L &lt;&lt; j)) == 0) {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>            deleted[i] |= (1L &lt;&lt; j);<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>      }<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>    public ProcedureProtos.ProcedureStoreTracker.TrackerNode convert() {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      ProcedureProtos.ProcedureStoreTracker.TrackerNode.Builder builder =<a name="line.186"></a>
+<span class="sourceLineNo">187</span>        ProcedureProtos.ProcedureStoreTracker.TrackerNode.newBuilder();<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      builder.setStartId(start);<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      for (int i = 0; i &lt; updated.length; ++i) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>        builder.addUpdated(updated[i]);<a name="line.190"></a>
+<span class="sourceLineNo">191</span>        builder.addDeleted(deleted[i]);<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      }<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      return builder.build();<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    }<a name="line.194"></a>
+<span class="sourceLineNo">195</span><a name="line.195"></a>
+<span class="sourceLineNo">196</span>    public static BitSetNode convert(ProcedureProtos.ProcedureStoreTracker.TrackerNode data) {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>      long start = data.getStartId();<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      int size = data.getUpdatedCount();<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      long[] updated = new long[size];<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      long[] deleted = new long[size];<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      for (int i = 0; i &lt; size; ++i) {<a name="line.201"></a>
+<span class="sourceLineNo">202</span>        updated[i] = data.getUpdated(i);<a name="line.202"></a>
+<span class="sourceLineNo">203</span>        deleted[i] = data.getDeleted(i);<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      }<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      return new BitSetNode(start, updated, deleted);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    }<a name="line.206"></a>
+<span class="sourceLineNo">207</span><a name="line.207"></a>
+<span class="sourceLineNo">208</span>    // ========================================================================<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    //  Grow/Merge Helpers<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    // ========================================================================<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    public boolean canGrow(final long procId) {<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      return Math.abs(procId - start) &lt; MAX_NODE_SIZE;<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>    public boolean canMerge(final BitSetNode rightNode) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      assert start &lt; rightNode.getEnd();<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      return (rightNode.getEnd() - start) &lt; MAX_NODE_SIZE;<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>    public void grow(final long procId) {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      int delta, offset;<a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>      if (procId &lt; start) {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>        // add to head<a name="line.224"></a>
+<span class="sourceLineNo">225</span>        long newStart = alignDown(procId);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>        delta = (int)(start - newStart) &gt;&gt; ADDRESS_BITS_PER_WORD;<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        offset = delta;<a name="line.227"></a>
+<span class="sourceLineNo">228</span>        start = newStart;<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      } else {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>        // Add to tail<a name="line.230"></a>
+<span class="sourceLineNo">231</span>        long newEnd = alignUp(procId + 1);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>        delta = (int)(newEnd - getEnd()) &gt;&gt; ADDRESS_BITS_PER_WORD;<a name="line.232"></a>
+<span class="sourceLineNo">233</span>        offset = 0;<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>      long[] newBitmap;<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      int oldSize = updated.length;<a name="line.237"></a>
+<span class="sourceLineNo">238</span><a name="line.238"></a>
+<span class="sourceLineNo">239</span>      newBitmap = new long[oldSize + delta];<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      for (int i = 0; i &lt; newBitmap.length; ++i) {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>        newBitmap[i] = 0;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      }<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      System.arraycopy(updated, 0, newBitmap, offset, oldSize);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      updated = newBitmap;<a name="line.244"></a>
+<span class="sourceLineNo">245</span><a name="line.245"></a>
+<span class="sourceLineNo">246</span>      newBitmap = new long[deleted.length + delta];<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      for (int i = 0; i &lt; newBitmap.length; ++i) {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        newBitmap[i] = partial ? 0 : WORD_MASK;<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      }<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      System.arraycopy(deleted, 0, newBitmap, offset, oldSize);<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      deleted = newBitmap;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    }<a name="line.252"></a>
+<span class="sourceLineNo">253</span><a name="line.253"></a>
+<span class="sourceLineNo">254</span>    public void merge(final BitSetNode rightNode) {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      int delta = (int)(rightNode.getEnd() - getEnd()) &gt;&gt; ADDRESS_BITS_PER_WORD;<a name="line.255"></a>
+<span class="sourceLineNo">256</span><a name="line.256"></a>
+<span class="sourceLineNo">257</span>      long[] newBitmap;<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      int oldSize = updated.length;<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      int newSize = (delta - rightNode.updated.length);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      int offset = oldSize + newSize;<a name="line.260"></a>
+<span class="sourceLineNo">261</span><a name="line.261"></a>
+<span class="sourceLineNo">262</span>      newBitmap = new long[oldSize + delta];<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      System.arraycopy(updated, 0, newBitmap, 0, oldSize);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      System.arraycopy(rightNode.updated, 0, newBitmap, offset, rightNode.updated.length);<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      updated = newBitmap;<a name="line.265"></a>
+<span class="sourceLineNo">266</span><a name="line.266"></a>
+<span class="sourceLineNo">267</span>      newBitmap = new long[oldSize + delta];<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      System.arraycopy(deleted, 0, newBitmap, 0, oldSize);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      System.arraycopy(rightNode.deleted, 0, newBitmap, offset, rightNode.deleted.length);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      deleted = newBitmap;<a name="line.270"></a>
+<span class="sourceLineNo">271</span><a name="line.271"></a>
+<span class="sourceLineNo">272</span>      for (int i = 0; i &lt; newSize; ++i) {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        updated[offset + i] = 0;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        deleted[offset + i] = partial ? 0 : WORD_MASK;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      }<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    }<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>    @Override<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    public String toString() {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      return "BitSetNode(" + getStart() + "-" + getEnd() + ")";<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    }<a name="line.281"></a>
+<span class="sourceLineNo">282</span><a name="line.282"></a>
+<span class="sourceLineNo">283</span>    // ========================================================================<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    //  Min/Max Helpers<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    // ========================================================================<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    public long getMinProcId() {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      long minProcId = start;<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      for (int i = 0; i &lt; deleted.length; ++i) {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>        if (deleted[i] == 0) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>          return(minProcId);<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        }<a name="line.291"></a>
+<span class="sourceLineNo">292</span><a name="line.292"></a>
+<span class="sourceLineNo">293</span>        if (deleted[i] != WORD_MASK) {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>          for (int j = 0; j &lt; BITS_PER_WORD; ++j) {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>            if ((deleted[i] &amp; (1L &lt;&lt; j)) != 0) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>              return minProcId + j;<a name="line.296"></a>
+<span class="sourceLineNo">297</span>            }<a name="line.297"></a>
+<span class="sourceLineNo">298</span>          }<a name="line.298"></a>
+<span class="sourceLineNo">299</span>        }<a name="line.299"></a>
+<span class="sourceLineNo">300</span><a name="line.300"></a>
+<span class="sourceLineNo">301</span>        minProcId += BITS_PER_WORD;<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      }<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      return minProcId;<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    }<a name="line.304"></a>
+<span class="sourceLineNo">305</span><a name="line.305"></a>
+<span class="sourceLineNo">306</span>    public long getMaxProcId() {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      long maxProcId = getEnd();<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      for (int i = deleted.length - 1; i &gt;= 0; --i) {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>        if (deleted[i] == 0) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>          return maxProcId;<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>        if (deleted[i] != WORD_MASK) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>          for (int j = BITS_PER_WORD - 1; j &gt;= 0; --j) {<a name="line.314"></a>
+<span class="sourceLineNo">315</span>            if ((deleted[i] &amp; (1L &lt;&lt; j)) == 0) {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>              return maxProcId - (BITS_PER_WORD - 1 - j);<a name="line.316"></a>
+<span class="sourceLineNo">317</span>            }<a name="line.317"></a>
+<span class="sourceLineNo">318</span>          }<a name="line.318"></a>
+<span class="sourceLineNo">319</span>        }<a name="line.319"></a>
+<span class="sourceLineNo">320</span>        maxProcId -= BITS_PER_WORD;<a name="line.320"></a>
+<span class="sourceLineNo">321</span>      }<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      return maxProcId;<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    }<a name="line.323"></a>
+<span class="sourceLineNo">324</span><a name="line.324"></a>
+<span class="sourceLineNo">325</span>    // ========================================================================<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    //  Bitmap Helpers<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    // ========================================================================<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    private int getBitmapIndex(final long procId) {<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      return (int)(procId - start);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    }<a name="line.330"></a>
+<span class="sourceLineNo">331</span><a name="line.331"></a>
+<span class="sourceLineNo">332</span>    private void updateState(final long procId, final boolean isDeleted) {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      int bitmapIndex = getBitmapIndex(procId);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      int wordIndex = bitmapIndex &gt;&gt; ADDRESS_BITS_PER_WORD;<a name="line.334"></a>
+<span class="sourceLineNo">335</span>      long value = (1L &lt;&lt; bitmapIndex);<a name="line.335"></a>
+<span class="sourceLineNo">336</span><a name="line.336"></a>
+<span class="sourceLineNo">337</span>      if (isDeleted) {<a name="line.337"></a>
+<span class="sourceLineNo">338</span>        updated[wordIndex] |= value;<a name="line.338"></a>
+<span class="sourceLineNo">339</span>        deleted[wordIndex] |= value;<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      } else {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>        updated[wordIndex] |= value;<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        deleted[wordIndex] &amp;= ~value;<a name="line.342"></a>
+<span class="sourceLineNo">343</span>      }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    }<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>    // ========================================================================<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    //  Helpers<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    // ========================================================================<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    private static long alignUp(final long x) {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      return (x + (BITS_PER_WORD - 1)) &amp; -BITS_PER_WORD;<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    }<a name="line.351"></a>
+<span class="sourceLineNo">352</span><a name="line.352"></a>
+<span class="sourceLineNo">353</span>    private static long alignDown(final long x) {<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      return x &amp; -BITS_PER_WORD;<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    }<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  }<a name="line.356"></a>
+<span class="sourceLineNo">357</span><a name="line.357"></a>
+<span class="sourceLineNo">358</span>  public void insert(long procId) {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    BitSetNode node = getOrCreateNode(procId);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    node.update(procId);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    trackProcIds(procId);<a name="line.361"></a>
+<span class="sourceLineNo">362</span>  }<a name="line.362"></a>
+<span class="sourceLineNo">363</span><a name="line.363"></a>
+<span class="sourceLineNo">364</span>  public void insert(final long procId, final long[] subProcIds) {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    update(procId);<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    for (int i = 0; i &lt; subProcIds.length; ++i) {<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      insert(subProcIds[i]);<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    }<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  }<a name="line.369"></a>
+<span class="sourceLineNo">370</span><a name="line.370"></a>
+<span class="sourceLineNo">371</span>  public void update(long procId) {<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    Map.Entry&lt;Long, BitSetNode&gt; entry = map.floorEntry(procId);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    assert entry != null : "expected node to update procId=" + procId;<a name="line.373"></a>
+<span class="sourceLineNo">374</span><a name="line.374"></a>
+<span class="sourceLineNo">375</span>    BitSetNode node = entry.getValue();<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    assert node.contains(procId);<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    node.update(procId);<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    trackProcIds(procId);<a name="line.378"></a>
+<span class="sourceLineNo">379</span>  }<a name="line.379"></a>
+<span class="sourceLineNo">380</span><a name="line.380"></a>
+<span class="sourceLineNo">381</span>  public void delete(long procId) {<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    Map.Entry&lt;Long, BitSetNode&gt; entry = map.floorEntry(procId);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    assert entry != null : "expected node to delete procId=" + procId;<a name="line.383"></a>
+<span class="sourceLineNo">384</span><a name="line.384"></a>
+<span class="sourceLineNo">385</span>    BitSetNode node = entry.getValue();<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    assert node.contains(procId) : "expected procId in the node";<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    node.delete(procId);<a name="line.387"></a>
+<span class="sourceLineNo">388</span><a name="line.388"></a>
+<span class="sourceLineNo">389</span>    if (!keepDeletes &amp;&amp; node.isEmpty()) {<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      // TODO: RESET if (map.size() == 1)<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      map.remove(entry.getKey());<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    }<a name="line.392"></a>
+<span class="sourceLineNo">393</span><a name="line.393"></a>
+<span class="sourceLineNo">394</span>    trackProcIds(procId);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  }<a name="line.395"></a>
+<span class="sourceLineNo">396</span><a name="line.396"></a>
+<span class="sourceLineNo">397</span>  private void trackProcIds(long procId) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    minUpdatedProcId = Math.min(minUpdatedProcId, procId);<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    maxUpdatedProcId = Math.max(maxUpdatedProcId, procId);<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>  public long getUpdatedMinProcId() {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    return minUpdatedProcId;<a name="line.403"></a>
+<span class="sourceLineNo">404</span>  }<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>  public long getUpdatedMaxProcId() {<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    return maxUpdatedProcId;<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>  @InterfaceAudience.Private<a name="line.410"></a>
+<span class="sourceLineNo">411</span>  public void setDeleted(final long procId, final boolean isDeleted) {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    BitSetNode node = getOrCreateNode(procId);<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    assert node.contains(procId) : "expected procId=" + procId + " in the node=" + node;<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    node.updateState(procId, isDeleted);<a name="line.414"></a>
 <span class="sourceLineNo">415</span>  }<a name="line.415"></a>
 <span class="sourceLineNo">416</span><a name="line.416"></a>
-<span class="sourceLineNo">417</span>  @InterfaceAudience.Private<a name="line.417"></a>
-<span class="sourceLineNo">418</span>  public void setDeleted(final long procId, final boolean isDeleted) {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    BitSetNode node = getOrCreateNode(procId);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    assert node.contains(procId) : "expected procId=" + procId + " in the node=" + node;<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    node.updateState(procId, isDeleted);<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>  public void clear() {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    this.map.clear();<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    resetUpdates();<a name="line.426"></a>
-<span class="sourceLineNo">427</span>  }<a name="line.427"></a>
-<span class="sourceLineNo">428</span><a name="line.428"></a>
-<span class="sourceLineNo">429</span>  public DeleteState isDeleted(long procId) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    Map.Entry&lt;Long, BitSetNode&gt; entry = map.floorEntry(procId);<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    if (entry != null &amp;&amp; entry.getValue().contains(procId)) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      BitSetNode node = entry.getValue();<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      DeleteState state = node.isDeleted(procId);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      return partial &amp;&amp; !node.isUpdated(procId) ? DeleteState.MAYBE : state;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    }<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    return partial ? DeleteState.MAYBE : DeleteState.YES;<a name="line.436"></a>
-<span class="sourceLineNo">437</span>  }<a name="line.437"></a>
-<span class="sourceLineNo">438</span><a name="line.438"></a>
-<span class="sourceLineNo">439</span>  public long getMinProcId() {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    // TODO: Cache?<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    Map.Entry&lt;Long, BitSetNode&gt; entry = map.firstEntry();<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    return entry == null ? 0 : entry.getValue().getMinProcId();<a name="line.442"></a>
-<span class="sourceLineNo">443</span>  }<a name="line.443"></a>
-<span class="sourceLineNo">444</span><a name="line.444"></a>
-<span class="sourceLineNo">445</span>  public void setKeepDeletes(boolean keepDeletes) {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    this.keepDeletes = keepDeletes;<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    if (!keepDeletes) {<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      Iterator&lt;Map.Entry&lt;Long, BitSetNode&gt;&gt; it = map.entrySet().iterator();<a name="line.448"></a>
-<span class="sourceLineNo">449</span>      while (it.hasNext()) {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>        Map.Entry&lt;Long, BitSetNode&gt; entry = it.next();<a name="line.450"></a>
-<span class="sourceLineNo">451</span>        if (entry.getValue().isEmpty()) {<a name="line.451"></a>
-<span class="sourceLineNo">452</span>          it.remove();<a name="line.452"></a>
-<span class="sourceLineNo">453</span>        }<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      }<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    }<a name="line.455"></a>
-<span class="sourceLineNo">456</span>  }<a name="line.456"></a>
-<span class="sourceLineNo">457</span><a name="line.457"></a>
-<span class="sourceLineNo">458</span>  public void setPartialFlag(boolean isPartial) {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    if (this.partial &amp;&amp; !isPartial) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      for (Map.Entry&lt;Long, BitSetNode&gt; entry : map.entrySet()) {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>        entry.getValue().unsetPartialFlag();<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      }<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    }<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    this.partial = isPartial;<a name="line.464"></a>
-<span class="sourceLineNo">465</span>  }<a name="line.465"></a>
-<span class="sourceLineNo">466</span><a name="line.466"></a>
-<span class="sourceLineNo">467</span>  public boolean isEmpty() {<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    for (Map.Entry&lt;Long, BitSetNode&gt; entry : map.entrySet()) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      if (entry.getValue().isEmpty() == false) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>        return false;<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    return true;<a name="line.473"></a>
-<span class="sourceLineNo">474</span>  }<a name="line.474"></a>
-<span class="sourceLineNo">475</span><a name="line.475"></a>
-<span class="sourceLineNo">476</span>  public boolean isUpdated() {<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    for (Map.Entry&lt;Long, BitSetNode&gt; entry : map.entrySet()) {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      if (entry.getValue().isUpdated() == false) {<a name="line.478"></a>
-<span class="sourceLineNo">479</span>        return false;<a name="line.479"></a>
-<span class="sourceLineNo">480</span>      }<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    }<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    return true;<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>  public boolean isTracking(long minId, long maxId) {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    // TODO: we can make it more precise, instead of looking just at the block<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    return map.floorEntry(minId) != null || map.floorEntry(maxId) != null;<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>  public void resetUpdates() {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    for (Map.Entry&lt;Long, BitSetNode&gt; entry : map.entrySet()) {<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      entry.getValue().resetUpdates();<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    }<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    minUpdatedProcId = Long.MAX_VALUE;<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    maxUpdatedProcId = Long.MIN_VALUE;<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>  public void undeleteAll() {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    for (Map.Entry&lt;Long, BitSetNode&gt; entry : map.entrySet()) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      entry.getValue().undeleteAll();<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    }<a name="line.501"></a>
-<span class="sourceLineNo">502</span>  }<a name="line.502"></a>
-<span class="sourceLineNo">503</span><a name="line.503"></a>
-<span class="sourceLineNo">504</span>  private BitSetNode getOrCreateNode(final long procId) {<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    // can procId fit in the left node?<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    BitSetNode leftNode = null;<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    boolean leftCanGrow = false;<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    Map.Entry&lt;Long, BitSetNode&gt; leftEntry = map.floorEntry(procId);<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    if (leftEntry != null) {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>      leftNode = leftEntry.getValue();<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      if (leftNode.contains(procId)) {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>        return leftNode;<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      }<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      leftCanGrow = leftNode.canGrow(procId);<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    }<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>    BitSetNode rightNode = null;<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    boolean rightCanGrow = false;<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    Map.Entry&lt;Long, BitSetNode&gt; rightEntry = map.ceilingEntry(procId);<a name="line.519"></a>
-<span class="sourceLineNo">520</span>    if (rightEntry != null) {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>      rightNode = rightEntry.getValue();<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      rightCanGrow = rightNode.canGrow(procId);<a name="line.522"></a>
-<span class="sourceLineNo">523</span>      if (leftNode != null) {<a name="line.523"></a>
-<span class="sourceLineNo">524</span>        if (leftNode.canMerge(rightNode)) {<a name="line.524"></a>
-<span class="sourceLineNo">525</span>          // merge left and right node<a name="line.525"></a>
-<span class="sourceLineNo">526</span>          return mergeNodes(leftNode, rightNode);<a name="line.526"></a>
-<span class="sourceLineNo">527</span>        }<a name="line.527"></a>
-<span class="sourceLineNo">528</span><a name="line.528"></a>
-<span class="sourceLineNo">529</span>        if (leftCanGrow &amp;&amp; rightCanGrow) {<a name="line.529"></a>
-<span class="sourceLineNo">530</span>          if ((procId - leftNode.getEnd()) &lt;= (rightNode.getStart() - procId)) {<a name="line.530"></a>
-<span class="sourceLineNo">531</span>            // grow the left node<a name="line.531"></a>
-<span class="sourceLineNo">532</span>            return growNode(leftNode, procId);<a name="line.532"></a>
-<span class="sourceLineNo">533</span>          }<a name="line.533"></a>
-<span class="sourceLineNo">534</span>          // grow the right node<a name="line.534"></a>
-<span class="sourceLineNo">535</span>          return growNode(rightNode, procId);<a name="line.535"></a>
-<span class="sourceLineNo">536</span>        }<a name="line.536"></a>
-<span class="sourceLineNo">537</span>      }<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    }<a name="line.538"></a>
-<span class="sourceLineNo">539</span><a name="line.539"></a>
-<span class="sourceLineNo">540</span>    // grow the left node<a name="line.540"></a>
-<span class="sourceLineNo">541</span>    if (leftCanGrow) {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>      return growNode(leftNode, procId);<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    }<a name="line.543"></a>
-<span class="sourceLineNo">544</span><a name="line.544"></a>
-<span class="sourceLineNo">545</span>    // grow the right node<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    if (rightCanGrow) {<a name="line.546"></a>
-<span class="sourceLineNo">547</span>      return growNode(rightNode, procId);<a name="line.547"></a>
-<span class="sourceLineNo">548</span>    }<a name="line.548"></a>
-<span class="sourceLineNo">549</span><a name="line.549"></a>
-<span class="sourceLineNo">550</span>    // add new node<a name="line.550"></a>
-<span class="sourceLineNo">551</span>    BitSetNode node = new BitSetNode(procId, partial);<a name="line.551"></a>
+<span class="sourceLineNo">417</span>  public void clear() {<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    this.map.clear();<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    resetUpdates();<a name="line.419"></a>
+<span class="sourceLineNo">420</span>  }<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>  public DeleteState isDeleted(long procId) {<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    Map.Entry&lt;Long, BitSetNode&gt; entry = map.floorEntry(procId);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    if (entry != null &amp;&amp; entry.getValue().contains(procId)) {<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      BitSetNode node = entry.getValue();<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      DeleteState state = node.isDeleted(procId);<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      return partial &amp;&amp; !node.isUpdated(procId) ? DeleteState.MAYBE : state;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    return partial ? DeleteState.MAYBE : DeleteState.YES;<a name="line.429"></a>
+<span class="sourceLineNo">430</span>  }<a name="line.430"></a>
+<span class="sourceLineNo">431</span><a name="line.431"></a>
+<span class="sourceLineNo">432</span>  public long getMinProcId() {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    // TODO: Cache?<a name="line.433"></a>
+<span class="sourceLineNo">434</span>    Map.Entry&lt;Long, BitSetNode&gt; entry = map.firstEntry();<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    return entry == null ? 0 : entry.getValue().getMinProcId();<a name="line.435"></a>
+<span class="sourceLineNo">436</span>  }<a name="line.436"></a>
+<span class="sourceLineNo">437</span><a name="line.437"></a>
+<span class="sourceLineNo">438</span>  public void setKeepDeletes(boolean keepDeletes) {<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    this.keepDeletes = keepDeletes;<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    if (!keepDeletes) {<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      Iterator&lt;Map.Entry&lt;Long, BitSetNode&gt;&gt; it = map.entrySet().iterator();<a name="line.441"></a>
+<span class="sourceLineNo">442</span>      while (it.hasNext()) {<a name="line.442"></a>
+<span class="sourceLineNo">443</span>        Map.Entry&lt;Long, BitSetNode&gt; entry = it.next();<a name="line.443"></a>
+<span class="sourceLineNo">444</span>        if (entry.getValue().isEmpty()) {<a name="line.444"></a>
+<span class="sourceLineNo">445</span>          it.remove();<a name="line.445"></a>
+<span class="sourceLineNo">446</span>        }<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      }<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    }<a name="line.448"></a>
+<span class="sourceLineNo">449</span>  }<a name="line.449"></a>
+<span class="sourceLineNo">450</span><a name="line.450"></a>
+<span class="sourceLineNo">451</span>  public void setPartialFlag(boolean isPartial) {<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    if (this.partial &amp;&amp; !isPartial) {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      for (Map.Entry&lt;Long, BitSetNode&gt; entry : map.entrySet()) {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>        entry.getValue().unsetPartialFlag();<a name="line.454"></a>
+<span class="sourceLineNo">455</span>      }<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    }<a name="line.456"></a>
+<span class="sourceLineNo">457</span>    this.partial = isPartial;<a name="line.457"></a>
+<span class="sourceLineNo">458</span>  }<a name="line.458"></a>
+<span class="sourceLineNo">459</span><a name="line.459"></a>
+<span class="sourceLineNo">460</span>  public boolean isEmpty() {<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    for (Map.Entry&lt;Long, BitSetNode&gt; entry : map.entrySet()) {<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      if (entry.getValue().isEmpty() == false) {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>        return false;<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      }<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    }<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    return true;<a name="line.466"></a>
+<span class="sourceLineNo">467</span>  }<a name="line.467"></a>
+<span class="sourceLineNo">468</span><a name="line.468"></a>
+<span class="sourceLineNo">469</span>  public boolean isUpdated() {<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    for (Map.Entry&lt;Long, BitSetNode&gt; entry : map.entrySet()) {<a name="line.470"></a>
+<span class="sourceLineNo">471</span>      if (entry.getValue().isUpdated() == false) {<a name="line.471"></a>
+<span class="sourceLineNo">472</span>        return false;<a name="line.472"></a>
+<span class="sourceLineNo">473</span>      }<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    }<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    return true;<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

<TRUNCATED>

[08/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html
deleted file mode 100644
index f994e3c..0000000
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html
+++ /dev/null
@@ -1,343 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html lang="en">
-<head>
-<title>Source code</title>
-<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
-</head>
-<body>
-<div class="sourceContainer">
-<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
-<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
-<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
-<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
-<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
-<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
-<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
-<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
-<span class="sourceLineNo">009</span> *<a name="line.9"></a>
-<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
-<span class="sourceLineNo">011</span> *<a name="line.11"></a>
-<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
-<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
-<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
-<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
-<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
-<span class="sourceLineNo">017</span> */<a name="line.17"></a>
-<span class="sourceLineNo">018</span><a name="line.18"></a>
-<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.procedure2.store;<a name="line.19"></a>
-<span class="sourceLineNo">020</span><a name="line.20"></a>
-<span class="sourceLineNo">021</span>import java.io.InputStream;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import java.io.OutputStream;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.util.Random;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.util.concurrent.atomic.AtomicLong;<a name="line.24"></a>
-<span class="sourceLineNo">025</span><a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.commons.logging.Log;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.commons.logging.LogFactory;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.testclassification.SmallTests;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.testclassification.MasterTests;<a name="line.30"></a>
-<span class="sourceLineNo">031</span><a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.junit.Assert;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.junit.Test;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.junit.experimental.categories.Category;<a name="line.34"></a>
-<span class="sourceLineNo">035</span><a name="line.35"></a>
-<span class="sourceLineNo">036</span>import static org.junit.Assert.assertEquals;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import static org.junit.Assert.assertFalse;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import static org.junit.Assert.assertTrue;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import static org.junit.Assert.fail;<a name="line.39"></a>
-<span class="sourceLineNo">040</span><a name="line.40"></a>
-<span class="sourceLineNo">041</span>@Category({MasterTests.class, SmallTests.class})<a name="line.41"></a>
-<span class="sourceLineNo">042</span>public class TestProcedureStoreTracker {<a name="line.42"></a>
-<span class="sourceLineNo">043</span>  private static final Log LOG = LogFactory.getLog(TestProcedureStoreTracker.class);<a name="line.43"></a>
-<span class="sourceLineNo">044</span><a name="line.44"></a>
-<span class="sourceLineNo">045</span>  static class TestProcedure extends Procedure&lt;Void&gt; {<a name="line.45"></a>
-<span class="sourceLineNo">046</span>    public TestProcedure(long procId) {<a name="line.46"></a>
-<span class="sourceLineNo">047</span>      setProcId(procId);<a name="line.47"></a>
-<span class="sourceLineNo">048</span>    }<a name="line.48"></a>
-<span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>    @Override<a name="line.50"></a>
-<span class="sourceLineNo">051</span>    protected Procedure[] execute(Void env) { return null; }<a name="line.51"></a>
-<span class="sourceLineNo">052</span><a name="line.52"></a>
-<span class="sourceLineNo">053</span>    @Override<a name="line.53"></a>
-<span class="sourceLineNo">054</span>    protected void rollback(Void env) { /* no-op */ }<a name="line.54"></a>
-<span class="sourceLineNo">055</span><a name="line.55"></a>
-<span class="sourceLineNo">056</span>    @Override<a name="line.56"></a>
-<span class="sourceLineNo">057</span>    protected boolean abort(Void env) { return false; }<a name="line.57"></a>
-<span class="sourceLineNo">058</span><a name="line.58"></a>
-<span class="sourceLineNo">059</span>    @Override<a name="line.59"></a>
-<span class="sourceLineNo">060</span>    protected void serializeStateData(final OutputStream stream) { /* no-op */ }<a name="line.60"></a>
-<span class="sourceLineNo">061</span><a name="line.61"></a>
-<span class="sourceLineNo">062</span>    @Override<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    protected void deserializeStateData(final InputStream stream) { /* no-op */ }<a name="line.63"></a>
-<span class="sourceLineNo">064</span>  }<a name="line.64"></a>
-<span class="sourceLineNo">065</span><a name="line.65"></a>
-<span class="sourceLineNo">066</span>  @Test<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  public void testSeqInsertAndDelete() {<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    ProcedureStoreTracker tracker = new ProcedureStoreTracker();<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    assertTrue(tracker.isEmpty());<a name="line.69"></a>
-<span class="sourceLineNo">070</span><a name="line.70"></a>
-<span class="sourceLineNo">071</span>    final int MIN_PROC = 1;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    final int MAX_PROC = 1 &lt;&lt; 10;<a name="line.72"></a>
-<span class="sourceLineNo">073</span><a name="line.73"></a>
-<span class="sourceLineNo">074</span>    // sequential insert<a name="line.74"></a>
-<span class="sourceLineNo">075</span>    for (int i = MIN_PROC; i &lt; MAX_PROC; ++i) {<a name="line.75"></a>
-<span class="sourceLineNo">076</span>      tracker.insert(i);<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>      // All the proc that we inserted should not be deleted<a name="line.78"></a>
-<span class="sourceLineNo">079</span>      for (int j = MIN_PROC; j &lt;= i; ++j) {<a name="line.79"></a>
-<span class="sourceLineNo">080</span>        assertEquals(ProcedureStoreTracker.DeleteState.NO, tracker.isDeleted(j));<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      }<a name="line.81"></a>
-<span class="sourceLineNo">082</span>      // All the proc that are not yet inserted should be result as deleted<a name="line.82"></a>
-<span class="sourceLineNo">083</span>      for (int j = i + 1; j &lt; MAX_PROC; ++j) {<a name="line.83"></a>
-<span class="sourceLineNo">084</span>        assertTrue(tracker.isDeleted(j) != ProcedureStoreTracker.DeleteState.NO);<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>    // sequential delete<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    for (int i = MIN_PROC; i &lt; MAX_PROC; ++i) {<a name="line.89"></a>
-<span class="sourceLineNo">090</span>      tracker.delete(i);<a name="line.90"></a>
-<span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>      // All the proc that we deleted should be deleted<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      for (int j = MIN_PROC; j &lt;= i; ++j) {<a name="line.93"></a>
-<span class="sourceLineNo">094</span>        assertEquals(ProcedureStoreTracker.DeleteState.YES, tracker.isDeleted(j));<a name="line.94"></a>
-<span class="sourceLineNo">095</span>      }<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      // All the proc that are not yet deleted should be result as not deleted<a name="line.96"></a>
-<span class="sourceLineNo">097</span>      for (int j = i + 1; j &lt; MAX_PROC; ++j) {<a name="line.97"></a>
-<span class="sourceLineNo">098</span>        assertEquals(ProcedureStoreTracker.DeleteState.NO, tracker.isDeleted(j));<a name="line.98"></a>
-<span class="sourceLineNo">099</span>      }<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    }<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    assertTrue(tracker.isEmpty());<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 testPartialTracker() {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    ProcedureStoreTracker tracker = new ProcedureStoreTracker();<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    tracker.setPartialFlag(true);<a name="line.107"></a>
-<span class="sourceLineNo">108</span><a name="line.108"></a>
-<span class="sourceLineNo">109</span>    // nothing in the tracker, the state is unknown<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    assertTrue(tracker.isEmpty());<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(1));<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(579));<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>    // Mark 1 as deleted, now that is a known state<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    tracker.setDeleted(1, true);<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    tracker.dump();<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    assertEquals(ProcedureStoreTracker.DeleteState.YES, tracker.isDeleted(1));<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(2));<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(579));<a name="line.119"></a>
-<span class="sourceLineNo">120</span><a name="line.120"></a>
-<span class="sourceLineNo">121</span>    // Mark 579 as non-deleted, now that is a known state<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    tracker.setDeleted(579, false);<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    assertEquals(ProcedureStoreTracker.DeleteState.YES, tracker.isDeleted(1));<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(2));<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    assertEquals(ProcedureStoreTracker.DeleteState.NO, tracker.isDeleted(579));<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(577));<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(580));<a name="line.127"></a>
-<span class="sourceLineNo">128</span><a name="line.128"></a>
-<span class="sourceLineNo">129</span>    tracker.setDeleted(579, true);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    tracker.setPartialFlag(false);<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    assertTrue(tracker.isEmpty());<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 testIsTracking() {<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    long[][] procIds = new long[][] {{4, 7}, {1024, 1027}, {8192, 8194}};<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    long[][] checkIds = new long[][] {{2, 8}, {1023, 1025}, {8193, 8191}};<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>    ProcedureStoreTracker tracker = new ProcedureStoreTracker();<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    for (int i = 0; i &lt; procIds.length; ++i) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      long[] seq = procIds[i];<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      tracker.insert(seq[0]);<a name="line.142"></a>
-<span class="sourceLineNo">143</span>      tracker.insert(seq[1]);<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    }<a name="line.144"></a>
-<span class="sourceLineNo">145</span><a name="line.145"></a>
-<span class="sourceLineNo">146</span>    for (int i = 0; i &lt; procIds.length; ++i) {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>      long[] check = checkIds[i];<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      long[] seq = procIds[i];<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      assertTrue(tracker.isTracking(seq[0], seq[1]));<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      assertTrue(tracker.isTracking(check[0], check[1]));<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      tracker.delete(seq[0]);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      tracker.delete(seq[1]);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      assertFalse(tracker.isTracking(seq[0], seq[1]));<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      assertFalse(tracker.isTracking(check[0], check[1]));<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>    assertTrue(tracker.isEmpty());<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  }<a name="line.158"></a>
-<span class="sourceLineNo">159</span><a name="line.159"></a>
-<span class="sourceLineNo">160</span>  @Test<a name="line.160"></a>
-<span class="sourceLineNo">161</span>  public void testBasicCRUD() {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    ProcedureStoreTracker tracker = new ProcedureStoreTracker();<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    assertTrue(tracker.isEmpty());<a name="line.163"></a>
-<span class="sourceLineNo">164</span><a name="line.164"></a>
-<span class="sourceLineNo">165</span>    Procedure[] procs = new TestProcedure[] {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      new TestProcedure(1), new TestProcedure(2), new TestProcedure(3),<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      new TestProcedure(4), new TestProcedure(5), new TestProcedure(6),<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>    tracker.insert(procs[0], null);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    tracker.insert(procs[1], new Procedure[] { procs[2], procs[3], procs[4] });<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    assertFalse(tracker.isEmpty());<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    assertTrue(tracker.isUpdated());<a name="line.173"></a>
-<span class="sourceLineNo">174</span><a name="line.174"></a>
-<span class="sourceLineNo">175</span>    tracker.resetUpdates();<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    assertFalse(tracker.isUpdated());<a name="line.176"></a>
-<span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span>    for (int i = 0; i &lt; 4; ++i) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      tracker.update(procs[i]);<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      assertFalse(tracker.isEmpty());<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      assertFalse(tracker.isUpdated());<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>    tracker.update(procs[4]);<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    assertFalse(tracker.isEmpty());<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    assertTrue(tracker.isUpdated());<a name="line.186"></a>
-<span class="sourceLineNo">187</span><a name="line.187"></a>
-<span class="sourceLineNo">188</span>    tracker.update(procs[5]);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    assertFalse(tracker.isEmpty());<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    assertTrue(tracker.isUpdated());<a name="line.190"></a>
-<span class="sourceLineNo">191</span><a name="line.191"></a>
-<span class="sourceLineNo">192</span>    for (int i = 0; i &lt; 5; ++i) {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      tracker.delete(procs[i].getProcId());<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      assertFalse(tracker.isEmpty());<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      assertTrue(tracker.isUpdated());<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    }<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    tracker.delete(procs[5].getProcId());<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    assertTrue(tracker.isEmpty());<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>  @Test<a name="line.201"></a>
-<span class="sourceLineNo">202</span>  public void testRandLoad() {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    final int NPROCEDURES = 2500;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    final int NRUNS = 5000;<a name="line.204"></a>
-<span class="sourceLineNo">205</span><a name="line.205"></a>
-<span class="sourceLineNo">206</span>    final ProcedureStoreTracker tracker = new ProcedureStoreTracker();<a name="line.206"></a>
-<span class="sourceLineNo">207</span><a name="line.207"></a>
-<span class="sourceLineNo">208</span>    Random rand = new Random(1);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    for (int i = 0; i &lt; NRUNS; ++i) {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      assertTrue(tracker.isEmpty());<a name="line.210"></a>
-<span class="sourceLineNo">211</span><a name="line.211"></a>
-<span class="sourceLineNo">212</span>      int count = 0;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      while (count &lt; NPROCEDURES) {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        long procId = rand.nextLong();<a name="line.214"></a>
-<span class="sourceLineNo">215</span>        if (procId &lt; 1) continue;<a name="line.215"></a>
-<span class="sourceLineNo">216</span><a name="line.216"></a>
-<span class="sourceLineNo">217</span>        tracker.setDeleted(procId, i % 2 == 0);<a name="line.217"></a>
-<span class="sourceLineNo">218</span>        count++;<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>      tracker.clear();<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><a name="line.224"></a>
-<span class="sourceLineNo">225</span>  @Test<a name="line.225"></a>
-<span class="sourceLineNo">226</span>  public void testLoad() {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    final int MAX_PROCS = 1000;<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    final ProcedureStoreTracker tracker = new ProcedureStoreTracker();<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    for (int numProcs = 1; numProcs &lt; MAX_PROCS; ++numProcs) {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      for (int start = 1; start &lt;= numProcs; ++start) {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>        assertTrue(tracker.isEmpty());<a name="line.231"></a>
-<span class="sourceLineNo">232</span><a name="line.232"></a>
-<span class="sourceLineNo">233</span>        LOG.debug("loading " + numProcs + " procs from start=" + start);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>        for (int i = start; i &lt;= numProcs; ++i) {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>          tracker.setDeleted(i, false);<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        }<a name="line.236"></a>
-<span class="sourceLineNo">237</span>        for (int i = 1; i &lt; start; ++i) {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>          tracker.setDeleted(i, false);<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>        tracker.clear();<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      }<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    }<a name="line.243"></a>
-<span class="sourceLineNo">244</span>  }<a name="line.244"></a>
-<span class="sourceLineNo">245</span><a name="line.245"></a>
-<span class="sourceLineNo">246</span>  @Test<a name="line.246"></a>
-<span class="sourceLineNo">247</span>  public void testDelete() {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    final ProcedureStoreTracker tracker = new ProcedureStoreTracker();<a name="line.248"></a>
-<span class="sourceLineNo">249</span><a name="line.249"></a>
-<span class="sourceLineNo">250</span>    long[] procIds = new long[] { 65, 1, 193 };<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    for (int i = 0; i &lt; procIds.length; ++i) {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      tracker.insert(procIds[i]);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      tracker.dump();<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>    for (int i = 0; i &lt; (64 * 4); ++i) {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      boolean hasProc = false;<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      for (int j = 0; j &lt; procIds.length; ++j) {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>        if (procIds[j] == i) {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>          hasProc = true;<a name="line.260"></a>
-<span class="sourceLineNo">261</span>          break;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        }<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      }<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      if (hasProc) {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>        assertEquals(ProcedureStoreTracker.DeleteState.NO, tracker.isDeleted(i));<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      } else {<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        assertEquals("procId=" + i, ProcedureStoreTracker.DeleteState.YES, tracker.isDeleted(i));<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      }<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    }<a name="line.269"></a>
-<span class="sourceLineNo">270</span>  }<a name="line.270"></a>
-<span class="sourceLineNo">271</span>}<a name="line.271"></a>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</pre>
-</div>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html
index f994e3c..80d1e92 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html
@@ -33,250 +33,225 @@
 <span class="sourceLineNo">025</span><a name="line.25"></a>
 <span class="sourceLineNo">026</span>import org.apache.commons.logging.Log;<a name="line.26"></a>
 <span class="sourceLineNo">027</span>import org.apache.commons.logging.LogFactory;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.testclassification.SmallTests;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.testclassification.MasterTests;<a name="line.30"></a>
-<span class="sourceLineNo">031</span><a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.junit.Assert;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.junit.Test;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.junit.experimental.categories.Category;<a name="line.34"></a>
-<span class="sourceLineNo">035</span><a name="line.35"></a>
-<span class="sourceLineNo">036</span>import static org.junit.Assert.assertEquals;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import static org.junit.Assert.assertFalse;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import static org.junit.Assert.assertTrue;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import static org.junit.Assert.fail;<a name="line.39"></a>
-<span class="sourceLineNo">040</span><a name="line.40"></a>
-<span class="sourceLineNo">041</span>@Category({MasterTests.class, SmallTests.class})<a name="line.41"></a>
-<span class="sourceLineNo">042</span>public class TestProcedureStoreTracker {<a name="line.42"></a>
-<span class="sourceLineNo">043</span>  private static final Log LOG = LogFactory.getLog(TestProcedureStoreTracker.class);<a name="line.43"></a>
-<span class="sourceLineNo">044</span><a name="line.44"></a>
-<span class="sourceLineNo">045</span>  static class TestProcedure extends Procedure&lt;Void&gt; {<a name="line.45"></a>
-<span class="sourceLineNo">046</span>    public TestProcedure(long procId) {<a name="line.46"></a>
-<span class="sourceLineNo">047</span>      setProcId(procId);<a name="line.47"></a>
-<span class="sourceLineNo">048</span>    }<a name="line.48"></a>
-<span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>    @Override<a name="line.50"></a>
-<span class="sourceLineNo">051</span>    protected Procedure[] execute(Void env) { return null; }<a name="line.51"></a>
-<span class="sourceLineNo">052</span><a name="line.52"></a>
-<span class="sourceLineNo">053</span>    @Override<a name="line.53"></a>
-<span class="sourceLineNo">054</span>    protected void rollback(Void env) { /* no-op */ }<a name="line.54"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.testclassification.SmallTests;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.testclassification.MasterTests;<a name="line.29"></a>
+<span class="sourceLineNo">030</span><a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.junit.Assert;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.junit.Test;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.junit.experimental.categories.Category;<a name="line.33"></a>
+<span class="sourceLineNo">034</span><a name="line.34"></a>
+<span class="sourceLineNo">035</span>import static org.junit.Assert.assertEquals;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import static org.junit.Assert.assertFalse;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import static org.junit.Assert.assertTrue;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import static org.junit.Assert.fail;<a name="line.38"></a>
+<span class="sourceLineNo">039</span><a name="line.39"></a>
+<span class="sourceLineNo">040</span>@Category({MasterTests.class, SmallTests.class})<a name="line.40"></a>
+<span class="sourceLineNo">041</span>public class TestProcedureStoreTracker {<a name="line.41"></a>
+<span class="sourceLineNo">042</span>  private static final Log LOG = LogFactory.getLog(TestProcedureStoreTracker.class);<a name="line.42"></a>
+<span class="sourceLineNo">043</span><a name="line.43"></a>
+<span class="sourceLineNo">044</span>  @Test<a name="line.44"></a>
+<span class="sourceLineNo">045</span>  public void testSeqInsertAndDelete() {<a name="line.45"></a>
+<span class="sourceLineNo">046</span>    ProcedureStoreTracker tracker = new ProcedureStoreTracker();<a name="line.46"></a>
+<span class="sourceLineNo">047</span>    assertTrue(tracker.isEmpty());<a name="line.47"></a>
+<span class="sourceLineNo">048</span><a name="line.48"></a>
+<span class="sourceLineNo">049</span>    final int MIN_PROC = 1;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>    final int MAX_PROC = 1 &lt;&lt; 10;<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>    // sequential insert<a name="line.52"></a>
+<span class="sourceLineNo">053</span>    for (int i = MIN_PROC; i &lt; MAX_PROC; ++i) {<a name="line.53"></a>
+<span class="sourceLineNo">054</span>      tracker.insert(i);<a name="line.54"></a>
 <span class="sourceLineNo">055</span><a name="line.55"></a>
-<span class="sourceLineNo">056</span>    @Override<a name="line.56"></a>
-<span class="sourceLineNo">057</span>    protected boolean abort(Void env) { return false; }<a name="line.57"></a>
-<span class="sourceLineNo">058</span><a name="line.58"></a>
-<span class="sourceLineNo">059</span>    @Override<a name="line.59"></a>
-<span class="sourceLineNo">060</span>    protected void serializeStateData(final OutputStream stream) { /* no-op */ }<a name="line.60"></a>
-<span class="sourceLineNo">061</span><a name="line.61"></a>
-<span class="sourceLineNo">062</span>    @Override<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    protected void deserializeStateData(final InputStream stream) { /* no-op */ }<a name="line.63"></a>
-<span class="sourceLineNo">064</span>  }<a name="line.64"></a>
+<span class="sourceLineNo">056</span>      // All the proc that we inserted should not be deleted<a name="line.56"></a>
+<span class="sourceLineNo">057</span>      for (int j = MIN_PROC; j &lt;= i; ++j) {<a name="line.57"></a>
+<span class="sourceLineNo">058</span>        assertEquals(ProcedureStoreTracker.DeleteState.NO, tracker.isDeleted(j));<a name="line.58"></a>
+<span class="sourceLineNo">059</span>      }<a name="line.59"></a>
+<span class="sourceLineNo">060</span>      // All the proc that are not yet inserted should be result as deleted<a name="line.60"></a>
+<span class="sourceLineNo">061</span>      for (int j = i + 1; j &lt; MAX_PROC; ++j) {<a name="line.61"></a>
+<span class="sourceLineNo">062</span>        assertTrue(tracker.isDeleted(j) != ProcedureStoreTracker.DeleteState.NO);<a name="line.62"></a>
+<span class="sourceLineNo">063</span>      }<a name="line.63"></a>
+<span class="sourceLineNo">064</span>    }<a name="line.64"></a>
 <span class="sourceLineNo">065</span><a name="line.65"></a>
-<span class="sourceLineNo">066</span>  @Test<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  public void testSeqInsertAndDelete() {<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    ProcedureStoreTracker tracker = new ProcedureStoreTracker();<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    assertTrue(tracker.isEmpty());<a name="line.69"></a>
-<span class="sourceLineNo">070</span><a name="line.70"></a>
-<span class="sourceLineNo">071</span>    final int MIN_PROC = 1;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    final int MAX_PROC = 1 &lt;&lt; 10;<a name="line.72"></a>
-<span class="sourceLineNo">073</span><a name="line.73"></a>
-<span class="sourceLineNo">074</span>    // sequential insert<a name="line.74"></a>
-<span class="sourceLineNo">075</span>    for (int i = MIN_PROC; i &lt; MAX_PROC; ++i) {<a name="line.75"></a>
-<span class="sourceLineNo">076</span>      tracker.insert(i);<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>      // All the proc that we inserted should not be deleted<a name="line.78"></a>
-<span class="sourceLineNo">079</span>      for (int j = MIN_PROC; j &lt;= i; ++j) {<a name="line.79"></a>
-<span class="sourceLineNo">080</span>        assertEquals(ProcedureStoreTracker.DeleteState.NO, tracker.isDeleted(j));<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      }<a name="line.81"></a>
-<span class="sourceLineNo">082</span>      // All the proc that are not yet inserted should be result as deleted<a name="line.82"></a>
-<span class="sourceLineNo">083</span>      for (int j = i + 1; j &lt; MAX_PROC; ++j) {<a name="line.83"></a>
-<span class="sourceLineNo">084</span>        assertTrue(tracker.isDeleted(j) != ProcedureStoreTracker.DeleteState.NO);<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>    // sequential delete<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    for (int i = MIN_PROC; i &lt; MAX_PROC; ++i) {<a name="line.89"></a>
-<span class="sourceLineNo">090</span>      tracker.delete(i);<a name="line.90"></a>
+<span class="sourceLineNo">066</span>    // sequential delete<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    for (int i = MIN_PROC; i &lt; MAX_PROC; ++i) {<a name="line.67"></a>
+<span class="sourceLineNo">068</span>      tracker.delete(i);<a name="line.68"></a>
+<span class="sourceLineNo">069</span><a name="line.69"></a>
+<span class="sourceLineNo">070</span>      // All the proc that we deleted should be deleted<a name="line.70"></a>
+<span class="sourceLineNo">071</span>      for (int j = MIN_PROC; j &lt;= i; ++j) {<a name="line.71"></a>
+<span class="sourceLineNo">072</span>        assertEquals(ProcedureStoreTracker.DeleteState.YES, tracker.isDeleted(j));<a name="line.72"></a>
+<span class="sourceLineNo">073</span>      }<a name="line.73"></a>
+<span class="sourceLineNo">074</span>      // All the proc that are not yet deleted should be result as not deleted<a name="line.74"></a>
+<span class="sourceLineNo">075</span>      for (int j = i + 1; j &lt; MAX_PROC; ++j) {<a name="line.75"></a>
+<span class="sourceLineNo">076</span>        assertEquals(ProcedureStoreTracker.DeleteState.NO, tracker.isDeleted(j));<a name="line.76"></a>
+<span class="sourceLineNo">077</span>      }<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    }<a name="line.78"></a>
+<span class="sourceLineNo">079</span>    assertTrue(tracker.isEmpty());<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  }<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>  @Test<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  public void testPartialTracker() {<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    ProcedureStoreTracker tracker = new ProcedureStoreTracker();<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    tracker.setPartialFlag(true);<a name="line.85"></a>
+<span class="sourceLineNo">086</span><a name="line.86"></a>
+<span class="sourceLineNo">087</span>    // nothing in the tracker, the state is unknown<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    assertTrue(tracker.isEmpty());<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(1));<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(579));<a name="line.90"></a>
 <span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>      // All the proc that we deleted should be deleted<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      for (int j = MIN_PROC; j &lt;= i; ++j) {<a name="line.93"></a>
-<span class="sourceLineNo">094</span>        assertEquals(ProcedureStoreTracker.DeleteState.YES, tracker.isDeleted(j));<a name="line.94"></a>
-<span class="sourceLineNo">095</span>      }<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      // All the proc that are not yet deleted should be result as not deleted<a name="line.96"></a>
-<span class="sourceLineNo">097</span>      for (int j = i + 1; j &lt; MAX_PROC; ++j) {<a name="line.97"></a>
-<span class="sourceLineNo">098</span>        assertEquals(ProcedureStoreTracker.DeleteState.NO, tracker.isDeleted(j));<a name="line.98"></a>
-<span class="sourceLineNo">099</span>      }<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    }<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    assertTrue(tracker.isEmpty());<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 testPartialTracker() {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    ProcedureStoreTracker tracker = new ProcedureStoreTracker();<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    tracker.setPartialFlag(true);<a name="line.107"></a>
-<span class="sourceLineNo">108</span><a name="line.108"></a>
-<span class="sourceLineNo">109</span>    // nothing in the tracker, the state is unknown<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    assertTrue(tracker.isEmpty());<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(1));<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(579));<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>    // Mark 1 as deleted, now that is a known state<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    tracker.setDeleted(1, true);<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    tracker.dump();<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    assertEquals(ProcedureStoreTracker.DeleteState.YES, tracker.isDeleted(1));<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(2));<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(579));<a name="line.119"></a>
-<span class="sourceLineNo">120</span><a name="line.120"></a>
-<span class="sourceLineNo">121</span>    // Mark 579 as non-deleted, now that is a known state<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    tracker.setDeleted(579, false);<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    assertEquals(ProcedureStoreTracker.DeleteState.YES, tracker.isDeleted(1));<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(2));<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    assertEquals(ProcedureStoreTracker.DeleteState.NO, tracker.isDeleted(579));<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(577));<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(580));<a name="line.127"></a>
-<span class="sourceLineNo">128</span><a name="line.128"></a>
-<span class="sourceLineNo">129</span>    tracker.setDeleted(579, true);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    tracker.setPartialFlag(false);<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    assertTrue(tracker.isEmpty());<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 testIsTracking() {<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    long[][] procIds = new long[][] {{4, 7}, {1024, 1027}, {8192, 8194}};<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    long[][] checkIds = new long[][] {{2, 8}, {1023, 1025}, {8193, 8191}};<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>    ProcedureStoreTracker tracker = new ProcedureStoreTracker();<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    for (int i = 0; i &lt; procIds.length; ++i) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      long[] seq = procIds[i];<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      tracker.insert(seq[0]);<a name="line.142"></a>
-<span class="sourceLineNo">143</span>      tracker.insert(seq[1]);<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    }<a name="line.144"></a>
-<span class="sourceLineNo">145</span><a name="line.145"></a>
-<span class="sourceLineNo">146</span>    for (int i = 0; i &lt; procIds.length; ++i) {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>      long[] check = checkIds[i];<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      long[] seq = procIds[i];<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      assertTrue(tracker.isTracking(seq[0], seq[1]));<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      assertTrue(tracker.isTracking(check[0], check[1]));<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      tracker.delete(seq[0]);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      tracker.delete(seq[1]);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      assertFalse(tracker.isTracking(seq[0], seq[1]));<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      assertFalse(tracker.isTracking(check[0], check[1]));<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>    assertTrue(tracker.isEmpty());<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  }<a name="line.158"></a>
-<span class="sourceLineNo">159</span><a name="line.159"></a>
-<span class="sourceLineNo">160</span>  @Test<a name="line.160"></a>
-<span class="sourceLineNo">161</span>  public void testBasicCRUD() {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    ProcedureStoreTracker tracker = new ProcedureStoreTracker();<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    assertTrue(tracker.isEmpty());<a name="line.163"></a>
-<span class="sourceLineNo">164</span><a name="line.164"></a>
-<span class="sourceLineNo">165</span>    Procedure[] procs = new TestProcedure[] {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      new TestProcedure(1), new TestProcedure(2), new TestProcedure(3),<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      new TestProcedure(4), new TestProcedure(5), new TestProcedure(6),<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>    tracker.insert(procs[0], null);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    tracker.insert(procs[1], new Procedure[] { procs[2], procs[3], procs[4] });<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    assertFalse(tracker.isEmpty());<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    assertTrue(tracker.isUpdated());<a name="line.173"></a>
-<span class="sourceLineNo">174</span><a name="line.174"></a>
-<span class="sourceLineNo">175</span>    tracker.resetUpdates();<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    assertFalse(tracker.isUpdated());<a name="line.176"></a>
-<span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span>    for (int i = 0; i &lt; 4; ++i) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      tracker.update(procs[i]);<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      assertFalse(tracker.isEmpty());<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      assertFalse(tracker.isUpdated());<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>    tracker.update(procs[4]);<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    assertFalse(tracker.isEmpty());<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    assertTrue(tracker.isUpdated());<a name="line.186"></a>
-<span class="sourceLineNo">187</span><a name="line.187"></a>
-<span class="sourceLineNo">188</span>    tracker.update(procs[5]);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    assertFalse(tracker.isEmpty());<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    assertTrue(tracker.isUpdated());<a name="line.190"></a>
+<span class="sourceLineNo">092</span>    // Mark 1 as deleted, now that is a known state<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    tracker.setDeleted(1, true);<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    tracker.dump();<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    assertEquals(ProcedureStoreTracker.DeleteState.YES, tracker.isDeleted(1));<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(2));<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(579));<a name="line.97"></a>
+<span class="sourceLineNo">098</span><a name="line.98"></a>
+<span class="sourceLineNo">099</span>    // Mark 579 as non-deleted, now that is a known state<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    tracker.setDeleted(579, false);<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    assertEquals(ProcedureStoreTracker.DeleteState.YES, tracker.isDeleted(1));<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(2));<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    assertEquals(ProcedureStoreTracker.DeleteState.NO, tracker.isDeleted(579));<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(577));<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(580));<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>    tracker.setDeleted(579, true);<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    tracker.setPartialFlag(false);<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    assertTrue(tracker.isEmpty());<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  }<a name="line.110"></a>
+<span class="sourceLineNo">111</span><a name="line.111"></a>
+<span class="sourceLineNo">112</span>  @Test<a name="line.112"></a>
+<span class="sourceLineNo">113</span>  public void testIsTracking() {<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    long[][] procIds = new long[][] {{4, 7}, {1024, 1027}, {8192, 8194}};<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    long[][] checkIds = new long[][] {{2, 8}, {1023, 1025}, {8193, 8191}};<a name="line.115"></a>
+<span class="sourceLineNo">116</span><a name="line.116"></a>
+<span class="sourceLineNo">117</span>    ProcedureStoreTracker tracker = new ProcedureStoreTracker();<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    for (int i = 0; i &lt; procIds.length; ++i) {<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      long[] seq = procIds[i];<a name="line.119"></a>
+<span class="sourceLineNo">120</span>      tracker.insert(seq[0]);<a name="line.120"></a>
+<span class="sourceLineNo">121</span>      tracker.insert(seq[1]);<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    }<a name="line.122"></a>
+<span class="sourceLineNo">123</span><a name="line.123"></a>
+<span class="sourceLineNo">124</span>    for (int i = 0; i &lt; procIds.length; ++i) {<a name="line.124"></a>
+<span class="sourceLineNo">125</span>      long[] check = checkIds[i];<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      long[] seq = procIds[i];<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      assertTrue(tracker.isTracking(seq[0], seq[1]));<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      assertTrue(tracker.isTracking(check[0], check[1]));<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      tracker.delete(seq[0]);<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      tracker.delete(seq[1]);<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      assertFalse(tracker.isTracking(seq[0], seq[1]));<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      assertFalse(tracker.isTracking(check[0], check[1]));<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>    assertTrue(tracker.isEmpty());<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  }<a name="line.136"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span>  @Test<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  public void testBasicCRUD() {<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    ProcedureStoreTracker tracker = new ProcedureStoreTracker();<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    assertTrue(tracker.isEmpty());<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>    long[] procs = new long[] { 1, 2, 3, 4, 5, 6 };<a name="line.143"></a>
+<span class="sourceLineNo">144</span><a name="line.144"></a>
+<span class="sourceLineNo">145</span>    tracker.insert(procs[0]);<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    tracker.insert(procs[1], new long[] { procs[2], procs[3], procs[4] });<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    assertFalse(tracker.isEmpty());<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    assertTrue(tracker.isUpdated());<a name="line.148"></a>
+<span class="sourceLineNo">149</span><a name="line.149"></a>
+<span class="sourceLineNo">150</span>    tracker.resetUpdates();<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    assertFalse(tracker.isUpdated());<a name="line.151"></a>
+<span class="sourceLineNo">152</span><a name="line.152"></a>
+<span class="sourceLineNo">153</span>    for (int i = 0; i &lt; 4; ++i) {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      tracker.update(procs[i]);<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      assertFalse(tracker.isEmpty());<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      assertFalse(tracker.isUpdated());<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    }<a name="line.157"></a>
+<span class="sourceLineNo">158</span><a name="line.158"></a>
+<span class="sourceLineNo">159</span>    tracker.update(procs[4]);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    assertFalse(tracker.isEmpty());<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    assertTrue(tracker.isUpdated());<a name="line.161"></a>
+<span class="sourceLineNo">162</span><a name="line.162"></a>
+<span class="sourceLineNo">163</span>    tracker.update(procs[5]);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    assertFalse(tracker.isEmpty());<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    assertTrue(tracker.isUpdated());<a name="line.165"></a>
+<span class="sourceLineNo">166</span><a name="line.166"></a>
+<span class="sourceLineNo">167</span>    for (int i = 0; i &lt; 5; ++i) {<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      tracker.delete(procs[i]);<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      assertFalse(tracker.isEmpty());<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      assertTrue(tracker.isUpdated());<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    }<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    tracker.delete(procs[5]);<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    assertTrue(tracker.isEmpty());<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>  @Test<a name="line.176"></a>
+<span class="sourceLineNo">177</span>  public void testRandLoad() {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    final int NPROCEDURES = 2500;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    final int NRUNS = 5000;<a name="line.179"></a>
+<span class="sourceLineNo">180</span><a name="line.180"></a>
+<span class="sourceLineNo">181</span>    final ProcedureStoreTracker tracker = new ProcedureStoreTracker();<a name="line.181"></a>
+<span class="sourceLineNo">182</span><a name="line.182"></a>
+<span class="sourceLineNo">183</span>    Random rand = new Random(1);<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    for (int i = 0; i &lt; NRUNS; ++i) {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      assertTrue(tracker.isEmpty());<a name="line.185"></a>
+<span class="sourceLineNo">186</span><a name="line.186"></a>
+<span class="sourceLineNo">187</span>      int count = 0;<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      while (count &lt; NPROCEDURES) {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>        long procId = rand.nextLong();<a name="line.189"></a>
+<span class="sourceLineNo">190</span>        if (procId &lt; 1) continue;<a name="line.190"></a>
 <span class="sourceLineNo">191</span><a name="line.191"></a>
-<span class="sourceLineNo">192</span>    for (int i = 0; i &lt; 5; ++i) {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      tracker.delete(procs[i].getProcId());<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      assertFalse(tracker.isEmpty());<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      assertTrue(tracker.isUpdated());<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    }<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    tracker.delete(procs[5].getProcId());<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    assertTrue(tracker.isEmpty());<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>  @Test<a name="line.201"></a>
-<span class="sourceLineNo">202</span>  public void testRandLoad() {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    final int NPROCEDURES = 2500;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    final int NRUNS = 5000;<a name="line.204"></a>
-<span class="sourceLineNo">205</span><a name="line.205"></a>
-<span class="sourceLineNo">206</span>    final ProcedureStoreTracker tracker = new ProcedureStoreTracker();<a name="line.206"></a>
+<span class="sourceLineNo">192</span>        tracker.setDeleted(procId, i % 2 == 0);<a name="line.192"></a>
+<span class="sourceLineNo">193</span>        count++;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      }<a name="line.194"></a>
+<span class="sourceLineNo">195</span><a name="line.195"></a>
+<span class="sourceLineNo">196</span>      tracker.clear();<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>  @Test<a name="line.200"></a>
+<span class="sourceLineNo">201</span>  public void testLoad() {<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    final int MAX_PROCS = 1000;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    final ProcedureStoreTracker tracker = new ProcedureStoreTracker();<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    for (int numProcs = 1; numProcs &lt; MAX_PROCS; ++numProcs) {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      for (int start = 1; start &lt;= numProcs; ++start) {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>        assertTrue(tracker.isEmpty());<a name="line.206"></a>
 <span class="sourceLineNo">207</span><a name="line.207"></a>
-<span class="sourceLineNo">208</span>    Random rand = new Random(1);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    for (int i = 0; i &lt; NRUNS; ++i) {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      assertTrue(tracker.isEmpty());<a name="line.210"></a>
-<span class="sourceLineNo">211</span><a name="line.211"></a>
-<span class="sourceLineNo">212</span>      int count = 0;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      while (count &lt; NPROCEDURES) {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        long procId = rand.nextLong();<a name="line.214"></a>
-<span class="sourceLineNo">215</span>        if (procId &lt; 1) continue;<a name="line.215"></a>
-<span class="sourceLineNo">216</span><a name="line.216"></a>
-<span class="sourceLineNo">217</span>        tracker.setDeleted(procId, i % 2 == 0);<a name="line.217"></a>
-<span class="sourceLineNo">218</span>        count++;<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      }<a name="line.219"></a>
+<span class="sourceLineNo">208</span>        LOG.debug("loading " + numProcs + " procs from start=" + start);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>        for (int i = start; i &lt;= numProcs; ++i) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>          tracker.setDeleted(i, false);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>        }<a name="line.211"></a>
+<span class="sourceLineNo">212</span>        for (int i = 1; i &lt; start; ++i) {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>          tracker.setDeleted(i, false);<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>        tracker.clear();<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      }<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    }<a name="line.218"></a>
+<span class="sourceLineNo">219</span>  }<a name="line.219"></a>
 <span class="sourceLineNo">220</span><a name="line.220"></a>
-<span class="sourceLineNo">221</span>      tracker.clear();<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">221</span>  @Test<a name="line.221"></a>
+<span class="sourceLineNo">222</span>  public void testDelete() {<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    final ProcedureStoreTracker tracker = new ProcedureStoreTracker();<a name="line.223"></a>
 <span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span>  @Test<a name="line.225"></a>
-<span class="sourceLineNo">226</span>  public void testLoad() {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    final int MAX_PROCS = 1000;<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    final ProcedureStoreTracker tracker = new ProcedureStoreTracker();<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    for (int numProcs = 1; numProcs &lt; MAX_PROCS; ++numProcs) {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      for (int start = 1; start &lt;= numProcs; ++start) {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>        assertTrue(tracker.isEmpty());<a name="line.231"></a>
-<span class="sourceLineNo">232</span><a name="line.232"></a>
-<span class="sourceLineNo">233</span>        LOG.debug("loading " + numProcs + " procs from start=" + start);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>        for (int i = start; i &lt;= numProcs; ++i) {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>          tracker.setDeleted(i, false);<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        }<a name="line.236"></a>
-<span class="sourceLineNo">237</span>        for (int i = 1; i &lt; start; ++i) {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>          tracker.setDeleted(i, false);<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>        tracker.clear();<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      }<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    }<a name="line.243"></a>
-<span class="sourceLineNo">244</span>  }<a name="line.244"></a>
-<span class="sourceLineNo">245</span><a name="line.245"></a>
-<span class="sourceLineNo">246</span>  @Test<a name="line.246"></a>
-<span class="sourceLineNo">247</span>  public void testDelete() {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    final ProcedureStoreTracker tracker = new ProcedureStoreTracker();<a name="line.248"></a>
-<span class="sourceLineNo">249</span><a name="line.249"></a>
-<span class="sourceLineNo">250</span>    long[] procIds = new long[] { 65, 1, 193 };<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    for (int i = 0; i &lt; procIds.length; ++i) {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      tracker.insert(procIds[i]);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      tracker.dump();<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>    for (int i = 0; i &lt; (64 * 4); ++i) {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      boolean hasProc = false;<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      for (int j = 0; j &lt; procIds.length; ++j) {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>        if (procIds[j] == i) {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>          hasProc = true;<a name="line.260"></a>
-<span class="sourceLineNo">261</span>          break;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        }<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      }<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      if (hasProc) {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>        assertEquals(ProcedureStoreTracker.DeleteState.NO, tracker.isDeleted(i));<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      } else {<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        assertEquals("procId=" + i, ProcedureStoreTracker.DeleteState.YES, tracker.isDeleted(i));<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      }<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    }<a name="line.269"></a>
-<span class="sourceLineNo">270</span>  }<a name="line.270"></a>
-<span class="sourceLineNo">271</span>}<a name="line.271"></a>
+<span class="sourceLineNo">225</span>    long[] procIds = new long[] { 65, 1, 193 };<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    for (int i = 0; i &lt; procIds.length; ++i) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      tracker.insert(procIds[i]);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      tracker.dump();<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>    for (int i = 0; i &lt; (64 * 4); ++i) {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      boolean hasProc = false;<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      for (int j = 0; j &lt; procIds.length; ++j) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>        if (procIds[j] == i) {<a name="line.234"></a>
+<span class="sourceLineNo">235</span>          hasProc = true;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>          break;<a name="line.236"></a>
+<span class="sourceLineNo">237</span>        }<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      }<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      if (hasProc) {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>        assertEquals(ProcedureStoreTracker.DeleteState.NO, tracker.isDeleted(i));<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      } else {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        assertEquals("procId=" + i, ProcedureStoreTracker.DeleteState.YES, tracker.isDeleted(i));<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>}<a name="line.246"></a>
 
 
 


[29/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html
index 2a5efbf..ae7d613 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html
@@ -39,259 +39,261 @@
 <span class="sourceLineNo">031</span>import org.codehaus.jackson.map.ObjectMapper;<a name="line.31"></a>
 <span class="sourceLineNo">032</span>import org.codehaus.jackson.map.SerializationConfig;<a name="line.32"></a>
 <span class="sourceLineNo">033</span><a name="line.33"></a>
-<span class="sourceLineNo">034</span>import com.yammer.metrics.core.Histogram;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import com.yammer.metrics.core.MetricsRegistry;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import com.yammer.metrics.stats.Snapshot;<a name="line.36"></a>
+<span class="sourceLineNo">034</span>import com.codahale.metrics.Histogram;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import com.codahale.metrics.MetricRegistry;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import com.codahale.metrics.Snapshot;<a name="line.36"></a>
 <span class="sourceLineNo">037</span><a name="line.37"></a>
-<span class="sourceLineNo">038</span>/**<a name="line.38"></a>
-<span class="sourceLineNo">039</span> * Utilty for aggregating counts in CachedBlocks and toString/toJSON CachedBlocks and BlockCaches.<a name="line.39"></a>
-<span class="sourceLineNo">040</span> * No attempt has been made at making this thread safe.<a name="line.40"></a>
-<span class="sourceLineNo">041</span> */<a name="line.41"></a>
-<span class="sourceLineNo">042</span>@InterfaceAudience.Private<a name="line.42"></a>
-<span class="sourceLineNo">043</span>public class BlockCacheUtil {<a name="line.43"></a>
-<span class="sourceLineNo">044</span>  /**<a name="line.44"></a>
-<span class="sourceLineNo">045</span>   * Needed making histograms.<a name="line.45"></a>
-<span class="sourceLineNo">046</span>   */<a name="line.46"></a>
-<span class="sourceLineNo">047</span>  private static final MetricsRegistry METRICS = new MetricsRegistry();<a name="line.47"></a>
-<span class="sourceLineNo">048</span><a name="line.48"></a>
-<span class="sourceLineNo">049</span>  /**<a name="line.49"></a>
-<span class="sourceLineNo">050</span>   * Needed generating JSON.<a name="line.50"></a>
-<span class="sourceLineNo">051</span>   */<a name="line.51"></a>
-<span class="sourceLineNo">052</span>  private static final ObjectMapper MAPPER = new ObjectMapper();<a name="line.52"></a>
-<span class="sourceLineNo">053</span>  static {<a name="line.53"></a>
-<span class="sourceLineNo">054</span>    MAPPER.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, false);<a name="line.54"></a>
-<span class="sourceLineNo">055</span>    MAPPER.configure(SerializationConfig.Feature.FLUSH_AFTER_WRITE_VALUE, true);<a name="line.55"></a>
-<span class="sourceLineNo">056</span>    MAPPER.configure(SerializationConfig.Feature.INDENT_OUTPUT, true);<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>  /**<a name="line.59"></a>
-<span class="sourceLineNo">060</span>   * @param cb<a name="line.60"></a>
-<span class="sourceLineNo">061</span>   * @return The block content as String.<a name="line.61"></a>
-<span class="sourceLineNo">062</span>   */<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  public static String toString(final CachedBlock cb, final long now) {<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    return "filename=" + cb.getFilename() + ", " + toStringMinusFileName(cb, now);<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  }<a name="line.65"></a>
-<span class="sourceLineNo">066</span><a name="line.66"></a>
-<span class="sourceLineNo">067</span>  /**<a name="line.67"></a>
-<span class="sourceLineNo">068</span>   * Little data structure to hold counts for a file.<a name="line.68"></a>
-<span class="sourceLineNo">069</span>   * Used doing a toJSON.<a name="line.69"></a>
-<span class="sourceLineNo">070</span>   */<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  static class CachedBlockCountsPerFile {<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    private int count = 0;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    private long size = 0;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    private int countData = 0;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>    private long sizeData = 0;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>    private final String filename;<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>    CachedBlockCountsPerFile(final String filename) {<a name="line.78"></a>
-<span class="sourceLineNo">079</span>      this.filename = filename;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>    }<a name="line.80"></a>
-<span class="sourceLineNo">081</span><a name="line.81"></a>
-<span class="sourceLineNo">082</span>    public int getCount() {<a name="line.82"></a>
-<span class="sourceLineNo">083</span>      return count;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    }<a name="line.84"></a>
-<span class="sourceLineNo">085</span><a name="line.85"></a>
-<span class="sourceLineNo">086</span>    public long getSize() {<a name="line.86"></a>
-<span class="sourceLineNo">087</span>      return size;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    }<a name="line.88"></a>
-<span class="sourceLineNo">089</span><a name="line.89"></a>
-<span class="sourceLineNo">090</span>    public int getCountData() {<a name="line.90"></a>
-<span class="sourceLineNo">091</span>      return countData;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>    }<a name="line.92"></a>
-<span class="sourceLineNo">093</span><a name="line.93"></a>
-<span class="sourceLineNo">094</span>    public long getSizeData() {<a name="line.94"></a>
-<span class="sourceLineNo">095</span>      return sizeData;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    }<a name="line.96"></a>
-<span class="sourceLineNo">097</span><a name="line.97"></a>
-<span class="sourceLineNo">098</span>    public String getFilename() {<a name="line.98"></a>
-<span class="sourceLineNo">099</span>      return filename;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    }<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  }<a name="line.101"></a>
-<span class="sourceLineNo">102</span><a name="line.102"></a>
-<span class="sourceLineNo">103</span>  /**<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * @param filename<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   * @param blocks<a name="line.105"></a>
-<span class="sourceLineNo">106</span>   * @return A JSON String of &lt;code&gt;filename&lt;/code&gt; and counts of &lt;code&gt;blocks&lt;/code&gt;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>   * @throws JsonGenerationException<a name="line.107"></a>
-<span class="sourceLineNo">108</span>   * @throws JsonMappingException<a name="line.108"></a>
-<span class="sourceLineNo">109</span>   * @throws IOException<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   */<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  public static String toJSON(final String filename, final NavigableSet&lt;CachedBlock&gt; blocks)<a name="line.111"></a>
-<span class="sourceLineNo">112</span>  throws JsonGenerationException, JsonMappingException, IOException {<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    CachedBlockCountsPerFile counts = new CachedBlockCountsPerFile(filename);<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    for (CachedBlock cb: blocks) {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      counts.count++;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      counts.size += cb.getSize();<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      BlockType bt = cb.getBlockType();<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      if (bt != null &amp;&amp; bt.isData()) {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>        counts.countData++;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>        counts.sizeData += cb.getSize();<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>    return MAPPER.writeValueAsString(counts);<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  }<a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>  /**<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   * @param cbsbf<a name="line.127"></a>
-<span class="sourceLineNo">128</span>   * @return JSON string of &lt;code&gt;cbsf&lt;/code&gt; aggregated<a name="line.128"></a>
-<span class="sourceLineNo">129</span>   * @throws JsonGenerationException<a name="line.129"></a>
-<span class="sourceLineNo">130</span>   * @throws JsonMappingException<a name="line.130"></a>
-<span class="sourceLineNo">131</span>   * @throws IOException<a name="line.131"></a>
-<span class="sourceLineNo">132</span>   */<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  public static String toJSON(final CachedBlocksByFile cbsbf)<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  throws JsonGenerationException, JsonMappingException, IOException {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    return MAPPER.writeValueAsString(cbsbf);<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  }<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>  /**<a name="line.138"></a>
-<span class="sourceLineNo">139</span>   * @param bc<a name="line.139"></a>
-<span class="sourceLineNo">140</span>   * @return JSON string of &lt;code&gt;bc&lt;/code&gt; content.<a name="line.140"></a>
-<span class="sourceLineNo">141</span>   * @throws JsonGenerationException<a name="line.141"></a>
-<span class="sourceLineNo">142</span>   * @throws JsonMappingException<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * @throws IOException<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   */<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  public static String toJSON(final BlockCache bc)<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  throws JsonGenerationException, JsonMappingException, IOException {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    return MAPPER.writeValueAsString(bc);<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  }<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  /**<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   * @param cb<a name="line.151"></a>
-<span class="sourceLineNo">152</span>   * @return The block content of &lt;code&gt;bc&lt;/code&gt; as a String minus the filename.<a name="line.152"></a>
-<span class="sourceLineNo">153</span>   */<a name="line.153"></a>
-<span class="sourceLineNo">154</span>  public static String toStringMinusFileName(final CachedBlock cb, final long now) {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    return "offset=" + cb.getOffset() +<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      ", size=" + cb.getSize() +<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      ", age=" + (now - cb.getCachedTime()) +<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      ", type=" + cb.getBlockType() +<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      ", priority=" + cb.getBlockPriority();<a name="line.159"></a>
-<span class="sourceLineNo">160</span>  }<a name="line.160"></a>
-<span class="sourceLineNo">161</span><a name="line.161"></a>
-<span class="sourceLineNo">162</span>  /**<a name="line.162"></a>
-<span class="sourceLineNo">163</span>   * Get a {@link CachedBlocksByFile} instance and load it up by iterating content in<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * {@link BlockCache}.<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * @param conf Used to read configurations<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * @param bc Block Cache to iterate.<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   * @return Laoded up instance of CachedBlocksByFile<a name="line.167"></a>
-<span class="sourceLineNo">168</span>   */<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  public static CachedBlocksByFile getLoadedCachedBlocksByFile(final Configuration conf,<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      final BlockCache bc) {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    CachedBlocksByFile cbsbf = new CachedBlocksByFile(conf);<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    for (CachedBlock cb: bc) {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      if (cbsbf.update(cb)) break;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    }<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    return cbsbf;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>  }<a name="line.176"></a>
-<span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span>  /**<a name="line.178"></a>
-<span class="sourceLineNo">179</span>   * Use one of these to keep a running account of cached blocks by file.  Throw it away when done.<a name="line.179"></a>
-<span class="sourceLineNo">180</span>   * This is different than metrics in that it is stats on current state of a cache.<a name="line.180"></a>
-<span class="sourceLineNo">181</span>   * See getLoadedCachedBlocksByFile<a name="line.181"></a>
-<span class="sourceLineNo">182</span>   */<a name="line.182"></a>
-<span class="sourceLineNo">183</span>  @JsonIgnoreProperties({"cachedBlockStatsByFile"})<a name="line.183"></a>
-<span class="sourceLineNo">184</span>  public static class CachedBlocksByFile {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    private int count;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    private int dataBlockCount;<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    private long size;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    private long dataSize;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    private final long now = System.nanoTime();<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    private final int max;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    public static final int DEFAULT_MAX = 100000;<a name="line.191"></a>
-<span class="sourceLineNo">192</span> <a name="line.192"></a>
-<span class="sourceLineNo">193</span>    CachedBlocksByFile() {<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      this(null);<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    }<a name="line.195"></a>
-<span class="sourceLineNo">196</span><a name="line.196"></a>
-<span class="sourceLineNo">197</span>    CachedBlocksByFile(final Configuration c) {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      this.max = c == null? DEFAULT_MAX:<a name="line.198"></a>
-<span class="sourceLineNo">199</span>        c.getInt("hbase.ui.blockcache.by.file.max", DEFAULT_MAX);<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>     * Map by filename. use concurent utils because we want our Map and contained blocks sorted.<a name="line.203"></a>
-<span class="sourceLineNo">204</span>     */<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    private NavigableMap&lt;String, NavigableSet&lt;CachedBlock&gt;&gt; cachedBlockByFile =<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      new ConcurrentSkipListMap&lt;String, NavigableSet&lt;CachedBlock&gt;&gt;();<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    Histogram age = METRICS.newHistogram(CachedBlocksByFile.class, "age");<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>     * @param cb<a name="line.210"></a>
-<span class="sourceLineNo">211</span>     * @return True if full.... if we won't be adding any more.<a name="line.211"></a>
-<span class="sourceLineNo">212</span>     */<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    public boolean update(final CachedBlock cb) {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      if (isFull()) return true;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      NavigableSet&lt;CachedBlock&gt; set = this.cachedBlockByFile.get(cb.getFilename());<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      if (set == null) {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>        set = new ConcurrentSkipListSet&lt;CachedBlock&gt;();<a name="line.217"></a>
-<span class="sourceLineNo">218</span>        this.cachedBlockByFile.put(cb.getFilename(), set);<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      }<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      set.add(cb);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      this.size += cb.getSize();<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      this.count++;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      BlockType bt = cb.getBlockType();<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      if (bt != null &amp;&amp; bt.isData()) {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>        this.dataBlockCount++;<a name="line.225"></a>
-<span class="sourceLineNo">226</span>        this.dataSize += cb.getSize();<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      }<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      long age = this.now - cb.getCachedTime();<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      this.age.update(age);<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>    /**<a name="line.233"></a>
-<span class="sourceLineNo">234</span>     * @return True if full; i.e. there are more items in the cache but we only loaded up<a name="line.234"></a>
-<span class="sourceLineNo">235</span>     * the maximum set in configuration &lt;code&gt;hbase.ui.blockcache.by.file.max&lt;/code&gt;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>     * (Default: DEFAULT_MAX).<a name="line.236"></a>
-<span class="sourceLineNo">237</span>     */<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    public boolean isFull() {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      return this.count &gt;= this.max;<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>    public NavigableMap&lt;String, NavigableSet&lt;CachedBlock&gt;&gt; getCachedBlockStatsByFile() {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      return this.cachedBlockByFile;<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    }<a name="line.244"></a>
-<span class="sourceLineNo">245</span><a name="line.245"></a>
-<span class="sourceLineNo">246</span>    /**<a name="line.246"></a>
-<span class="sourceLineNo">247</span>     * @return count of blocks in the cache<a name="line.247"></a>
-<span class="sourceLineNo">248</span>     */<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    public int getCount() {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      return count;<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    }<a name="line.251"></a>
-<span class="sourceLineNo">252</span><a name="line.252"></a>
-<span class="sourceLineNo">253</span>    public int getDataCount() {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      return dataBlockCount;<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
-<span class="sourceLineNo">256</span><a name="line.256"></a>
-<span class="sourceLineNo">257</span>    /**<a name="line.257"></a>
-<span class="sourceLineNo">258</span>     * @return size of blocks in the cache<a name="line.258"></a>
-<span class="sourceLineNo">259</span>     */<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    public long getSize() {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      return size;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    }<a name="line.262"></a>
-<span class="sourceLineNo">263</span><a name="line.263"></a>
-<span class="sourceLineNo">264</span>    /**<a name="line.264"></a>
-<span class="sourceLineNo">265</span>     * @return Size of data.<a name="line.265"></a>
-<span class="sourceLineNo">266</span>     */<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    public long getDataSize() {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      return dataSize;<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    }<a name="line.269"></a>
-<span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span>    public AgeSnapshot getAgeInCacheSnapshot() {<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      return new AgeSnapshot(this.age);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    }<a name="line.273"></a>
-<span class="sourceLineNo">274</span><a name="line.274"></a>
-<span class="sourceLineNo">275</span>    @Override<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    public String toString() {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      Snapshot snapshot = this.age.getSnapshot();<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      return "count=" + count + ", dataBlockCount=" + this.dataBlockCount + ", size=" + size +<a name="line.278"></a>
-<span class="sourceLineNo">279</span>          ", dataSize=" + getDataSize() +<a name="line.279"></a>
-<span class="sourceLineNo">280</span>          ", mean age=" + this.age.mean() + ", stddev age=" + this.age.stdDev() +<a name="line.280"></a>
-<span class="sourceLineNo">281</span>          ", min age=" + this.age.min() + ", max age=" + this.age.max() +<a name="line.281"></a>
-<span class="sourceLineNo">282</span>          ", 95th percentile age=" + snapshot.get95thPercentile() +<a name="line.282"></a>
-<span class="sourceLineNo">283</span>          ", 99th percentile age=" + snapshot.get99thPercentile();<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    }<a name="line.284"></a>
-<span class="sourceLineNo">285</span>  }<a name="line.285"></a>
-<span class="sourceLineNo">286</span>}<a name="line.286"></a>
+<span class="sourceLineNo">038</span>import static com.codahale.metrics.MetricRegistry.name;<a name="line.38"></a>
+<span class="sourceLineNo">039</span><a name="line.39"></a>
+<span class="sourceLineNo">040</span>/**<a name="line.40"></a>
+<span class="sourceLineNo">041</span> * Utilty for aggregating counts in CachedBlocks and toString/toJSON CachedBlocks and BlockCaches.<a name="line.41"></a>
+<span class="sourceLineNo">042</span> * No attempt has been made at making this thread safe.<a name="line.42"></a>
+<span class="sourceLineNo">043</span> */<a name="line.43"></a>
+<span class="sourceLineNo">044</span>@InterfaceAudience.Private<a name="line.44"></a>
+<span class="sourceLineNo">045</span>public class BlockCacheUtil {<a name="line.45"></a>
+<span class="sourceLineNo">046</span>  /**<a name="line.46"></a>
+<span class="sourceLineNo">047</span>   * Needed making histograms.<a name="line.47"></a>
+<span class="sourceLineNo">048</span>   */<a name="line.48"></a>
+<span class="sourceLineNo">049</span>  private static final MetricRegistry METRICS = new MetricRegistry();<a name="line.49"></a>
+<span class="sourceLineNo">050</span><a name="line.50"></a>
+<span class="sourceLineNo">051</span>  /**<a name="line.51"></a>
+<span class="sourceLineNo">052</span>   * Needed generating JSON.<a name="line.52"></a>
+<span class="sourceLineNo">053</span>   */<a name="line.53"></a>
+<span class="sourceLineNo">054</span>  private static final ObjectMapper MAPPER = new ObjectMapper();<a name="line.54"></a>
+<span class="sourceLineNo">055</span>  static {<a name="line.55"></a>
+<span class="sourceLineNo">056</span>    MAPPER.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, false);<a name="line.56"></a>
+<span class="sourceLineNo">057</span>    MAPPER.configure(SerializationConfig.Feature.FLUSH_AFTER_WRITE_VALUE, true);<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    MAPPER.configure(SerializationConfig.Feature.INDENT_OUTPUT, true);<a name="line.58"></a>
+<span class="sourceLineNo">059</span>  }<a name="line.59"></a>
+<span class="sourceLineNo">060</span><a name="line.60"></a>
+<span class="sourceLineNo">061</span>  /**<a name="line.61"></a>
+<span class="sourceLineNo">062</span>   * @param cb<a name="line.62"></a>
+<span class="sourceLineNo">063</span>   * @return The block content as String.<a name="line.63"></a>
+<span class="sourceLineNo">064</span>   */<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  public static String toString(final CachedBlock cb, final long now) {<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    return "filename=" + cb.getFilename() + ", " + toStringMinusFileName(cb, now);<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>  /**<a name="line.69"></a>
+<span class="sourceLineNo">070</span>   * Little data structure to hold counts for a file.<a name="line.70"></a>
+<span class="sourceLineNo">071</span>   * Used doing a toJSON.<a name="line.71"></a>
+<span class="sourceLineNo">072</span>   */<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  static class CachedBlockCountsPerFile {<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    private int count = 0;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    private long size = 0;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    private int countData = 0;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    private long sizeData = 0;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    private final String filename;<a name="line.78"></a>
+<span class="sourceLineNo">079</span><a name="line.79"></a>
+<span class="sourceLineNo">080</span>    CachedBlockCountsPerFile(final String filename) {<a name="line.80"></a>
+<span class="sourceLineNo">081</span>      this.filename = filename;<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 getCount() {<a name="line.84"></a>
+<span class="sourceLineNo">085</span>      return count;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    }<a name="line.86"></a>
+<span class="sourceLineNo">087</span><a name="line.87"></a>
+<span class="sourceLineNo">088</span>    public long getSize() {<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      return size;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    }<a name="line.90"></a>
+<span class="sourceLineNo">091</span><a name="line.91"></a>
+<span class="sourceLineNo">092</span>    public int getCountData() {<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      return countData;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    }<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span>    public long getSizeData() {<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      return sizeData;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    }<a name="line.98"></a>
+<span class="sourceLineNo">099</span><a name="line.99"></a>
+<span class="sourceLineNo">100</span>    public String getFilename() {<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      return filename;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    }<a name="line.102"></a>
+<span class="sourceLineNo">103</span>  }<a name="line.103"></a>
+<span class="sourceLineNo">104</span><a name="line.104"></a>
+<span class="sourceLineNo">105</span>  /**<a name="line.105"></a>
+<span class="sourceLineNo">106</span>   * @param filename<a name="line.106"></a>
+<span class="sourceLineNo">107</span>   * @param blocks<a name="line.107"></a>
+<span class="sourceLineNo">108</span>   * @return A JSON String of &lt;code&gt;filename&lt;/code&gt; and counts of &lt;code&gt;blocks&lt;/code&gt;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>   * @throws JsonGenerationException<a name="line.109"></a>
+<span class="sourceLineNo">110</span>   * @throws JsonMappingException<a name="line.110"></a>
+<span class="sourceLineNo">111</span>   * @throws IOException<a name="line.111"></a>
+<span class="sourceLineNo">112</span>   */<a name="line.112"></a>
+<span class="sourceLineNo">113</span>  public static String toJSON(final String filename, final NavigableSet&lt;CachedBlock&gt; blocks)<a name="line.113"></a>
+<span class="sourceLineNo">114</span>  throws JsonGenerationException, JsonMappingException, IOException {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    CachedBlockCountsPerFile counts = new CachedBlockCountsPerFile(filename);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    for (CachedBlock cb: blocks) {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      counts.count++;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      counts.size += cb.getSize();<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      BlockType bt = cb.getBlockType();<a name="line.119"></a>
+<span class="sourceLineNo">120</span>      if (bt != null &amp;&amp; bt.isData()) {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>        counts.countData++;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>        counts.sizeData += cb.getSize();<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      }<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    }<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    return MAPPER.writeValueAsString(counts);<a name="line.125"></a>
+<span class="sourceLineNo">126</span>  }<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>  /**<a name="line.128"></a>
+<span class="sourceLineNo">129</span>   * @param cbsbf<a name="line.129"></a>
+<span class="sourceLineNo">130</span>   * @return JSON string of &lt;code&gt;cbsf&lt;/code&gt; aggregated<a name="line.130"></a>
+<span class="sourceLineNo">131</span>   * @throws JsonGenerationException<a name="line.131"></a>
+<span class="sourceLineNo">132</span>   * @throws JsonMappingException<a name="line.132"></a>
+<span class="sourceLineNo">133</span>   * @throws IOException<a name="line.133"></a>
+<span class="sourceLineNo">134</span>   */<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  public static String toJSON(final CachedBlocksByFile cbsbf)<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  throws JsonGenerationException, JsonMappingException, IOException {<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    return MAPPER.writeValueAsString(cbsbf);<a name="line.137"></a>
+<span class="sourceLineNo">138</span>  }<a name="line.138"></a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span>  /**<a name="line.140"></a>
+<span class="sourceLineNo">141</span>   * @param bc<a name="line.141"></a>
+<span class="sourceLineNo">142</span>   * @return JSON string of &lt;code&gt;bc&lt;/code&gt; content.<a name="line.142"></a>
+<span class="sourceLineNo">143</span>   * @throws JsonGenerationException<a name="line.143"></a>
+<span class="sourceLineNo">144</span>   * @throws JsonMappingException<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   * @throws IOException<a name="line.145"></a>
+<span class="sourceLineNo">146</span>   */<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  public static String toJSON(final BlockCache bc)<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  throws JsonGenerationException, JsonMappingException, IOException {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    return MAPPER.writeValueAsString(bc);<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>   * @param cb<a name="line.153"></a>
+<span class="sourceLineNo">154</span>   * @return The block content of &lt;code&gt;bc&lt;/code&gt; as a String minus the filename.<a name="line.154"></a>
+<span class="sourceLineNo">155</span>   */<a name="line.155"></a>
+<span class="sourceLineNo">156</span>  public static String toStringMinusFileName(final CachedBlock cb, final long now) {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    return "offset=" + cb.getOffset() +<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      ", size=" + cb.getSize() +<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      ", age=" + (now - cb.getCachedTime()) +<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      ", type=" + cb.getBlockType() +<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      ", priority=" + cb.getBlockPriority();<a name="line.161"></a>
+<span class="sourceLineNo">162</span>  }<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>  /**<a name="line.164"></a>
+<span class="sourceLineNo">165</span>   * Get a {@link CachedBlocksByFile} instance and load it up by iterating content in<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   * {@link BlockCache}.<a name="line.166"></a>
+<span class="sourceLineNo">167</span>   * @param conf Used to read configurations<a name="line.167"></a>
+<span class="sourceLineNo">168</span>   * @param bc Block Cache to iterate.<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * @return Laoded up instance of CachedBlocksByFile<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   */<a name="line.170"></a>
+<span class="sourceLineNo">171</span>  public static CachedBlocksByFile getLoadedCachedBlocksByFile(final Configuration conf,<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      final BlockCache bc) {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    CachedBlocksByFile cbsbf = new CachedBlocksByFile(conf);<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    for (CachedBlock cb: bc) {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      if (cbsbf.update(cb)) break;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    }<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    return cbsbf;<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>  /**<a name="line.180"></a>
+<span class="sourceLineNo">181</span>   * Use one of these to keep a running account of cached blocks by file.  Throw it away when done.<a name="line.181"></a>
+<span class="sourceLineNo">182</span>   * This is different than metrics in that it is stats on current state of a cache.<a name="line.182"></a>
+<span class="sourceLineNo">183</span>   * See getLoadedCachedBlocksByFile<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   */<a name="line.184"></a>
+<span class="sourceLineNo">185</span>  @JsonIgnoreProperties({"cachedBlockStatsByFile"})<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  public static class CachedBlocksByFile {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    private int count;<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    private int dataBlockCount;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    private long size;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    private long dataSize;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    private final long now = System.nanoTime();<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    private final int max;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    public static final int DEFAULT_MAX = 100000;<a name="line.193"></a>
+<span class="sourceLineNo">194</span><a name="line.194"></a>
+<span class="sourceLineNo">195</span>    CachedBlocksByFile() {<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      this(null);<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>    CachedBlocksByFile(final Configuration c) {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      this.max = c == null? DEFAULT_MAX:<a name="line.200"></a>
+<span class="sourceLineNo">201</span>        c.getInt("hbase.ui.blockcache.by.file.max", DEFAULT_MAX);<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>     * Map by filename. use concurent utils because we want our Map and contained blocks sorted.<a name="line.205"></a>
+<span class="sourceLineNo">206</span>     */<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    private NavigableMap&lt;String, NavigableSet&lt;CachedBlock&gt;&gt; cachedBlockByFile =<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      new ConcurrentSkipListMap&lt;String, NavigableSet&lt;CachedBlock&gt;&gt;();<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    Histogram age = METRICS.histogram(name(CachedBlocksByFile.class, "age"));<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>     * @param cb<a name="line.212"></a>
+<span class="sourceLineNo">213</span>     * @return True if full.... if we won't be adding any more.<a name="line.213"></a>
+<span class="sourceLineNo">214</span>     */<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    public boolean update(final CachedBlock cb) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      if (isFull()) return true;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      NavigableSet&lt;CachedBlock&gt; set = this.cachedBlockByFile.get(cb.getFilename());<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      if (set == null) {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        set = new ConcurrentSkipListSet&lt;CachedBlock&gt;();<a name="line.219"></a>
+<span class="sourceLineNo">220</span>        this.cachedBlockByFile.put(cb.getFilename(), set);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      }<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      set.add(cb);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      this.size += cb.getSize();<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      this.count++;<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      BlockType bt = cb.getBlockType();<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      if (bt != null &amp;&amp; bt.isData()) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        this.dataBlockCount++;<a name="line.227"></a>
+<span class="sourceLineNo">228</span>        this.dataSize += cb.getSize();<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      }<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      long age = this.now - cb.getCachedTime();<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      this.age.update(age);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      return false;<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    }<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span>    /**<a name="line.235"></a>
+<span class="sourceLineNo">236</span>     * @return True if full; i.e. there are more items in the cache but we only loaded up<a name="line.236"></a>
+<span class="sourceLineNo">237</span>     * the maximum set in configuration &lt;code&gt;hbase.ui.blockcache.by.file.max&lt;/code&gt;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>     * (Default: DEFAULT_MAX).<a name="line.238"></a>
+<span class="sourceLineNo">239</span>     */<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    public boolean isFull() {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      return this.count &gt;= this.max;<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>    public NavigableMap&lt;String, NavigableSet&lt;CachedBlock&gt;&gt; getCachedBlockStatsByFile() {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      return this.cachedBlockByFile;<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    }<a name="line.246"></a>
+<span class="sourceLineNo">247</span><a name="line.247"></a>
+<span class="sourceLineNo">248</span>    /**<a name="line.248"></a>
+<span class="sourceLineNo">249</span>     * @return count of blocks in the cache<a name="line.249"></a>
+<span class="sourceLineNo">250</span>     */<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    public int getCount() {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      return count;<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>    public int getDataCount() {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      return dataBlockCount;<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
+<span class="sourceLineNo">258</span><a name="line.258"></a>
+<span class="sourceLineNo">259</span>    /**<a name="line.259"></a>
+<span class="sourceLineNo">260</span>     * @return size of blocks in the cache<a name="line.260"></a>
+<span class="sourceLineNo">261</span>     */<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    public long getSize() {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      return size;<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    }<a name="line.264"></a>
+<span class="sourceLineNo">265</span><a name="line.265"></a>
+<span class="sourceLineNo">266</span>    /**<a name="line.266"></a>
+<span class="sourceLineNo">267</span>     * @return Size of data.<a name="line.267"></a>
+<span class="sourceLineNo">268</span>     */<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    public long getDataSize() {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      return dataSize;<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    }<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>    public AgeSnapshot getAgeInCacheSnapshot() {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      return new AgeSnapshot(this.age);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span>    @Override<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    public String toString() {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      Snapshot snapshot = age.getSnapshot();<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      return "count=" + count + ", dataBlockCount=" + dataBlockCount + ", size=" + size +<a name="line.280"></a>
+<span class="sourceLineNo">281</span>          ", dataSize=" + getDataSize() +<a name="line.281"></a>
+<span class="sourceLineNo">282</span>          ", mean age=" + snapshot.getMean() + ", stddev age=" + snapshot.getStdDev() +<a name="line.282"></a>
+<span class="sourceLineNo">283</span>          ", min age=" + snapshot.getMin() + ", max age=" + snapshot.getMax() +<a name="line.283"></a>
+<span class="sourceLineNo">284</span>          ", 95th percentile age=" + snapshot.get95thPercentile() +<a name="line.284"></a>
+<span class="sourceLineNo">285</span>          ", 99th percentile age=" + snapshot.get99thPercentile();<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    }<a name="line.286"></a>
+<span class="sourceLineNo">287</span>  }<a name="line.287"></a>
+<span class="sourceLineNo">288</span>}<a name="line.288"></a>
 
 
 


[35/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/src-html/org/apache/hadoop/hbase/client/MetricsConnection.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/client/MetricsConnection.html b/devapidocs/src-html/org/apache/hadoop/hbase/client/MetricsConnection.html
index 0d9837b..9090c08 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/client/MetricsConnection.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/client/MetricsConnection.html
@@ -28,12 +28,12 @@
 <span class="sourceLineNo">020</span>import com.google.common.annotations.VisibleForTesting;<a name="line.20"></a>
 <span class="sourceLineNo">021</span>import com.google.protobuf.Descriptors.MethodDescriptor;<a name="line.21"></a>
 <span class="sourceLineNo">022</span>import com.google.protobuf.Message;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import com.yammer.metrics.core.Counter;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import com.yammer.metrics.core.Histogram;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import com.yammer.metrics.core.MetricsRegistry;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import com.yammer.metrics.core.Timer;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import com.yammer.metrics.reporting.JmxReporter;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import com.yammer.metrics.util.RatioGauge;<a name="line.28"></a>
+<span class="sourceLineNo">023</span>import com.codahale.metrics.Counter;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import com.codahale.metrics.Histogram;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import com.codahale.metrics.MetricRegistry;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import com.codahale.metrics.Timer;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import com.codahale.metrics.JmxReporter;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import com.codahale.metrics.RatioGauge;<a name="line.28"></a>
 <span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.ServerName;<a name="line.29"></a>
 <span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.30"></a>
 <span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.protobuf.generated.ClientProtos;<a name="line.31"></a>
@@ -48,394 +48,397 @@
 <span class="sourceLineNo">040</span>import java.util.concurrent.ThreadPoolExecutor;<a name="line.40"></a>
 <span class="sourceLineNo">041</span>import java.util.concurrent.TimeUnit;<a name="line.41"></a>
 <span class="sourceLineNo">042</span><a name="line.42"></a>
-<span class="sourceLineNo">043</span>/**<a name="line.43"></a>
-<span class="sourceLineNo">044</span> * This class is for maintaining the various connection statistics and publishing them through<a name="line.44"></a>
-<span class="sourceLineNo">045</span> * the metrics interfaces.<a name="line.45"></a>
-<span class="sourceLineNo">046</span> *<a name="line.46"></a>
-<span class="sourceLineNo">047</span> * This class manages its own {@link MetricsRegistry} and {@link JmxReporter} so as to not<a name="line.47"></a>
-<span class="sourceLineNo">048</span> * conflict with other uses of Yammer Metrics within the client application. Instantiating<a name="line.48"></a>
-<span class="sourceLineNo">049</span> * this class implicitly creates and "starts" instances of these classes; be sure to call<a name="line.49"></a>
-<span class="sourceLineNo">050</span> * {@link #shutdown()} to terminate the thread pools they allocate.<a name="line.50"></a>
-<span class="sourceLineNo">051</span> */<a name="line.51"></a>
-<span class="sourceLineNo">052</span>@InterfaceAudience.Private<a name="line.52"></a>
-<span class="sourceLineNo">053</span>public class MetricsConnection {<a name="line.53"></a>
-<span class="sourceLineNo">054</span><a name="line.54"></a>
-<span class="sourceLineNo">055</span>  /** Set this key to {@code true} to enable metrics collection of client requests. */<a name="line.55"></a>
-<span class="sourceLineNo">056</span>  public static final String CLIENT_SIDE_METRICS_ENABLED_KEY = "hbase.client.metrics.enable";<a name="line.56"></a>
-<span class="sourceLineNo">057</span><a name="line.57"></a>
-<span class="sourceLineNo">058</span>  private static final String DRTN_BASE = "rpcCallDurationMs_";<a name="line.58"></a>
-<span class="sourceLineNo">059</span>  private static final String REQ_BASE = "rpcCallRequestSizeBytes_";<a name="line.59"></a>
-<span class="sourceLineNo">060</span>  private static final String RESP_BASE = "rpcCallResponseSizeBytes_";<a name="line.60"></a>
-<span class="sourceLineNo">061</span>  private static final String MEMLOAD_BASE = "memstoreLoad_";<a name="line.61"></a>
-<span class="sourceLineNo">062</span>  private static final String HEAP_BASE = "heapOccupancy_";<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  private static final String CLIENT_SVC = ClientService.getDescriptor().getName();<a name="line.63"></a>
-<span class="sourceLineNo">064</span><a name="line.64"></a>
-<span class="sourceLineNo">065</span>  /** A container class for collecting details about the RPC call as it percolates. */<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  public static class CallStats {<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    private long requestSizeBytes = 0;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    private long responseSizeBytes = 0;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    private long startTime = 0;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    private long callTimeMs = 0;<a name="line.70"></a>
-<span class="sourceLineNo">071</span><a name="line.71"></a>
-<span class="sourceLineNo">072</span>    public long getRequestSizeBytes() {<a name="line.72"></a>
-<span class="sourceLineNo">073</span>      return requestSizeBytes;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    }<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>    public void setRequestSizeBytes(long requestSizeBytes) {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>      this.requestSizeBytes = requestSizeBytes;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    }<a name="line.78"></a>
-<span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>    public long getResponseSizeBytes() {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      return responseSizeBytes;<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 void setResponseSizeBytes(long responseSizeBytes) {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      this.responseSizeBytes = responseSizeBytes;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    }<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>    public long getStartTime() {<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      return startTime;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    }<a name="line.90"></a>
-<span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>    public void setStartTime(long startTime) {<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      this.startTime = startTime;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    }<a name="line.94"></a>
-<span class="sourceLineNo">095</span><a name="line.95"></a>
-<span class="sourceLineNo">096</span>    public long getCallTimeMs() {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>      return callTimeMs;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    }<a name="line.98"></a>
-<span class="sourceLineNo">099</span><a name="line.99"></a>
-<span class="sourceLineNo">100</span>    public void setCallTimeMs(long callTimeMs) {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      this.callTimeMs = callTimeMs;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    }<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  }<a name="line.103"></a>
-<span class="sourceLineNo">104</span><a name="line.104"></a>
-<span class="sourceLineNo">105</span>  @VisibleForTesting<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  protected final class CallTracker {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    private final String name;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    @VisibleForTesting final Timer callTimer;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    @VisibleForTesting final Histogram reqHist;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    @VisibleForTesting final Histogram respHist;<a name="line.110"></a>
-<span class="sourceLineNo">111</span><a name="line.111"></a>
-<span class="sourceLineNo">112</span>    private CallTracker(MetricsRegistry registry, String name, String subName, String scope) {<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      StringBuilder sb = new StringBuilder(CLIENT_SVC).append("_").append(name);<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      if (subName != null) {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>        sb.append("(").append(subName).append(")");<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      }<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      this.name = sb.toString();<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      this.callTimer = registry.newTimer(MetricsConnection.class, DRTN_BASE + this.name, scope);<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      this.reqHist = registry.newHistogram(MetricsConnection.class, REQ_BASE + this.name, scope);<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      this.respHist = registry.newHistogram(MetricsConnection.class, RESP_BASE + this.name, scope);<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>    private CallTracker(MetricsRegistry registry, String name, String scope) {<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      this(registry, name, null, scope);<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    }<a name="line.125"></a>
-<span class="sourceLineNo">126</span><a name="line.126"></a>
-<span class="sourceLineNo">127</span>    public void updateRpc(CallStats stats) {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      this.callTimer.update(stats.getCallTimeMs(), TimeUnit.MILLISECONDS);<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      this.reqHist.update(stats.getRequestSizeBytes());<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      this.respHist.update(stats.getResponseSizeBytes());<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    }<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>    @Override<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    public String toString() {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      return "CallTracker:" + name;<a name="line.135"></a>
+<span class="sourceLineNo">043</span>import static com.codahale.metrics.MetricRegistry.name;<a name="line.43"></a>
+<span class="sourceLineNo">044</span><a name="line.44"></a>
+<span class="sourceLineNo">045</span>/**<a name="line.45"></a>
+<span class="sourceLineNo">046</span> * This class is for maintaining the various connection statistics and publishing them through<a name="line.46"></a>
+<span class="sourceLineNo">047</span> * the metrics interfaces.<a name="line.47"></a>
+<span class="sourceLineNo">048</span> *<a name="line.48"></a>
+<span class="sourceLineNo">049</span> * This class manages its own {@link MetricRegistry} and {@link JmxReporter} so as to not<a name="line.49"></a>
+<span class="sourceLineNo">050</span> * conflict with other uses of Yammer Metrics within the client application. Instantiating<a name="line.50"></a>
+<span class="sourceLineNo">051</span> * this class implicitly creates and "starts" instances of these classes; be sure to call<a name="line.51"></a>
+<span class="sourceLineNo">052</span> * {@link #shutdown()} to terminate the thread pools they allocate.<a name="line.52"></a>
+<span class="sourceLineNo">053</span> */<a name="line.53"></a>
+<span class="sourceLineNo">054</span>@InterfaceAudience.Private<a name="line.54"></a>
+<span class="sourceLineNo">055</span>public class MetricsConnection {<a name="line.55"></a>
+<span class="sourceLineNo">056</span><a name="line.56"></a>
+<span class="sourceLineNo">057</span>  /** Set this key to {@code true} to enable metrics collection of client requests. */<a name="line.57"></a>
+<span class="sourceLineNo">058</span>  public static final String CLIENT_SIDE_METRICS_ENABLED_KEY = "hbase.client.metrics.enable";<a name="line.58"></a>
+<span class="sourceLineNo">059</span><a name="line.59"></a>
+<span class="sourceLineNo">060</span>  private static final String DRTN_BASE = "rpcCallDurationMs_";<a name="line.60"></a>
+<span class="sourceLineNo">061</span>  private static final String REQ_BASE = "rpcCallRequestSizeBytes_";<a name="line.61"></a>
+<span class="sourceLineNo">062</span>  private static final String RESP_BASE = "rpcCallResponseSizeBytes_";<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  private static final String MEMLOAD_BASE = "memstoreLoad_";<a name="line.63"></a>
+<span class="sourceLineNo">064</span>  private static final String HEAP_BASE = "heapOccupancy_";<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  private static final String CLIENT_SVC = ClientService.getDescriptor().getName();<a name="line.65"></a>
+<span class="sourceLineNo">066</span><a name="line.66"></a>
+<span class="sourceLineNo">067</span>  /** A container class for collecting details about the RPC call as it percolates. */<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  public static class CallStats {<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    private long requestSizeBytes = 0;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    private long responseSizeBytes = 0;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    private long startTime = 0;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    private long callTimeMs = 0;<a name="line.72"></a>
+<span class="sourceLineNo">073</span><a name="line.73"></a>
+<span class="sourceLineNo">074</span>    public long getRequestSizeBytes() {<a name="line.74"></a>
+<span class="sourceLineNo">075</span>      return requestSizeBytes;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    }<a name="line.76"></a>
+<span class="sourceLineNo">077</span><a name="line.77"></a>
+<span class="sourceLineNo">078</span>    public void setRequestSizeBytes(long requestSizeBytes) {<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      this.requestSizeBytes = requestSizeBytes;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    }<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>    public long getResponseSizeBytes() {<a name="line.82"></a>
+<span class="sourceLineNo">083</span>      return responseSizeBytes;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    }<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>    public void setResponseSizeBytes(long responseSizeBytes) {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>      this.responseSizeBytes = responseSizeBytes;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    }<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>    public long getStartTime() {<a name="line.90"></a>
+<span class="sourceLineNo">091</span>      return startTime;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    }<a name="line.92"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span>    public void setStartTime(long startTime) {<a name="line.94"></a>
+<span class="sourceLineNo">095</span>      this.startTime = startTime;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    }<a name="line.96"></a>
+<span class="sourceLineNo">097</span><a name="line.97"></a>
+<span class="sourceLineNo">098</span>    public long getCallTimeMs() {<a name="line.98"></a>
+<span class="sourceLineNo">099</span>      return callTimeMs;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    }<a name="line.100"></a>
+<span class="sourceLineNo">101</span><a name="line.101"></a>
+<span class="sourceLineNo">102</span>    public void setCallTimeMs(long callTimeMs) {<a name="line.102"></a>
+<span class="sourceLineNo">103</span>      this.callTimeMs = callTimeMs;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    }<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  }<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>  @VisibleForTesting<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  protected final class CallTracker {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    private final String name;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    @VisibleForTesting final Timer callTimer;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    @VisibleForTesting final Histogram reqHist;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    @VisibleForTesting final Histogram respHist;<a name="line.112"></a>
+<span class="sourceLineNo">113</span><a name="line.113"></a>
+<span class="sourceLineNo">114</span>    private CallTracker(MetricRegistry registry, String name, String subName, String scope) {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      StringBuilder sb = new StringBuilder(CLIENT_SVC).append("_").append(name);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      if (subName != null) {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>        sb.append("(").append(subName).append(")");<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      }<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      this.name = sb.toString();<a name="line.119"></a>
+<span class="sourceLineNo">120</span>      this.callTimer = registry.timer(name(MetricsConnection.class,<a name="line.120"></a>
+<span class="sourceLineNo">121</span>        DRTN_BASE + this.name, scope));<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      this.reqHist = registry.histogram(name(MetricsConnection.class,<a name="line.122"></a>
+<span class="sourceLineNo">123</span>        REQ_BASE + this.name, scope));<a name="line.123"></a>
+<span class="sourceLineNo">124</span>      this.respHist = registry.histogram(name(MetricsConnection.class,<a name="line.124"></a>
+<span class="sourceLineNo">125</span>        RESP_BASE + this.name, scope));<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    }<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>    private CallTracker(MetricRegistry registry, String name, String scope) {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      this(registry, name, null, scope);<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>    public void updateRpc(CallStats stats) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      this.callTimer.update(stats.getCallTimeMs(), TimeUnit.MILLISECONDS);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      this.reqHist.update(stats.getRequestSizeBytes());<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      this.respHist.update(stats.getResponseSizeBytes());<a name="line.135"></a>
 <span class="sourceLineNo">136</span>    }<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>  protected static class RegionStats {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    final String name;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    final Histogram memstoreLoadHist;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    final Histogram heapOccupancyHist;<a name="line.142"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span>    @Override<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    public String toString() {<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      return "CallTracker:" + name;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    }<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  }<a name="line.142"></a>
 <span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>    public RegionStats(MetricsRegistry registry, String name) {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      this.name = name;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      this.memstoreLoadHist = registry.newHistogram(MetricsConnection.class,<a name="line.146"></a>
-<span class="sourceLineNo">147</span>          MEMLOAD_BASE + this.name);<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      this.heapOccupancyHist = registry.newHistogram(MetricsConnection.class,<a name="line.148"></a>
-<span class="sourceLineNo">149</span>          HEAP_BASE + this.name);<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    }<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>    public void update(ClientProtos.RegionLoadStats regionStatistics) {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      this.memstoreLoadHist.update(regionStatistics.getMemstoreLoad());<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      this.heapOccupancyHist.update(regionStatistics.getHeapOccupancy());<a name="line.154"></a>
+<span class="sourceLineNo">144</span>  protected static class RegionStats {<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    final String name;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    final Histogram memstoreLoadHist;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    final Histogram heapOccupancyHist;<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>    public RegionStats(MetricRegistry registry, String name) {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      this.name = name;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>      this.memstoreLoadHist = registry.histogram(name(MetricsConnection.class,<a name="line.151"></a>
+<span class="sourceLineNo">152</span>          MEMLOAD_BASE + this.name));<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      this.heapOccupancyHist = registry.histogram(name(MetricsConnection.class,<a name="line.153"></a>
+<span class="sourceLineNo">154</span>          HEAP_BASE + this.name));<a name="line.154"></a>
 <span class="sourceLineNo">155</span>    }<a name="line.155"></a>
-<span class="sourceLineNo">156</span>  }<a name="line.156"></a>
-<span class="sourceLineNo">157</span><a name="line.157"></a>
-<span class="sourceLineNo">158</span>  @VisibleForTesting<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  protected static class RunnerStats {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    final Counter normalRunners;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    final Counter delayRunners;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    final Histogram delayIntevalHist;<a name="line.162"></a>
-<span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>    public RunnerStats(MetricsRegistry registry) {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      this.normalRunners = registry.newCounter(MetricsConnection.class, "normalRunnersCount");<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      this.delayRunners = registry.newCounter(MetricsConnection.class, "delayRunnersCount");<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      this.delayIntevalHist = registry.newHistogram(MetricsConnection.class, "delayIntervalHist");<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    }<a name="line.168"></a>
-<span class="sourceLineNo">169</span><a name="line.169"></a>
-<span class="sourceLineNo">170</span>    public void incrNormalRunners() {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      this.normalRunners.inc();<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    }<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>    public void incrDelayRunners() {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      this.delayRunners.inc();<a name="line.175"></a>
+<span class="sourceLineNo">156</span><a name="line.156"></a>
+<span class="sourceLineNo">157</span>    public void update(ClientProtos.RegionLoadStats regionStatistics) {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      this.memstoreLoadHist.update(regionStatistics.getMemstoreLoad());<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      this.heapOccupancyHist.update(regionStatistics.getHeapOccupancy());<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    }<a name="line.160"></a>
+<span class="sourceLineNo">161</span>  }<a name="line.161"></a>
+<span class="sourceLineNo">162</span><a name="line.162"></a>
+<span class="sourceLineNo">163</span>  @VisibleForTesting<a name="line.163"></a>
+<span class="sourceLineNo">164</span>  protected static class RunnerStats {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    final Counter normalRunners;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    final Counter delayRunners;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    final Histogram delayIntevalHist;<a name="line.167"></a>
+<span class="sourceLineNo">168</span><a name="line.168"></a>
+<span class="sourceLineNo">169</span>    public RunnerStats(MetricRegistry registry) {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      this.normalRunners = registry.counter(<a name="line.170"></a>
+<span class="sourceLineNo">171</span>        name(MetricsConnection.class, "normalRunnersCount"));<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      this.delayRunners = registry.counter(<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        name(MetricsConnection.class, "delayRunnersCount"));<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      this.delayIntevalHist = registry.histogram(<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        name(MetricsConnection.class, "delayIntervalHist"));<a name="line.175"></a>
 <span class="sourceLineNo">176</span>    }<a name="line.176"></a>
 <span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span>    public void updateDelayInterval(long interval) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      this.delayIntevalHist.update(interval);<a name="line.179"></a>
+<span class="sourceLineNo">178</span>    public void incrNormalRunners() {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      this.normalRunners.inc();<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><a name="line.182"></a>
-<span class="sourceLineNo">183</span>  @VisibleForTesting<a name="line.183"></a>
-<span class="sourceLineNo">184</span>  protected ConcurrentHashMap&lt;ServerName, ConcurrentMap&lt;byte[], RegionStats&gt;&gt; serverStats<a name="line.184"></a>
-<span class="sourceLineNo">185</span>          = new ConcurrentHashMap&lt;ServerName, ConcurrentMap&lt;byte[], RegionStats&gt;&gt;();<a name="line.185"></a>
-<span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>  public void updateServerStats(ServerName serverName, byte[] regionName,<a name="line.187"></a>
-<span class="sourceLineNo">188</span>                                Object r) {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    if (!(r instanceof Result)) {<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      return;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    }<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    Result result = (Result) r;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    ClientProtos.RegionLoadStats stats = result.getStats();<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    if(stats == null){<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      return;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    }<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    String name = serverName.getServerName() + "," + Bytes.toStringBinary(regionName);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    ConcurrentMap&lt;byte[], RegionStats&gt; rsStats = null;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    if (serverStats.containsKey(serverName)) {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      rsStats = serverStats.get(serverName);<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    } else {<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      rsStats = serverStats.putIfAbsent(serverName,<a name="line.202"></a>
-<span class="sourceLineNo">203</span>          new ConcurrentSkipListMap&lt;byte[], RegionStats&gt;(Bytes.BYTES_COMPARATOR));<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      if (rsStats == null) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>        rsStats = serverStats.get(serverName);<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>    RegionStats regionStats = null;<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    if (rsStats.containsKey(regionName)) {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      regionStats = rsStats.get(regionName);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    } else {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      regionStats = rsStats.putIfAbsent(regionName, new RegionStats(this.registry, name));<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      if (regionStats == null) {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        regionStats = rsStats.get(regionName);<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>    regionStats.update(stats);<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>  /** A lambda for dispatching to the appropriate metric factory method */<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  private static interface NewMetric&lt;T&gt; {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    T newMetric(Class&lt;?&gt; clazz, String name, String scope);<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>  /** Anticipated number of metric entries */<a name="line.226"></a>
-<span class="sourceLineNo">227</span>  private static final int CAPACITY = 50;<a name="line.227"></a>
-<span class="sourceLineNo">228</span>  /** Default load factor from {@link java.util.HashMap#DEFAULT_LOAD_FACTOR} */<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  private static final float LOAD_FACTOR = 0.75f;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  /**<a name="line.230"></a>
-<span class="sourceLineNo">231</span>   * Anticipated number of concurrent accessor threads, from<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   * {@link ConnectionImplementation#getBatchPool()}<a name="line.232"></a>
-<span class="sourceLineNo">233</span>   */<a name="line.233"></a>
-<span class="sourceLineNo">234</span>  private static final int CONCURRENCY_LEVEL = 256;<a name="line.234"></a>
-<span class="sourceLineNo">235</span><a name="line.235"></a>
-<span class="sourceLineNo">236</span>  private final MetricsRegistry registry;<a name="line.236"></a>
-<span class="sourceLineNo">237</span>  private final JmxReporter reporter;<a name="line.237"></a>
-<span class="sourceLineNo">238</span>  private final String scope;<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>  private final NewMetric&lt;Timer&gt; timerFactory = new NewMetric&lt;Timer&gt;() {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    @Override public Timer newMetric(Class&lt;?&gt; clazz, String name, String scope) {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      return registry.newTimer(clazz, name, scope);<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>  private final NewMetric&lt;Histogram&gt; histogramFactory = new NewMetric&lt;Histogram&gt;() {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    @Override public Histogram newMetric(Class&lt;?&gt; clazz, String name, String scope) {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      return registry.newHistogram(clazz, name, scope);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    }<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  };<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>  // static metrics<a name="line.252"></a>
+<span class="sourceLineNo">181</span><a name="line.181"></a>
+<span class="sourceLineNo">182</span>    public void incrDelayRunners() {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      this.delayRunners.inc();<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>    public void updateDelayInterval(long interval) {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      this.delayIntevalHist.update(interval);<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>  @VisibleForTesting<a name="line.191"></a>
+<span class="sourceLineNo">192</span>  protected ConcurrentHashMap&lt;ServerName, ConcurrentMap&lt;byte[], RegionStats&gt;&gt; serverStats<a name="line.192"></a>
+<span class="sourceLineNo">193</span>          = new ConcurrentHashMap&lt;ServerName, ConcurrentMap&lt;byte[], RegionStats&gt;&gt;();<a name="line.193"></a>
+<span class="sourceLineNo">194</span><a name="line.194"></a>
+<span class="sourceLineNo">195</span>  public void updateServerStats(ServerName serverName, byte[] regionName,<a name="line.195"></a>
+<span class="sourceLineNo">196</span>                                Object r) {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    if (!(r instanceof Result)) {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      return;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    }<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    Result result = (Result) r;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    ClientProtos.RegionLoadStats stats = result.getStats();<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    if(stats == null){<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      return;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    }<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    String name = serverName.getServerName() + "," + Bytes.toStringBinary(regionName);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    ConcurrentMap&lt;byte[], RegionStats&gt; rsStats = null;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    if (serverStats.containsKey(serverName)) {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      rsStats = serverStats.get(serverName);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    } else {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      rsStats = serverStats.putIfAbsent(serverName,<a name="line.210"></a>
+<span class="sourceLineNo">211</span>          new ConcurrentSkipListMap&lt;byte[], RegionStats&gt;(Bytes.BYTES_COMPARATOR));<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      if (rsStats == null) {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>        rsStats = serverStats.get(serverName);<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>    RegionStats regionStats = null;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    if (rsStats.containsKey(regionName)) {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      regionStats = rsStats.get(regionName);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    } else {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      regionStats = rsStats.putIfAbsent(regionName, new RegionStats(this.registry, name));<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      if (regionStats == null) {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>        regionStats = rsStats.get(regionName);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      }<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    }<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    regionStats.update(stats);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>  }<a name="line.226"></a>
+<span class="sourceLineNo">227</span><a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span>  /** A lambda for dispatching to the appropriate metric factory method */<a name="line.229"></a>
+<span class="sourceLineNo">230</span>  private static interface NewMetric&lt;T&gt; {<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    T newMetric(Class&lt;?&gt; clazz, String name, String scope);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>  }<a name="line.232"></a>
+<span class="sourceLineNo">233</span><a name="line.233"></a>
+<span class="sourceLineNo">234</span>  /** Anticipated number of metric entries */<a name="line.234"></a>
+<span class="sourceLineNo">235</span>  private static final int CAPACITY = 50;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>  /** Default load factor from {@link java.util.HashMap#DEFAULT_LOAD_FACTOR} */<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  private static final float LOAD_FACTOR = 0.75f;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>  /**<a name="line.238"></a>
+<span class="sourceLineNo">239</span>   * Anticipated number of concurrent accessor threads, from<a name="line.239"></a>
+<span class="sourceLineNo">240</span>   * {@link ConnectionImplementation#getBatchPool()}<a name="line.240"></a>
+<span class="sourceLineNo">241</span>   */<a name="line.241"></a>
+<span class="sourceLineNo">242</span>  private static final int CONCURRENCY_LEVEL = 256;<a name="line.242"></a>
+<span class="sourceLineNo">243</span><a name="line.243"></a>
+<span class="sourceLineNo">244</span>  private final MetricRegistry registry;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>  private final JmxReporter reporter;<a name="line.245"></a>
+<span class="sourceLineNo">246</span>  private final String scope;<a name="line.246"></a>
+<span class="sourceLineNo">247</span><a name="line.247"></a>
+<span class="sourceLineNo">248</span>  private final NewMetric&lt;Timer&gt; timerFactory = new NewMetric&lt;Timer&gt;() {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    @Override public Timer newMetric(Class&lt;?&gt; clazz, String name, String scope) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      return registry.timer(name(clazz, name, scope));<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    }<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  };<a name="line.252"></a>
 <span class="sourceLineNo">253</span><a name="line.253"></a>
-<span class="sourceLineNo">254</span>  @VisibleForTesting protected final Counter metaCacheHits;<a name="line.254"></a>
-<span class="sourceLineNo">255</span>  @VisibleForTesting protected final Counter metaCacheMisses;<a name="line.255"></a>
-<span class="sourceLineNo">256</span>  @VisibleForTesting protected final CallTracker getTracker;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>  @VisibleForTesting protected final CallTracker scanTracker;<a name="line.257"></a>
-<span class="sourceLineNo">258</span>  @VisibleForTesting protected final CallTracker appendTracker;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  @VisibleForTesting protected final CallTracker deleteTracker;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  @VisibleForTesting protected final CallTracker incrementTracker;<a name="line.260"></a>
-<span class="sourceLineNo">261</span>  @VisibleForTesting protected final CallTracker putTracker;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>  @VisibleForTesting protected final CallTracker multiTracker;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>  @VisibleForTesting protected final RunnerStats runnerStats;<a name="line.263"></a>
-<span class="sourceLineNo">264</span><a name="line.264"></a>
-<span class="sourceLineNo">265</span>  // dynamic metrics<a name="line.265"></a>
-<span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>  // These maps are used to cache references to the metric instances that are managed by the<a name="line.267"></a>
-<span class="sourceLineNo">268</span>  // registry. I don't think their use perfectly removes redundant allocations, but it's<a name="line.268"></a>
-<span class="sourceLineNo">269</span>  // a big improvement over calling registry.newMetric each time.<a name="line.269"></a>
-<span class="sourceLineNo">270</span>  @VisibleForTesting protected final ConcurrentMap&lt;String, Timer&gt; rpcTimers =<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      new ConcurrentHashMap&lt;&gt;(CAPACITY, LOAD_FACTOR, CONCURRENCY_LEVEL);<a name="line.271"></a>
-<span class="sourceLineNo">272</span>  @VisibleForTesting protected final ConcurrentMap&lt;String, Histogram&gt; rpcHistograms =<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      new ConcurrentHashMap&lt;&gt;(CAPACITY * 2 /* tracking both request and response sizes */,<a name="line.273"></a>
-<span class="sourceLineNo">274</span>          LOAD_FACTOR, CONCURRENCY_LEVEL);<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span>  public MetricsConnection(final ConnectionImplementation conn) {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    this.scope = conn.toString();<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    this.registry = new MetricsRegistry();<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    final ThreadPoolExecutor batchPool = (ThreadPoolExecutor) conn.getCurrentBatchPool();<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    final ThreadPoolExecutor metaPool = (ThreadPoolExecutor) conn.getCurrentMetaLookupPool();<a name="line.280"></a>
-<span class="sourceLineNo">281</span><a name="line.281"></a>
-<span class="sourceLineNo">282</span>    this.registry.newGauge(this.getClass(), "executorPoolActiveThreads", scope,<a name="line.282"></a>
-<span class="sourceLineNo">283</span>        new RatioGauge() {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>          @Override protected double getNumerator() {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>            return batchPool.getActiveCount();<a name="line.285"></a>
-<span class="sourceLineNo">286</span>          }<a name="line.286"></a>
-<span class="sourceLineNo">287</span>          @Override protected double getDenominator() {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>            return batchPool.getMaximumPoolSize();<a name="line.288"></a>
-<span class="sourceLineNo">289</span>          }<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        });<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    this.registry.newGauge(this.getClass(), "metaPoolActiveThreads", scope,<a name="line.291"></a>
-<span class="sourceLineNo">292</span>        new RatioGauge() {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>          @Override protected double getNumerator() {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>            return metaPool.getActiveCount();<a name="line.294"></a>
+<span class="sourceLineNo">254</span>  private final NewMetric&lt;Histogram&gt; histogramFactory = new NewMetric&lt;Histogram&gt;() {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    @Override public Histogram newMetric(Class&lt;?&gt; clazz, String name, String scope) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      return registry.histogram(name(clazz, name, scope));<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
+<span class="sourceLineNo">258</span>  };<a name="line.258"></a>
+<span class="sourceLineNo">259</span><a name="line.259"></a>
+<span class="sourceLineNo">260</span>  // static metrics<a name="line.260"></a>
+<span class="sourceLineNo">261</span><a name="line.261"></a>
+<span class="sourceLineNo">262</span>  @VisibleForTesting protected final Counter metaCacheHits;<a name="line.262"></a>
+<span class="sourceLineNo">263</span>  @VisibleForTesting protected final Counter metaCacheMisses;<a name="line.263"></a>
+<span class="sourceLineNo">264</span>  @VisibleForTesting protected final CallTracker getTracker;<a name="line.264"></a>
+<span class="sourceLineNo">265</span>  @VisibleForTesting protected final CallTracker scanTracker;<a name="line.265"></a>
+<span class="sourceLineNo">266</span>  @VisibleForTesting protected final CallTracker appendTracker;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>  @VisibleForTesting protected final CallTracker deleteTracker;<a name="line.267"></a>
+<span class="sourceLineNo">268</span>  @VisibleForTesting protected final CallTracker incrementTracker;<a name="line.268"></a>
+<span class="sourceLineNo">269</span>  @VisibleForTesting protected final CallTracker putTracker;<a name="line.269"></a>
+<span class="sourceLineNo">270</span>  @VisibleForTesting protected final CallTracker multiTracker;<a name="line.270"></a>
+<span class="sourceLineNo">271</span>  @VisibleForTesting protected final RunnerStats runnerStats;<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>  // dynamic metrics<a name="line.273"></a>
+<span class="sourceLineNo">274</span><a name="line.274"></a>
+<span class="sourceLineNo">275</span>  // These maps are used to cache references to the metric instances that are managed by the<a name="line.275"></a>
+<span class="sourceLineNo">276</span>  // registry. I don't think their use perfectly removes redundant allocations, but it's<a name="line.276"></a>
+<span class="sourceLineNo">277</span>  // a big improvement over calling registry.newMetric each time.<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  @VisibleForTesting protected final ConcurrentMap&lt;String, Timer&gt; rpcTimers =<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      new ConcurrentHashMap&lt;&gt;(CAPACITY, LOAD_FACTOR, CONCURRENCY_LEVEL);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>  @VisibleForTesting protected final ConcurrentMap&lt;String, Histogram&gt; rpcHistograms =<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      new ConcurrentHashMap&lt;&gt;(CAPACITY * 2 /* tracking both request and response sizes */,<a name="line.281"></a>
+<span class="sourceLineNo">282</span>          LOAD_FACTOR, CONCURRENCY_LEVEL);<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>  public MetricsConnection(final ConnectionImplementation conn) {<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    this.scope = conn.toString();<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    this.registry = new MetricRegistry();<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    final ThreadPoolExecutor batchPool = (ThreadPoolExecutor) conn.getCurrentBatchPool();<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    final ThreadPoolExecutor metaPool = (ThreadPoolExecutor) conn.getCurrentMetaLookupPool();<a name="line.288"></a>
+<span class="sourceLineNo">289</span><a name="line.289"></a>
+<span class="sourceLineNo">290</span>    this.registry.register(name(this.getClass(), "executorPoolActiveThreads", scope),<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        new RatioGauge() {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>          @Override<a name="line.292"></a>
+<span class="sourceLineNo">293</span>          protected Ratio getRatio() {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>            return Ratio.of(batchPool.getActiveCount(), batchPool.getMaximumPoolSize());<a name="line.294"></a>
 <span class="sourceLineNo">295</span>          }<a name="line.295"></a>
-<span class="sourceLineNo">296</span>          @Override protected double getDenominator() {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>            return metaPool.getMaximumPoolSize();<a name="line.297"></a>
-<span class="sourceLineNo">298</span>          }<a name="line.298"></a>
-<span class="sourceLineNo">299</span>        });<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    this.metaCacheHits = registry.newCounter(this.getClass(), "metaCacheHits", scope);<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    this.metaCacheMisses = registry.newCounter(this.getClass(), "metaCacheMisses", scope);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    this.getTracker = new CallTracker(this.registry, "Get", scope);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    this.scanTracker = new CallTracker(this.registry, "Scan", scope);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    this.appendTracker = new CallTracker(this.registry, "Mutate", "Append", scope);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    this.deleteTracker = new CallTracker(this.registry, "Mutate", "Delete", scope);<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    this.incrementTracker = new CallTracker(this.registry, "Mutate", "Increment", scope);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    this.putTracker = new CallTracker(this.registry, "Mutate", "Put", scope);<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    this.multiTracker = new CallTracker(this.registry, "Multi", scope);<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    this.runnerStats = new RunnerStats(this.registry);<a name="line.309"></a>
-<span class="sourceLineNo">310</span><a name="line.310"></a>
-<span class="sourceLineNo">311</span>    this.reporter = new JmxReporter(this.registry);<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    this.reporter.start();<a name="line.312"></a>
-<span class="sourceLineNo">313</span>  }<a name="line.313"></a>
+<span class="sourceLineNo">296</span>        });<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    this.registry.register(name(this.getClass(), "metaPoolActiveThreads", scope),<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        new RatioGauge() {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>          @Override<a name="line.299"></a>
+<span class="sourceLineNo">300</span>          protected Ratio getRatio() {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>            return Ratio.of(metaPool.getActiveCount(), metaPool.getMaximumPoolSize());<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>    this.metaCacheHits = registry.counter(name(this.getClass(), "metaCacheHits", scope));<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    this.metaCacheMisses = registry.counter(name(this.getClass(), "metaCacheMisses", scope));<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    this.getTracker = new CallTracker(this.registry, "Get", scope);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    this.scanTracker = new CallTracker(this.registry, "Scan", scope);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    this.appendTracker = new CallTracker(this.registry, "Mutate", "Append", scope);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    this.deleteTracker = new CallTracker(this.registry, "Mutate", "Delete", scope);<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    this.incrementTracker = new CallTracker(this.registry, "Mutate", "Increment", scope);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    this.putTracker = new CallTracker(this.registry, "Mutate", "Put", scope);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    this.multiTracker = new CallTracker(this.registry, "Multi", scope);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    this.runnerStats = new RunnerStats(this.registry);<a name="line.313"></a>
 <span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span>  public void shutdown() {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    this.reporter.shutdown();<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    this.registry.shutdown();<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  /** Produce an instance of {@link CallStats} for clients to attach to RPCs. */<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  public static CallStats newCallStats() {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    // TODO: instance pool to reduce GC?<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    return new CallStats();<a name="line.323"></a>
-<span class="sourceLineNo">324</span>  }<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>  /** Increment the number of meta cache hits. */<a name="line.326"></a>
-<span class="sourceLineNo">327</span>  public void incrMetaCacheHit() {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    metaCacheHits.inc();<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>  /** Increment the number of meta cache misses. */<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  public void incrMetaCacheMiss() {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    metaCacheMisses.inc();<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  }<a name="line.334"></a>
-<span class="sourceLineNo">335</span><a name="line.335"></a>
-<span class="sourceLineNo">336</span>  /** Increment the number of normal runner counts. */<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  public void incrNormalRunners() {<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    this.runnerStats.incrNormalRunners();<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  }<a name="line.339"></a>
-<span class="sourceLineNo">340</span><a name="line.340"></a>
-<span class="sourceLineNo">341</span>  /** Increment the number of delay runner counts. */<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  public void incrDelayRunners() {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    this.runnerStats.incrDelayRunners();<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  }<a name="line.344"></a>
-<span class="sourceLineNo">345</span><a name="line.345"></a>
-<span class="sourceLineNo">346</span>  /** Update delay interval of delay runner. */<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  public void updateDelayInterval(long interval) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    this.runnerStats.updateDelayInterval(interval);<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  }<a name="line.349"></a>
-<span class="sourceLineNo">350</span><a name="line.350"></a>
-<span class="sourceLineNo">351</span>  /**<a name="line.351"></a>
-<span class="sourceLineNo">352</span>   * Get a metric for {@code key} from {@code map}, or create it with {@code factory}.<a name="line.352"></a>
-<span class="sourceLineNo">353</span>   */<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  private &lt;T&gt; T getMetric(String key, ConcurrentMap&lt;String, T&gt; map, NewMetric&lt;T&gt; factory) {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    T t = map.get(key);<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    if (t == null) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      t = factory.newMetric(this.getClass(), key, scope);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      map.putIfAbsent(key, t);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    }<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    return t;<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>  /** Update call stats for non-critical-path methods */<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  private void updateRpcGeneric(MethodDescriptor method, CallStats stats) {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    final String methodName = method.getService().getName() + "_" + method.getName();<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    getMetric(DRTN_BASE + methodName, rpcTimers, timerFactory)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        .update(stats.getCallTimeMs(), TimeUnit.MILLISECONDS);<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    getMetric(REQ_BASE + methodName, rpcHistograms, histogramFactory)<a name="line.368"></a>
-<span class="sourceLineNo">369</span>        .update(stats.getRequestSizeBytes());<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    getMetric(RESP_BASE + methodName, rpcHistograms, histogramFactory)<a name="line.370"></a>
-<span class="sourceLineNo">371</span>        .update(stats.getResponseSizeBytes());<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>  /** Report RPC context to metrics system. */<a name="line.374"></a>
-<span class="sourceLineNo">375</span>  public void updateRpc(MethodDescriptor method, Message param, CallStats stats) {<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    // this implementation is tied directly to protobuf implementation details. would be better<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    // if we could dispatch based on something static, ie, request Message type.<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    if (method.getService() == ClientService.getDescriptor()) {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      switch(method.getIndex()) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      case 0:<a name="line.380"></a>
-<span class="sourceLineNo">381</span>        assert "Get".equals(method.getName());<a name="line.381"></a>
-<span class="sourceLineNo">382</span>        getTracker.updateRpc(stats);<a name="line.382"></a>
-<span class="sourceLineNo">383</span>        return;<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      case 1:<a name="line.384"></a>
-<span class="sourceLineNo">385</span>        assert "Mutate".equals(method.getName());<a name="line.385"></a>
-<span class="sourceLineNo">386</span>        final MutationType mutationType = ((MutateRequest) param).getMutation().getMutateType();<a name="line.386"></a>
-<span class="sourceLineNo">387</span>        switch(mutationType) {<a name="line.387"></a>
-<span class="sourceLineNo">388</span>        case APPEND:<a name="line.388"></a>
-<span class="sourceLineNo">389</span>          appendTracker.updateRpc(stats);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>          return;<a name="line.390"></a>
-<span class="sourceLineNo">391</span>        case DELETE:<a name="line.391"></a>
-<span class="sourceLineNo">392</span>          deleteTracker.updateRpc(stats);<a name="line.392"></a>
+<span class="sourceLineNo">315</span>    this.reporter = JmxReporter.forRegistry(this.registry).build();<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    this.reporter.start();<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  }<a name="line.317"></a>
+<span class="sourceLineNo">318</span><a name="line.318"></a>
+<span class="sourceLineNo">319</span>  public void shutdown() {<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    this.reporter.stop();<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  }<a name="line.321"></a>
+<span class="sourceLineNo">322</span><a name="line.322"></a>
+<span class="sourceLineNo">323</span>  /** Produce an instance of {@link CallStats} for clients to attach to RPCs. */<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  public static CallStats newCallStats() {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    // TODO: instance pool to reduce GC?<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    return new CallStats();<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>  /** Increment the number of meta cache hits. */<a name="line.329"></a>
+<span class="sourceLineNo">330</span>  public void incrMetaCacheHit() {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    metaCacheHits.inc();<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  }<a name="line.332"></a>
+<span class="sourceLineNo">333</span><a name="line.333"></a>
+<span class="sourceLineNo">334</span>  /** Increment the number of meta cache misses. */<a name="line.334"></a>
+<span class="sourceLineNo">335</span>  public void incrMetaCacheMiss() {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    metaCacheMisses.inc();<a name="line.336"></a>
+<span class="sourceLineNo">337</span>  }<a name="line.337"></a>
+<span class="sourceLineNo">338</span><a name="line.338"></a>
+<span class="sourceLineNo">339</span>  /** Increment the number of normal runner counts. */<a name="line.339"></a>
+<span class="sourceLineNo">340</span>  public void incrNormalRunners() {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    this.runnerStats.incrNormalRunners();<a name="line.341"></a>
+<span class="sourceLineNo">342</span>  }<a name="line.342"></a>
+<span class="sourceLineNo">343</span><a name="line.343"></a>
+<span class="sourceLineNo">344</span>  /** Increment the number of delay runner counts. */<a name="line.344"></a>
+<span class="sourceLineNo">345</span>  public void incrDelayRunners() {<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    this.runnerStats.incrDelayRunners();<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  }<a name="line.347"></a>
+<span class="sourceLineNo">348</span><a name="line.348"></a>
+<span class="sourceLineNo">349</span>  /** Update delay interval of delay runner. */<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  public void updateDelayInterval(long interval) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    this.runnerStats.updateDelayInterval(interval);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>  }<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>  /**<a name="line.354"></a>
+<span class="sourceLineNo">355</span>   * Get a metric for {@code key} from {@code map}, or create it with {@code factory}.<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   */<a name="line.356"></a>
+<span class="sourceLineNo">357</span>  private &lt;T&gt; T getMetric(String key, ConcurrentMap&lt;String, T&gt; map, NewMetric&lt;T&gt; factory) {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    T t = map.get(key);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    if (t == null) {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      t = factory.newMetric(this.getClass(), key, scope);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      map.putIfAbsent(key, t);<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    }<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    return t;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>  }<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>  /** Update call stats for non-critical-path methods */<a name="line.366"></a>
+<span class="sourceLineNo">367</span>  private void updateRpcGeneric(MethodDescriptor method, CallStats stats) {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    final String methodName = method.getService().getName() + "_" + method.getName();<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    getMetric(DRTN_BASE + methodName, rpcTimers, timerFactory)<a name="line.369"></a>
+<span class="sourceLineNo">370</span>        .update(stats.getCallTimeMs(), TimeUnit.MILLISECONDS);<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    getMetric(REQ_BASE + methodName, rpcHistograms, histogramFactory)<a name="line.371"></a>
+<span class="sourceLineNo">372</span>        .update(stats.getRequestSizeBytes());<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    getMetric(RESP_BASE + methodName, rpcHistograms, histogramFactory)<a name="line.373"></a>
+<span class="sourceLineNo">374</span>        .update(stats.getResponseSizeBytes());<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  }<a name="line.375"></a>
+<span class="sourceLineNo">376</span><a name="line.376"></a>
+<span class="sourceLineNo">377</span>  /** Report RPC context to metrics system. */<a name="line.377"></a>
+<span class="sourceLineNo">378</span>  public void updateRpc(MethodDescriptor method, Message param, CallStats stats) {<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    // this implementation is tied directly to protobuf implementation details. would be better<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    // if we could dispatch based on something static, ie, request Message type.<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    if (method.getService() == ClientService.getDescriptor()) {<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      switch(method.getIndex()) {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      case 0:<a name="line.383"></a>
+<span class="sourceLineNo">384</span>        assert "Get".equals(method.getName());<a name="line.384"></a>
+<span class="sourceLineNo">385</span>        getTracker.updateRpc(stats);<a name="line.385"></a>
+<span class="sourceLineNo">386</span>        return;<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      case 1:<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        assert "Mutate".equals(method.getName());<a name="line.388"></a>
+<span class="sourceLineNo">389</span>        final MutationType mutationType = ((MutateRequest) param).getMutation().getMutateType();<a name="line.389"></a>
+<span class="sourceLineNo">390</span>        switch(mutationType) {<a name="line.390"></a>
+<span class="sourceLineNo">391</span>        case APPEND:<a name="line.391"></a>
+<span class="sourceLineNo">392</span>          appendTracker.updateRpc(stats);<a name="line.392"></a>
 <span class="sourceLineNo">393</span>          return;<a name="line.393"></a>
-<span class="sourceLineNo">394</span>        case INCREMENT:<a name="line.394"></a>
-<span class="sourceLineNo">395</span>          incrementTracker.updateRpc(stats);<a name="line.395"></a>
+<span class="sourceLineNo">394</span>        case DELETE:<a name="line.394"></a>
+<span class="sourceLineNo">395</span>          deleteTracker.updateRpc(stats);<a name="line.395"></a>
 <span class="sourceLineNo">396</span>          return;<a name="line.396"></a>
-<span class="sourceLineNo">397</span>        case PUT:<a name="line.397"></a>
-<span class="sourceLineNo">398</span>          putTracker.updateRpc(stats);<a name="line.398"></a>
+<span class="sourceLineNo">397</span>        case INCREMENT:<a name="line.397"></a>
+<span class="sourceLineNo">398</span>          incrementTracker.updateRpc(stats);<a name="line.398"></a>
 <span class="sourceLineNo">399</span>          return;<a name="line.399"></a>
-<span class="sourceLineNo">400</span>        default:<a name="line.400"></a>
-<span class="sourceLineNo">401</span>          throw new RuntimeException("Unrecognized mutation type " + mutationType);<a name="line.401"></a>
-<span class="sourceLineNo">402</span>        }<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      case 2:<a name="line.403"></a>
-<span class="sourceLineNo">404</span>        assert "Scan".equals(method.getName());<a name="line.404"></a>
-<span class="sourceLineNo">405</span>        scanTracker.updateRpc(stats);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>        return;<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      case 3:<a name="line.407"></a>
-<span class="sourceLineNo">408</span>        assert "BulkLoadHFile".equals(method.getName());<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        // use generic implementation<a name="line.409"></a>
-<span class="sourceLineNo">410</span>        break;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      case 4:<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        assert "ExecService".equals(method.getName());<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        // use generic implementation<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        break;<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      case 5:<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        assert "ExecRegionServerService".equals(method.getName());<a name="line.416"></a>
-<span class="sourceLineNo">417</span>        // use generic implementation<a name="line.417"></a>
-<span class="sourceLineNo">418</span>        break;<a name="line.418"></a>
-<span class="sourceLineNo">419</span>      case 6:<a name="line.419"></a>
-<span class="sourceLineNo">420</span>        assert "Multi".equals(method.getName());<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        multiTracker.updateRpc(stats);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        return;<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      default:<a name="line.423"></a>
-<span class="sourceLineNo">424</span>        throw new RuntimeException("Unrecognized ClientService RPC type " + method.getFullName());<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      }<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    }<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    // Fallback to dynamic registry lookup for DDL methods.<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    updateRpcGeneric(method, stats);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>  }<a name="line.429"></a>
-<span class="sourceLineNo">430</span>}<a name="line.430"></a>
+<span class="sourceLineNo">400</span>        case PUT:<a name="line.400"></a>
+<span class="sourceLineNo">401</span>          putTracker.updateRpc(stats);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>          return;<a name="line.402"></a>
+<span class="sourceLineNo">403</span>        default:<a name="line.403"></a>
+<span class="sourceLineNo">404</span>          throw new RuntimeException("Unrecognized mutation type " + mutationType);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>        }<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      case 2:<a name="line.406"></a>
+<span class="sourceLineNo">407</span>        assert "Scan".equals(method.getName());<a name="line.407"></a>
+<span class="sourceLineNo">408</span>        scanTracker.updateRpc(stats);<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        return;<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      case 3:<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        assert "BulkLoadHFile".equals(method.getName());<a name="line.411"></a>
+<span class="sourceLineNo">412</span>        // use generic implementation<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        break;<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      case 4:<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        assert "ExecService".equals(method.getName());<a name="line.415"></a>
+<span class="sourceLineNo">416</span>        // use generic implementation<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        break;<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      case 5:<a name="line.418"></a>
+<span class="sourceLineNo">419</span>        assert "ExecRegionServerService".equals(method.getName());<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        // use generic implementation<a name="line.420"></a>
+<span class="sourceLineNo">421</span>        break;<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      case 6:<a name="line.422"></a>
+<span class="sourceLineNo">423</span>        assert "Multi".equals(method.getName());<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        multiTracker.updateRpc(stats);<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        return;<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      default:<a name="line.426"></a>
+<span class="sourceLineNo">427</span>        throw new RuntimeException("Unrecognized ClientService RPC type " + method.getFullName());<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      }<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    }<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    // Fallback to dynamic registry lookup for DDL methods.<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    updateRpcGeneric(method, stats);<a name="line.431"></a>
+<span class="sourceLineNo">432</span>  }<a name="line.432"></a>
+<span class="sourceLineNo">433</span>}<a name="line.433"></a>
 
 
 


[18/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/handler/RegionReplicaFlushHandler.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/handler/RegionReplicaFlushHandler.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/handler/RegionReplicaFlushHandler.html
index 6e7e72d..1a57dcb 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/handler/RegionReplicaFlushHandler.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/handler/RegionReplicaFlushHandler.html
@@ -88,111 +88,109 @@
 <span class="sourceLineNo">080</span><a name="line.80"></a>
 <span class="sourceLineNo">081</span>  @Override<a name="line.81"></a>
 <span class="sourceLineNo">082</span>  protected void handleException(Throwable t) {<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    super.handleException(t);<a name="line.83"></a>
-<span class="sourceLineNo">084</span><a name="line.84"></a>
-<span class="sourceLineNo">085</span>    if (t instanceof InterruptedIOException || t instanceof InterruptedException) {<a name="line.85"></a>
-<span class="sourceLineNo">086</span>      // ignore<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    } else if (t instanceof RuntimeException) {<a name="line.87"></a>
-<span class="sourceLineNo">088</span>      server.abort("ServerAborting because a runtime exception was thrown", t);<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    } else {<a name="line.89"></a>
-<span class="sourceLineNo">090</span>      // something fishy since we cannot flush the primary region until all retries (retries from<a name="line.90"></a>
-<span class="sourceLineNo">091</span>      // rpc times 35 trigger). We cannot close the region since there is no such mechanism to<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      // close a region without master triggering it. We just abort the server for now.<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      server.abort("ServerAborting because an exception was thrown", t);<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    }<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  }<a name="line.95"></a>
-<span class="sourceLineNo">096</span><a name="line.96"></a>
-<span class="sourceLineNo">097</span>  private int getRetriesCount(Configuration conf) {<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    int numRetries = conf.getInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER,<a name="line.98"></a>
-<span class="sourceLineNo">099</span>      HConstants.DEFAULT_HBASE_CLIENT_RETRIES_NUMBER);<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    if (numRetries &gt; 10) {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      int mult = conf.getInt("hbase.client.serverside.retries.multiplier", 10);<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      numRetries = numRetries / mult; // reset if HRS has multiplied this already<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    }<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    return numRetries;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>  }<a name="line.105"></a>
-<span class="sourceLineNo">106</span><a name="line.106"></a>
-<span class="sourceLineNo">107</span>  void triggerFlushInPrimaryRegion(final HRegion region) throws IOException, RuntimeException {<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    long pause = connection.getConfiguration().getLong(HConstants.HBASE_CLIENT_PAUSE,<a name="line.108"></a>
-<span class="sourceLineNo">109</span>      HConstants.DEFAULT_HBASE_CLIENT_PAUSE);<a name="line.109"></a>
-<span class="sourceLineNo">110</span><a name="line.110"></a>
-<span class="sourceLineNo">111</span>    int maxAttempts = getRetriesCount(connection.getConfiguration());<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    RetryCounter counter = new RetryCounterFactory(maxAttempts, (int)pause).create();<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>    if (LOG.isDebugEnabled()) {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      LOG.debug("Attempting to do an RPC to the primary region replica " + ServerRegionReplicaUtil<a name="line.115"></a>
-<span class="sourceLineNo">116</span>        .getRegionInfoForDefaultReplica(region.getRegionInfo()).getEncodedName() + " of region "<a name="line.116"></a>
-<span class="sourceLineNo">117</span>       + region.getRegionInfo().getEncodedName() + " to trigger a flush");<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    }<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    while (!region.isClosing() &amp;&amp; !region.isClosed()<a name="line.119"></a>
-<span class="sourceLineNo">120</span>        &amp;&amp; !server.isAborted() &amp;&amp; !server.isStopped()) {<a name="line.120"></a>
-<span class="sourceLineNo">121</span>      FlushRegionCallable flushCallable = new FlushRegionCallable(<a name="line.121"></a>
-<span class="sourceLineNo">122</span>        connection, rpcControllerFactory,<a name="line.122"></a>
-<span class="sourceLineNo">123</span>        RegionReplicaUtil.getRegionInfoForDefaultReplica(region.getRegionInfo()), true);<a name="line.123"></a>
-<span class="sourceLineNo">124</span><a name="line.124"></a>
-<span class="sourceLineNo">125</span>      // TODO: flushRegion() is a blocking call waiting for the flush to complete. Ideally we<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      // do not have to wait for the whole flush here, just initiate it.<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      FlushRegionResponse response = null;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      try {<a name="line.128"></a>
-<span class="sourceLineNo">129</span>         response = rpcRetryingCallerFactory.&lt;FlushRegionResponse&gt;newCaller()<a name="line.129"></a>
-<span class="sourceLineNo">130</span>          .callWithRetries(flushCallable, this.operationTimeout);<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      } catch (IOException ex) {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>        if (ex instanceof TableNotFoundException<a name="line.132"></a>
-<span class="sourceLineNo">133</span>            || connection.isTableDisabled(region.getRegionInfo().getTable())) {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>          return;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>        }<a name="line.135"></a>
-<span class="sourceLineNo">136</span>        throw ex;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      }<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>      if (response.getFlushed()) {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>        // then we have to wait for seeing the flush entry. All reads will be rejected until we see<a name="line.140"></a>
-<span class="sourceLineNo">141</span>        // a complete flush cycle or replay a region open event<a name="line.141"></a>
-<span class="sourceLineNo">142</span>        if (LOG.isDebugEnabled()) {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>          LOG.debug("Successfully triggered a flush of primary region replica "<a name="line.143"></a>
-<span class="sourceLineNo">144</span>              + ServerRegionReplicaUtil<a name="line.144"></a>
-<span class="sourceLineNo">145</span>                .getRegionInfoForDefaultReplica(region.getRegionInfo()).getEncodedName()<a name="line.145"></a>
-<span class="sourceLineNo">146</span>                + " of region " + region.getRegionInfo().getEncodedName()<a name="line.146"></a>
-<span class="sourceLineNo">147</span>                + " Now waiting and blocking reads until observing a full flush cycle");<a name="line.147"></a>
-<span class="sourceLineNo">148</span>        }<a name="line.148"></a>
-<span class="sourceLineNo">149</span>        break;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      } else {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>        if (response.hasWroteFlushWalMarker()) {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>          if(response.getWroteFlushWalMarker()) {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>            if (LOG.isDebugEnabled()) {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>              LOG.debug("Successfully triggered an empty flush marker(memstore empty) of primary "<a name="line.154"></a>
-<span class="sourceLineNo">155</span>                  + "region replica " + ServerRegionReplicaUtil<a name="line.155"></a>
-<span class="sourceLineNo">156</span>                    .getRegionInfoForDefaultReplica(region.getRegionInfo()).getEncodedName()<a name="line.156"></a>
-<span class="sourceLineNo">157</span>                  + " of region " + region.getRegionInfo().getEncodedName() + " Now waiting and "<a name="line.157"></a>
-<span class="sourceLineNo">158</span>                  + "blocking reads until observing a flush marker");<a name="line.158"></a>
-<span class="sourceLineNo">159</span>            }<a name="line.159"></a>
-<span class="sourceLineNo">160</span>            break;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>          } else {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>            // somehow we were not able to get the primary to write the flush request. It may be<a name="line.162"></a>
-<span class="sourceLineNo">163</span>            // closing or already flushing. Retry flush again after some sleep.<a name="line.163"></a>
-<span class="sourceLineNo">164</span>            if (!counter.shouldRetry()) {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>              throw new IOException("Cannot cause primary to flush or drop a wal marker after " +<a name="line.165"></a>
-<span class="sourceLineNo">166</span>                  "retries. Failing opening of this region replica "<a name="line.166"></a>
-<span class="sourceLineNo">167</span>                  + region.getRegionInfo().getEncodedName());<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>        } else {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>          // nothing to do. Are we dealing with an old server?<a name="line.171"></a>
-<span class="sourceLineNo">172</span>          LOG.warn("Was not able to trigger a flush from primary region due to old server version? "<a name="line.172"></a>
-<span class="sourceLineNo">173</span>              + "Continuing to open the secondary region replica: "<a name="line.173"></a>
-<span class="sourceLineNo">174</span>              + region.getRegionInfo().getEncodedName());<a name="line.174"></a>
-<span class="sourceLineNo">175</span>          region.setReadsEnabled(true);<a name="line.175"></a>
-<span class="sourceLineNo">176</span>          break;<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>      try {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>        counter.sleepUntilNextRetry();<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      } catch (InterruptedException e) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        throw new InterruptedIOException(e.getMessage());<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      }<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    }<a name="line.184"></a>
-<span class="sourceLineNo">185</span>  }<a name="line.185"></a>
-<span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>}<a name="line.187"></a>
+<span class="sourceLineNo">083</span>    if (t instanceof InterruptedIOException || t instanceof InterruptedException) {<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      LOG.error("Caught throwable while processing event " + eventType, t);<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    } else if (t instanceof RuntimeException) {<a name="line.85"></a>
+<span class="sourceLineNo">086</span>      server.abort("ServerAborting because a runtime exception was thrown", t);<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    } else {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      // something fishy since we cannot flush the primary region until all retries (retries from<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      // rpc times 35 trigger). We cannot close the region since there is no such mechanism to<a name="line.89"></a>
+<span class="sourceLineNo">090</span>      // close a region without master triggering it. We just abort the server for now.<a name="line.90"></a>
+<span class="sourceLineNo">091</span>      server.abort("ServerAborting because an exception was thrown", t);<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    }<a name="line.92"></a>
+<span class="sourceLineNo">093</span>  }<a name="line.93"></a>
+<span class="sourceLineNo">094</span><a name="line.94"></a>
+<span class="sourceLineNo">095</span>  private int getRetriesCount(Configuration conf) {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    int numRetries = conf.getInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER,<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      HConstants.DEFAULT_HBASE_CLIENT_RETRIES_NUMBER);<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    if (numRetries &gt; 10) {<a name="line.98"></a>
+<span class="sourceLineNo">099</span>      int mult = conf.getInt("hbase.client.serverside.retries.multiplier", 10);<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      numRetries = numRetries / mult; // reset if HRS has multiplied this already<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    }<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    return numRetries;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>  }<a name="line.103"></a>
+<span class="sourceLineNo">104</span><a name="line.104"></a>
+<span class="sourceLineNo">105</span>  void triggerFlushInPrimaryRegion(final HRegion region) throws IOException, RuntimeException {<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    long pause = connection.getConfiguration().getLong(HConstants.HBASE_CLIENT_PAUSE,<a name="line.106"></a>
+<span class="sourceLineNo">107</span>      HConstants.DEFAULT_HBASE_CLIENT_PAUSE);<a name="line.107"></a>
+<span class="sourceLineNo">108</span><a name="line.108"></a>
+<span class="sourceLineNo">109</span>    int maxAttempts = getRetriesCount(connection.getConfiguration());<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    RetryCounter counter = new RetryCounterFactory(maxAttempts, (int)pause).create();<a name="line.110"></a>
+<span class="sourceLineNo">111</span><a name="line.111"></a>
+<span class="sourceLineNo">112</span>    if (LOG.isDebugEnabled()) {<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      LOG.debug("Attempting to do an RPC to the primary region replica " + ServerRegionReplicaUtil<a name="line.113"></a>
+<span class="sourceLineNo">114</span>        .getRegionInfoForDefaultReplica(region.getRegionInfo()).getEncodedName() + " of region "<a name="line.114"></a>
+<span class="sourceLineNo">115</span>       + region.getRegionInfo().getEncodedName() + " to trigger a flush");<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    }<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    while (!region.isClosing() &amp;&amp; !region.isClosed()<a name="line.117"></a>
+<span class="sourceLineNo">118</span>        &amp;&amp; !server.isAborted() &amp;&amp; !server.isStopped()) {<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      FlushRegionCallable flushCallable = new FlushRegionCallable(<a name="line.119"></a>
+<span class="sourceLineNo">120</span>        connection, rpcControllerFactory,<a name="line.120"></a>
+<span class="sourceLineNo">121</span>        RegionReplicaUtil.getRegionInfoForDefaultReplica(region.getRegionInfo()), true);<a name="line.121"></a>
+<span class="sourceLineNo">122</span><a name="line.122"></a>
+<span class="sourceLineNo">123</span>      // TODO: flushRegion() is a blocking call waiting for the flush to complete. Ideally we<a name="line.123"></a>
+<span class="sourceLineNo">124</span>      // do not have to wait for the whole flush here, just initiate it.<a name="line.124"></a>
+<span class="sourceLineNo">125</span>      FlushRegionResponse response = null;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      try {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>         response = rpcRetryingCallerFactory.&lt;FlushRegionResponse&gt;newCaller()<a name="line.127"></a>
+<span class="sourceLineNo">128</span>          .callWithRetries(flushCallable, this.operationTimeout);<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      } catch (IOException ex) {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>        if (ex instanceof TableNotFoundException<a name="line.130"></a>
+<span class="sourceLineNo">131</span>            || connection.isTableDisabled(region.getRegionInfo().getTable())) {<a name="line.131"></a>
+<span class="sourceLineNo">132</span>          return;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>        }<a name="line.133"></a>
+<span class="sourceLineNo">134</span>        throw ex;<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>      if (response.getFlushed()) {<a name="line.137"></a>
+<span class="sourceLineNo">138</span>        // then we have to wait for seeing the flush entry. All reads will be rejected until we see<a name="line.138"></a>
+<span class="sourceLineNo">139</span>        // a complete flush cycle or replay a region open event<a name="line.139"></a>
+<span class="sourceLineNo">140</span>        if (LOG.isDebugEnabled()) {<a name="line.140"></a>
+<span class="sourceLineNo">141</span>          LOG.debug("Successfully triggered a flush of primary region replica "<a name="line.141"></a>
+<span class="sourceLineNo">142</span>              + ServerRegionReplicaUtil<a name="line.142"></a>
+<span class="sourceLineNo">143</span>                .getRegionInfoForDefaultReplica(region.getRegionInfo()).getEncodedName()<a name="line.143"></a>
+<span class="sourceLineNo">144</span>                + " of region " + region.getRegionInfo().getEncodedName()<a name="line.144"></a>
+<span class="sourceLineNo">145</span>                + " Now waiting and blocking reads until observing a full flush cycle");<a name="line.145"></a>
+<span class="sourceLineNo">146</span>        }<a name="line.146"></a>
+<span class="sourceLineNo">147</span>        break;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      } else {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>        if (response.hasWroteFlushWalMarker()) {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>          if(response.getWroteFlushWalMarker()) {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>            if (LOG.isDebugEnabled()) {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>              LOG.debug("Successfully triggered an empty flush marker(memstore empty) of primary "<a name="line.152"></a>
+<span class="sourceLineNo">153</span>                  + "region replica " + ServerRegionReplicaUtil<a name="line.153"></a>
+<span class="sourceLineNo">154</span>                    .getRegionInfoForDefaultReplica(region.getRegionInfo()).getEncodedName()<a name="line.154"></a>
+<span class="sourceLineNo">155</span>                  + " of region " + region.getRegionInfo().getEncodedName() + " Now waiting and "<a name="line.155"></a>
+<span class="sourceLineNo">156</span>                  + "blocking reads until observing a flush marker");<a name="line.156"></a>
+<span class="sourceLineNo">157</span>            }<a name="line.157"></a>
+<span class="sourceLineNo">158</span>            break;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>          } else {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>            // somehow we were not able to get the primary to write the flush request. It may be<a name="line.160"></a>
+<span class="sourceLineNo">161</span>            // closing or already flushing. Retry flush again after some sleep.<a name="line.161"></a>
+<span class="sourceLineNo">162</span>            if (!counter.shouldRetry()) {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>              throw new IOException("Cannot cause primary to flush or drop a wal marker after " +<a name="line.163"></a>
+<span class="sourceLineNo">164</span>                  "retries. Failing opening of this region replica "<a name="line.164"></a>
+<span class="sourceLineNo">165</span>                  + region.getRegionInfo().getEncodedName());<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>        } else {<a name="line.168"></a>
+<span class="sourceLineNo">169</span>          // nothing to do. Are we dealing with an old server?<a name="line.169"></a>
+<span class="sourceLineNo">170</span>          LOG.warn("Was not able to trigger a flush from primary region due to old server version? "<a name="line.170"></a>
+<span class="sourceLineNo">171</span>              + "Continuing to open the secondary region replica: "<a name="line.171"></a>
+<span class="sourceLineNo">172</span>              + region.getRegionInfo().getEncodedName());<a name="line.172"></a>
+<span class="sourceLineNo">173</span>          region.setReadsEnabled(true);<a name="line.173"></a>
+<span class="sourceLineNo">174</span>          break;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        }<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      }<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      try {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        counter.sleepUntilNextRetry();<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      } catch (InterruptedException e) {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>        throw new InterruptedIOException(e.getMessage());<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      }<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    }<a name="line.182"></a>
+<span class="sourceLineNo">183</span>  }<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/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 fddb01d..367c0bc 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 = "servers", type = "List&lt;ServerName&gt;"),<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    @org.jamon.annotations.Argument(name = "assignmentManager", type = "AssignmentManager"),<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    @org.jamon.annotations.Argument(name = "deadServers", type = "Set&lt;ServerName&gt;"),<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    @org.jamon.annotations.Argument(name = "metaLocation", type = "ServerName"),<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    @org.jamon.annotations.Argument(name = "serverManager", type = "ServerManager"),<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 = "filter", type = "String"),<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    @org.jamon.annotations.Argument(name = "catalogJanitorEnabled", type = "boolean"),<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    @org.jamon.annotations.Argument(name = "frags", type = "Map&lt;String,Integer&gt;")})<a name="line.70"></a>
+<span class="sourceLineNo">062</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<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 = "assignmentManager", type = "AssignmentManager"),<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    @org.jamon.annotations.Argument(name = "serverManager", type = "ServerManager"),<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 = "catalogJanitorEnabled", type = "boolean"),<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    @org.jamon.annotations.Argument(name = "frags", type = "Map&lt;String,Integer&gt;"),<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 = "format", type = "String")})<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>    // 23, 1<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    public void setServers(List&lt;ServerName&gt; servers)<a name="line.112"></a>
+<span class="sourceLineNo">111</span>    // 26, 1<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    public void setFilter(String filter)<a name="line.112"></a>
 <span class="sourceLineNo">113</span>    {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      // 23, 1<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      m_servers = servers;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      m_servers__IsNotDefault = true;<a name="line.116"></a>
+<span class="sourceLineNo">114</span>      // 26, 1<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      m_filter = filter;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      m_filter__IsNotDefault = true;<a name="line.116"></a>
 <span class="sourceLineNo">117</span>    }<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    public List&lt;ServerName&gt; getServers()<a name="line.118"></a>
+<span class="sourceLineNo">118</span>    public String getFilter()<a name="line.118"></a>
 <span class="sourceLineNo">119</span>    {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      return m_servers;<a name="line.120"></a>
+<span class="sourceLineNo">120</span>      return m_filter;<a name="line.120"></a>
 <span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    private List&lt;ServerName&gt; m_servers;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    public boolean getServers__IsNotDefault()<a name="line.123"></a>
+<span class="sourceLineNo">122</span>    private String m_filter;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    public boolean getFilter__IsNotDefault()<a name="line.123"></a>
 <span class="sourceLineNo">124</span>    {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      return m_servers__IsNotDefault;<a name="line.125"></a>
+<span class="sourceLineNo">125</span>      return m_filter__IsNotDefault;<a name="line.125"></a>
 <span class="sourceLineNo">126</span>    }<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    private boolean m_servers__IsNotDefault;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    // 29, 1<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    public void setAssignmentManager(AssignmentManager assignmentManager)<a name="line.129"></a>
+<span class="sourceLineNo">127</span>    private boolean m_filter__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>      // 29, 1<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      m_assignmentManager = assignmentManager;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      m_assignmentManager__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 AssignmentManager getAssignmentManager()<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_assignmentManager;<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 AssignmentManager m_assignmentManager;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    public boolean getAssignmentManager__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_assignmentManager__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_assignmentManager__IsNotDefault;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    // 24, 1<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    public void setDeadServers(Set&lt;ServerName&gt; deadServers)<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>    // 29, 1<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    public void setAssignmentManager(AssignmentManager assignmentManager)<a name="line.146"></a>
 <span class="sourceLineNo">147</span>    {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      // 24, 1<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      m_deadServers = deadServers;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      m_deadServers__IsNotDefault = true;<a name="line.150"></a>
+<span class="sourceLineNo">148</span>      // 29, 1<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      m_assignmentManager = assignmentManager;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      m_assignmentManager__IsNotDefault = true;<a name="line.150"></a>
 <span class="sourceLineNo">151</span>    }<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    public Set&lt;ServerName&gt; getDeadServers()<a name="line.152"></a>
+<span class="sourceLineNo">152</span>    public AssignmentManager getAssignmentManager()<a name="line.152"></a>
 <span class="sourceLineNo">153</span>    {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      return m_deadServers;<a name="line.154"></a>
+<span class="sourceLineNo">154</span>      return m_assignmentManager;<a name="line.154"></a>
 <span class="sourceLineNo">155</span>    }<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    private Set&lt;ServerName&gt; m_deadServers;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    public boolean getDeadServers__IsNotDefault()<a name="line.157"></a>
+<span class="sourceLineNo">156</span>    private AssignmentManager m_assignmentManager;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    public boolean getAssignmentManager__IsNotDefault()<a name="line.157"></a>
 <span class="sourceLineNo">158</span>    {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      return m_deadServers__IsNotDefault;<a name="line.159"></a>
+<span class="sourceLineNo">159</span>      return m_assignmentManager__IsNotDefault;<a name="line.159"></a>
 <span class="sourceLineNo">160</span>    }<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    private boolean m_deadServers__IsNotDefault;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    // 22, 1<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    public void setMetaLocation(ServerName metaLocation)<a name="line.163"></a>
+<span class="sourceLineNo">161</span>    private boolean m_assignmentManager__IsNotDefault;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    // 28, 1<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    public void setServerManager(ServerManager serverManager)<a name="line.163"></a>
 <span class="sourceLineNo">164</span>    {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      // 22, 1<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      m_metaLocation = metaLocation;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      m_metaLocation__IsNotDefault = true;<a name="line.167"></a>
+<span class="sourceLineNo">165</span>      // 28, 1<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      m_serverManager = serverManager;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      m_serverManager__IsNotDefault = true;<a name="line.167"></a>
 <span class="sourceLineNo">168</span>    }<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    public ServerName getMetaLocation()<a name="line.169"></a>
+<span class="sourceLineNo">169</span>    public ServerManager getServerManager()<a name="line.169"></a>
 <span class="sourceLineNo">170</span>    {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      return m_metaLocation;<a name="line.171"></a>
+<span class="sourceLineNo">171</span>      return m_serverManager;<a name="line.171"></a>
 <span class="sourceLineNo">172</span>    }<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    private ServerName m_metaLocation;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    public boolean getMetaLocation__IsNotDefault()<a name="line.174"></a>
+<span class="sourceLineNo">173</span>    private ServerManager m_serverManager;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    public boolean getServerManager__IsNotDefault()<a name="line.174"></a>
 <span class="sourceLineNo">175</span>    {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      return m_metaLocation__IsNotDefault;<a name="line.176"></a>
+<span class="sourceLineNo">176</span>      return m_serverManager__IsNotDefault;<a name="line.176"></a>
 <span class="sourceLineNo">177</span>    }<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    private boolean m_metaLocation__IsNotDefault;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    // 28, 1<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    public void setServerManager(ServerManager serverManager)<a name="line.180"></a>
+<span class="sourceLineNo">178</span>    private boolean m_serverManager__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>      // 28, 1<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      m_serverManager = serverManager;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      m_serverManager__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 ServerManager getServerManager()<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_serverManager;<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 ServerManager m_serverManager;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    public boolean getServerManager__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_serverManager__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_serverManager__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">195</span>    private boolean m_deadServers__IsNotDefault;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    // 25, 1<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    public void setCatalogJanitorEnabled(boolean catalogJanitorEnabled)<a name="line.197"></a>
 <span class="sourceLineNo">198</span>    {<a name="line.198"></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">199</span>      // 25, 1<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      m_catalogJanitorEnabled = catalogJanitorEnabled;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      m_catalogJanitorEnabled__IsNotDefault = true;<a name="line.201"></a>
 <span class="sourceLineNo">202</span>    }<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    public String getFormat()<a name="line.203"></a>
+<span class="sourceLineNo">203</span>    public boolean getCatalogJanitorEnabled()<a name="line.203"></a>
 <span class="sourceLineNo">204</span>    {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      return m_format;<a name="line.205"></a>
+<span class="sourceLineNo">205</span>      return m_catalogJanitorEnabled;<a name="line.205"></a>
 <span class="sourceLineNo">206</span>    }<a name="line.206"></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">207</span>    private boolean m_catalogJanitorEnabled;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    public boolean getCatalogJanitorEnabled__IsNotDefault()<a name="line.208"></a>
 <span class="sourceLineNo">209</span>    {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      return m_format__IsNotDefault;<a name="line.210"></a>
+<span class="sourceLineNo">210</span>      return m_catalogJanitorEnabled__IsNotDefault;<a name="line.210"></a>
 <span class="sourceLineNo">211</span>    }<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    private boolean m_format__IsNotDefault;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    // 26, 1<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    public void setFilter(String filter)<a name="line.214"></a>
+<span class="sourceLineNo">212</span>    private boolean m_catalogJanitorEnabled__IsNotDefault;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    // 21, 1<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    public void setFrags(Map&lt;String,Integer&gt; frags)<a name="line.214"></a>
 <span class="sourceLineNo">215</span>    {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      // 26, 1<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      m_filter = filter;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      m_filter__IsNotDefault = true;<a name="line.218"></a>
+<span class="sourceLineNo">216</span>      // 21, 1<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      m_frags = frags;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      m_frags__IsNotDefault = true;<a name="line.218"></a>
 <span class="sourceLineNo">219</span>    }<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    public String getFilter()<a name="line.220"></a>
+<span class="sourceLineNo">220</span>    public Map&lt;String,Integer&gt; getFrags()<a name="line.220"></a>
 <span class="sourceLineNo">221</span>    {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      return m_filter;<a name="line.222"></a>
+<span class="sourceLineNo">222</span>      return m_frags;<a name="line.222"></a>
 <span class="sourceLineNo">223</span>    }<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    private String m_filter;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    public boolean getFilter__IsNotDefault()<a name="line.225"></a>
+<span class="sourceLineNo">224</span>    private Map&lt;String,Integer&gt; m_frags;<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    public boolean getFrags__IsNotDefault()<a name="line.225"></a>
 <span class="sourceLineNo">226</span>    {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      return m_filter__IsNotDefault;<a name="line.227"></a>
+<span class="sourceLineNo">227</span>      return m_frags__IsNotDefault;<a name="line.227"></a>
 <span class="sourceLineNo">228</span>    }<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    private boolean m_filter__IsNotDefault;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    // 25, 1<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    public void setCatalogJanitorEnabled(boolean catalogJanitorEnabled)<a name="line.231"></a>
+<span class="sourceLineNo">229</span>    private boolean m_frags__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>      // 25, 1<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      m_catalogJanitorEnabled = catalogJanitorEnabled;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      m_catalogJanitorEnabled__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 boolean getCatalogJanitorEnabled()<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_catalogJanitorEnabled;<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 boolean m_catalogJanitorEnabled;<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    public boolean getCatalogJanitorEnabled__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_catalogJanitorEnabled__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_catalogJanitorEnabled__IsNotDefault;<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    // 21, 1<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    public void setFrags(Map&lt;String,Integer&gt; frags)<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>    // 27, 1<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    public void setFormat(String format)<a name="line.248"></a>
 <span class="sourceLineNo">249</span>    {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      // 21, 1<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      m_frags = frags;<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      m_frags__IsNotDefault = true;<a name="line.252"></a>
+<span class="sourceLineNo">250</span>      // 27, 1<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      m_format = format;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      m_format__IsNotDefault = true;<a name="line.252"></a>
 <span class="sourceLineNo">253</span>    }<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    public Map&lt;String,Integer&gt; getFrags()<a name="line.254"></a>
+<span class="sourceLineNo">254</span>    public String getFormat()<a name="line.254"></a>
 <span class="sourceLineNo">255</span>    {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      return m_frags;<a name="line.256"></a>
+<span class="sourceLineNo">256</span>      return m_format;<a name="line.256"></a>
 <span class="sourceLineNo">257</span>    }<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    private Map&lt;String,Integer&gt; m_frags;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    public boolean getFrags__IsNotDefault()<a name="line.259"></a>
+<span class="sourceLineNo">258</span>    private String m_format;<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    public boolean getFormat__IsNotDefault()<a name="line.259"></a>
 <span class="sourceLineNo">260</span>    {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      return m_frags__IsNotDefault;<a name="line.261"></a>
+<span class="sourceLineNo">261</span>      return m_format__IsNotDefault;<a name="line.261"></a>
 <span class="sourceLineNo">262</span>    }<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    private boolean m_frags__IsNotDefault;<a name="line.263"></a>
+<span class="sourceLineNo">263</span>    private boolean m_format__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 List&lt;ServerName&gt; servers;<a name="line.275"></a>
-<span class="sourceLineNo">276</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServers(List&lt;ServerName&gt; p_servers)<a name="line.276"></a>
+<span class="sourceLineNo">275</span>  protected String filter;<a name="line.275"></a>
+<span class="sourceLineNo">276</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFilter(String p_filter)<a name="line.276"></a>
 <span class="sourceLineNo">277</span>  {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    (getImplData()).setServers(p_servers);<a name="line.278"></a>
+<span class="sourceLineNo">278</span>    (getImplData()).setFilter(p_filter);<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 AssignmentManager assignmentManager;<a name="line.282"></a>
-<span class="sourceLineNo">283</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setAssignmentManager(AssignmentManager p_assignmentManager)<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()).setAssignmentManager(p_assignmentManager);<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 Set&lt;ServerName&gt; deadServers;<a name="line.289"></a>
-<span class="sourceLineNo">290</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setDeadServers(Set&lt;ServerName&gt; p_deadServers)<a name="line.290"></a>
+<span class="sourceLineNo">289</span>  protected AssignmentManager assignmentManager;<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setAssignmentManager(AssignmentManager p_assignmentManager)<a name="line.290"></a>
 <span class="sourceLineNo">291</span>  {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    (getImplData()).setDeadServers(p_deadServers);<a name="line.292"></a>
+<span class="sourceLineNo">292</span>    (getImplData()).setAssignmentManager(p_assignmentManager);<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 ServerName metaLocation;<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setMetaLocation(ServerName p_metaLocation)<a name="line.297"></a>
+<span class="sourceLineNo">296</span>  protected ServerManager serverManager;<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServerManager(ServerManager p_serverManager)<a name="line.297"></a>
 <span class="sourceLineNo">298</span>  {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    (getImplData()).setMetaLocation(p_metaLocation);<a name="line.299"></a>
+<span class="sourceLineNo">299</span>    (getImplData()).setServerManager(p_serverManager);<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 ServerManager serverManager;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServerManager(ServerManager p_serverManager)<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()).setServerManager(p_serverManager);<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 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">310</span>  protected boolean catalogJanitorEnabled;<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setCatalogJanitorEnabled(boolean p_catalogJanitorEnabled)<a name="line.311"></a>
 <span class="sourceLineNo">312</span>  {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    (getImplData()).setFormat(p_format);<a name="line.313"></a>
+<span class="sourceLineNo">313</span>    (getImplData()).setCatalogJanitorEnabled(p_catalogJanitorEnabled);<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 String filter;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFilter(String p_filter)<a name="line.318"></a>
+<span class="sourceLineNo">317</span>  protected Map&lt;String,Integer&gt; frags;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFrags(Map&lt;String,Integer&gt; p_frags)<a name="line.318"></a>
 <span class="sourceLineNo">319</span>  {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    (getImplData()).setFilter(p_filter);<a name="line.320"></a>
+<span class="sourceLineNo">320</span>    (getImplData()).setFrags(p_frags);<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 boolean catalogJanitorEnabled;<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setCatalogJanitorEnabled(boolean p_catalogJanitorEnabled)<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()).setCatalogJanitorEnabled(p_catalogJanitorEnabled);<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 Map&lt;String,Integer&gt; frags;<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFrags(Map&lt;String,Integer&gt; p_frags)<a name="line.332"></a>
+<span class="sourceLineNo">331</span>  protected String format;<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFormat(String p_format)<a name="line.332"></a>
 <span class="sourceLineNo">333</span>  {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    (getImplData()).setFrags(p_frags);<a name="line.334"></a>
+<span class="sourceLineNo">334</span>    (getImplData()).setFormat(p_format);<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>


[50/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/checkstyle-aggregate.html
----------------------------------------------------------------------
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index ccd3456..583fde2 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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <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" />
@@ -776,7 +776,7 @@
 <td><a href="#org.apache.hadoop.hbase.client.MetricsConnection.java">org/apache/hadoop/hbase/client/MetricsConnection.java</a></td>
 <td>0</td>
 <td>0</td>
-<td>45</td></tr>
+<td>47</td></tr>
 <tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.MultiAction.java">org/apache/hadoop/hbase/client/MultiAction.java</a></td>
 <td>0</td>
@@ -1271,7 +1271,7 @@
 <td><a href="#org.apache.hadoop.hbase.coprocessor.CoprocessorHost.java">org/apache/hadoop/hbase/coprocessor/CoprocessorHost.java</a></td>
 <td>0</td>
 <td>0</td>
-<td>12</td></tr>
+<td>11</td></tr>
 <tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.CoprocessorService.java">org/apache/hadoop/hbase/coprocessor/CoprocessorService.java</a></td>
 <td>0</td>
@@ -2481,7 +2481,7 @@
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.java">org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.java</a></td>
 <td>0</td>
 <td>0</td>
-<td>53</td></tr>
+<td>54</td></tr>
 <tr class="b">
 <td><a href="#org.apache.hadoop.hbase.mapreduce.TableMapper.java">org/apache/hadoop/hbase/mapreduce/TableMapper.java</a></td>
 <td>0</td>
@@ -3316,7 +3316,7 @@
 <td><a href="#org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore.java">org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.java</a></td>
 <td>0</td>
 <td>0</td>
-<td>8</td></tr>
+<td>7</td></tr>
 <tr class="a">
 <td><a href="#org.apache.hadoop.hbase.procedure2.util.StringUtils.java">org/apache/hadoop/hbase/procedure2/util/StringUtils.java</a></td>
 <td>0</td>
@@ -4081,7 +4081,7 @@
 <td><a href="#org.apache.hadoop.hbase.regionserver.handler.RegionReplicaFlushHandler.java">org/apache/hadoop/hbase/regionserver/handler/RegionReplicaFlushHandler.java</a></td>
 <td>0</td>
 <td>0</td>
-<td>4</td></tr>
+<td>3</td></tr>
 <tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.handler.WALSplitterHandler.java">org/apache/hadoop/hbase/regionserver/handler/WALSplitterHandler.java</a></td>
 <td>0</td>
@@ -6038,7 +6038,7 @@
 <tr class="b">
 <td>blocks</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_blocks.html#EmptyBlock">EmptyBlock</a></td>
-<td>20</td>
+<td>19</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="a">
 <td></td>
@@ -6048,7 +6048,7 @@
 <tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_blocks.html#NeedBraces">NeedBraces</a></td>
-<td>1770</td>
+<td>1769</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="a">
 <td>coding</td>
@@ -6078,7 +6078,7 @@
 <tr class="b">
 <td>design</td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_design.html#FinalClass">FinalClass</a></td>
-<td>44</td>
+<td>46</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="a">
 <td></td>
@@ -6109,7 +6109,7 @@
 <ul>
 <li>ordered: <tt>&quot;true&quot;</tt></li>
 <li>sortStaticImportsAlphabetically: <tt>&quot;true&quot;</tt></li></ul></td>
-<td>984</td>
+<td>989</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="b">
 <td></td>
@@ -6132,7 +6132,7 @@
 <li>arrayInitIndent: <tt>&quot;2&quot;</tt></li>
 <li>throwsIndent: <tt>&quot;2&quot;</tt></li>
 <li>basicOffset: <tt>&quot;2&quot;</tt></li></ul></td>
-<td>4758</td>
+<td>4757</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="a">
 <td>javadoc</td>
@@ -6160,7 +6160,7 @@
 <ul>
 <li>max: <tt>&quot;100&quot;</tt></li>
 <li>ignorePattern: <tt>&quot;^package.*|^import.*|a href|href|http://|https://|ftp://|org.apache.thrift.|com.google.protobuf.|hbase.protobuf.generated&quot;</tt></li></ul></td>
-<td>332</td>
+<td>328</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="b">
 <td></td>
@@ -15473,6 +15473,18 @@
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
+<td>Wrong order for 'com.codahale.metrics.Counter' import.</td>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L23">23</a></td></tr>
+<tr class="b">
+<td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
+<td>imports</td>
+<td>ImportOrder</td>
+<td>Wrong order for 'com.codahale.metrics.JmxReporter' import.</td>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L27">27</a></td></tr>
+<tr class="a">
+<td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
+<td>imports</td>
+<td>ImportOrder</td>
 <td>Wrong order for 'java.util.concurrent.ConcurrentHashMap' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L37">37</a></td></tr>
 <tr class="b">
@@ -15486,259 +15498,259 @@
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child have incorrect indentation level 6, expected level should be 8.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L380">380</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L383">383</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>'block' child have incorrect indentation level 8, expected level should be 10.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L382">382</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L385">385</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>'method call' child have incorrect indentation level 8, expected level should be 10.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L382">382</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L385">385</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>'block' child have incorrect indentation level 8, expected level should be 10.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L383">383</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L386">386</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>'case' child have incorrect indentation level 6, expected level should be 8.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L384">384</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L387">387</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>'block' child have incorrect indentation level 8, expected level should be 10.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L386">386</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L389">389</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>'member def modifier' have incorrect indentation level 8, expected level should be 10.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L386">386</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L389">389</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>'switch' have incorrect indentation level 8, expected level should be 10.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L387">387</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L390">390</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>'case' child have incorrect indentation level 8, expected level should be 12.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L388">388</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L391">391</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>'block' child have incorrect indentation level 10, expected level should be 14.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L389">389</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L392">392</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>'method call' child have incorrect indentation level 10, expected level should be 14.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L389">389</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L392">392</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>'block' child have incorrect indentation level 10, expected level should be 14.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L390">390</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L393">393</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>'case' child have incorrect indentation level 8, expected level should be 12.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L391">391</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L394">394</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>'block' child have incorrect indentation level 10, expected level should be 14.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L392">392</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L395">395</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>'method call' child have incorrect indentation level 10, expected level should be 14.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L392">392</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L395">395</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>'block' child have incorrect indentation level 10, expected level should be 14.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L393">393</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L396">396</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>'case' child have incorrect indentation level 8, expected level should be 12.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L394">394</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L397">397</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>'block' child have incorrect indentation level 10, expected level should be 14.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L395">395</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L398">398</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>'method call' child have incorrect indentation level 10, expected level should be 14.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L395">395</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L398">398</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>'block' child have incorrect indentation level 10, expected level should be 14.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L396">396</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L399">399</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>'case' child have incorrect indentation level 8, expected level should be 12.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L397">397</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L400">400</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>'block' child have incorrect indentation level 10, expected level should be 14.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L398">398</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L401">401</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>'method call' child have incorrect indentation level 10, expected level should be 14.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L398">398</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L401">401</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>'block' child have incorrect indentation level 10, expected level should be 14.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L399">399</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L402">402</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>'case' child have incorrect indentation level 8, expected level should be 12.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L400">400</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L403">403</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>'block' child have incorrect indentation level 10, expected level should be 14.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L401">401</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L404">404</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>'switch rcurly' have incorrect indentation level 8, expected level should be 10.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L402">402</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L405">405</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>'case' child have incorrect indentation level 6, expected level should be 8.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L403">403</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L406">406</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>'block' child have incorrect indentation level 8, expected level should be 10.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L405">405</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L408">408</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>'method call' child have incorrect indentation level 8, expected level should be 10.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L405">405</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L408">408</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>'block' child have incorrect indentation level 8, expected level should be 10.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L406">406</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L409">409</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>'case' child have incorrect indentation level 6, expected level should be 8.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L407">407</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L410">410</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>'block' child have incorrect indentation level 8, expected level should be 10.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L410">410</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L413">413</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>'case' child have incorrect indentation level 6, expected level should be 8.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L411">411</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L414">414</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>'block' child have incorrect indentation level 8, expected level should be 10.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L414">414</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L417">417</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>'case' child have incorrect indentation level 6, expected level should be 8.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L415">415</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L418">418</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>'block' child have incorrect indentation level 8, expected level should be 10.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L418">418</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L421">421</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>'case' child have incorrect indentation level 6, expected level should be 8.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L419">419</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L422">422</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>'block' child have incorrect indentation level 8, expected level should be 10.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L421">421</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L424">424</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>'method call' child have incorrect indentation level 8, expected level should be 10.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L421">421</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L424">424</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>'block' child have incorrect indentation level 8, expected level should be 10.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L422">422</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L425">425</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>'case' child have incorrect indentation level 6, expected level should be 8.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L423">423</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L426">426</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>'block' child have incorrect indentation level 8, expected level should be 10.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L424">424</a></td></tr></table></div>
+<td><a href="./xref/org/apache/hadoop/hbase/client/MetricsConnection.html#L427">427</a></td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.MultiAction.java">org/apache/hadoop/hbase/client/MultiAction.java</h3>
 <table border="0" class="table table-striped">
@@ -20988,74 +21000,68 @@
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#L58">58</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>'method def' child have incorrect indentation level 6, expected level should be 4.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#L107">107</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/coprocessor/CoprocessorHost.html#L140">140</a></td></tr>
-<tr class="a">
+<td><a href="./xref/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#L143">143</a></td></tr>
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>VisibilityModifier</td>
 <td>Variable 'impl' must be private and have accessor methods.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#L373">373</a></td></tr>
-<tr class="b">
+<td><a href="./xref/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#L377">377</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>'method def modifier' have incorrect indentation level 12, expected level should be one of the following: 6, 8.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#L619">619</a></td></tr>
-<tr class="a">
+<td><a href="./xref/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#L625">625</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>'if' have incorrect indentation level 14, expected level should be one of the following: 8, 10.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#L621">621</a></td></tr>
-<tr class="b">
+<td><a href="./xref/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#L627">627</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>'if' child have incorrect indentation level 16, expected level should be one of the following: 10, 12.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#L622">622</a></td></tr>
-<tr class="a">
+<td><a href="./xref/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#L628">628</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>'if rcurly' have incorrect indentation level 14, expected level should be one of the following: 8, 10.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#L623">623</a></td></tr>
-<tr class="b">
+<td><a href="./xref/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#L629">629</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>'method def' child have incorrect indentation level 14, expected level should be one of the following: 8, 10.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#L624">624</a></td></tr>
-<tr class="a">
+<td><a href="./xref/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#L630">630</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>'method def rcurly' have incorrect indentation level 12, expected level should be one of the following: 6, 8.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#L625">625</a></td></tr>
-<tr class="b">
+<td><a href="./xref/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#L631">631</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>'object def rcurly' have incorrect indentation level 10, expected level should be one of the following: 4, 6.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#L626">626</a></td></tr></table></div>
+<td><a href="./xref/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#L632">632</a></td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.coprocessor.CoprocessorService.java">org/apache/hadoop/hbase/coprocessor/CoprocessorService.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -21064,31 +21070,31 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.coprocessor.EndpointObserver.java">org/apache/hadoop/hbase/coprocessor/EndpointObserver.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.Coprocessor' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/EndpointObserver.html#L26">26</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'com.google.protobuf.Message' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/EndpointObserver.html#L29">29</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/EndpointObserver.html#L51">51</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -21097,13 +21103,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.coprocessor.MasterCoprocessorEnvironment.java">org/apache/hadoop/hbase/coprocessor/MasterCoprocessorEnvironment.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -21112,277 +21118,277 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.coprocessor.MasterObserver.java">org/apache/hadoop/hbase/coprocessor/MasterObserver.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L58">58</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L69">69</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L81">81</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L93">93</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'ctx' have incorrect indentation level 2, expected level should be 4.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L96">96</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L675">675</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L692">692</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L749">749</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L758">758</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L768">768</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L776">776</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 4.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L793">793</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 4.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L794">794</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L853">853</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L865">865</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L876">876</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L886">886</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L898">898</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L910">910</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L923">923</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L935">935</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L947">947</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L957">957</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L968">968</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L980">980</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L991">991</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L1001">1001</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L1014">1014</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L1022">1022</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L1066">1066</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L1075">1075</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L1084">1084</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L1093">1093</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L1103">1103</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L1112">1112</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L1122">1122</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L1132">1132</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L1143">1143</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L1154">1154</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L1165">1165</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L1176">1176</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L1186">1186</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L1196">1196</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MasterObserver.html#L1206">1206</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -21391,37 +21397,37 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.coprocessor.MultiRowMutationEndpoint.java">org/apache/hadoop/hbase/coprocessor/MultiRowMutationEndpoint.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.Coprocessor' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MultiRowMutationEndpoint.html#L28">28</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.protobuf.ProtobufUtil' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MultiRowMutationEndpoint.html#L37">37</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MultiRowMutationService' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MultiRowMutationEndpoint.html#L42">42</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'com.google.protobuf.RpcCallback' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/MultiRowMutationEndpoint.html#L44">44</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
@@ -21430,13 +21436,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.coprocessor.ObserverContext.java">org/apache/hadoop/hbase/coprocessor/ObserverContext.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -21445,13 +21451,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment.java">org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -21460,385 +21466,385 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.coprocessor.RegionObserver.java">org/apache/hadoop/hbase/coprocessor/RegionObserver.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.fs.FileSystem' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L28">28</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.regionserver.InternalScanner' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L51">51</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.regionserver.wal.WALEdit' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L61">61</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'com.google.common.collect.ImmutableList' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L64">64</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 4.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L113">113</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 4.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L135">135</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 4.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L279">279</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 4.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L304">304</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 4.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L348">348</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 4.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L351">351</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 4.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L359">359</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 4.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L368">368</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L381">381</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L382">382</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L383">383</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L384">384</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L394">394</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L395">395</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 101).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L397">397</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L401">401</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L402">402</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L408">408</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L409">409</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L417">417</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L418">418</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L426">426</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 4.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L449">449</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 4.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L450">450</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L480">480</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 4.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L563">563</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L564">564</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L611">611</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L613">613</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L620">620</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L621">621</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L622">622</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L630">630</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L631">631</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L633">633</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L652">652</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 4.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L654">654</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L681">681</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 4.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L683">683</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L727">727</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L755">755</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 4.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L945">945</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 4.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L1002">1002</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 4.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L1003">1003</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L1051">1051</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 4.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L1053">1053</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L1077">1077</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L1176">1176</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 4.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L1178">1178</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L1179">1179</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L1187">1187</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L1191">1191</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L1206">1206</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 4.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L1210">1210</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L1211">1211</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L1225">1225</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L1229">1229</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionObserver.html#L1246">1246</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -21847,169 +21853,169 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.coprocessor.RegionServerObserver.java">org/apache/hadoop/hbase/coprocessor/RegionServerObserver.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#L47">47</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#L48">48</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#L49">49</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#L50">50</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#L57">57</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#L58">58</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#L59">59</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#L60">60</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#L61">61</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#L69">69</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#L70">70</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#L71">71</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#L74">74</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#L82">82</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#L83">83</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#L84">84</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#L85">85</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#L86">86</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#L93">93</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#L94">94</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#L95">95</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#L96">96</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#L103">103</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#L104">104</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#L105">105</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/RegionServerObserver.html#L106">106</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -22018,13 +22024,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.coprocessor.SingletonCoprocessorService.java">org/apache/hadoop/hbase/coprocessor/SingletonCoprocessorService.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -22033,13 +22039,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.coprocessor.WALCoprocessorEnvironment.java">org/apache/hadoop/hbase/coprocessor/WALCoprocessorEnvironment.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -22048,25 +22054,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.coprocessor.WALObserver.java">org/apache/hadoop/hbase/coprocessor/WALObserver.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.Coprocessor' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/WALObserver.html#L24">24</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.regionserver.wal.WALEdit' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/WALObserver.html#L29">29</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -22075,25 +22081,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.coprocessor.example.BulkDeleteEndpoint.java">org/apache/hadoop/hbase/coprocessor/example/BulkDeleteEndpoint.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'com.google.protobuf.RpcCallback' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/example/BulkDeleteEndpoint.html#L54">54</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 101).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/example/BulkDeleteEndpoint.html#L91">91</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -22102,13 +22108,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.coprocessor.example.RowCountEndpoint.java">org/apache/hadoop/hbase/coprocessor/example/RowCountEndpoint.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -22117,157 +22123,157 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.coprocessor.example.ZooKeeperScanPolicyObserver.java">org/apache/hadoop/hbase/coprocessor/example/ZooKeeperScanPolicyObserver.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.regionserver.ScanInfo' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/example/ZooKeeperScanPolicyObserver.html#L37">37</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.regionserver.InternalScanner' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/example/ZooKeeperScanPolicyObserver.html#L38">38</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>RedundantImport</td>
 <td>Duplicate import to line 36 - org.apache.hadoop.hbase.regionserver.Store.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/example/ZooKeeperScanPolicyObserver.html#L41">41</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child have incorrect indentation level 6, expected level should be 8.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/example/ZooKeeperScanPolicyObserver.html#L133">133</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child have incorrect indentation level 6, expected level should be 8.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/example/ZooKeeperScanPolicyObserver.html#L134">134</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'try' have incorrect indentation level 6, expected level should be 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/example/ZooKeeperScanPolicyObserver.html#L135">135</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'try' child have incorrect indentation level 8, expected level should be 12.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/example/ZooKeeperScanPolicyObserver.html#L137">137</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method call' child have incorrect indentation level 8, expected level should be 12.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/example/ZooKeeperScanPolicyObserver.html#L138">138</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'try' child have incorrect indentation level 8, expected level should be 12.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/example/ZooKeeperScanPolicyObserver.html#L138">138</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'try rcurly' have incorrect indentation level 6, expected level should be 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/example/ZooKeeperScanPolicyObserver.html#L139">139</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'catch rcurly' have incorrect indentation level 6, expected level should be 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/example/ZooKeeperScanPolicyObserver.html#L140">140</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'catch' child have incorrect indentation level 8, expected level should be 12.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/example/ZooKeeperScanPolicyObserver.html#L141">141</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'catch rcurly' have incorrect indentation level 6, expected level should be 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/example/ZooKeeperScanPolicyObserver.html#L142">142</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 6, expected level should be 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/example/ZooKeeperScanPolicyObserver.html#L143">143</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child have incorrect indentation level 6, expected level should be 8.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/example/ZooKeeperScanPolicyObserver.html#L145">145</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'try' have incorrect indentation level 6, expected level should be 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/example/ZooKeeperScanPolicyObserver.html#L146">146</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method call' child have incorrect indentation level 8, expected level should be 12.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/example/ZooKeeperScanPolicyObserver.html#L148">148</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'try' child have incorrect indentation level 8, expected level should be 12.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/example/ZooKeeperScanPolicyObserver.html#L148">148</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'try' child have incorrect indentation level 8, expected level should be 12.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/example/ZooKeeperScanPolicyObserver.html#L149">149</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'try rcurly' have incorrect indentation level 6, expected level should be 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/example/ZooKeeperScanPolicyObserver.html#L150">150</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'catch rcurly' have incorrect indentation level 6, expected level should be 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/example/ZooKeeperScanPolicyObserver.html#L151">151</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'catch' child have incorrect indentation level 8, expected level should be 12.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/coprocessor/example/ZooKeeperScanPolicyObserver.html#L152">152</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'catch rcurly' have incorrect indentation level 6, expected

<TRUNCATED>

[20/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.LeaseRecovery.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.LeaseRecovery.html b/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.LeaseRecovery.html
index 4a90c16..fc06682 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.LeaseRecovery.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.LeaseRecovery.html
@@ -108,866 +108,870 @@
 <span class="sourceLineNo">100</span><a name="line.100"></a>
 <span class="sourceLineNo">101</span>  private final LinkedList&lt;ProcedureWALFile&gt; logs = new LinkedList&lt;ProcedureWALFile&gt;();<a name="line.101"></a>
 <span class="sourceLineNo">102</span>  private final ProcedureStoreTracker storeTracker = new ProcedureStoreTracker();<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  private final AtomicLong inactiveLogsMaxId = new AtomicLong(0);<a name="line.103"></a>
-<span class="sourceLineNo">104</span>  private final ReentrantLock lock = new ReentrantLock();<a name="line.104"></a>
-<span class="sourceLineNo">105</span>  private final Condition waitCond = lock.newCondition();<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  private final Condition slotCond = lock.newCondition();<a name="line.106"></a>
-<span class="sourceLineNo">107</span>  private final Condition syncCond = lock.newCondition();<a name="line.107"></a>
-<span class="sourceLineNo">108</span><a name="line.108"></a>
-<span class="sourceLineNo">109</span>  private final LeaseRecovery leaseRecovery;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>  private final Configuration conf;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  private final FileSystem fs;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>  private final Path logDir;<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>  private final AtomicReference&lt;Throwable&gt; syncException = new AtomicReference&lt;Throwable&gt;();<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  private final AtomicBoolean loading = new AtomicBoolean(true);<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  private final AtomicBoolean inSync = new AtomicBoolean(false);<a name="line.116"></a>
-<span class="sourceLineNo">117</span>  private final AtomicLong totalSynced = new AtomicLong(0);<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  private final AtomicLong lastRollTs = new AtomicLong(0);<a name="line.118"></a>
-<span class="sourceLineNo">119</span><a name="line.119"></a>
-<span class="sourceLineNo">120</span>  private LinkedTransferQueue&lt;ByteSlot&gt; slotsCache = null;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>  private Set&lt;ProcedureWALFile&gt; corruptedLogs = null;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  private FSDataOutputStream stream = null;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  private long flushLogId = 0;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  private int slotIndex = 0;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>  private Thread syncThread;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>  private ByteSlot[] slots;<a name="line.126"></a>
-<span class="sourceLineNo">127</span><a name="line.127"></a>
-<span class="sourceLineNo">128</span>  private int maxRetriesBeforeRoll;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  private int maxSyncFailureRoll;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  private int waitBeforeRoll;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  private int rollRetries;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>  private int periodicRollMsec;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  private long rollThreshold;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  private boolean useHsync;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>  private int syncWaitMsec;<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>  public WALProcedureStore(final Configuration conf, final FileSystem fs, final Path logDir,<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      final LeaseRecovery leaseRecovery) {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    this.fs = fs;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    this.conf = conf;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    this.logDir = logDir;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    this.leaseRecovery = leaseRecovery;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>  }<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span>  @Override<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  public void start(int numSlots) throws IOException {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    if (!setRunning(true)) {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      return;<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>    // Init buffer slots<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    loading.set(true);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    slots = new ByteSlot[numSlots];<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    slotsCache = new LinkedTransferQueue();<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    while (slotsCache.size() &lt; numSlots) {<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      slotsCache.offer(new ByteSlot());<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    }<a name="line.157"></a>
-<span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>    // Tunings<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    maxRetriesBeforeRoll =<a name="line.160"></a>
-<span class="sourceLineNo">161</span>      conf.getInt(MAX_RETRIES_BEFORE_ROLL_CONF_KEY, DEFAULT_MAX_RETRIES_BEFORE_ROLL);<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    maxSyncFailureRoll = conf.getInt(MAX_SYNC_FAILURE_ROLL_CONF_KEY, DEFAULT_MAX_SYNC_FAILURE_ROLL);<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    waitBeforeRoll = conf.getInt(WAIT_BEFORE_ROLL_CONF_KEY, DEFAULT_WAIT_BEFORE_ROLL);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    rollRetries = conf.getInt(ROLL_RETRIES_CONF_KEY, DEFAULT_ROLL_RETRIES);<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    rollThreshold = conf.getLong(ROLL_THRESHOLD_CONF_KEY, DEFAULT_ROLL_THRESHOLD);<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    periodicRollMsec = conf.getInt(PERIODIC_ROLL_CONF_KEY, DEFAULT_PERIODIC_ROLL);<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    syncWaitMsec = conf.getInt(SYNC_WAIT_MSEC_CONF_KEY, DEFAULT_SYNC_WAIT_MSEC);<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    useHsync = conf.getBoolean(USE_HSYNC_CONF_KEY, DEFAULT_USE_HSYNC);<a name="line.168"></a>
-<span class="sourceLineNo">169</span><a name="line.169"></a>
-<span class="sourceLineNo">170</span>    // Init sync thread<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    syncThread = new Thread("WALProcedureStoreSyncThread") {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      @Override<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      public void run() {<a name="line.173"></a>
-<span class="sourceLineNo">174</span>        try {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>          syncLoop();<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        } catch (Throwable e) {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>          LOG.error("Got an exception from the sync-loop", e);<a name="line.177"></a>
-<span class="sourceLineNo">178</span>          if (!isSyncAborted()) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>            sendAbortProcessSignal();<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>      }<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    };<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    syncThread.start();<a name="line.184"></a>
-<span class="sourceLineNo">185</span>  }<a name="line.185"></a>
-<span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>  @Override<a name="line.187"></a>
-<span class="sourceLineNo">188</span>  public void stop(boolean abort) {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    if (!setRunning(false)) {<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      return;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    }<a name="line.191"></a>
-<span class="sourceLineNo">192</span><a name="line.192"></a>
-<span class="sourceLineNo">193</span>    LOG.info("Stopping the WAL Procedure Store");<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    if (lock.tryLock()) {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      try {<a name="line.195"></a>
-<span class="sourceLineNo">196</span>        waitCond.signalAll();<a name="line.196"></a>
-<span class="sourceLineNo">197</span>        syncCond.signalAll();<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      } finally {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>        lock.unlock();<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 (!abort) {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      try {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>        syncThread.join();<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      } catch (InterruptedException e) {<a name="line.206"></a>
-<span class="sourceLineNo">207</span>        Thread.currentThread().interrupt();<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><a name="line.210"></a>
-<span class="sourceLineNo">211</span>    // Close the writer<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    closeStream();<a name="line.212"></a>
-<span class="sourceLineNo">213</span><a name="line.213"></a>
-<span class="sourceLineNo">214</span>    // Close the old logs<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    // they should be already closed, this is just in case the load fails<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    // and we call start() and then stop()<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    for (ProcedureWALFile log: logs) {<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      log.close();<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    }<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    logs.clear();<a name="line.220"></a>
-<span class="sourceLineNo">221</span>  }<a name="line.221"></a>
-<span class="sourceLineNo">222</span><a name="line.222"></a>
-<span class="sourceLineNo">223</span>  @Override<a name="line.223"></a>
-<span class="sourceLineNo">224</span>  public int getNumThreads() {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    return slots == null ? 0 : slots.length;<a name="line.225"></a>
-<span class="sourceLineNo">226</span>  }<a name="line.226"></a>
-<span class="sourceLineNo">227</span><a name="line.227"></a>
-<span class="sourceLineNo">228</span>  public ProcedureStoreTracker getStoreTracker() {<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    return storeTracker;<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>  public LinkedList&lt;ProcedureWALFile&gt; getActiveLogs() {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    return logs;<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>  public Set&lt;ProcedureWALFile&gt; getCorruptedLogs() {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    return corruptedLogs;<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>  @Override<a name="line.240"></a>
-<span class="sourceLineNo">241</span>  public void recoverLease() throws IOException {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    LOG.info("Starting WAL Procedure Store lease recovery");<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    FileStatus[] oldLogs = getLogFiles();<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    while (isRunning()) {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>      // Get Log-MaxID and recover lease on old logs<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      flushLogId = initOldLogs(oldLogs);<a name="line.246"></a>
-<span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>      // Create new state-log<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      if (!rollWriter(flushLogId + 1)) {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        // someone else has already created this log<a name="line.250"></a>
-<span class="sourceLineNo">251</span>        LOG.debug("someone else has already created log " + flushLogId);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>        continue;<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>      // We have the lease on the log<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      oldLogs = getLogFiles();<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      if (getMaxLogId(oldLogs) &gt; flushLogId) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>        if (LOG.isDebugEnabled()) {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>          LOG.debug("Someone else created new logs. Expected maxLogId &lt; " + flushLogId);<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        }<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        logs.getLast().removeFile();<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        continue;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      }<a name="line.263"></a>
-<span class="sourceLineNo">264</span><a name="line.264"></a>
-<span class="sourceLineNo">265</span>      LOG.info("Lease acquired for flushLogId: " + flushLogId);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      break;<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    }<a name="line.267"></a>
-<span class="sourceLineNo">268</span>  }<a name="line.268"></a>
-<span class="sourceLineNo">269</span><a name="line.269"></a>
-<span class="sourceLineNo">270</span>  @Override<a name="line.270"></a>
-<span class="sourceLineNo">271</span>  public void load(final ProcedureLoader loader) throws IOException {<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    if (logs.isEmpty()) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      throw new RuntimeException("recoverLease() must be called before loading data");<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    }<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span>    // Nothing to do, If we have only the current log.<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    if (logs.size() == 1) {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      if (LOG.isDebugEnabled()) {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>        LOG.debug("No state logs to replay.");<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      }<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      loader.setMaxProcId(0);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      loading.set(false);<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      return;<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    }<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>    // Load the old logs<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    final ArrayList&lt;ProcedureWALFile&gt; toRemove = new ArrayList&lt;ProcedureWALFile&gt;();<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    Iterator&lt;ProcedureWALFile&gt; it = logs.descendingIterator();<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    it.next(); // Skip the current log<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    try {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      ProcedureWALFormat.load(it, storeTracker, new ProcedureWALFormat.Loader() {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>        @Override<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        public void setMaxProcId(long maxProcId) {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>          loader.setMaxProcId(maxProcId);<a name="line.294"></a>
-<span class="sourceLineNo">295</span>        }<a name="line.295"></a>
-<span class="sourceLineNo">296</span><a name="line.296"></a>
-<span class="sourceLineNo">297</span>        @Override<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        public void load(ProcedureIterator procIter) throws IOException {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>          loader.load(procIter);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        }<a name="line.300"></a>
-<span class="sourceLineNo">301</span><a name="line.301"></a>
-<span class="sourceLineNo">302</span>        @Override<a name="line.302"></a>
-<span class="sourceLineNo">303</span>        public void handleCorrupted(ProcedureIterator procIter) throws IOException {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>          loader.handleCorrupted(procIter);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>        }<a name="line.305"></a>
-<span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>        @Override<a name="line.307"></a>
-<span class="sourceLineNo">308</span>        public void removeLog(ProcedureWALFile log) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>          toRemove.add(log);<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>        @Override<a name="line.312"></a>
-<span class="sourceLineNo">313</span>        public void markCorruptedWAL(ProcedureWALFile log, IOException e) {<a name="line.313"></a>
-<span class="sourceLineNo">314</span>          if (corruptedLogs == null) {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>            corruptedLogs = new HashSet&lt;ProcedureWALFile&gt;();<a name="line.315"></a>
-<span class="sourceLineNo">316</span>          }<a name="line.316"></a>
-<span class="sourceLineNo">317</span>          corruptedLogs.add(log);<a name="line.317"></a>
-<span class="sourceLineNo">318</span>          // TODO: sideline corrupted log<a name="line.318"></a>
-<span class="sourceLineNo">319</span>        }<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      });<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    } finally {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      if (!toRemove.isEmpty()) {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>        for (ProcedureWALFile log: toRemove) {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>          removeLogFile(log);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>        }<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      }<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      loading.set(false);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    }<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  }<a name="line.329"></a>
-<span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>  @Override<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  public void insert(final Procedure proc, final Procedure[] subprocs) {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    if (LOG.isTraceEnabled()) {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      LOG.trace("Insert " + proc + ", subproc=" + Arrays.toString(subprocs));<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    }<a name="line.335"></a>
-<span class="sourceLineNo">336</span><a name="line.336"></a>
-<span class="sourceLineNo">337</span>    ByteSlot slot = acquireSlot();<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    long logId = -1;<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    try {<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      // Serialize the insert<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      if (subprocs != null) {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>        ProcedureWALFormat.writeInsert(slot, proc, subprocs);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      } else {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>        assert !proc.hasParent();<a name="line.344"></a>
-<span class="sourceLineNo">345</span>        ProcedureWALFormat.writeInsert(slot, proc);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      }<a name="line.346"></a>
-<span class="sourceLineNo">347</span><a name="line.347"></a>
-<span class="sourceLineNo">348</span>      // Push the transaction data and wait until it is persisted<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      pushData(slot);<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    } catch (IOException e) {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      // We are not able to serialize the procedure.<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      // this is a code error, and we are not able to go on.<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      LOG.fatal("Unable to serialize one of the procedure: proc=" + proc +<a name="line.353"></a>
-<span class="sourceLineNo">354</span>                ", subprocs=" + Arrays.toString(subprocs), e);<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      throw new RuntimeException(e);<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    } finally {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      releaseSlot(slot);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    }<a name="line.358"></a>
-<span class="sourceLineNo">359</span><a name="line.359"></a>
-<span class="sourceLineNo">360</span>    // Update the store tracker<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    synchronized (storeTracker) {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      storeTracker.insert(proc, subprocs);<a name="line.362"></a>
-<span class="sourceLineNo">363</span>      if (logId == flushLogId) {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        checkAndTryRoll();<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      }<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    }<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  }<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>  @Override<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  public void update(final Procedure proc) {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    if (LOG.isTraceEnabled()) {<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      LOG.trace("Update " + proc);<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    }<a name="line.373"></a>
-<span class="sourceLineNo">374</span><a name="line.374"></a>
-<span class="sourceLineNo">375</span>    ByteSlot slot = acquireSlot();<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    long logId = -1;<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    try {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      // Serialize the update<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      ProcedureWALFormat.writeUpdate(slot, proc);<a name="line.379"></a>
-<span class="sourceLineNo">380</span><a name="line.380"></a>
-<span class="sourceLineNo">381</span>      // Push the transaction data and wait until it is persisted<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      logId = pushData(slot);<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    } catch (IOException e) {<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      // We are not able to serialize the procedure.<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      // this is a code error, and we are not able to go on.<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      LOG.fatal("Unable to serialize the procedure: " + proc, e);<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      throw new RuntimeException(e);<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    } finally {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      releaseSlot(slot);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    }<a name="line.390"></a>
-<span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span>    // Update the store tracker<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    boolean removeOldLogs = false;<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    synchronized (storeTracker) {<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      storeTracker.update(proc);<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      if (logId == flushLogId) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>        removeOldLogs = storeTracker.isUpdated();<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        checkAndTryRoll();<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><a name="line.401"></a>
-<span class="sourceLineNo">402</span>    if (removeOldLogs) {<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      setInactiveLogsMaxId(logId - 1);<a name="line.403"></a>
+<span class="sourceLineNo">103</span>  private final ReentrantLock lock = new ReentrantLock();<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  private final Condition waitCond = lock.newCondition();<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  private final Condition slotCond = lock.newCondition();<a name="line.105"></a>
+<span class="sourceLineNo">106</span>  private final Condition syncCond = lock.newCondition();<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>  private final LeaseRecovery leaseRecovery;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>  private final Configuration conf;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  private final FileSystem fs;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  private final Path logDir;<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>  private final AtomicReference&lt;Throwable&gt; syncException = new AtomicReference&lt;Throwable&gt;();<a name="line.113"></a>
+<span class="sourceLineNo">114</span>  private final AtomicBoolean loading = new AtomicBoolean(true);<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  private final AtomicBoolean inSync = new AtomicBoolean(false);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  private final AtomicLong totalSynced = new AtomicLong(0);<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  private final AtomicLong lastRollTs = new AtomicLong(0);<a name="line.117"></a>
+<span class="sourceLineNo">118</span><a name="line.118"></a>
+<span class="sourceLineNo">119</span>  private LinkedTransferQueue&lt;ByteSlot&gt; slotsCache = null;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  private Set&lt;ProcedureWALFile&gt; corruptedLogs = null;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>  private FSDataOutputStream stream = null;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>  private long flushLogId = 0;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  private int slotIndex = 0;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  private Thread syncThread;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  private ByteSlot[] slots;<a name="line.125"></a>
+<span class="sourceLineNo">126</span><a name="line.126"></a>
+<span class="sourceLineNo">127</span>  private int maxRetriesBeforeRoll;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  private int maxSyncFailureRoll;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  private int waitBeforeRoll;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  private int rollRetries;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>  private int periodicRollMsec;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  private long rollThreshold;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  private boolean useHsync;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  private int syncWaitMsec;<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>  public WALProcedureStore(final Configuration conf, final FileSystem fs, final Path logDir,<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      final LeaseRecovery leaseRecovery) {<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    this.fs = fs;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    this.conf = conf;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    this.logDir = logDir;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    this.leaseRecovery = leaseRecovery;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  }<a name="line.142"></a>
+<span class="sourceLineNo">143</span><a name="line.143"></a>
+<span class="sourceLineNo">144</span>  @Override<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  public void start(int numSlots) throws IOException {<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    if (!setRunning(true)) {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      return;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    }<a name="line.148"></a>
+<span class="sourceLineNo">149</span><a name="line.149"></a>
+<span class="sourceLineNo">150</span>    // Init buffer slots<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    loading.set(true);<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    slots = new ByteSlot[numSlots];<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    slotsCache = new LinkedTransferQueue();<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    while (slotsCache.size() &lt; numSlots) {<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      slotsCache.offer(new ByteSlot());<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>    // Tunings<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    maxRetriesBeforeRoll =<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      conf.getInt(MAX_RETRIES_BEFORE_ROLL_CONF_KEY, DEFAULT_MAX_RETRIES_BEFORE_ROLL);<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    maxSyncFailureRoll = conf.getInt(MAX_SYNC_FAILURE_ROLL_CONF_KEY, DEFAULT_MAX_SYNC_FAILURE_ROLL);<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    waitBeforeRoll = conf.getInt(WAIT_BEFORE_ROLL_CONF_KEY, DEFAULT_WAIT_BEFORE_ROLL);<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    rollRetries = conf.getInt(ROLL_RETRIES_CONF_KEY, DEFAULT_ROLL_RETRIES);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    rollThreshold = conf.getLong(ROLL_THRESHOLD_CONF_KEY, DEFAULT_ROLL_THRESHOLD);<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    periodicRollMsec = conf.getInt(PERIODIC_ROLL_CONF_KEY, DEFAULT_PERIODIC_ROLL);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    syncWaitMsec = conf.getInt(SYNC_WAIT_MSEC_CONF_KEY, DEFAULT_SYNC_WAIT_MSEC);<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    useHsync = conf.getBoolean(USE_HSYNC_CONF_KEY, DEFAULT_USE_HSYNC);<a name="line.167"></a>
+<span class="sourceLineNo">168</span><a name="line.168"></a>
+<span class="sourceLineNo">169</span>    // Init sync thread<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    syncThread = new Thread("WALProcedureStoreSyncThread") {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      @Override<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      public void run() {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        try {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>          syncLoop();<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        } catch (Throwable e) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>          LOG.error("Got an exception from the sync-loop", e);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>          if (!isSyncAborted()) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>            sendAbortProcessSignal();<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>    };<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    syncThread.start();<a name="line.183"></a>
+<span class="sourceLineNo">184</span>  }<a name="line.184"></a>
+<span class="sourceLineNo">185</span><a name="line.185"></a>
+<span class="sourceLineNo">186</span>  @Override<a name="line.186"></a>
+<span class="sourceLineNo">187</span>  public void stop(boolean abort) {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    if (!setRunning(false)) {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      return;<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>    LOG.info("Stopping the WAL Procedure Store");<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    sendStopSignal();<a name="line.193"></a>
+<span class="sourceLineNo">194</span><a name="line.194"></a>
+<span class="sourceLineNo">195</span>    if (!abort) {<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      try {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>        while (syncThread.isAlive()) {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>          sendStopSignal();<a name="line.198"></a>
+<span class="sourceLineNo">199</span>          syncThread.join(250);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>        }<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      } catch (InterruptedException e) {<a name="line.201"></a>
+<span class="sourceLineNo">202</span>        LOG.warn("join interrupted", e);<a name="line.202"></a>
+<span class="sourceLineNo">203</span>        Thread.currentThread().interrupt();<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      }<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    }<a name="line.205"></a>
+<span class="sourceLineNo">206</span><a name="line.206"></a>
+<span class="sourceLineNo">207</span>    // Close the writer<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    closeStream();<a name="line.208"></a>
+<span class="sourceLineNo">209</span><a name="line.209"></a>
+<span class="sourceLineNo">210</span>    // Close the old logs<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    // they should be already closed, this is just in case the load fails<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    // and we call start() and then stop()<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    for (ProcedureWALFile log: logs) {<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      log.close();<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    }<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    logs.clear();<a name="line.216"></a>
+<span class="sourceLineNo">217</span>  }<a name="line.217"></a>
+<span class="sourceLineNo">218</span><a name="line.218"></a>
+<span class="sourceLineNo">219</span>  private void sendStopSignal() {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    if (lock.tryLock()) {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      try {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>        waitCond.signalAll();<a name="line.222"></a>
+<span class="sourceLineNo">223</span>        syncCond.signalAll();<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      } finally {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>        lock.unlock();<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      }<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    }<a name="line.227"></a>
+<span class="sourceLineNo">228</span>  }<a name="line.228"></a>
+<span class="sourceLineNo">229</span><a name="line.229"></a>
+<span class="sourceLineNo">230</span>  @Override<a name="line.230"></a>
+<span class="sourceLineNo">231</span>  public int getNumThreads() {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    return slots == null ? 0 : slots.length;<a name="line.232"></a>
+<span class="sourceLineNo">233</span>  }<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span>  public ProcedureStoreTracker getStoreTracker() {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    return storeTracker;<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  }<a name="line.237"></a>
+<span class="sourceLineNo">238</span><a name="line.238"></a>
+<span class="sourceLineNo">239</span>  public LinkedList&lt;ProcedureWALFile&gt; getActiveLogs() {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    return logs;<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>  public Set&lt;ProcedureWALFile&gt; getCorruptedLogs() {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    return corruptedLogs;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>  }<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>  @Override<a name="line.247"></a>
+<span class="sourceLineNo">248</span>  public void recoverLease() throws IOException {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    lock.lock();<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    try {<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      LOG.info("Starting WAL Procedure Store lease recovery");<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      FileStatus[] oldLogs = getLogFiles();<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      while (isRunning()) {<a name="line.253"></a>
+<span class="sourceLineNo">254</span>        // Get Log-MaxID and recover lease on old logs<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        flushLogId = initOldLogs(oldLogs);<a name="line.255"></a>
+<span class="sourceLineNo">256</span><a name="line.256"></a>
+<span class="sourceLineNo">257</span>        // Create new state-log<a name="line.257"></a>
+<span class="sourceLineNo">258</span>        if (!rollWriter(flushLogId + 1)) {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          // someone else has already created this log<a name="line.259"></a>
+<span class="sourceLineNo">260</span>          LOG.debug("someone else has already created log " + flushLogId);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>          continue;<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        }<a name="line.262"></a>
+<span class="sourceLineNo">263</span><a name="line.263"></a>
+<span class="sourceLineNo">264</span>        // We have the lease on the log<a name="line.264"></a>
+<span class="sourceLineNo">265</span>        oldLogs = getLogFiles();<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        if (getMaxLogId(oldLogs) &gt; flushLogId) {<a name="line.266"></a>
+<span class="sourceLineNo">267</span>          if (LOG.isDebugEnabled()) {<a name="line.267"></a>
+<span class="sourceLineNo">268</span>            LOG.debug("Someone else created new logs. Expected maxLogId &lt; " + flushLogId);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>          }<a name="line.269"></a>
+<span class="sourceLineNo">270</span>          logs.getLast().removeFile();<a name="line.270"></a>
+<span class="sourceLineNo">271</span>          continue;<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        }<a name="line.272"></a>
+<span class="sourceLineNo">273</span><a name="line.273"></a>
+<span class="sourceLineNo">274</span>        LOG.info("Lease acquired for flushLogId: " + flushLogId);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>        break;<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      }<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    } finally {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      lock.unlock();<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    }<a name="line.279"></a>
+<span class="sourceLineNo">280</span>  }<a name="line.280"></a>
+<span class="sourceLineNo">281</span><a name="line.281"></a>
+<span class="sourceLineNo">282</span>  @Override<a name="line.282"></a>
+<span class="sourceLineNo">283</span>  public void load(final ProcedureLoader loader) throws IOException {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    if (logs.isEmpty()) {<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      throw new RuntimeException("recoverLease() must be called before loading data");<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    }<a name="line.286"></a>
+<span class="sourceLineNo">287</span><a name="line.287"></a>
+<span class="sourceLineNo">288</span>    // Nothing to do, If we have only the current log.<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    if (logs.size() == 1) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      if (LOG.isDebugEnabled()) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        LOG.debug("No state logs to replay.");<a name="line.291"></a>
+<span class="sourceLineNo">292</span>      }<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      loader.setMaxProcId(0);<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      loading.set(false);<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      return;<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    }<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>    // Load the old logs<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    final ArrayList&lt;ProcedureWALFile&gt; toRemove = new ArrayList&lt;ProcedureWALFile&gt;();<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    Iterator&lt;ProcedureWALFile&gt; it = logs.descendingIterator();<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    it.next(); // Skip the current log<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    try {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      ProcedureWALFormat.load(it, storeTracker, new ProcedureWALFormat.Loader() {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>        @Override<a name="line.304"></a>
+<span class="sourceLineNo">305</span>        public void setMaxProcId(long maxProcId) {<a name="line.305"></a>
+<span class="sourceLineNo">306</span>          loader.setMaxProcId(maxProcId);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>        }<a name="line.307"></a>
+<span class="sourceLineNo">308</span><a name="line.308"></a>
+<span class="sourceLineNo">309</span>        @Override<a name="line.309"></a>
+<span class="sourceLineNo">310</span>        public void load(ProcedureIterator procIter) throws IOException {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>          loader.load(procIter);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>        }<a name="line.312"></a>
+<span class="sourceLineNo">313</span><a name="line.313"></a>
+<span class="sourceLineNo">314</span>        @Override<a name="line.314"></a>
+<span class="sourceLineNo">315</span>        public void handleCorrupted(ProcedureIterator procIter) throws IOException {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>          loader.handleCorrupted(procIter);<a name="line.316"></a>
+<span class="sourceLineNo">317</span>        }<a name="line.317"></a>
+<span class="sourceLineNo">318</span><a name="line.318"></a>
+<span class="sourceLineNo">319</span>        @Override<a name="line.319"></a>
+<span class="sourceLineNo">320</span>        public void removeLog(ProcedureWALFile log) {<a name="line.320"></a>
+<span class="sourceLineNo">321</span>          toRemove.add(log);<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>        @Override<a name="line.324"></a>
+<span class="sourceLineNo">325</span>        public void markCorruptedWAL(ProcedureWALFile log, IOException e) {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>          if (corruptedLogs == null) {<a name="line.326"></a>
+<span class="sourceLineNo">327</span>            corruptedLogs = new HashSet&lt;ProcedureWALFile&gt;();<a name="line.327"></a>
+<span class="sourceLineNo">328</span>          }<a name="line.328"></a>
+<span class="sourceLineNo">329</span>          corruptedLogs.add(log);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>          // TODO: sideline corrupted log<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        }<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      });<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    } finally {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      if (!toRemove.isEmpty()) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>        for (ProcedureWALFile log: toRemove) {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>          removeLogFile(log);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>        }<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      }<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      loading.set(false);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    }<a name="line.340"></a>
+<span class="sourceLineNo">341</span>  }<a name="line.341"></a>
+<span class="sourceLineNo">342</span><a name="line.342"></a>
+<span class="sourceLineNo">343</span>  @Override<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  public void insert(final Procedure proc, final Procedure[] subprocs) {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    if (LOG.isTraceEnabled()) {<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      LOG.trace("Insert " + proc + ", subproc=" + Arrays.toString(subprocs));<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    }<a name="line.347"></a>
+<span class="sourceLineNo">348</span><a name="line.348"></a>
+<span class="sourceLineNo">349</span>    ByteSlot slot = acquireSlot();<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    try {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      // Serialize the insert<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      long[] subProcIds = null;<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      if (subprocs != null) {<a name="line.353"></a>
+<span class="sourceLineNo">354</span>        ProcedureWALFormat.writeInsert(slot, proc, subprocs);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>        subProcIds = new long[subprocs.length];<a name="line.355"></a>
+<span class="sourceLineNo">356</span>        for (int i = 0; i &lt; subprocs.length; ++i) {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>          subProcIds[i] = subprocs[i].getProcId();<a name="line.357"></a>
+<span class="sourceLineNo">358</span>        }<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      } else {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>        assert !proc.hasParent();<a name="line.360"></a>
+<span class="sourceLineNo">361</span>        ProcedureWALFormat.writeInsert(slot, proc);<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      }<a name="line.362"></a>
+<span class="sourceLineNo">363</span><a name="line.363"></a>
+<span class="sourceLineNo">364</span>      // Push the transaction data and wait until it is persisted<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      pushData(PushType.INSERT, slot, proc.getProcId(), subProcIds);<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    } catch (IOException e) {<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      // We are not able to serialize the procedure.<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      // this is a code error, and we are not able to go on.<a name="line.368"></a>
+<span class="sourceLineNo">369</span>      LOG.fatal("Unable to serialize one of the procedure: proc=" + proc +<a name="line.369"></a>
+<span class="sourceLineNo">370</span>                ", subprocs=" + Arrays.toString(subprocs), e);<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      throw new RuntimeException(e);<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    } finally {<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      releaseSlot(slot);<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    }<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  }<a name="line.375"></a>
+<span class="sourceLineNo">376</span><a name="line.376"></a>
+<span class="sourceLineNo">377</span>  @Override<a name="line.377"></a>
+<span class="sourceLineNo">378</span>  public void update(final Procedure proc) {<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    if (LOG.isTraceEnabled()) {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>      LOG.trace("Update " + proc);<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    }<a name="line.381"></a>
+<span class="sourceLineNo">382</span><a name="line.382"></a>
+<span class="sourceLineNo">383</span>    ByteSlot slot = acquireSlot();<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    try {<a name="line.384"></a>
+<span class="sourceLineNo">385</span>      // Serialize the update<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      ProcedureWALFormat.writeUpdate(slot, proc);<a name="line.386"></a>
+<span class="sourceLineNo">387</span><a name="line.387"></a>
+<span class="sourceLineNo">388</span>      // Push the transaction data and wait until it is persisted<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      pushData(PushType.UPDATE, slot, proc.getProcId(), null);<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    } catch (IOException e) {<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      // We are not able to serialize the procedure.<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      // this is a code error, and we are not able to go on.<a name="line.392"></a>
+<span class="sourceLineNo">393</span>      LOG.fatal("Unable to serialize the procedure: " + proc, e);<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      throw new RuntimeException(e);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    } finally {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      releaseSlot(slot);<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    }<a name="line.397"></a>
+<span class="sourceLineNo">398</span>  }<a name="line.398"></a>
+<span class="sourceLineNo">399</span><a name="line.399"></a>
+<span class="sourceLineNo">400</span>  @Override<a name="line.400"></a>
+<span class="sourceLineNo">401</span>  public void delete(final long procId) {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    if (LOG.isTraceEnabled()) {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      LOG.trace("Delete " + procId);<a name="line.403"></a>
 <span class="sourceLineNo">404</span>    }<a name="line.404"></a>
-<span class="sourceLineNo">405</span>  }<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>  @Override<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  public void delete(final long procId) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    if (LOG.isTraceEnabled()) {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      LOG.trace("Delete " + procId);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    }<a name="line.411"></a>
-<span class="sourceLineNo">412</span><a name="line.412"></a>
-<span class="sourceLineNo">413</span>    ByteSlot slot = acquireSlot();<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    long logId = -1;<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    try {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>      // Serialize the delete<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      ProcedureWALFormat.writeDelete(slot, procId);<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>      // Push the transaction data and wait until it is persisted<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      logId = pushData(slot);<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    } catch (IOException e) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      // We are not able to serialize the procedure.<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      // this is a code error, and we are not able to go on.<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      LOG.fatal("Unable to serialize the procedure: " + procId, e);<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      throw new RuntimeException(e);<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    } finally {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      releaseSlot(slot);<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
-<span class="sourceLineNo">429</span><a name="line.429"></a>
-<span class="sourceLineNo">430</span>    boolean removeOldLogs = false;<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    synchronized (storeTracker) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      storeTracker.delete(procId);<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      if (logId == flushLogId) {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>        if (storeTracker.isEmpty() || storeTracker.isUpdated()) {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>          removeOldLogs = checkAndTryRoll();<a name="line.435"></a>
-<span class="sourceLineNo">436</span>        } else {<a name="line.436"></a>
-<span class="sourceLineNo">437</span>          checkAndTryRoll();<a name="line.437"></a>
-<span class="sourceLineNo">438</span>        }<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      }<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>    if (removeOldLogs) {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      setInactiveLogsMaxId(logId);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    }<a name="line.444"></a>
-<span class="sourceLineNo">445</span>  }<a name="line.445"></a>
-<span class="sourceLineNo">446</span><a name="line.446"></a>
-<span class="sourceLineNo">447</span>  private ByteSlot acquireSlot() {<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    ByteSlot slot = slotsCache.poll();<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    return slot != null ? slot : new ByteSlot();<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 void releaseSlot(final ByteSlot slot) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    slot.reset();<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    slotsCache.offer(slot);<a name="line.454"></a>
-<span class="sourceLineNo">455</span>  }<a name="line.455"></a>
-<span class="sourceLineNo">456</span><a name="line.456"></a>
-<span class="sourceLineNo">457</span>  private long pushData(final ByteSlot slot) {<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    if (!isRunning()) {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      throw new RuntimeException("the store must be running before inserting data");<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    }<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    if (logs.isEmpty()) {<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      throw new RuntimeException("recoverLease() must be called before inserting data");<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    }<a name="line.463"></a>
-<span class="sourceLineNo">464</span><a name="line.464"></a>
-<span class="sourceLineNo">465</span>    long logId = -1;<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    lock.lock();<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    try {<a name="line.467"></a>
-<span class="sourceLineNo">468</span>      // Wait for the sync to be completed<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      while (true) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>        if (!isRunning()) {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>          throw new RuntimeException("store no longer running");<a name="line.471"></a>
-<span class="sourceLineNo">472</span>        } else if (isSyncAborted()) {<a name="line.472"></a>
-<span class="sourceLineNo">473</span>          throw new RuntimeException("sync aborted", syncException.get());<a name="line.473"></a>
-<span class="sourceLineNo">474</span>        } else if (inSync.get()) {<a name="line.474"></a>
-<span class="sourceLineNo">475</span>          syncCond.await();<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        } else if (slotIndex == slots.length) {<a name="line.476"></a>
-<span class="sourceLineNo">477</span>          slotCond.signal();<a name="line.477"></a>
-<span class="sourceLineNo">478</span>          syncCond.await();<a name="line.478"></a>
-<span class="sourceLineNo">479</span>        } else {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>          break;<a name="line.480"></a>
-<span class="sourceLineNo">481</span>        }<a name="line.481"></a>
-<span class="sourceLineNo">482</span>      }<a name="line.482"></a>
-<span class="sourceLineNo">483</span><a name="line.483"></a>
-<span class="sourceLineNo">484</span>      slots[slotIndex++] = slot;<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      logId = flushLogId;<a name="line.485"></a>
-<span class="sourceLineNo">486</span><a name="line.486"></a>
-<span class="sourceLineNo">487</span>      // Notify that there is new data<a name="line.487"></a>
-<span class="sourceLineNo">488</span>      if (slotIndex == 1) {<a name="line.488"></a>
-<span class="sourceLineNo">489</span>        waitCond.signal();<a name="line.489"></a>
-<span class="sourceLineNo">490</span>      }<a name="line.490"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>    ByteSlot slot = acquireSlot();<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    try {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      // Serialize the delete<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      ProcedureWALFormat.writeDelete(slot, procId);<a name="line.409"></a>
+<span class="sourceLineNo">410</span><a name="line.410"></a>
+<span class="sourceLineNo">411</span>      // Push the transaction data and wait until it is persisted<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      pushData(PushType.DELETE, slot, procId, null);<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    } catch (IOException e) {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      // We are not able to serialize the procedure.<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      // this is a code error, and we are not able to go on.<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      LOG.fatal("Unable to serialize the procedure: " + procId, e);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>      throw new RuntimeException(e);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    } finally {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      releaseSlot(slot);<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
+<span class="sourceLineNo">421</span>  }<a name="line.421"></a>
+<span class="sourceLineNo">422</span><a name="line.422"></a>
+<span class="sourceLineNo">423</span>  private ByteSlot acquireSlot() {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    ByteSlot slot = slotsCache.poll();<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    return slot != null ? slot : new ByteSlot();<a name="line.425"></a>
+<span class="sourceLineNo">426</span>  }<a name="line.426"></a>
+<span class="sourceLineNo">427</span><a name="line.427"></a>
+<span class="sourceLineNo">428</span>  private void releaseSlot(final ByteSlot slot) {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    slot.reset();<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    slotsCache.offer(slot);<a name="line.430"></a>
+<span class="sourceLineNo">431</span>  }<a name="line.431"></a>
+<span class="sourceLineNo">432</span><a name="line.432"></a>
+<span class="sourceLineNo">433</span>  private enum PushType { INSERT, UPDATE, DELETE };<a name="line.433"></a>
+<span class="sourceLineNo">434</span><a name="line.434"></a>
+<span class="sourceLineNo">435</span>  private long pushData(final PushType type, final ByteSlot slot,<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      final long procId, final long[] subProcIds) {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    if (!isRunning()) {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      throw new RuntimeException("the store must be running before inserting data");<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    }<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    if (logs.isEmpty()) {<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      throw new RuntimeException("recoverLease() must be called before inserting data");<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    }<a name="line.442"></a>
+<span class="sourceLineNo">443</span><a name="line.443"></a>
+<span class="sourceLineNo">444</span>    long logId = -1;<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    lock.lock();<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    try {<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      // Wait for the sync to be completed<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      while (true) {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>        if (!isRunning()) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>          throw new RuntimeException("store no longer running");<a name="line.450"></a>
+<span class="sourceLineNo">451</span>        } else if (isSyncAborted()) {<a name="line.451"></a>
+<span class="sourceLineNo">452</span>          throw new RuntimeException("sync aborted", syncException.get());<a name="line.452"></a>
+<span class="sourceLineNo">453</span>        } else if (inSync.get()) {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>          syncCond.await();<a name="line.454"></a>
+<span class="sourceLineNo">455</span>        } else if (slotIndex == slots.length) {<a name="line.455"></a>
+<span class="sourceLineNo">456</span>          slotCond.signal();<a name="line.456"></a>
+<span class="sourceLineNo">457</span>          syncCond.await();<a name="line.457"></a>
+<span class="sourceLineNo">458</span>        } else {<a name="line.458"></a>
+<span class="sourceLineNo">459</span>          break;<a name="line.459"></a>
+<span class="sourceLineNo">460</span>        }<a name="line.460"></a>
+<span class="sourceLineNo">461</span>      }<a name="line.461"></a>
+<span class="sourceLineNo">462</span><a name="line.462"></a>
+<span class="sourceLineNo">463</span>      updateStoreTracker(type, procId, subProcIds);<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      slots[slotIndex++] = slot;<a name="line.464"></a>
+<span class="sourceLineNo">465</span>      logId = flushLogId;<a name="line.465"></a>
+<span class="sourceLineNo">466</span><a name="line.466"></a>
+<span class="sourceLineNo">467</span>      // Notify that there is new data<a name="line.467"></a>
+<span class="sourceLineNo">468</span>      if (slotIndex == 1) {<a name="line.468"></a>
+<span class="sourceLineNo">469</span>        waitCond.signal();<a name="line.469"></a>
+<span class="sourceLineNo">470</span>      }<a name="line.470"></a>
+<span class="sourceLineNo">471</span><a name="line.471"></a>
+<span class="sourceLineNo">472</span>      // Notify that the slots are full<a name="line.472"></a>
+<span class="sourceLineNo">473</span>      if (slotIndex == slots.length) {<a name="line.473"></a>
+<span class="sourceLineNo">474</span>        waitCond.signal();<a name="line.474"></a>
+<span class="sourceLineNo">475</span>        slotCond.signal();<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>      syncCond.await();<a name="line.478"></a>
+<span class="sourceLineNo">479</span>    } catch (InterruptedException e) {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>      Thread.currentThread().interrupt();<a name="line.480"></a>
+<span class="sourceLineNo">481</span>      sendAbortProcessSignal();<a name="line.481"></a>
+<span class="sourceLineNo">482</span>      throw new RuntimeException(e);<a name="line.482"></a>
+<span class="sourceLineNo">483</span>    } finally {<a name="line.483"></a>
+<span class="sourceLineNo">484</span>      lock.unlock();<a name="line.484"></a>
+<span class="sourceLineNo">485</span>      if (isSyncAborted()) {<a name="line.485"></a>
+<span class="sourceLineNo">486</span>        throw new RuntimeException("sync aborted", syncException.get());<a name="line.486"></a>
+<span class="sourceLineNo">487</span>      }<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    }<a name="line.488"></a>
+<span class="sourceLineNo">489</span>    return logId;<a name="line.489"></a>
+<span class="sourceLineNo">490</span>  }<a name="line.490"></a>
 <span class="sourceLineNo">491</span><a name="line.491"></a>
-<span class="sourceLineNo">492</span>      // Notify that the slots are full<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      if (slotIndex == slots.length) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>        waitCond.signal();<a name="line.494"></a>
-<span class="sourceLineNo">495</span>        slotCond.signal();<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>      syncCond.await();<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    } catch (InterruptedException e) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      Thread.currentThread().interrupt();<a name="line.500"></a>
-<span class="sourceLineNo">501</span>      sendAbortProcessSignal();<a name="line.501"></a>
-<span class="sourceLineNo">502</span>      throw new RuntimeException(e);<a name="line.502"></a>
-<span class="sourceLineNo">503</span>    } finally {<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      lock.unlock();<a name="line.504"></a>
-<span class="sourceLineNo">505</span>      if (isSyncAborted()) {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>        throw new RuntimeException("sync aborted", syncException.get());<a name="line.506"></a>
-<span class="sourceLineNo">507</span>      }<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    }<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    return logId;<a name="line.509"></a>
-<span class="sourceLineNo">510</span>  }<a name="line.510"></a>
-<span class="sourceLineNo">511</span><a name="line.511"></a>
-<span class="sourceLineNo">512</span>  private boolean isSyncAborted() {<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    return syncException.get() != null;<a name="line.513"></a>
-<span class="sourceLineNo">514</span>  }<a name="line.514"></a>
-<span class="sourceLineNo">515</span><a name="line.515"></a>
-<span class="sourceLineNo">516</span>  protected void periodicRoll() throws IOException {<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    long logId;<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    boolean removeOldLogs;<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    synchronized (storeTracker) {<a name="line.519"></a>
-<span class="sourceLineNo">520</span>      logId = flushLogId;<a name="line.520"></a>
-<span class="sourceLineNo">521</span>      removeOldLogs = storeTracker.isEmpty();<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    }<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    if (checkAndTryRoll() &amp;&amp; removeOldLogs) {<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      setInactiveLogsMaxId(logId);<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    }<a name="line.525"></a>
-<span class="sourceLineNo">526</span>  }<a name="line.526"></a>
-<span class="sourceLineNo">527</span><a name="line.527"></a>
-<span class="sourceLineNo">528</span>  private void syncLoop() throws Throwable {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>    inSync.set(false);<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    lock.lock();<a name="line.530"></a>
-<span class="sourceLineNo">531</span>    try {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>      while (isRunning()) {<a name="line.532"></a>
-<span class="sourceLineNo">533</span>        try {<a name="line.533"></a>
-<span class="sourceLineNo">534</span>          // Wait until new data is available<a name="line.534"></a>
-<span class="sourceLineNo">535</span>          if (slotIndex == 0) {<a name="line.535"></a>
-<span class="sourceLineNo">536</span>            if (!loading.get()) {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>              removeInactiveLogs();<a name="line.537"></a>
-<span class="sourceLineNo">538</span>            }<a name="line.538"></a>
-<span class="sourceLineNo">539</span><a name="line.539"></a>
-<span class="sourceLineNo">540</span>            if (LOG.isTraceEnabled()) {<a name="line.540"></a>
-<span class="sourceLineNo">541</span>              float rollTsSec = getMillisFromLastRoll() / 1000.0f;<a name="line.541"></a>
-<span class="sourceLineNo">542</span>              LOG.trace(String.format("Waiting for data. flushed=%s (%s/sec)",<a name="line.542"></a>
-<span class="sourceLineNo">543</span>                        StringUtils.humanSize(totalSynced.get()),<a name="line.543"></a>
-<span class="sourceLineNo">544</span>                        StringUtils.humanSize(totalSynced.get() / rollTsSec)));<a name="line.544"></a>
-<span class="sourceLineNo">545</span>            }<a name="line.545"></a>
-<span class="sourceLineNo">546</span><a name="line.546"></a>
-<span class="sourceLineNo">547</span>            waitCond.await(getMillisToNextPeriodicRoll(), TimeUnit.MILLISECONDS);<a name="line.547"></a>
-<span class="sourceLineNo">548</span>            if (slotIndex == 0) {<a name="line.548"></a>
-<span class="sourceLineNo">549</span>              // no data.. probably a stop() or a periodic roll<a name="line.549"></a>
-<span class="sourceLineNo">550</span>              periodicRoll();<a name="line.550"></a>
-<span class="sourceLineNo">551</span>              continue;<a name="line.551"></a>
-<span class="sourceLineNo">552</span>            }<a name="line.552"></a>
-<span class="sourceLineNo">553</span>          }<a name="line.553"></a>
-<span class="sourceLineNo">554</span><a name="line.554"></a>
-<span class="sourceLineNo">555</span>          // Wait SYNC_WAIT_MSEC or the signal of "slots full" before flushing<a name="line.555"></a>
-<span class="sourceLineNo">556</span>          long syncWaitSt = System.currentTimeMillis();<a name="line.556"></a>
-<span class="sourceLineNo">557</span>          if (slotIndex != slots.length) {<a name="line.557"></a>
-<span class="sourceLineNo">558</span>            slotCond.await(syncWaitMsec, TimeUnit.MILLISECONDS);<a name="line.558"></a>
-<span class="sourceLineNo">559</span>          }<a name="line.559"></a>
-<span class="sourceLineNo">560</span>          long syncWaitMs = System.currentTimeMillis() - syncWaitSt;<a name="line.560"></a>
-<span class="sourceLineNo">561</span>          if (LOG.isTraceEnabled() &amp;&amp; (syncWaitMs &gt; 10 || slotIndex &lt; slots.length)) {<a name="line.561"></a>
-<span class="sourceLineNo">562</span>            float rollSec = getMillisFromLastRoll() / 1000.0f;<a name="line.562"></a>
-<span class="sourceLineNo">563</span>            LOG.trace(String.format("Sync wait %s, slotIndex=%s , totalSynced=%s/sec",<a name="line.563"></a>
-<span class="sourceLineNo">564</span>                      StringUtils.humanTimeDiff(syncWaitMs), slotIndex,<a name="line.564"></a>
-<span class="sourceLineNo">565</span>                      StringUtils.humanSize(totalSynced.get()),<a name="line.565"></a>
-<span class="sourceLineNo">566</span>                      StringUtils.humanSize(totalSynced.get() / rollSec)));<a name="line.566"></a>
-<span class="sourceLineNo">567</span>          }<a name="line.567"></a>
-<span class="sourceLineNo">568</span><a name="line.568"></a>
-<span class="sourceLineNo">569</span><a name="line.569"></a>
-<span class="sourceLineNo">570</span>          inSync.set(true);<a name="line.570"></a>
-<span class="sourceLineNo">571</span>          totalSynced.addAndGet(syncSlots());<a name="line.571"></a>
-<span class="sourceLineNo">572</span>          slotIndex = 0;<a name="line.572"></a>
-<span class="sourceLineNo">573</span>          inSync.set(false);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>        } catch (InterruptedException e) {<a name="line.574"></a>
-<span class="sourceLineNo">575</span>          Thread.currentThread().interrupt();<a name="line.575"></a>
-<span class="sourceLineNo">576</span>          sendAbortProcessSignal();<a name="line.576"></a>
-<span class="sourceLineNo">577</span>          syncException.compareAndSet(null, e);<a name="line.577"></a>
-<span class="sourceLineNo">578</span>          throw e;<a name="line.578"></a>
-<span class="sourceLineNo">579</span>        } catch (Throwable t) {<a name="line.579"></a>
-<span class="sourceLineNo">580</span>          syncException.compareAndSet(null, t);<a name="line.580"></a>
-<span class="sourceLineNo">581</span>          throw t;<a name="line.581"></a>
-<span class="sourceLineNo">582</span>        } finally {<a name="line.582"></a>
-<span class="sourceLineNo">583</span>          syncCond.signalAll();<a name="line.583"></a>
-<span class="sourceLineNo">584</span>        }<a name="line.584"></a>
-<span class="sourceLineNo">585</span>      }<a name="line.585"></a>
-<span class="sourceLineNo">586</span>    } finally {<a name="line.586"></a>
-<span class="sourceLineNo">587</span>      lock.unlock();<a name="line.587"></a>
-<span class="sourceLineNo">588</span>    }<a name="line.588"></a>
-<span class="sourceLineNo">589</span>  }<a name="line.589"></a>
-<span class="sourceLineNo">590</span><a name="line.590"></a>
-<span class="sourceLineNo">591</span>  private long syncSlots() throws Throwable {<a name="line.591"></a>
-<span class="sourceLineNo">592</span>    int retry = 0;<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    int logRolled = 0;<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    long totalSynced = 0;<a name="line.594"></a>
-<span class="sourceLineNo">595</span>    do {<a name="line.595"></a>
-<span class="sourceLineNo">596</span>      try {<a name="line.596"></a>
-<span class="sourceLineNo">597</span>        totalSynced = syncSlots(stream, slots, 0, slotIndex);<a name="line.597"></a>
-<span class="sourceLineNo">598</span>        break;<a name="line.598"></a>
-<span class="sourceLineNo">599</span>      } catch (Throwable e) {<a name="line.599"></a>
-<span class="sourceLineNo">600</span>        if (++retry &gt;= maxRetriesBeforeRoll) {<a name="line.600"></a>
-<span class="sourceLineNo">601</span>          if (logRolled &gt;= maxSyncFailureRoll) {<a name="line.601"></a>
-<span class="sourceLineNo">602</span>            LOG.error("Sync slots after log roll failed, abort.", e);<a name="line.602"></a>
-<span class="sourceLineNo">603</span>            sendAbortProcessSignal();<a name="line.603"></a>
-<span class="sourceLineNo">604</span>            throw e;<a name="line.604"></a>
-<span class="sourceLineNo">605</span>          }<a name="line.605"></a>
-<span class="sourceLineNo">606</span><a name="line.606"></a>
-<span class="sourceLineNo">607</span>          if (!rollWriterOrDie()) {<a name="line.607"></a>
-<span class="sourceLineNo">608</span>            throw e;<a name="line.608"></a>
-<span class="sourceLineNo">609</span>          }<a name="line.609"></a>
-<span class="sourceLineNo">610</span><a name="line.610"></a>
-<span class="sourceLineNo">611</span>          logRolled++;<a name="line.611"></a>
-<span class="sourceLineNo">612</span>          retry = 0;<a name="line.612"></a>
-<span class="sourceLineNo">613</span>        }<a name="line.613"></a>
-<span class="sourceLineNo">614</span>      }<a name="line.614"></a>
-<span class="sourceLineNo">615</span>    } while (isRunning());<a name="line.615"></a>
-<span class="sourceLineNo">616</span>    return totalSynced;<a name="line.616"></a>
-<span class="sourceLineNo">617</span>  }<a name="line.617"></a>
-<span class="sourceLineNo">618</span><a name="line.618"></a>
-<span class="sourceLineNo">619</span>  protected long syncSlots(FSDataOutputStream stream, ByteSlot[] slots, int offset, int count)<a name="line.619"></a>
-<span class="sourceLineNo">620</span>      throws IOException {<a name="line.620"></a>
-<span class="sourceLineNo">621</span>    long totalSynced = 0;<a name="line.621"></a>
-<span class="sourceLineNo">622</span>    for (int i = 0; i &lt; count; ++i) {<a name="line.622"></a>
-<span class="sourceLineNo">623</span>      ByteSlot data = slots[offset + i];<a name="line.623"></a>
-<span class="sourceLineNo">624</span>      data.writeTo(stream);<a name="line.624"></a>
-<span class="sourceLineNo">625</span>      totalSynced += data.size();<a name="line.625"></a>
-<span class="sourceLineNo">626</span>    }<a name="line.626"></a>
-<span class="sourceLineNo">627</span><a name="line.627"></a>
-<span class="sourceLineNo">628</span>    if (useHsync) {<a name="line.628"></a>
-<span class="sourceLineNo">629</span>      stream.hsync();<a name="line.629"></a>
-<span class="sourceLineNo">630</span>    } else {<a name="line.630"></a>
-<span class="sourceLineNo">631</span>      stream.hflush();<a name="line.631"></a>
-<span class="sourceLineNo">632</span>    }<a name="line.632"></a>
-<span class="sourceLineNo">633</span>    sendPostSyncSignal();<a name="line.633"></a>
-<span class="sourceLineNo">634</span><a name="line.634"></a>
-<span class="sourceLineNo">635</span>    if (LOG.isTraceEnabled()) {<a name="line.635"></a>
-<span class="sourceLineNo">636</span>      LOG.trace("Sync slots=" + count + '/' + slots.length +<a name="line.636"></a>
-<span class="sourceLineNo">637</span>                ", flushed=" + StringUtils.humanSize(totalSynced));<a name="line.637"></a>
-<span class="sourceLineNo">638</span>    }<a name="line.638"></a>
-<span class="sourceLineNo">639</span>    return totalSynced;<a name="line.639"></a>
-<span class="sourceLineNo">640</span>  }<a name="line.640"></a>
-<span class="sourceLineNo">641</span><a name="line.641"></a>
-<span class="sourceLineNo">642</span>  @VisibleForTesting<a name="line.642"></a>
-<span class="sourceLineNo">643</span>  public boolean rollWriterOrDie() {<a name="line.643"></a>
-<span class="sourceLineNo">644</span>    for (int i = 1; i &lt;= rollRetries; ++i) {<a name="line.644"></a>
-<span class="sourceLineNo">645</span>      try {<a name="line.645"></a>
-<span class="sourceLineNo">646</span>        if (rollWriter()) {<a name="line.646"></a>
-<span class="sourceLineNo">647</span>          return true;<a name="line.647"></a>
-<span class="sourceLineNo">648</span>        }<a name="line.648"></a>
-<span class="sourceLineNo">649</span>      } catch (IOException e) {<a name="line.649"></a>
-<span class="sourceLineNo">650</span>        LOG.warn("Unable to roll the log, attempt=" + i, e);<a name="line.650"></a>
-<span class="sourceLineNo">651</span>        Threads.sleepWithoutInterrupt(waitBeforeRoll);<a name="line.651"></a>
-<span class="sourceLineNo">652</span>      }<a name="line.652"></a>
-<span class="sourceLineNo">653</span>    }<a name="line.653"></a>
-<span class="sourceLineNo">654</span>    LOG.fatal("Unable to roll the log");<a name="line.654"></a>
-<span class="sourceLineNo">655</span>    sendAbortProcessSignal();<a name="line.655"></a>
-<span class="sourceLineNo">656</span>    throw new RuntimeException("unable to roll the log");<a name="line.656"></a>
-<span class="sourceLineNo">657</span>  }<a name="line.657"></a>
-<span class="sourceLineNo">658</span><a name="line.658"></a>
-<span class="sourceLineNo">659</span>  protected boolean checkAndTryRoll() {<a name="line.659"></a>
-<span class="sourceLineNo">660</span>    if (!isRunning()) return false;<a name="line.660"></a>
-<span class="sourceLineNo">661</span><a name="line.661"></a>
-<span class="sourceLineNo">662</span>    if (totalSynced.get() &gt; rollThreshold || getMillisToNextPeriodicRoll() &lt;= 0) {<a name="line.662"></a>
-<span class="sourceLineNo">663</span>      try {<a name="line.663"></a>
-<span class="sourceLineNo">664</span>        return rollWriter();<a name="line.664"></a>
-<span class="sourceLineNo">665</span>      } catch (IOException e) {<a name="line.665"></a>
-<span class="sourceLineNo">666</span>        LOG.warn("Unable to roll the log", e);<a name="line.666"></a>
-<span class="sourceLineNo">667</span>      }<a name="line.667"></a>
-<span class="sourceLineNo">668</span>    }<a name="line.668"></a>
-<span class="sourceLineNo">669</span>    return false;<a name="line.669"></a>
-<span class="sourceLineNo">670</span>  }<a name="line.670"></a>
-<span class="sourceLineNo">671</span><a name="line.671"></a>
-<span class="sourceLineNo">672</span>  private long getMillisToNextPeriodicRoll() {<a name="line.672"></a>
-<span class="sourceLineNo">673</span>    if (lastRollTs.get() &gt; 0 &amp;&amp; periodicRollMsec &gt; 0) {<a name="line.673"></a>
-<span class="sourceLineNo">674</span>      return periodicRollMsec - getMillisFromLastRoll();<a name="line.674"></a>
-<span class="sourceLineNo">675</span>    }<a name="line.675"></a>
-<span class="sourceLineNo">676</span>    return Long.MAX_VALUE;<a name="line.676"></a>
-<span class="sourceLineNo">677</span>  }<a name="line.677"></a>
-<span class="sourceLineNo">678</span><a name="line.678"></a>
-<span class="sourceLineNo">679</span>  private long getMillisFromLastRoll() {<a name="line.679"></a>
-<span class="sourceLineNo">680</span>    return (System.currentTimeMillis() - lastRollTs.get());<a name="line.680"></a>
-<span class="sourceLineNo">681</span>  }<a name="line.681"></a>
-<span class="sourceLineNo">682</span><a name="line.682"></a>
-<span class="sourceLineNo">683</span>  protected boolean rollWriter() throws IOException {<a name="line.683"></a>
-<span class="sourceLineNo">684</span>    // Create new state-log<a name="line.684"></a>
-<span class="sourceLineNo">685</span>    if (!rollWriter(flushLogId + 1)) {<a name="line.685"></a>
-<span class="sourceLineNo">686</span>      LOG.warn("someone else has already created log " + flushLogId);<a name="line.686"></a>
-<span class="sourceLineNo">687</span>      return false;<a name="line.687"></a>
-<span class="sourceLineNo">688</span>    }<a name="line.688"></a>
-<span class="sourceLineNo">689</span><a name="line.689"></a>
-<span class="sourceLineNo">690</span>    // We have the lease on the log,<a name="line.690"></a>
-<span class="sourceLineNo">691</span>    // but we should check if someone else has created new files<a name="line.691"></a>
-<span class="sourceLineNo">692</span>    if (getMaxLogId(getLogFiles()) &gt; flushLogId) {<a name="line.692"></a>
-<span class="sourceLineNo">693</span>      LOG.warn("Someone else created new logs. Expected maxLogId &lt; " + flushLogId);<a name="line.693"></a>
-<span class="sourceLineNo">694</span>      logs.getLast(

<TRUNCATED>

[27/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html
index b065ec0..519b3ef 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html
@@ -31,633 +31,748 @@
 <span class="sourceLineNo">023</span>import java.io.DataInput;<a name="line.23"></a>
 <span class="sourceLineNo">024</span>import java.io.IOException;<a name="line.24"></a>
 <span class="sourceLineNo">025</span>import java.io.PrintStream;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.util.ArrayList;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.util.HashMap;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.util.Iterator;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.util.LinkedHashSet;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.util.List;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.util.Locale;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.util.Map;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.util.Set;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.SortedMap;<a name="line.34"></a>
-<span class="sourceLineNo">035</span><a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.commons.cli.CommandLine;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.commons.cli.CommandLineParser;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.commons.cli.HelpFormatter;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.commons.cli.Option;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.commons.cli.OptionGroup;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.commons.cli.Options;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.commons.cli.ParseException;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.commons.cli.PosixParser;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.commons.logging.Log;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.commons.logging.LogFactory;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.classification.InterfaceStability;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.conf.Configuration;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.conf.Configured;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.fs.FileSystem;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.fs.Path;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.Cell;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.HConstants;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.TableName;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.Tag;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.io.FSDataInputStreamWrapper;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.io.hfile.HFile.FileInfo;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.mob.MobUtils;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.regionserver.TimeRangeTracker;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.util.BloomFilter;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.util.BloomFilterUtil;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.util.BloomFilterFactory;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.Writables;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.util.Tool;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.util.ToolRunner;<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>import com.yammer.metrics.core.Histogram;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import com.yammer.metrics.core.Metric;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import com.yammer.metrics.core.MetricName;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import com.yammer.metrics.core.MetricPredicate;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import com.yammer.metrics.core.MetricsRegistry;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import com.yammer.metrics.reporting.ConsoleReporter;<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> * Implements pretty-printing functionality for {@link HFile}s.<a name="line.84"></a>
-<span class="sourceLineNo">085</span> */<a name="line.85"></a>
-<span class="sourceLineNo">086</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.86"></a>
-<span class="sourceLineNo">087</span>@InterfaceStability.Evolving<a name="line.87"></a>
-<span class="sourceLineNo">088</span>public class HFilePrettyPrinter extends Configured implements Tool {<a name="line.88"></a>
-<span class="sourceLineNo">089</span><a name="line.89"></a>
-<span class="sourceLineNo">090</span>  private static final Log LOG = LogFactory.getLog(HFilePrettyPrinter.class);<a name="line.90"></a>
-<span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>  private Options options = new Options();<a name="line.92"></a>
-<span class="sourceLineNo">093</span><a name="line.93"></a>
-<span class="sourceLineNo">094</span>  private boolean verbose;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  private boolean printValue;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  private boolean printKey;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>  private boolean shouldPrintMeta;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  private boolean printBlockIndex;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  private boolean printBlockHeaders;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>  private boolean printStats;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  private boolean checkRow;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>  private boolean checkFamily;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  private boolean isSeekToRow = false;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>  private boolean checkMobIntegrity = false;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>  private Map&lt;String, List&lt;Path&gt;&gt; mobFileLocations;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  private static final int FOUND_MOB_FILES_CACHE_CAPACITY = 50;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>  private static final int MISSING_MOB_FILES_CACHE_CAPACITY = 20;<a name="line.107"></a>
-<span class="sourceLineNo">108</span><a name="line.108"></a>
-<span class="sourceLineNo">109</span>  /**<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   * The row which the user wants to specify and print all the KeyValues for.<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   */<a name="line.111"></a>
-<span class="sourceLineNo">112</span>  private byte[] row = null;<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>  private List&lt;Path&gt; files = new ArrayList&lt;Path&gt;();<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  private int count;<a name="line.115"></a>
-<span class="sourceLineNo">116</span><a name="line.116"></a>
-<span class="sourceLineNo">117</span>  private static final String FOUR_SPACES = "    ";<a name="line.117"></a>
+<span class="sourceLineNo">026</span>import java.text.DateFormat;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.util.ArrayList;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.util.HashMap;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.util.Iterator;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.LinkedHashSet;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.util.List;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.util.Locale;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.util.Map;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.Set;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.SortedMap;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import java.util.TimeZone;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import java.util.concurrent.TimeUnit;<a name="line.37"></a>
+<span class="sourceLineNo">038</span><a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.commons.cli.CommandLine;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.commons.cli.CommandLineParser;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.commons.cli.HelpFormatter;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.commons.cli.Option;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.commons.cli.OptionGroup;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.commons.cli.Options;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.commons.cli.ParseException;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.commons.cli.PosixParser;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.commons.lang.StringUtils;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.commons.logging.Log;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.commons.logging.LogFactory;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.classification.InterfaceStability;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.conf.Configuration;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.conf.Configured;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.fs.FileSystem;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.fs.Path;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.Cell;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.HConstants;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.TableName;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.Tag;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.io.FSDataInputStreamWrapper;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.io.hfile.HFile.FileInfo;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.mob.MobUtils;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.regionserver.TimeRangeTracker;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.util.BloomFilter;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.util.BloomFilterUtil;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.BloomFilterFactory;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.util.Writables;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.util.Tool;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.util.ToolRunner;<a name="line.78"></a>
+<span class="sourceLineNo">079</span><a name="line.79"></a>
+<span class="sourceLineNo">080</span>import com.codahale.metrics.Histogram;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import com.codahale.metrics.Counter;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import com.codahale.metrics.Gauge;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import com.codahale.metrics.Meter;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import com.codahale.metrics.MetricFilter;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import com.codahale.metrics.MetricRegistry;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import com.codahale.metrics.ConsoleReporter;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import com.codahale.metrics.ScheduledReporter;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import com.codahale.metrics.Snapshot;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import com.codahale.metrics.Timer;<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>import static com.codahale.metrics.MetricRegistry.name;<a name="line.91"></a>
+<span class="sourceLineNo">092</span><a name="line.92"></a>
+<span class="sourceLineNo">093</span>/**<a name="line.93"></a>
+<span class="sourceLineNo">094</span> * Implements pretty-printing functionality for {@link HFile}s.<a name="line.94"></a>
+<span class="sourceLineNo">095</span> */<a name="line.95"></a>
+<span class="sourceLineNo">096</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.96"></a>
+<span class="sourceLineNo">097</span>@InterfaceStability.Evolving<a name="line.97"></a>
+<span class="sourceLineNo">098</span>public class HFilePrettyPrinter extends Configured implements Tool {<a name="line.98"></a>
+<span class="sourceLineNo">099</span><a name="line.99"></a>
+<span class="sourceLineNo">100</span>  private static final Log LOG = LogFactory.getLog(HFilePrettyPrinter.class);<a name="line.100"></a>
+<span class="sourceLineNo">101</span><a name="line.101"></a>
+<span class="sourceLineNo">102</span>  private Options options = new Options();<a name="line.102"></a>
+<span class="sourceLineNo">103</span><a name="line.103"></a>
+<span class="sourceLineNo">104</span>  private boolean verbose;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  private boolean printValue;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>  private boolean printKey;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>  private boolean shouldPrintMeta;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  private boolean printBlockIndex;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>  private boolean printBlockHeaders;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  private boolean printStats;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  private boolean checkRow;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>  private boolean checkFamily;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>  private boolean isSeekToRow = false;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>  private boolean checkMobIntegrity = false;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  private Map&lt;String, List&lt;Path&gt;&gt; mobFileLocations;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  private static final int FOUND_MOB_FILES_CACHE_CAPACITY = 50;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  private static final int MISSING_MOB_FILES_CACHE_CAPACITY = 20;<a name="line.117"></a>
 <span class="sourceLineNo">118</span><a name="line.118"></a>
-<span class="sourceLineNo">119</span>  public HFilePrettyPrinter() {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    super();<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    init();<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  }<a name="line.122"></a>
+<span class="sourceLineNo">119</span>  /**<a name="line.119"></a>
+<span class="sourceLineNo">120</span>   * The row which the user wants to specify and print all the KeyValues for.<a name="line.120"></a>
+<span class="sourceLineNo">121</span>   */<a name="line.121"></a>
+<span class="sourceLineNo">122</span>  private byte[] row = null;<a name="line.122"></a>
 <span class="sourceLineNo">123</span><a name="line.123"></a>
-<span class="sourceLineNo">124</span>  public HFilePrettyPrinter(Configuration conf) {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    super(conf);<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    init();<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  }<a name="line.127"></a>
+<span class="sourceLineNo">124</span>  private List&lt;Path&gt; files = new ArrayList&lt;Path&gt;();<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  private int count;<a name="line.125"></a>
+<span class="sourceLineNo">126</span><a name="line.126"></a>
+<span class="sourceLineNo">127</span>  private static final String FOUR_SPACES = "    ";<a name="line.127"></a>
 <span class="sourceLineNo">128</span><a name="line.128"></a>
-<span class="sourceLineNo">129</span>  private void init() {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    options.addOption("v", "verbose", false,<a name="line.130"></a>
-<span class="sourceLineNo">131</span>        "Verbose output; emits file and meta data delimiters");<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    options.addOption("p", "printkv", false, "Print key/value pairs");<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    options.addOption("e", "printkey", false, "Print keys");<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    options.addOption("m", "printmeta", false, "Print meta data of file");<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    options.addOption("b", "printblocks", false, "Print block index meta data");<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    options.addOption("h", "printblockheaders", false, "Print block headers for each block.");<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    options.addOption("k", "checkrow", false,<a name="line.137"></a>
-<span class="sourceLineNo">138</span>        "Enable row order check; looks for out-of-order keys");<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    options.addOption("a", "checkfamily", false, "Enable family check");<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    options.addOption("w", "seekToRow", true,<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      "Seek to this row and print all the kvs for this row only");<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    options.addOption("s", "stats", false, "Print statistics");<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    options.addOption("i", "checkMobIntegrity", false,<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      "Print all cells whose mob files are missing");<a name="line.144"></a>
-<span class="sourceLineNo">145</span><a name="line.145"></a>
-<span class="sourceLineNo">146</span>    OptionGroup files = new OptionGroup();<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    files.addOption(new Option("f", "file", true,<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      "File to scan. Pass full-path; e.g. hdfs://a:9000/hbase/hbase:meta/12/34"));<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    files.addOption(new Option("r", "region", true,<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      "Region to scan. Pass region name; e.g. 'hbase:meta,,1'"));<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    options.addOptionGroup(files);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  }<a name="line.152"></a>
-<span class="sourceLineNo">153</span><a name="line.153"></a>
-<span class="sourceLineNo">154</span>  public boolean parseOptions(String args[]) throws ParseException,<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      IOException {<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    if (args.length == 0) {<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      HelpFormatter formatter = new HelpFormatter();<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      formatter.printHelp("HFile", options, true);<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      return false;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    }<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    CommandLineParser parser = new PosixParser();<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    CommandLine cmd = parser.parse(options, args);<a name="line.162"></a>
+<span class="sourceLineNo">129</span>  public HFilePrettyPrinter() {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    super();<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    init();<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  }<a name="line.132"></a>
+<span class="sourceLineNo">133</span><a name="line.133"></a>
+<span class="sourceLineNo">134</span>  public HFilePrettyPrinter(Configuration conf) {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    super(conf);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    init();<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>  private void init() {<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    options.addOption("v", "verbose", false,<a name="line.140"></a>
+<span class="sourceLineNo">141</span>        "Verbose output; emits file and meta data delimiters");<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    options.addOption("p", "printkv", false, "Print key/value pairs");<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    options.addOption("e", "printkey", false, "Print keys");<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    options.addOption("m", "printmeta", false, "Print meta data of file");<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    options.addOption("b", "printblocks", false, "Print block index meta data");<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    options.addOption("h", "printblockheaders", false, "Print block headers for each block.");<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    options.addOption("k", "checkrow", false,<a name="line.147"></a>
+<span class="sourceLineNo">148</span>        "Enable row order check; looks for out-of-order keys");<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    options.addOption("a", "checkfamily", false, "Enable family check");<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    options.addOption("w", "seekToRow", true,<a name="line.150"></a>
+<span class="sourceLineNo">151</span>      "Seek to this row and print all the kvs for this row only");<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    options.addOption("s", "stats", false, "Print statistics");<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    options.addOption("i", "checkMobIntegrity", false,<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      "Print all cells whose mob files are missing");<a name="line.154"></a>
+<span class="sourceLineNo">155</span><a name="line.155"></a>
+<span class="sourceLineNo">156</span>    OptionGroup files = new OptionGroup();<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    files.addOption(new Option("f", "file", true,<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      "File to scan. Pass full-path; e.g. hdfs://a:9000/hbase/hbase:meta/12/34"));<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    files.addOption(new Option("r", "region", true,<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      "Region to scan. Pass region name; e.g. 'hbase:meta,,1'"));<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    options.addOptionGroup(files);<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>    verbose = cmd.hasOption("v");<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    printValue = cmd.hasOption("p");<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    printKey = cmd.hasOption("e") || printValue;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    shouldPrintMeta = cmd.hasOption("m");<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    printBlockIndex = cmd.hasOption("b");<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    printBlockHeaders = cmd.hasOption("h");<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    printStats = cmd.hasOption("s");<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    checkRow = cmd.hasOption("k");<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    checkFamily = cmd.hasOption("a");<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    checkMobIntegrity = cmd.hasOption("i");<a name="line.173"></a>
-<span class="sourceLineNo">174</span><a name="line.174"></a>
-<span class="sourceLineNo">175</span>    if (cmd.hasOption("f")) {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      files.add(new Path(cmd.getOptionValue("f")));<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    }<a name="line.177"></a>
-<span class="sourceLineNo">178</span><a name="line.178"></a>
-<span class="sourceLineNo">179</span>    if (cmd.hasOption("w")) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      String key = cmd.getOptionValue("w");<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      if (key != null &amp;&amp; key.length() != 0) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        row = Bytes.toBytesBinary(key);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>        isSeekToRow = true;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      } else {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>        System.err.println("Invalid row is specified.");<a name="line.185"></a>
-<span class="sourceLineNo">186</span>        System.exit(-1);<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><a name="line.189"></a>
-<span class="sourceLineNo">190</span>    if (cmd.hasOption("r")) {<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      String regionName = cmd.getOptionValue("r");<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      byte[] rn = Bytes.toBytes(regionName);<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      byte[][] hri = HRegionInfo.parseRegionName(rn);<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      Path rootDir = FSUtils.getRootDir(getConf());<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      Path tableDir = FSUtils.getTableDir(rootDir, TableName.valueOf(hri[0]));<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      String enc = HRegionInfo.encodeRegionName(rn);<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      Path regionDir = new Path(tableDir, enc);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      if (verbose)<a name="line.198"></a>
-<span class="sourceLineNo">199</span>        System.out.println("region dir -&gt; " + regionDir);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      List&lt;Path&gt; regionFiles = HFile.getStoreFiles(FileSystem.get(getConf()),<a name="line.200"></a>
-<span class="sourceLineNo">201</span>          regionDir);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      if (verbose)<a name="line.202"></a>
-<span class="sourceLineNo">203</span>        System.out.println("Number of region files found -&gt; "<a name="line.203"></a>
-<span class="sourceLineNo">204</span>            + regionFiles.size());<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      if (verbose) {<a name="line.205"></a>
-<span class="sourceLineNo">206</span>        int i = 1;<a name="line.206"></a>
-<span class="sourceLineNo">207</span>        for (Path p : regionFiles) {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>          if (verbose)<a name="line.208"></a>
-<span class="sourceLineNo">209</span>            System.out.println("Found file[" + i++ + "] -&gt; " + p);<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>      files.addAll(regionFiles);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    }<a name="line.213"></a>
-<span class="sourceLineNo">214</span><a name="line.214"></a>
-<span class="sourceLineNo">215</span>    if(checkMobIntegrity) {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      if (verbose) {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>        System.out.println("checkMobIntegrity is enabled");<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      }<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      mobFileLocations = new HashMap&lt;String, List&lt;Path&gt;&gt;();<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    }<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    return true;<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>  /**<a name="line.224"></a>
-<span class="sourceLineNo">225</span>   * Runs the command-line pretty-printer, and returns the desired command<a name="line.225"></a>
-<span class="sourceLineNo">226</span>   * exit code (zero for success, non-zero for failure).<a name="line.226"></a>
-<span class="sourceLineNo">227</span>   */<a name="line.227"></a>
-<span class="sourceLineNo">228</span>  @Override<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  public int run(String[] args) {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    if (getConf() == null) {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      throw new RuntimeException("A Configuration instance must be provided.");<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    }<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    try {<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      FSUtils.setFsDefault(getConf(), FSUtils.getRootDir(getConf()));<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      if (!parseOptions(args))<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        return 1;<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    } catch (IOException ex) {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      LOG.error("Error parsing command-line options", ex);<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      return 1;<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    } catch (ParseException ex) {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      LOG.error("Error parsing command-line options", ex);<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      return 1;<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>    // iterate over all files found<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    for (Path fileName : files) {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      try {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>        processFile(fileName);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      } catch (IOException ex) {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        LOG.error("Error reading " + fileName, ex);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>        System.exit(-2);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      }<a name="line.252"></a>
+<span class="sourceLineNo">164</span>  public boolean parseOptions(String args[]) throws ParseException,<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      IOException {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    if (args.length == 0) {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      HelpFormatter formatter = new HelpFormatter();<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      formatter.printHelp("HFile", options, true);<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      return false;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    }<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    CommandLineParser parser = new PosixParser();<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    CommandLine cmd = parser.parse(options, args);<a name="line.172"></a>
+<span class="sourceLineNo">173</span><a name="line.173"></a>
+<span class="sourceLineNo">174</span>    verbose = cmd.hasOption("v");<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    printValue = cmd.hasOption("p");<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    printKey = cmd.hasOption("e") || printValue;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    shouldPrintMeta = cmd.hasOption("m");<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    printBlockIndex = cmd.hasOption("b");<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    printBlockHeaders = cmd.hasOption("h");<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    printStats = cmd.hasOption("s");<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    checkRow = cmd.hasOption("k");<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    checkFamily = cmd.hasOption("a");<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    checkMobIntegrity = cmd.hasOption("i");<a name="line.183"></a>
+<span class="sourceLineNo">184</span><a name="line.184"></a>
+<span class="sourceLineNo">185</span>    if (cmd.hasOption("f")) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      files.add(new Path(cmd.getOptionValue("f")));<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>    if (cmd.hasOption("w")) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      String key = cmd.getOptionValue("w");<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      if (key != null &amp;&amp; key.length() != 0) {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>        row = Bytes.toBytesBinary(key);<a name="line.192"></a>
+<span class="sourceLineNo">193</span>        isSeekToRow = true;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      } else {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>        System.err.println("Invalid row is specified.");<a name="line.195"></a>
+<span class="sourceLineNo">196</span>        System.exit(-1);<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>    if (cmd.hasOption("r")) {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      String regionName = cmd.getOptionValue("r");<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      byte[] rn = Bytes.toBytes(regionName);<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      byte[][] hri = HRegionInfo.parseRegionName(rn);<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      Path rootDir = FSUtils.getRootDir(getConf());<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      Path tableDir = FSUtils.getTableDir(rootDir, TableName.valueOf(hri[0]));<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      String enc = HRegionInfo.encodeRegionName(rn);<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      Path regionDir = new Path(tableDir, enc);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      if (verbose)<a name="line.208"></a>
+<span class="sourceLineNo">209</span>        System.out.println("region dir -&gt; " + regionDir);<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      List&lt;Path&gt; regionFiles = HFile.getStoreFiles(FileSystem.get(getConf()),<a name="line.210"></a>
+<span class="sourceLineNo">211</span>          regionDir);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      if (verbose)<a name="line.212"></a>
+<span class="sourceLineNo">213</span>        System.out.println("Number of region files found -&gt; "<a name="line.213"></a>
+<span class="sourceLineNo">214</span>            + regionFiles.size());<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      if (verbose) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>        int i = 1;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        for (Path p : regionFiles) {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>          if (verbose)<a name="line.218"></a>
+<span class="sourceLineNo">219</span>            System.out.println("Found file[" + i++ + "] -&gt; " + p);<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>      files.addAll(regionFiles);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    }<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>    if(checkMobIntegrity) {<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      if (verbose) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        System.out.println("checkMobIntegrity is enabled");<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      }<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      mobFileLocations = new HashMap&lt;String, List&lt;Path&gt;&gt;();<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    }<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    return true;<a name="line.231"></a>
+<span class="sourceLineNo">232</span>  }<a name="line.232"></a>
+<span class="sourceLineNo">233</span><a name="line.233"></a>
+<span class="sourceLineNo">234</span>  /**<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   * Runs the command-line pretty-printer, and returns the desired command<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   * exit code (zero for success, non-zero for failure).<a name="line.236"></a>
+<span class="sourceLineNo">237</span>   */<a name="line.237"></a>
+<span class="sourceLineNo">238</span>  @Override<a name="line.238"></a>
+<span class="sourceLineNo">239</span>  public int run(String[] args) {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    if (getConf() == null) {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      throw new RuntimeException("A Configuration instance must be provided.");<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    }<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    try {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      FSUtils.setFsDefault(getConf(), FSUtils.getRootDir(getConf()));<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      if (!parseOptions(args))<a name="line.245"></a>
+<span class="sourceLineNo">246</span>        return 1;<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    } catch (IOException ex) {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      LOG.error("Error parsing command-line options", ex);<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      return 1;<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    } catch (ParseException ex) {<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      LOG.error("Error parsing command-line options", ex);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      return 1;<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>    if (verbose || printKey) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      System.out.println("Scanned kv count -&gt; " + count);<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
-<span class="sourceLineNo">258</span><a name="line.258"></a>
-<span class="sourceLineNo">259</span>    return 0;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  }<a name="line.260"></a>
-<span class="sourceLineNo">261</span><a name="line.261"></a>
-<span class="sourceLineNo">262</span>  private void processFile(Path file) throws IOException {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    if (verbose)<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      System.out.println("Scanning -&gt; " + file);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    FileSystem fs = file.getFileSystem(getConf());<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    if (!fs.exists(file)) {<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      System.err.println("ERROR, file doesnt exist: " + file);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      System.exit(-2);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    }<a name="line.269"></a>
-<span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span>    HFile.Reader reader = HFile.createReader(fs, file, new CacheConfig(getConf()), getConf());<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>    Map&lt;byte[], byte[]&gt; fileInfo = reader.loadFileInfo();<a name="line.273"></a>
-<span class="sourceLineNo">274</span><a name="line.274"></a>
-<span class="sourceLineNo">275</span>    KeyValueStatsCollector fileStats = null;<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>    if (verbose || printKey || checkRow || checkFamily || printStats || checkMobIntegrity) {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      // scan over file and read key/value's and check if requested<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      HFileScanner scanner = reader.getScanner(false, false, false);<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      fileStats = new KeyValueStatsCollector();<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      boolean shouldScanKeysValues = false;<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      if (this.isSeekToRow) {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>        // seek to the first kv on this row<a name="line.283"></a>
-<span class="sourceLineNo">284</span>        shouldScanKeysValues =<a name="line.284"></a>
-<span class="sourceLineNo">285</span>          (scanner.seekTo(KeyValueUtil.createFirstOnRow(this.row)) != -1);<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      } else {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>        shouldScanKeysValues = scanner.seekTo();<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      }<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      if (shouldScanKeysValues)<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        scanKeysValues(file, fileStats, scanner, row);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    }<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>    // print meta data<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    if (shouldPrintMeta) {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      printMeta(reader, fileInfo);<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    }<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>    if (printBlockIndex) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      System.out.println("Block Index:");<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      System.out.println(reader.getDataBlockIndexReader());<a name="line.300"></a>
+<span class="sourceLineNo">255</span>    // iterate over all files found<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    for (Path fileName : files) {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      try {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>        processFile(fileName);<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      } catch (IOException ex) {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>        LOG.error("Error reading " + fileName, ex);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>        System.exit(-2);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      }<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    }<a name="line.263"></a>
+<span class="sourceLineNo">264</span><a name="line.264"></a>
+<span class="sourceLineNo">265</span>    if (verbose || printKey) {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      System.out.println("Scanned kv count -&gt; " + count);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    }<a name="line.267"></a>
+<span class="sourceLineNo">268</span><a name="line.268"></a>
+<span class="sourceLineNo">269</span>    return 0;<a name="line.269"></a>
+<span class="sourceLineNo">270</span>  }<a name="line.270"></a>
+<span class="sourceLineNo">271</span><a name="line.271"></a>
+<span class="sourceLineNo">272</span>  private void processFile(Path file) throws IOException {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    if (verbose)<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      System.out.println("Scanning -&gt; " + file);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    FileSystem fs = file.getFileSystem(getConf());<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    if (!fs.exists(file)) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      System.err.println("ERROR, file doesnt exist: " + file);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      System.exit(-2);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    }<a name="line.279"></a>
+<span class="sourceLineNo">280</span><a name="line.280"></a>
+<span class="sourceLineNo">281</span>    HFile.Reader reader = HFile.createReader(fs, file, new CacheConfig(getConf()), getConf());<a name="line.281"></a>
+<span class="sourceLineNo">282</span><a name="line.282"></a>
+<span class="sourceLineNo">283</span>    Map&lt;byte[], byte[]&gt; fileInfo = reader.loadFileInfo();<a name="line.283"></a>
+<span class="sourceLineNo">284</span><a name="line.284"></a>
+<span class="sourceLineNo">285</span>    KeyValueStatsCollector fileStats = null;<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>    if (verbose || printKey || checkRow || checkFamily || printStats || checkMobIntegrity) {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      // scan over file and read key/value's and check if requested<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      HFileScanner scanner = reader.getScanner(false, false, false);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      fileStats = new KeyValueStatsCollector();<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      boolean shouldScanKeysValues = false;<a name="line.291"></a>
+<span class="sourceLineNo">292</span>      if (this.isSeekToRow) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>        // seek to the first kv on this row<a name="line.293"></a>
+<span class="sourceLineNo">294</span>        shouldScanKeysValues =<a name="line.294"></a>
+<span class="sourceLineNo">295</span>          (scanner.seekTo(KeyValueUtil.createFirstOnRow(this.row)) != -1);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>      } else {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>        shouldScanKeysValues = scanner.seekTo();<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      }<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      if (shouldScanKeysValues)<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        scanKeysValues(file, fileStats, scanner, row);<a name="line.300"></a>
 <span class="sourceLineNo">301</span>    }<a name="line.301"></a>
 <span class="sourceLineNo">302</span><a name="line.302"></a>
-<span class="sourceLineNo">303</span>    if (printBlockHeaders) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>      System.out.println("Block Headers:");<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      /*<a name="line.305"></a>
-<span class="sourceLineNo">306</span>       * TODO: this same/similar block iteration logic is used in HFileBlock#blockRange and<a name="line.306"></a>
-<span class="sourceLineNo">307</span>       * TestLazyDataBlockDecompression. Refactor?<a name="line.307"></a>
-<span class="sourceLineNo">308</span>       */<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      FSDataInputStreamWrapper fsdis = new FSDataInputStreamWrapper(fs, file);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      long fileSize = fs.getFileStatus(file).getLen();<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      FixedFileTrailer trailer =<a name="line.311"></a>
-<span class="sourceLineNo">312</span>        FixedFileTrailer.readFromStream(fsdis.getStream(false), fileSize);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      long offset = trailer.getFirstDataBlockOffset(),<a name="line.313"></a>
-<span class="sourceLineNo">314</span>        max = trailer.getLastDataBlockOffset();<a name="line.314"></a>
-<span class="sourceLineNo">315</span>      HFileBlock block;<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      while (offset &lt;= max) {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>        block = reader.readBlock(offset, -1, /* cacheBlock */ false, /* pread */ false,<a name="line.317"></a>
-<span class="sourceLineNo">318</span>          /* isCompaction */ false, /* updateCacheMetrics */ false, null, null);<a name="line.318"></a>
-<span class="sourceLineNo">319</span>        offset += block.getOnDiskSizeWithHeader();<a name="line.319"></a>
-<span class="sourceLineNo">320</span>        System.out.println(block);<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      }<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    }<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span>    if (printStats) {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      fileStats.finish();<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      System.out.println("Stats:\n" + fileStats);<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>    reader.close();<a name="line.329"></a>
-<span class="sourceLineNo">330</span>  }<a name="line.330"></a>
-<span class="sourceLineNo">331</span><a name="line.331"></a>
-<span class="sourceLineNo">332</span>  private void scanKeysValues(Path file, KeyValueStatsCollector fileStats,<a name="line.332"></a>
-<span class="sourceLineNo">333</span>      HFileScanner scanner,  byte[] row) throws IOException {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    Cell pCell = null;<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    FileSystem fs = FileSystem.get(getConf());<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    Set&lt;String&gt; foundMobFiles = new LinkedHashSet&lt;String&gt;(FOUND_MOB_FILES_CACHE_CAPACITY);<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    Set&lt;String&gt; missingMobFiles = new LinkedHashSet&lt;String&gt;(MISSING_MOB_FILES_CACHE_CAPACITY);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    do {<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      Cell cell = scanner.getCell();<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      if (row != null &amp;&amp; row.length != 0) {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>        int result = CellComparator.COMPARATOR.compareRows(cell, row, 0, row.length);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>        if (result &gt; 0) {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>          break;<a name="line.343"></a>
-<span class="sourceLineNo">344</span>        } else if (result &lt; 0) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>          continue;<a name="line.345"></a>
-<span class="sourceLineNo">346</span>        }<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      }<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      // collect stats<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      if (printStats) {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>        fileStats.collect(cell);<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      }<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      // dump key value<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      if (printKey) {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>        System.out.print("K: " + cell);<a name="line.354"></a>
-<span class="sourceLineNo">355</span>        if (printValue) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>          System.out.print(" V: "<a name="line.356"></a>
-<span class="sourceLineNo">357</span>              + Bytes.toStringBinary(cell.getValueArray(), cell.getValueOffset(),<a name="line.357"></a>
-<span class="sourceLineNo">358</span>                  cell.getValueLength()));<a name="line.358"></a>
-<span class="sourceLineNo">359</span>          int i = 0;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>          List&lt;Tag&gt; tags = Tag.asList(cell.getTagsArray(), cell.getTagsOffset(),<a name="line.360"></a>
-<span class="sourceLineNo">361</span>              cell.getTagsLength());<a name="line.361"></a>
-<span class="sourceLineNo">362</span>          for (Tag tag : tags) {<a name="line.362"></a>
-<span class="sourceLineNo">363</span>            System.out.print(String.format(" T[%d]: %s", i++,<a name="line.363"></a>
-<span class="sourceLineNo">364</span>                Bytes.toStringBinary(tag.getBuffer(), tag.getTagOffset(), tag.getTagLength())));<a name="line.364"></a>
-<span class="sourceLineNo">365</span>          }<a name="line.365"></a>
-<span class="sourceLineNo">366</span>        }<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        System.out.println();<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      }<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      // check if rows are in order<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      if (checkRow &amp;&amp; pCell != null) {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>        if (CellComparator.COMPARATOR.compareRows(pCell, cell) &gt; 0) {<a name="line.371"></a>
-<span class="sourceLineNo">372</span>          System.err.println("WARNING, previous row is greater then"<a name="line.372"></a>
-<span class="sourceLineNo">373</span>              + " current row\n\tfilename -&gt; " + file + "\n\tprevious -&gt; "<a name="line.373"></a>
-<span class="sourceLineNo">374</span>              + CellUtil.getCellKeyAsString(pCell) + "\n\tcurrent  -&gt; "<a name="line.374"></a>
-<span class="sourceLineNo">375</span>              + CellUtil.getCellKeyAsString(cell));<a name="line.375"></a>
+<span class="sourceLineNo">303</span>    // print meta data<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    if (shouldPrintMeta) {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      printMeta(reader, fileInfo);<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>    if (printBlockIndex) {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      System.out.println("Block Index:");<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      System.out.println(reader.getDataBlockIndexReader());<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>    if (printBlockHeaders) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      System.out.println("Block Headers:");<a name="line.314"></a>
+<span class="sourceLineNo">315</span>      /*<a name="line.315"></a>
+<span class="sourceLineNo">316</span>       * TODO: this same/similar block iteration logic is used in HFileBlock#blockRange and<a name="line.316"></a>
+<span class="sourceLineNo">317</span>       * TestLazyDataBlockDecompression. Refactor?<a name="line.317"></a>
+<span class="sourceLineNo">318</span>       */<a name="line.318"></a>
+<span class="sourceLineNo">319</span>      FSDataInputStreamWrapper fsdis = new FSDataInputStreamWrapper(fs, file);<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      long fileSize = fs.getFileStatus(file).getLen();<a name="line.320"></a>
+<span class="sourceLineNo">321</span>      FixedFileTrailer trailer =<a name="line.321"></a>
+<span class="sourceLineNo">322</span>        FixedFileTrailer.readFromStream(fsdis.getStream(false), fileSize);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      long offset = trailer.getFirstDataBlockOffset(),<a name="line.323"></a>
+<span class="sourceLineNo">324</span>        max = trailer.getLastDataBlockOffset();<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      HFileBlock block;<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      while (offset &lt;= max) {<a name="line.326"></a>
+<span class="sourceLineNo">327</span>        block = reader.readBlock(offset, -1, /* cacheBlock */ false, /* pread */ false,<a name="line.327"></a>
+<span class="sourceLineNo">328</span>          /* isCompaction */ false, /* updateCacheMetrics */ false, null, null);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>        offset += block.getOnDiskSizeWithHeader();<a name="line.329"></a>
+<span class="sourceLineNo">330</span>        System.out.println(block);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>      }<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    }<a name="line.332"></a>
+<span class="sourceLineNo">333</span><a name="line.333"></a>
+<span class="sourceLineNo">334</span>    if (printStats) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>      fileStats.finish();<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      System.out.println("Stats:\n" + fileStats);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    }<a name="line.337"></a>
+<span class="sourceLineNo">338</span><a name="line.338"></a>
+<span class="sourceLineNo">339</span>    reader.close();<a name="line.339"></a>
+<span class="sourceLineNo">340</span>  }<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>  private void scanKeysValues(Path file, KeyValueStatsCollector fileStats,<a name="line.342"></a>
+<span class="sourceLineNo">343</span>      HFileScanner scanner,  byte[] row) throws IOException {<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    Cell pCell = null;<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    FileSystem fs = FileSystem.get(getConf());<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    Set&lt;String&gt; foundMobFiles = new LinkedHashSet&lt;String&gt;(FOUND_MOB_FILES_CACHE_CAPACITY);<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    Set&lt;String&gt; missingMobFiles = new LinkedHashSet&lt;String&gt;(MISSING_MOB_FILES_CACHE_CAPACITY);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    do {<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      Cell cell = scanner.getCell();<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      if (row != null &amp;&amp; row.length != 0) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>        int result = CellComparator.COMPARATOR.compareRows(cell, row, 0, row.length);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>        if (result &gt; 0) {<a name="line.352"></a>
+<span class="sourceLineNo">353</span>          break;<a name="line.353"></a>
+<span class="sourceLineNo">354</span>        } else if (result &lt; 0) {<a name="line.354"></a>
+<span class="sourceLineNo">355</span>          continue;<a name="line.355"></a>
+<span class="sourceLineNo">356</span>        }<a name="line.356"></a>
+<span class="sourceLineNo">357</span>      }<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      // collect stats<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      if (printStats) {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>        fileStats.collect(cell);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      }<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      // dump key value<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      if (printKey) {<a name="line.363"></a>
+<span class="sourceLineNo">364</span>        System.out.print("K: " + cell);<a name="line.364"></a>
+<span class="sourceLineNo">365</span>        if (printValue) {<a name="line.365"></a>
+<span class="sourceLineNo">366</span>          System.out.print(" V: "<a name="line.366"></a>
+<span class="sourceLineNo">367</span>              + Bytes.toStringBinary(cell.getValueArray(), cell.getValueOffset(),<a name="line.367"></a>
+<span class="sourceLineNo">368</span>                  cell.getValueLength()));<a name="line.368"></a>
+<span class="sourceLineNo">369</span>          int i = 0;<a name="line.369"></a>
+<span class="sourceLineNo">370</span>          List&lt;Tag&gt; tags = Tag.asList(cell.getTagsArray(), cell.getTagsOffset(),<a name="line.370"></a>
+<span class="sourceLineNo">371</span>              cell.getTagsLength());<a name="line.371"></a>
+<span class="sourceLineNo">372</span>          for (Tag tag : tags) {<a name="line.372"></a>
+<span class="sourceLineNo">373</span>            System.out.print(String.format(" T[%d]: %s", i++,<a name="line.373"></a>
+<span class="sourceLineNo">374</span>                Bytes.toStringBinary(tag.getBuffer(), tag.getTagOffset(), tag.getTagLength())));<a name="line.374"></a>
+<span class="sourceLineNo">375</span>          }<a name="line.375"></a>
 <span class="sourceLineNo">376</span>        }<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      }<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      // check if families are consistent<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      if (checkFamily) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>        String fam = Bytes.toString(cell.getFamilyArray(), cell.getFamilyOffset(),<a name="line.380"></a>
-<span class="sourceLineNo">381</span>            cell.getFamilyLength());<a name="line.381"></a>
-<span class="sourceLineNo">382</span>        if (!file.toString().contains(fam)) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>          System.err.println("WARNING, filename does not match kv family,"<a name="line.383"></a>
-<span class="sourceLineNo">384</span>              + "\n\tfilename -&gt; " + file + "\n\tkeyvalue -&gt; "<a name="line.384"></a>
+<span class="sourceLineNo">377</span>        System.out.println();<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      }<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      // check if rows are in order<a name="line.379"></a>
+<span class="sourceLineNo">380</span>      if (checkRow &amp;&amp; pCell != null) {<a name="line.380"></a>
+<span class="sourceLineNo">381</span>        if (CellComparator.COMPARATOR.compareRows(pCell, cell) &gt; 0) {<a name="line.381"></a>
+<span class="sourceLineNo">382</span>          System.err.println("WARNING, previous row is greater then"<a name="line.382"></a>
+<span class="sourceLineNo">383</span>              + " current row\n\tfilename -&gt; " + file + "\n\tprevious -&gt; "<a name="line.383"></a>
+<span class="sourceLineNo">384</span>              + CellUtil.getCellKeyAsString(pCell) + "\n\tcurrent  -&gt; "<a name="line.384"></a>
 <span class="sourceLineNo">385</span>              + CellUtil.getCellKeyAsString(cell));<a name="line.385"></a>
 <span class="sourceLineNo">386</span>        }<a name="line.386"></a>
-<span class="sourceLineNo">387</span>        if (pCell != null &amp;&amp; CellComparator.compareFamilies(pCell, cell) != 0) {<a name="line.387"></a>
-<span class="sourceLineNo">388</span>          System.err.println("WARNING, previous kv has different family"<a name="line.388"></a>
-<span class="sourceLineNo">389</span>              + " compared to current key\n\tfilename -&gt; " + file<a name="line.389"></a>
-<span class="sourceLineNo">390</span>              + "\n\tprevious -&gt; " + CellUtil.getCellKeyAsString(pCell)<a name="line.390"></a>
-<span class="sourceLineNo">391</span>              + "\n\tcurrent  -&gt; " + CellUtil.getCellKeyAsString(cell));<a name="line.391"></a>
-<span class="sourceLineNo">392</span>        }<a name="line.392"></a>
-<span class="sourceLineNo">393</span>      }<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      // check if mob files are missing.<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      if (checkMobIntegrity &amp;&amp; MobUtils.isMobReferenceCell(cell)) {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>        Tag tnTag = MobUtils.getTableNameTag(cell);<a name="line.396"></a>
-<span class="sourceLineNo">397</span>        if (tnTag == null) {<a name="line.397"></a>
-<span class="sourceLineNo">398</span>          System.err.println("ERROR, wrong tag format in mob reference cell "<a name="line.398"></a>
-<span class="sourceLineNo">399</span>            + CellUtil.getCellKeyAsString(cell));<a name="line.399"></a>
-<span class="sourceLineNo">400</span>        } else if (!MobUtils.hasValidMobRefCellValue(cell)) {<a name="line.400"></a>
-<span class="sourceLineNo">401</span>          System.err.println("ERROR, wrong value format in mob reference cell "<a name="line.401"></a>
-<span class="sourceLineNo">402</span>            + CellUtil.getCellKeyAsString(cell));<a name="line.402"></a>
-<span class="sourceLineNo">403</span>        } else {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>          TableName tn = TableName.valueOf(tnTag.getValue());<a name="line.404"></a>
-<span class="sourceLineNo">405</span>          String mobFileName = MobUtils.getMobFileName(cell);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>          boolean exist = mobFileExists(fs, tn, mobFileName,<a name="line.406"></a>
-<span class="sourceLineNo">407</span>            Bytes.toString(CellUtil.cloneFamily(cell)), foundMobFiles, missingMobFiles);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>          if (!exist) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>            // report error<a name="line.409"></a>
-<span class="sourceLineNo">410</span>            System.err.println("ERROR, the mob file [" + mobFileName<a name="line.410"></a>
-<span class="sourceLineNo">411</span>              + "] is missing referenced by cell " + CellUtil.getCellKeyAsString(cell));<a name="line.411"></a>
-<span class="sourceLineNo">412</span>          }<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        }<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      }<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      pCell = cell;<a name="line.415"></a>
-<span class="sourceLineNo">416</span>      ++count;<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    } while (scanner.next());<a name="line.417"></a>
-<span class="sourceLineNo">418</span>  }<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>  /**<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   * Checks whether the referenced mob file exists.<a name="line.421"></a>
-<span class="sourceLineNo">422</span>   */<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  private boolean mobFileExists(FileSystem fs, TableName tn, String mobFileName, String family,<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    Set&lt;String&gt; foundMobFiles, Set&lt;String&gt; missingMobFiles) throws IOException {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    if (foundMobFiles.contains(mobFileName)) {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      return true;<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    }<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    if (missingMobFiles.contains(mobFileName)) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      return false;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    }<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    String tableName = tn.getNameAsString();<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    List&lt;Path&gt; locations = mobFileLocations.get(tableName);<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    if (locations == null) {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      locations = new ArrayList&lt;Path&gt;(2);<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      locations.add(MobUtils.getMobFamilyPath(getConf(), tn, family));<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      locations.add(HFileArchiveUtil.getStoreArchivePath(getConf(), tn,<a name="line.436"></a>
-<span class="sourceLineNo">437</span>        MobUtils.getMobRegionInfo(tn).getEncodedName(), family));<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      mobFileLocations.put(tn.getNameAsString(), locations);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    }<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    boolean exist = false;<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    for (Path location : locations) {<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      Path mobFilePath = new Path(location, mobFileName);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      if (fs.exists(mobFilePath)) {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>        exist = true;<a name="line.444"></a>
-<span class="sourceLineNo">445</span>        break;<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>    if (exist) {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>      evictMobFilesIfNecessary(foundMobFiles, FOUND_MOB_FILES_CACHE_CAPACITY);<a name="line.449"></a>
-<span class="sourceLineNo">450</span>      foundMobFiles.add(mobFileName);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    } else {<a name="line.451"></a>
-<span class="sourceLineNo">452</span>      evictMobFilesIfNecessary(missingMobFiles, MISSING_MOB_FILES_CACHE_CAPACITY);<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      missingMobFiles.add(mobFileName);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    return exist;<a name="line.455"></a>
-<span class="sourceLineNo">456</span>  }<a name="line.456"></a>
-<span class="sourceLineNo">457</span><a name="line.457"></a>
-<span class="sourceLineNo">458</span>  /**<a name="line.458"></a>
-<span class="sourceLineNo">459</span>   * Evicts the cached mob files if the set is larger than the limit.<a name="line.459"></a>
-<span class="sourceLineNo">460</span>   */<a name="line.460"></a>
-<span class="sourceLineNo">461</span>  private void evictMobFilesIfNecessary(Set&lt;String&gt; mobFileNames, int limit) {<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    if (mobFileNames.size() &lt; limit) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      return;<a name="line.463"></a>
+<span class="sourceLineNo">387</span>      }<a name="line.387"></a>
+<span class="sourceLineNo">388</span>      // check if families are consistent<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      if (checkFamily) {<a name="line.389"></a>
+<span class="sourceLineNo">390</span>        String fam = Bytes.toString(cell.getFamilyArray(), cell.getFamilyOffset(),<a name="line.390"></a>
+<span class="sourceLineNo">391</span>            cell.getFamilyLength());<a name="line.391"></a>
+<span class="sourceLineNo">392</span>        if (!file.toString().contains(fam)) {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>          System.err.println("WARNING, filename does not match kv family,"<a name="line.393"></a>
+<span class="sourceLineNo">394</span>              + "\n\tfilename -&gt; " + file + "\n\tkeyvalue -&gt; "<a name="line.394"></a>
+<span class="sourceLineNo">395</span>              + CellUtil.getCellKeyAsString(cell));<a name="line.395"></a>
+<span class="sourceLineNo">396</span>        }<a name="line.396"></a>
+<span class="sourceLineNo">397</span>        if (pCell != null &amp;&amp; CellComparator.compareFamilies(pCell, cell) != 0) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>          System.err.println("WARNING, previous kv has different family"<a name="line.398"></a>
+<span class="sourceLineNo">399</span>              + " compared to current key\n\tfilename -&gt; " + file<a name="line.399"></a>
+<span class="sourceLineNo">400</span>              + "\n\tprevious -&gt; " + CellUtil.getCellKeyAsString(pCell)<a name="line.400"></a>
+<span class="sourceLineNo">401</span>              + "\n\tcurrent  -&gt; " + CellUtil.getCellKeyAsString(cell));<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        }<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      }<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      // check if mob files are missing.<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      if (checkMobIntegrity &amp;&amp; MobUtils.isMobReferenceCell(cell)) {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>        Tag tnTag = MobUtils.getTableNameTag(cell);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>        if (tnTag == null) {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>          System.err.println("ERROR, wrong tag format in mob reference cell "<a name="line.408"></a>
+<span class="sourceLineNo">409</span>            + CellUtil.getCellKeyAsString(cell));<a name="line.409"></a>
+<span class="sourceLineNo">410</span>        } else if (!MobUtils.hasValidMobRefCellValue(cell)) {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>          System.err.println("ERROR, wrong value format in mob reference cell "<a name="line.411"></a>
+<span class="sourceLineNo">412</span>            + CellUtil.getCellKeyAsString(cell));<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        } else {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>          TableName tn = TableName.valueOf(tnTag.getValue());<a name="line.414"></a>
+<span class="sourceLineNo">415</span>          String mobFileName = MobUtils.getMobFileName(cell);<a name="line.415"></a>
+<span class="sourceLineNo">416</span>          boolean exist = mobFileExists(fs, tn, mobFileName,<a name="line.416"></a>
+<span class="sourceLineNo">417</span>            Bytes.toString(CellUtil.cloneFamily(cell)), foundMobFiles, missingMobFiles);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>          if (!exist) {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>            // report error<a name="line.419"></a>
+<span class="sourceLineNo">420</span>            System.err.println("ERROR, the mob file [" + mobFileName<a name="line.420"></a>
+<span class="sourceLineNo">421</span>              + "] is missing referenced by cell " + CellUtil.getCellKeyAsString(cell));<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>      }<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      pCell = cell;<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      ++count;<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    } while (scanner.next());<a name="line.427"></a>
+<span class="sourceLineNo">428</span>  }<a name="line.428"></a>
+<span class="sourceLineNo">429</span><a name="line.429"></a>
+<span class="sourceLineNo">430</span>  /**<a name="line.430"></a>
+<span class="sourceLineNo">431</span>   * Checks whether the referenced mob file exists.<a name="line.431"></a>
+<span class="sourceLineNo">432</span>   */<a name="line.432"></a>
+<span class="sourceLineNo">433</span>  private boolean mobFileExists(FileSystem fs, TableName tn, String mobFileName, String family,<a name="line.433"></a>
+<span class="sourceLineNo">434</span>    Set&lt;String&gt; foundMobFiles, Set&lt;String&gt; missingMobFiles) throws IOException {<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    if (foundMobFiles.contains(mobFileName)) {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      return true;<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    }<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    if (missingMobFiles.contains(mobFileName)) {<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      return false;<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    String tableName = tn.getNameAsString();<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    List&lt;Path&gt; locations = mobFileLocations.get(tableName);<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    if (locations == null) {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      locations = new ArrayList&lt;Path&gt;(2);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      locations.add(MobUtils.getMobFamilyPath(getConf(), tn, family));<a name="line.445"></a>
+<span class="sourceLineNo">446</span>      locations.add(HFileArchiveUtil.getStoreArchivePath(getConf(), tn,<a name="line.446"></a>
+<span class="sourceLineNo">447</span>        MobUtils.getMobRegionInfo(tn).getEncodedName(), family));<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      mobFileLocations.put(tn.getNameAsString(), locations);<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    }<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    boolean exist = false;<a name="line.450"></a>
+<span class="sourceLineNo">451</span>    for (Path location : locations) {<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      Path mobFilePath = new Path(location, mobFileName);<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      if (fs.exists(mobFilePath)) {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>        exist = true;<a name="line.454"></a>
+<span class="sourceLineNo">455</span>        break;<a name="line.455"></a>
+<span class="sourceLineNo">456</span>      }<a name="line.456"></a>
+<span class="sourceLineNo">457</span>    }<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    if (exist) {<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      evictMobFilesIfNecessary(foundMobFiles, FOUND_MOB_FILES_CACHE_CAPACITY);<a name="line.459"></a>
+<span class="sourceLineNo">460</span>      foundMobFiles.add(mobFileName);<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    } else {<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      evictMobFilesIfNecessary(missingMobFiles, MISSING_MOB_FILES_CACHE_CAPACITY);<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      missingMobFiles.add(mobFileName);<a name="line.463"></a>
 <span class="sourceLineNo">464</span>    }<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    int index = 0;<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    int evict = limit / 2;<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    Iterator&lt;String&gt; fileNamesItr = mobFileNames.iterator();<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    while (index &lt; evict &amp;&amp; fileNamesItr.hasNext()) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      fileNamesItr.next();<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      fileNamesItr.remove();<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      index++;<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>  }<a name="line.473"></a>
-<span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span>  /**<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * Format a string of the form "k1=v1, k2=v2, ..." into separate lines<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * with a four-space indentation.<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   */<a name="line.478"></a>
-<span class="sourceLineNo">479</span>  private static String asSeparateLines(String keyValueStr) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    return keyValueStr.replaceAll(", ([a-zA-Z]+=)",<a name="line.480"></a>
-<span class="sourceLineNo">481</span>                                  ",\n" + FOUR_SPACES + "$1");<a name="line.481"></a>
-<span class="sourceLineNo">482</span>  }<a name="line.482"></a>
-<span class="sourceLineNo">483</span><a name="line.483"></a>
-<span class="sourceLineNo">484</span>  private void printMeta(HFile.Reader reader, Map&lt;byte[], byte[]&gt; fileInfo)<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      throws IOException {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    System.out.println("Block index size as per heapsize: "<a name="line.486"></a>
-<span class="sourceLineNo">487</span>        + reader.indexSize());<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    System.out.println(asSeparateLines(reader.toString()));<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    System.out.println("Trailer:\n    "<a name="line.489"></a>
-<span class="sourceLineNo">490</span>        + asSeparateLines(reader.getTrailer().toString()));<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    System.out.println("Fileinfo:");<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    for (Map.Entry&lt;byte[], byte[]&gt; e : fileInfo.entrySet()) {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      System.out.print(FOUR_SPACES + Bytes.toString(e.getKey()) + " = ");<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      if (Bytes.compareTo(e.getKey(), Bytes.toBytes("MAX_SEQ_ID_KEY")) == 0) {<a name="line.494"></a>
-<span class="sourceLineNo">495</span>        long seqid = Bytes.toLong(e.getValue());<a name="line.495"></a>
-<span class="sourceLineNo">496</span>        System.out.println(seqid);<a name="line.496"></a>
-<span class="sourceLineNo">497</span>      } else if (Bytes.compareTo(e.getKey(), Bytes.toBytes("TIMERANGE")) == 0) {<a name="line.497"></a>
-<span class="sourceLineNo">498</span>        TimeRangeTracker timeRangeTrac

<TRUNCATED>

[10/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomScanWithRange10000Test.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomScanWithRange10000Test.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomScanWithRange10000Test.html
index d15c216..bf5e0a0 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomScanWithRange10000Test.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomScanWithRange10000Test.html
@@ -101,9 +101,9 @@
 <span class="sourceLineNo">093</span><a name="line.93"></a>
 <span class="sourceLineNo">094</span>import com.google.common.base.Objects;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>import com.google.common.util.concurrent.ThreadFactoryBuilder;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import com.yammer.metrics.core.Histogram;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import com.yammer.metrics.stats.Snapshot;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import com.yammer.metrics.stats.UniformSample;<a name="line.98"></a>
+<span class="sourceLineNo">096</span>import com.codahale.metrics.Histogram;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import com.codahale.metrics.Snapshot;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import com.codahale.metrics.UniformReservoir;<a name="line.98"></a>
 <span class="sourceLineNo">099</span><a name="line.99"></a>
 <span class="sourceLineNo">100</span>/**<a name="line.100"></a>
 <span class="sourceLineNo">101</span> * Script used evaluating HBase performance and scalability.  Runs a HBase<a name="line.101"></a>
@@ -1062,8 +1062,8 @@
 <span class="sourceLineNo">1054</span>        this.connection = ConnectionFactory.createConnection(conf);<a name="line.1054"></a>
 <span class="sourceLineNo">1055</span>      }<a name="line.1055"></a>
 <span class="sourceLineNo">1056</span>      onStartup();<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1058"></a>
+<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1058"></a>
 <span class="sourceLineNo">1059</span>    }<a name="line.1059"></a>
 <span class="sourceLineNo">1060</span><a name="line.1060"></a>
 <span class="sourceLineNo">1061</span>    abstract void onStartup() throws IOException;<a name="line.1061"></a>
@@ -1129,21 +1129,21 @@
 <span class="sourceLineNo">1121</span>     */<a name="line.1121"></a>
 <span class="sourceLineNo">1122</span>    private void reportLatency() throws IOException {<a name="line.1122"></a>
 <span class="sourceLineNo">1123</span>      status.setStatus(testName + " latency log (microseconds), on " +<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>          latency.count() + " measures");<a name="line.1124"></a>
+<span class="sourceLineNo">1124</span>          latency.getCount() + " measures");<a name="line.1124"></a>
 <span class="sourceLineNo">1125</span>      reportHistogram(this.latency);<a name="line.1125"></a>
 <span class="sourceLineNo">1126</span>    }<a name="line.1126"></a>
 <span class="sourceLineNo">1127</span><a name="line.1127"></a>
 <span class="sourceLineNo">1128</span>    private void reportValueSize() throws IOException {<a name="line.1128"></a>
 <span class="sourceLineNo">1129</span>      status.setStatus(testName + " valueSize after " +<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>          valueSize.count() + " measures");<a name="line.1130"></a>
+<span class="sourceLineNo">1130</span>          valueSize.getCount() + " measures");<a name="line.1130"></a>
 <span class="sourceLineNo">1131</span>      reportHistogram(this.valueSize);<a name="line.1131"></a>
 <span class="sourceLineNo">1132</span>    }<a name="line.1132"></a>
 <span class="sourceLineNo">1133</span><a name="line.1133"></a>
 <span class="sourceLineNo">1134</span>    private void reportHistogram(final Histogram h) throws IOException {<a name="line.1134"></a>
 <span class="sourceLineNo">1135</span>      Snapshot sn = h.getSnapshot();<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + h.min());<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + h.mean());<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + h.stdDev());<a name="line.1138"></a>
+<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + sn.getMin());<a name="line.1136"></a>
+<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + sn.getMean());<a name="line.1137"></a>
+<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + sn.getStdDev());<a name="line.1138"></a>
 <span class="sourceLineNo">1139</span>      status.setStatus(testName + " 50th     = " + sn.getMedian());<a name="line.1139"></a>
 <span class="sourceLineNo">1140</span>      status.setStatus(testName + " 75th     = " + sn.get75thPercentile());<a name="line.1140"></a>
 <span class="sourceLineNo">1141</span>      status.setStatus(testName + " 95th     = " + sn.get95thPercentile());<a name="line.1141"></a>
@@ -1151,7 +1151,7 @@
 <span class="sourceLineNo">1143</span>      status.setStatus(testName + " 99.9th   = " + sn.get999thPercentile());<a name="line.1143"></a>
 <span class="sourceLineNo">1144</span>      status.setStatus(testName + " 99.99th  = " + sn.getValue(0.9999));<a name="line.1144"></a>
 <span class="sourceLineNo">1145</span>      status.setStatus(testName + " 99.999th = " + sn.getValue(0.99999));<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + h.max());<a name="line.1146"></a>
+<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + sn.getMax());<a name="line.1146"></a>
 <span class="sourceLineNo">1147</span>    }<a name="line.1147"></a>
 <span class="sourceLineNo">1148</span><a name="line.1148"></a>
 <span class="sourceLineNo">1149</span>    /**<a name="line.1149"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomScanWithRange1000Test.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomScanWithRange1000Test.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomScanWithRange1000Test.html
index d15c216..bf5e0a0 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomScanWithRange1000Test.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomScanWithRange1000Test.html
@@ -101,9 +101,9 @@
 <span class="sourceLineNo">093</span><a name="line.93"></a>
 <span class="sourceLineNo">094</span>import com.google.common.base.Objects;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>import com.google.common.util.concurrent.ThreadFactoryBuilder;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import com.yammer.metrics.core.Histogram;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import com.yammer.metrics.stats.Snapshot;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import com.yammer.metrics.stats.UniformSample;<a name="line.98"></a>
+<span class="sourceLineNo">096</span>import com.codahale.metrics.Histogram;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import com.codahale.metrics.Snapshot;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import com.codahale.metrics.UniformReservoir;<a name="line.98"></a>
 <span class="sourceLineNo">099</span><a name="line.99"></a>
 <span class="sourceLineNo">100</span>/**<a name="line.100"></a>
 <span class="sourceLineNo">101</span> * Script used evaluating HBase performance and scalability.  Runs a HBase<a name="line.101"></a>
@@ -1062,8 +1062,8 @@
 <span class="sourceLineNo">1054</span>        this.connection = ConnectionFactory.createConnection(conf);<a name="line.1054"></a>
 <span class="sourceLineNo">1055</span>      }<a name="line.1055"></a>
 <span class="sourceLineNo">1056</span>      onStartup();<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1058"></a>
+<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1058"></a>
 <span class="sourceLineNo">1059</span>    }<a name="line.1059"></a>
 <span class="sourceLineNo">1060</span><a name="line.1060"></a>
 <span class="sourceLineNo">1061</span>    abstract void onStartup() throws IOException;<a name="line.1061"></a>
@@ -1129,21 +1129,21 @@
 <span class="sourceLineNo">1121</span>     */<a name="line.1121"></a>
 <span class="sourceLineNo">1122</span>    private void reportLatency() throws IOException {<a name="line.1122"></a>
 <span class="sourceLineNo">1123</span>      status.setStatus(testName + " latency log (microseconds), on " +<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>          latency.count() + " measures");<a name="line.1124"></a>
+<span class="sourceLineNo">1124</span>          latency.getCount() + " measures");<a name="line.1124"></a>
 <span class="sourceLineNo">1125</span>      reportHistogram(this.latency);<a name="line.1125"></a>
 <span class="sourceLineNo">1126</span>    }<a name="line.1126"></a>
 <span class="sourceLineNo">1127</span><a name="line.1127"></a>
 <span class="sourceLineNo">1128</span>    private void reportValueSize() throws IOException {<a name="line.1128"></a>
 <span class="sourceLineNo">1129</span>      status.setStatus(testName + " valueSize after " +<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>          valueSize.count() + " measures");<a name="line.1130"></a>
+<span class="sourceLineNo">1130</span>          valueSize.getCount() + " measures");<a name="line.1130"></a>
 <span class="sourceLineNo">1131</span>      reportHistogram(this.valueSize);<a name="line.1131"></a>
 <span class="sourceLineNo">1132</span>    }<a name="line.1132"></a>
 <span class="sourceLineNo">1133</span><a name="line.1133"></a>
 <span class="sourceLineNo">1134</span>    private void reportHistogram(final Histogram h) throws IOException {<a name="line.1134"></a>
 <span class="sourceLineNo">1135</span>      Snapshot sn = h.getSnapshot();<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + h.min());<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + h.mean());<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + h.stdDev());<a name="line.1138"></a>
+<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + sn.getMin());<a name="line.1136"></a>
+<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + sn.getMean());<a name="line.1137"></a>
+<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + sn.getStdDev());<a name="line.1138"></a>
 <span class="sourceLineNo">1139</span>      status.setStatus(testName + " 50th     = " + sn.getMedian());<a name="line.1139"></a>
 <span class="sourceLineNo">1140</span>      status.setStatus(testName + " 75th     = " + sn.get75thPercentile());<a name="line.1140"></a>
 <span class="sourceLineNo">1141</span>      status.setStatus(testName + " 95th     = " + sn.get95thPercentile());<a name="line.1141"></a>
@@ -1151,7 +1151,7 @@
 <span class="sourceLineNo">1143</span>      status.setStatus(testName + " 99.9th   = " + sn.get999thPercentile());<a name="line.1143"></a>
 <span class="sourceLineNo">1144</span>      status.setStatus(testName + " 99.99th  = " + sn.getValue(0.9999));<a name="line.1144"></a>
 <span class="sourceLineNo">1145</span>      status.setStatus(testName + " 99.999th = " + sn.getValue(0.99999));<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + h.max());<a name="line.1146"></a>
+<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + sn.getMax());<a name="line.1146"></a>
 <span class="sourceLineNo">1147</span>    }<a name="line.1147"></a>
 <span class="sourceLineNo">1148</span><a name="line.1148"></a>
 <span class="sourceLineNo">1149</span>    /**<a name="line.1149"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomScanWithRange100Test.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomScanWithRange100Test.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomScanWithRange100Test.html
index d15c216..bf5e0a0 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomScanWithRange100Test.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomScanWithRange100Test.html
@@ -101,9 +101,9 @@
 <span class="sourceLineNo">093</span><a name="line.93"></a>
 <span class="sourceLineNo">094</span>import com.google.common.base.Objects;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>import com.google.common.util.concurrent.ThreadFactoryBuilder;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import com.yammer.metrics.core.Histogram;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import com.yammer.metrics.stats.Snapshot;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import com.yammer.metrics.stats.UniformSample;<a name="line.98"></a>
+<span class="sourceLineNo">096</span>import com.codahale.metrics.Histogram;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import com.codahale.metrics.Snapshot;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import com.codahale.metrics.UniformReservoir;<a name="line.98"></a>
 <span class="sourceLineNo">099</span><a name="line.99"></a>
 <span class="sourceLineNo">100</span>/**<a name="line.100"></a>
 <span class="sourceLineNo">101</span> * Script used evaluating HBase performance and scalability.  Runs a HBase<a name="line.101"></a>
@@ -1062,8 +1062,8 @@
 <span class="sourceLineNo">1054</span>        this.connection = ConnectionFactory.createConnection(conf);<a name="line.1054"></a>
 <span class="sourceLineNo">1055</span>      }<a name="line.1055"></a>
 <span class="sourceLineNo">1056</span>      onStartup();<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1058"></a>
+<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1058"></a>
 <span class="sourceLineNo">1059</span>    }<a name="line.1059"></a>
 <span class="sourceLineNo">1060</span><a name="line.1060"></a>
 <span class="sourceLineNo">1061</span>    abstract void onStartup() throws IOException;<a name="line.1061"></a>
@@ -1129,21 +1129,21 @@
 <span class="sourceLineNo">1121</span>     */<a name="line.1121"></a>
 <span class="sourceLineNo">1122</span>    private void reportLatency() throws IOException {<a name="line.1122"></a>
 <span class="sourceLineNo">1123</span>      status.setStatus(testName + " latency log (microseconds), on " +<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>          latency.count() + " measures");<a name="line.1124"></a>
+<span class="sourceLineNo">1124</span>          latency.getCount() + " measures");<a name="line.1124"></a>
 <span class="sourceLineNo">1125</span>      reportHistogram(this.latency);<a name="line.1125"></a>
 <span class="sourceLineNo">1126</span>    }<a name="line.1126"></a>
 <span class="sourceLineNo">1127</span><a name="line.1127"></a>
 <span class="sourceLineNo">1128</span>    private void reportValueSize() throws IOException {<a name="line.1128"></a>
 <span class="sourceLineNo">1129</span>      status.setStatus(testName + " valueSize after " +<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>          valueSize.count() + " measures");<a name="line.1130"></a>
+<span class="sourceLineNo">1130</span>          valueSize.getCount() + " measures");<a name="line.1130"></a>
 <span class="sourceLineNo">1131</span>      reportHistogram(this.valueSize);<a name="line.1131"></a>
 <span class="sourceLineNo">1132</span>    }<a name="line.1132"></a>
 <span class="sourceLineNo">1133</span><a name="line.1133"></a>
 <span class="sourceLineNo">1134</span>    private void reportHistogram(final Histogram h) throws IOException {<a name="line.1134"></a>
 <span class="sourceLineNo">1135</span>      Snapshot sn = h.getSnapshot();<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + h.min());<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + h.mean());<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + h.stdDev());<a name="line.1138"></a>
+<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + sn.getMin());<a name="line.1136"></a>
+<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + sn.getMean());<a name="line.1137"></a>
+<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + sn.getStdDev());<a name="line.1138"></a>
 <span class="sourceLineNo">1139</span>      status.setStatus(testName + " 50th     = " + sn.getMedian());<a name="line.1139"></a>
 <span class="sourceLineNo">1140</span>      status.setStatus(testName + " 75th     = " + sn.get75thPercentile());<a name="line.1140"></a>
 <span class="sourceLineNo">1141</span>      status.setStatus(testName + " 95th     = " + sn.get95thPercentile());<a name="line.1141"></a>
@@ -1151,7 +1151,7 @@
 <span class="sourceLineNo">1143</span>      status.setStatus(testName + " 99.9th   = " + sn.get999thPercentile());<a name="line.1143"></a>
 <span class="sourceLineNo">1144</span>      status.setStatus(testName + " 99.99th  = " + sn.getValue(0.9999));<a name="line.1144"></a>
 <span class="sourceLineNo">1145</span>      status.setStatus(testName + " 99.999th = " + sn.getValue(0.99999));<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + h.max());<a name="line.1146"></a>
+<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + sn.getMax());<a name="line.1146"></a>
 <span class="sourceLineNo">1147</span>    }<a name="line.1147"></a>
 <span class="sourceLineNo">1148</span><a name="line.1148"></a>
 <span class="sourceLineNo">1149</span>    /**<a name="line.1149"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomScanWithRange10Test.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomScanWithRange10Test.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomScanWithRange10Test.html
index d15c216..bf5e0a0 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomScanWithRange10Test.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomScanWithRange10Test.html
@@ -101,9 +101,9 @@
 <span class="sourceLineNo">093</span><a name="line.93"></a>
 <span class="sourceLineNo">094</span>import com.google.common.base.Objects;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>import com.google.common.util.concurrent.ThreadFactoryBuilder;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import com.yammer.metrics.core.Histogram;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import com.yammer.metrics.stats.Snapshot;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import com.yammer.metrics.stats.UniformSample;<a name="line.98"></a>
+<span class="sourceLineNo">096</span>import com.codahale.metrics.Histogram;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import com.codahale.metrics.Snapshot;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import com.codahale.metrics.UniformReservoir;<a name="line.98"></a>
 <span class="sourceLineNo">099</span><a name="line.99"></a>
 <span class="sourceLineNo">100</span>/**<a name="line.100"></a>
 <span class="sourceLineNo">101</span> * Script used evaluating HBase performance and scalability.  Runs a HBase<a name="line.101"></a>
@@ -1062,8 +1062,8 @@
 <span class="sourceLineNo">1054</span>        this.connection = ConnectionFactory.createConnection(conf);<a name="line.1054"></a>
 <span class="sourceLineNo">1055</span>      }<a name="line.1055"></a>
 <span class="sourceLineNo">1056</span>      onStartup();<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1058"></a>
+<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1058"></a>
 <span class="sourceLineNo">1059</span>    }<a name="line.1059"></a>
 <span class="sourceLineNo">1060</span><a name="line.1060"></a>
 <span class="sourceLineNo">1061</span>    abstract void onStartup() throws IOException;<a name="line.1061"></a>
@@ -1129,21 +1129,21 @@
 <span class="sourceLineNo">1121</span>     */<a name="line.1121"></a>
 <span class="sourceLineNo">1122</span>    private void reportLatency() throws IOException {<a name="line.1122"></a>
 <span class="sourceLineNo">1123</span>      status.setStatus(testName + " latency log (microseconds), on " +<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>          latency.count() + " measures");<a name="line.1124"></a>
+<span class="sourceLineNo">1124</span>          latency.getCount() + " measures");<a name="line.1124"></a>
 <span class="sourceLineNo">1125</span>      reportHistogram(this.latency);<a name="line.1125"></a>
 <span class="sourceLineNo">1126</span>    }<a name="line.1126"></a>
 <span class="sourceLineNo">1127</span><a name="line.1127"></a>
 <span class="sourceLineNo">1128</span>    private void reportValueSize() throws IOException {<a name="line.1128"></a>
 <span class="sourceLineNo">1129</span>      status.setStatus(testName + " valueSize after " +<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>          valueSize.count() + " measures");<a name="line.1130"></a>
+<span class="sourceLineNo">1130</span>          valueSize.getCount() + " measures");<a name="line.1130"></a>
 <span class="sourceLineNo">1131</span>      reportHistogram(this.valueSize);<a name="line.1131"></a>
 <span class="sourceLineNo">1132</span>    }<a name="line.1132"></a>
 <span class="sourceLineNo">1133</span><a name="line.1133"></a>
 <span class="sourceLineNo">1134</span>    private void reportHistogram(final Histogram h) throws IOException {<a name="line.1134"></a>
 <span class="sourceLineNo">1135</span>      Snapshot sn = h.getSnapshot();<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + h.min());<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + h.mean());<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + h.stdDev());<a name="line.1138"></a>
+<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + sn.getMin());<a name="line.1136"></a>
+<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + sn.getMean());<a name="line.1137"></a>
+<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + sn.getStdDev());<a name="line.1138"></a>
 <span class="sourceLineNo">1139</span>      status.setStatus(testName + " 50th     = " + sn.getMedian());<a name="line.1139"></a>
 <span class="sourceLineNo">1140</span>      status.setStatus(testName + " 75th     = " + sn.get75thPercentile());<a name="line.1140"></a>
 <span class="sourceLineNo">1141</span>      status.setStatus(testName + " 95th     = " + sn.get95thPercentile());<a name="line.1141"></a>
@@ -1151,7 +1151,7 @@
 <span class="sourceLineNo">1143</span>      status.setStatus(testName + " 99.9th   = " + sn.get999thPercentile());<a name="line.1143"></a>
 <span class="sourceLineNo">1144</span>      status.setStatus(testName + " 99.99th  = " + sn.getValue(0.9999));<a name="line.1144"></a>
 <span class="sourceLineNo">1145</span>      status.setStatus(testName + " 99.999th = " + sn.getValue(0.99999));<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + h.max());<a name="line.1146"></a>
+<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + sn.getMax());<a name="line.1146"></a>
 <span class="sourceLineNo">1147</span>    }<a name="line.1147"></a>
 <span class="sourceLineNo">1148</span><a name="line.1148"></a>
 <span class="sourceLineNo">1149</span>    /**<a name="line.1149"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomScanWithRangeTest.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomScanWithRangeTest.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomScanWithRangeTest.html
index d15c216..bf5e0a0 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomScanWithRangeTest.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomScanWithRangeTest.html
@@ -101,9 +101,9 @@
 <span class="sourceLineNo">093</span><a name="line.93"></a>
 <span class="sourceLineNo">094</span>import com.google.common.base.Objects;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>import com.google.common.util.concurrent.ThreadFactoryBuilder;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import com.yammer.metrics.core.Histogram;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import com.yammer.metrics.stats.Snapshot;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import com.yammer.metrics.stats.UniformSample;<a name="line.98"></a>
+<span class="sourceLineNo">096</span>import com.codahale.metrics.Histogram;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import com.codahale.metrics.Snapshot;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import com.codahale.metrics.UniformReservoir;<a name="line.98"></a>
 <span class="sourceLineNo">099</span><a name="line.99"></a>
 <span class="sourceLineNo">100</span>/**<a name="line.100"></a>
 <span class="sourceLineNo">101</span> * Script used evaluating HBase performance and scalability.  Runs a HBase<a name="line.101"></a>
@@ -1062,8 +1062,8 @@
 <span class="sourceLineNo">1054</span>        this.connection = ConnectionFactory.createConnection(conf);<a name="line.1054"></a>
 <span class="sourceLineNo">1055</span>      }<a name="line.1055"></a>
 <span class="sourceLineNo">1056</span>      onStartup();<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1058"></a>
+<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1058"></a>
 <span class="sourceLineNo">1059</span>    }<a name="line.1059"></a>
 <span class="sourceLineNo">1060</span><a name="line.1060"></a>
 <span class="sourceLineNo">1061</span>    abstract void onStartup() throws IOException;<a name="line.1061"></a>
@@ -1129,21 +1129,21 @@
 <span class="sourceLineNo">1121</span>     */<a name="line.1121"></a>
 <span class="sourceLineNo">1122</span>    private void reportLatency() throws IOException {<a name="line.1122"></a>
 <span class="sourceLineNo">1123</span>      status.setStatus(testName + " latency log (microseconds), on " +<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>          latency.count() + " measures");<a name="line.1124"></a>
+<span class="sourceLineNo">1124</span>          latency.getCount() + " measures");<a name="line.1124"></a>
 <span class="sourceLineNo">1125</span>      reportHistogram(this.latency);<a name="line.1125"></a>
 <span class="sourceLineNo">1126</span>    }<a name="line.1126"></a>
 <span class="sourceLineNo">1127</span><a name="line.1127"></a>
 <span class="sourceLineNo">1128</span>    private void reportValueSize() throws IOException {<a name="line.1128"></a>
 <span class="sourceLineNo">1129</span>      status.setStatus(testName + " valueSize after " +<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>          valueSize.count() + " measures");<a name="line.1130"></a>
+<span class="sourceLineNo">1130</span>          valueSize.getCount() + " measures");<a name="line.1130"></a>
 <span class="sourceLineNo">1131</span>      reportHistogram(this.valueSize);<a name="line.1131"></a>
 <span class="sourceLineNo">1132</span>    }<a name="line.1132"></a>
 <span class="sourceLineNo">1133</span><a name="line.1133"></a>
 <span class="sourceLineNo">1134</span>    private void reportHistogram(final Histogram h) throws IOException {<a name="line.1134"></a>
 <span class="sourceLineNo">1135</span>      Snapshot sn = h.getSnapshot();<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + h.min());<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + h.mean());<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + h.stdDev());<a name="line.1138"></a>
+<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + sn.getMin());<a name="line.1136"></a>
+<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + sn.getMean());<a name="line.1137"></a>
+<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + sn.getStdDev());<a name="line.1138"></a>
 <span class="sourceLineNo">1139</span>      status.setStatus(testName + " 50th     = " + sn.getMedian());<a name="line.1139"></a>
 <span class="sourceLineNo">1140</span>      status.setStatus(testName + " 75th     = " + sn.get75thPercentile());<a name="line.1140"></a>
 <span class="sourceLineNo">1141</span>      status.setStatus(testName + " 95th     = " + sn.get95thPercentile());<a name="line.1141"></a>
@@ -1151,7 +1151,7 @@
 <span class="sourceLineNo">1143</span>      status.setStatus(testName + " 99.9th   = " + sn.get999thPercentile());<a name="line.1143"></a>
 <span class="sourceLineNo">1144</span>      status.setStatus(testName + " 99.99th  = " + sn.getValue(0.9999));<a name="line.1144"></a>
 <span class="sourceLineNo">1145</span>      status.setStatus(testName + " 99.999th = " + sn.getValue(0.99999));<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + h.max());<a name="line.1146"></a>
+<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + sn.getMax());<a name="line.1146"></a>
 <span class="sourceLineNo">1147</span>    }<a name="line.1147"></a>
 <span class="sourceLineNo">1148</span><a name="line.1148"></a>
 <span class="sourceLineNo">1149</span>    /**<a name="line.1149"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomSeekScanTest.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomSeekScanTest.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomSeekScanTest.html
index d15c216..bf5e0a0 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomSeekScanTest.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomSeekScanTest.html
@@ -101,9 +101,9 @@
 <span class="sourceLineNo">093</span><a name="line.93"></a>
 <span class="sourceLineNo">094</span>import com.google.common.base.Objects;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>import com.google.common.util.concurrent.ThreadFactoryBuilder;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import com.yammer.metrics.core.Histogram;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import com.yammer.metrics.stats.Snapshot;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import com.yammer.metrics.stats.UniformSample;<a name="line.98"></a>
+<span class="sourceLineNo">096</span>import com.codahale.metrics.Histogram;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import com.codahale.metrics.Snapshot;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import com.codahale.metrics.UniformReservoir;<a name="line.98"></a>
 <span class="sourceLineNo">099</span><a name="line.99"></a>
 <span class="sourceLineNo">100</span>/**<a name="line.100"></a>
 <span class="sourceLineNo">101</span> * Script used evaluating HBase performance and scalability.  Runs a HBase<a name="line.101"></a>
@@ -1062,8 +1062,8 @@
 <span class="sourceLineNo">1054</span>        this.connection = ConnectionFactory.createConnection(conf);<a name="line.1054"></a>
 <span class="sourceLineNo">1055</span>      }<a name="line.1055"></a>
 <span class="sourceLineNo">1056</span>      onStartup();<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1058"></a>
+<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1058"></a>
 <span class="sourceLineNo">1059</span>    }<a name="line.1059"></a>
 <span class="sourceLineNo">1060</span><a name="line.1060"></a>
 <span class="sourceLineNo">1061</span>    abstract void onStartup() throws IOException;<a name="line.1061"></a>
@@ -1129,21 +1129,21 @@
 <span class="sourceLineNo">1121</span>     */<a name="line.1121"></a>
 <span class="sourceLineNo">1122</span>    private void reportLatency() throws IOException {<a name="line.1122"></a>
 <span class="sourceLineNo">1123</span>      status.setStatus(testName + " latency log (microseconds), on " +<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>          latency.count() + " measures");<a name="line.1124"></a>
+<span class="sourceLineNo">1124</span>          latency.getCount() + " measures");<a name="line.1124"></a>
 <span class="sourceLineNo">1125</span>      reportHistogram(this.latency);<a name="line.1125"></a>
 <span class="sourceLineNo">1126</span>    }<a name="line.1126"></a>
 <span class="sourceLineNo">1127</span><a name="line.1127"></a>
 <span class="sourceLineNo">1128</span>    private void reportValueSize() throws IOException {<a name="line.1128"></a>
 <span class="sourceLineNo">1129</span>      status.setStatus(testName + " valueSize after " +<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>          valueSize.count() + " measures");<a name="line.1130"></a>
+<span class="sourceLineNo">1130</span>          valueSize.getCount() + " measures");<a name="line.1130"></a>
 <span class="sourceLineNo">1131</span>      reportHistogram(this.valueSize);<a name="line.1131"></a>
 <span class="sourceLineNo">1132</span>    }<a name="line.1132"></a>
 <span class="sourceLineNo">1133</span><a name="line.1133"></a>
 <span class="sourceLineNo">1134</span>    private void reportHistogram(final Histogram h) throws IOException {<a name="line.1134"></a>
 <span class="sourceLineNo">1135</span>      Snapshot sn = h.getSnapshot();<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + h.min());<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + h.mean());<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + h.stdDev());<a name="line.1138"></a>
+<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + sn.getMin());<a name="line.1136"></a>
+<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + sn.getMean());<a name="line.1137"></a>
+<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + sn.getStdDev());<a name="line.1138"></a>
 <span class="sourceLineNo">1139</span>      status.setStatus(testName + " 50th     = " + sn.getMedian());<a name="line.1139"></a>
 <span class="sourceLineNo">1140</span>      status.setStatus(testName + " 75th     = " + sn.get75thPercentile());<a name="line.1140"></a>
 <span class="sourceLineNo">1141</span>      status.setStatus(testName + " 95th     = " + sn.get95thPercentile());<a name="line.1141"></a>
@@ -1151,7 +1151,7 @@
 <span class="sourceLineNo">1143</span>      status.setStatus(testName + " 99.9th   = " + sn.get999thPercentile());<a name="line.1143"></a>
 <span class="sourceLineNo">1144</span>      status.setStatus(testName + " 99.99th  = " + sn.getValue(0.9999));<a name="line.1144"></a>
 <span class="sourceLineNo">1145</span>      status.setStatus(testName + " 99.999th = " + sn.getValue(0.99999));<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + h.max());<a name="line.1146"></a>
+<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + sn.getMax());<a name="line.1146"></a>
 <span class="sourceLineNo">1147</span>    }<a name="line.1147"></a>
 <span class="sourceLineNo">1148</span><a name="line.1148"></a>
 <span class="sourceLineNo">1149</span>    /**<a name="line.1149"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomWriteTest.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomWriteTest.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomWriteTest.html
index d15c216..bf5e0a0 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomWriteTest.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomWriteTest.html
@@ -101,9 +101,9 @@
 <span class="sourceLineNo">093</span><a name="line.93"></a>
 <span class="sourceLineNo">094</span>import com.google.common.base.Objects;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>import com.google.common.util.concurrent.ThreadFactoryBuilder;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import com.yammer.metrics.core.Histogram;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import com.yammer.metrics.stats.Snapshot;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import com.yammer.metrics.stats.UniformSample;<a name="line.98"></a>
+<span class="sourceLineNo">096</span>import com.codahale.metrics.Histogram;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import com.codahale.metrics.Snapshot;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import com.codahale.metrics.UniformReservoir;<a name="line.98"></a>
 <span class="sourceLineNo">099</span><a name="line.99"></a>
 <span class="sourceLineNo">100</span>/**<a name="line.100"></a>
 <span class="sourceLineNo">101</span> * Script used evaluating HBase performance and scalability.  Runs a HBase<a name="line.101"></a>
@@ -1062,8 +1062,8 @@
 <span class="sourceLineNo">1054</span>        this.connection = ConnectionFactory.createConnection(conf);<a name="line.1054"></a>
 <span class="sourceLineNo">1055</span>      }<a name="line.1055"></a>
 <span class="sourceLineNo">1056</span>      onStartup();<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1058"></a>
+<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1058"></a>
 <span class="sourceLineNo">1059</span>    }<a name="line.1059"></a>
 <span class="sourceLineNo">1060</span><a name="line.1060"></a>
 <span class="sourceLineNo">1061</span>    abstract void onStartup() throws IOException;<a name="line.1061"></a>
@@ -1129,21 +1129,21 @@
 <span class="sourceLineNo">1121</span>     */<a name="line.1121"></a>
 <span class="sourceLineNo">1122</span>    private void reportLatency() throws IOException {<a name="line.1122"></a>
 <span class="sourceLineNo">1123</span>      status.setStatus(testName + " latency log (microseconds), on " +<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>          latency.count() + " measures");<a name="line.1124"></a>
+<span class="sourceLineNo">1124</span>          latency.getCount() + " measures");<a name="line.1124"></a>
 <span class="sourceLineNo">1125</span>      reportHistogram(this.latency);<a name="line.1125"></a>
 <span class="sourceLineNo">1126</span>    }<a name="line.1126"></a>
 <span class="sourceLineNo">1127</span><a name="line.1127"></a>
 <span class="sourceLineNo">1128</span>    private void reportValueSize() throws IOException {<a name="line.1128"></a>
 <span class="sourceLineNo">1129</span>      status.setStatus(testName + " valueSize after " +<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>          valueSize.count() + " measures");<a name="line.1130"></a>
+<span class="sourceLineNo">1130</span>          valueSize.getCount() + " measures");<a name="line.1130"></a>
 <span class="sourceLineNo">1131</span>      reportHistogram(this.valueSize);<a name="line.1131"></a>
 <span class="sourceLineNo">1132</span>    }<a name="line.1132"></a>
 <span class="sourceLineNo">1133</span><a name="line.1133"></a>
 <span class="sourceLineNo">1134</span>    private void reportHistogram(final Histogram h) throws IOException {<a name="line.1134"></a>
 <span class="sourceLineNo">1135</span>      Snapshot sn = h.getSnapshot();<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + h.min());<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + h.mean());<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + h.stdDev());<a name="line.1138"></a>
+<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + sn.getMin());<a name="line.1136"></a>
+<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + sn.getMean());<a name="line.1137"></a>
+<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + sn.getStdDev());<a name="line.1138"></a>
 <span class="sourceLineNo">1139</span>      status.setStatus(testName + " 50th     = " + sn.getMedian());<a name="line.1139"></a>
 <span class="sourceLineNo">1140</span>      status.setStatus(testName + " 75th     = " + sn.get75thPercentile());<a name="line.1140"></a>
 <span class="sourceLineNo">1141</span>      status.setStatus(testName + " 95th     = " + sn.get95thPercentile());<a name="line.1141"></a>
@@ -1151,7 +1151,7 @@
 <span class="sourceLineNo">1143</span>      status.setStatus(testName + " 99.9th   = " + sn.get999thPercentile());<a name="line.1143"></a>
 <span class="sourceLineNo">1144</span>      status.setStatus(testName + " 99.99th  = " + sn.getValue(0.9999));<a name="line.1144"></a>
 <span class="sourceLineNo">1145</span>      status.setStatus(testName + " 99.999th = " + sn.getValue(0.99999));<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + h.max());<a name="line.1146"></a>
+<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + sn.getMax());<a name="line.1146"></a>
 <span class="sourceLineNo">1147</span>    }<a name="line.1147"></a>
 <span class="sourceLineNo">1148</span><a name="line.1148"></a>
 <span class="sourceLineNo">1149</span>    /**<a name="line.1149"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RunResult.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RunResult.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RunResult.html
index d15c216..bf5e0a0 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RunResult.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RunResult.html
@@ -101,9 +101,9 @@
 <span class="sourceLineNo">093</span><a name="line.93"></a>
 <span class="sourceLineNo">094</span>import com.google.common.base.Objects;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>import com.google.common.util.concurrent.ThreadFactoryBuilder;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import com.yammer.metrics.core.Histogram;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import com.yammer.metrics.stats.Snapshot;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import com.yammer.metrics.stats.UniformSample;<a name="line.98"></a>
+<span class="sourceLineNo">096</span>import com.codahale.metrics.Histogram;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import com.codahale.metrics.Snapshot;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import com.codahale.metrics.UniformReservoir;<a name="line.98"></a>
 <span class="sourceLineNo">099</span><a name="line.99"></a>
 <span class="sourceLineNo">100</span>/**<a name="line.100"></a>
 <span class="sourceLineNo">101</span> * Script used evaluating HBase performance and scalability.  Runs a HBase<a name="line.101"></a>
@@ -1062,8 +1062,8 @@
 <span class="sourceLineNo">1054</span>        this.connection = ConnectionFactory.createConnection(conf);<a name="line.1054"></a>
 <span class="sourceLineNo">1055</span>      }<a name="line.1055"></a>
 <span class="sourceLineNo">1056</span>      onStartup();<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1058"></a>
+<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1058"></a>
 <span class="sourceLineNo">1059</span>    }<a name="line.1059"></a>
 <span class="sourceLineNo">1060</span><a name="line.1060"></a>
 <span class="sourceLineNo">1061</span>    abstract void onStartup() throws IOException;<a name="line.1061"></a>
@@ -1129,21 +1129,21 @@
 <span class="sourceLineNo">1121</span>     */<a name="line.1121"></a>
 <span class="sourceLineNo">1122</span>    private void reportLatency() throws IOException {<a name="line.1122"></a>
 <span class="sourceLineNo">1123</span>      status.setStatus(testName + " latency log (microseconds), on " +<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>          latency.count() + " measures");<a name="line.1124"></a>
+<span class="sourceLineNo">1124</span>          latency.getCount() + " measures");<a name="line.1124"></a>
 <span class="sourceLineNo">1125</span>      reportHistogram(this.latency);<a name="line.1125"></a>
 <span class="sourceLineNo">1126</span>    }<a name="line.1126"></a>
 <span class="sourceLineNo">1127</span><a name="line.1127"></a>
 <span class="sourceLineNo">1128</span>    private void reportValueSize() throws IOException {<a name="line.1128"></a>
 <span class="sourceLineNo">1129</span>      status.setStatus(testName + " valueSize after " +<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>          valueSize.count() + " measures");<a name="line.1130"></a>
+<span class="sourceLineNo">1130</span>          valueSize.getCount() + " measures");<a name="line.1130"></a>
 <span class="sourceLineNo">1131</span>      reportHistogram(this.valueSize);<a name="line.1131"></a>
 <span class="sourceLineNo">1132</span>    }<a name="line.1132"></a>
 <span class="sourceLineNo">1133</span><a name="line.1133"></a>
 <span class="sourceLineNo">1134</span>    private void reportHistogram(final Histogram h) throws IOException {<a name="line.1134"></a>
 <span class="sourceLineNo">1135</span>      Snapshot sn = h.getSnapshot();<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + h.min());<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + h.mean());<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + h.stdDev());<a name="line.1138"></a>
+<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + sn.getMin());<a name="line.1136"></a>
+<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + sn.getMean());<a name="line.1137"></a>
+<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + sn.getStdDev());<a name="line.1138"></a>
 <span class="sourceLineNo">1139</span>      status.setStatus(testName + " 50th     = " + sn.getMedian());<a name="line.1139"></a>
 <span class="sourceLineNo">1140</span>      status.setStatus(testName + " 75th     = " + sn.get75thPercentile());<a name="line.1140"></a>
 <span class="sourceLineNo">1141</span>      status.setStatus(testName + " 95th     = " + sn.get95thPercentile());<a name="line.1141"></a>
@@ -1151,7 +1151,7 @@
 <span class="sourceLineNo">1143</span>      status.setStatus(testName + " 99.9th   = " + sn.get999thPercentile());<a name="line.1143"></a>
 <span class="sourceLineNo">1144</span>      status.setStatus(testName + " 99.99th  = " + sn.getValue(0.9999));<a name="line.1144"></a>
 <span class="sourceLineNo">1145</span>      status.setStatus(testName + " 99.999th = " + sn.getValue(0.99999));<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + h.max());<a name="line.1146"></a>
+<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + sn.getMax());<a name="line.1146"></a>
 <span class="sourceLineNo">1147</span>    }<a name="line.1147"></a>
 <span class="sourceLineNo">1148</span><a name="line.1148"></a>
 <span class="sourceLineNo">1149</span>    /**<a name="line.1149"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.ScanTest.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.ScanTest.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.ScanTest.html
index d15c216..bf5e0a0 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.ScanTest.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.ScanTest.html
@@ -101,9 +101,9 @@
 <span class="sourceLineNo">093</span><a name="line.93"></a>
 <span class="sourceLineNo">094</span>import com.google.common.base.Objects;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>import com.google.common.util.concurrent.ThreadFactoryBuilder;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import com.yammer.metrics.core.Histogram;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import com.yammer.metrics.stats.Snapshot;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import com.yammer.metrics.stats.UniformSample;<a name="line.98"></a>
+<span class="sourceLineNo">096</span>import com.codahale.metrics.Histogram;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import com.codahale.metrics.Snapshot;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import com.codahale.metrics.UniformReservoir;<a name="line.98"></a>
 <span class="sourceLineNo">099</span><a name="line.99"></a>
 <span class="sourceLineNo">100</span>/**<a name="line.100"></a>
 <span class="sourceLineNo">101</span> * Script used evaluating HBase performance and scalability.  Runs a HBase<a name="line.101"></a>
@@ -1062,8 +1062,8 @@
 <span class="sourceLineNo">1054</span>        this.connection = ConnectionFactory.createConnection(conf);<a name="line.1054"></a>
 <span class="sourceLineNo">1055</span>      }<a name="line.1055"></a>
 <span class="sourceLineNo">1056</span>      onStartup();<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1058"></a>
+<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1058"></a>
 <span class="sourceLineNo">1059</span>    }<a name="line.1059"></a>
 <span class="sourceLineNo">1060</span><a name="line.1060"></a>
 <span class="sourceLineNo">1061</span>    abstract void onStartup() throws IOException;<a name="line.1061"></a>
@@ -1129,21 +1129,21 @@
 <span class="sourceLineNo">1121</span>     */<a name="line.1121"></a>
 <span class="sourceLineNo">1122</span>    private void reportLatency() throws IOException {<a name="line.1122"></a>
 <span class="sourceLineNo">1123</span>      status.setStatus(testName + " latency log (microseconds), on " +<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>          latency.count() + " measures");<a name="line.1124"></a>
+<span class="sourceLineNo">1124</span>          latency.getCount() + " measures");<a name="line.1124"></a>
 <span class="sourceLineNo">1125</span>      reportHistogram(this.latency);<a name="line.1125"></a>
 <span class="sourceLineNo">1126</span>    }<a name="line.1126"></a>
 <span class="sourceLineNo">1127</span><a name="line.1127"></a>
 <span class="sourceLineNo">1128</span>    private void reportValueSize() throws IOException {<a name="line.1128"></a>
 <span class="sourceLineNo">1129</span>      status.setStatus(testName + " valueSize after " +<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>          valueSize.count() + " measures");<a name="line.1130"></a>
+<span class="sourceLineNo">1130</span>          valueSize.getCount() + " measures");<a name="line.1130"></a>
 <span class="sourceLineNo">1131</span>      reportHistogram(this.valueSize);<a name="line.1131"></a>
 <span class="sourceLineNo">1132</span>    }<a name="line.1132"></a>
 <span class="sourceLineNo">1133</span><a name="line.1133"></a>
 <span class="sourceLineNo">1134</span>    private void reportHistogram(final Histogram h) throws IOException {<a name="line.1134"></a>
 <span class="sourceLineNo">1135</span>      Snapshot sn = h.getSnapshot();<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + h.min());<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + h.mean());<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + h.stdDev());<a name="line.1138"></a>
+<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + sn.getMin());<a name="line.1136"></a>
+<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + sn.getMean());<a name="line.1137"></a>
+<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + sn.getStdDev());<a name="line.1138"></a>
 <span class="sourceLineNo">1139</span>      status.setStatus(testName + " 50th     = " + sn.getMedian());<a name="line.1139"></a>
 <span class="sourceLineNo">1140</span>      status.setStatus(testName + " 75th     = " + sn.get75thPercentile());<a name="line.1140"></a>
 <span class="sourceLineNo">1141</span>      status.setStatus(testName + " 95th     = " + sn.get95thPercentile());<a name="line.1141"></a>
@@ -1151,7 +1151,7 @@
 <span class="sourceLineNo">1143</span>      status.setStatus(testName + " 99.9th   = " + sn.get999thPercentile());<a name="line.1143"></a>
 <span class="sourceLineNo">1144</span>      status.setStatus(testName + " 99.99th  = " + sn.getValue(0.9999));<a name="line.1144"></a>
 <span class="sourceLineNo">1145</span>      status.setStatus(testName + " 99.999th = " + sn.getValue(0.99999));<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + h.max());<a name="line.1146"></a>
+<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + sn.getMax());<a name="line.1146"></a>
 <span class="sourceLineNo">1147</span>    }<a name="line.1147"></a>
 <span class="sourceLineNo">1148</span><a name="line.1148"></a>
 <span class="sourceLineNo">1149</span>    /**<a name="line.1149"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.SequentialReadTest.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.SequentialReadTest.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.SequentialReadTest.html
index d15c216..bf5e0a0 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.SequentialReadTest.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.SequentialReadTest.html
@@ -101,9 +101,9 @@
 <span class="sourceLineNo">093</span><a name="line.93"></a>
 <span class="sourceLineNo">094</span>import com.google.common.base.Objects;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>import com.google.common.util.concurrent.ThreadFactoryBuilder;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import com.yammer.metrics.core.Histogram;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import com.yammer.metrics.stats.Snapshot;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import com.yammer.metrics.stats.UniformSample;<a name="line.98"></a>
+<span class="sourceLineNo">096</span>import com.codahale.metrics.Histogram;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import com.codahale.metrics.Snapshot;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import com.codahale.metrics.UniformReservoir;<a name="line.98"></a>
 <span class="sourceLineNo">099</span><a name="line.99"></a>
 <span class="sourceLineNo">100</span>/**<a name="line.100"></a>
 <span class="sourceLineNo">101</span> * Script used evaluating HBase performance and scalability.  Runs a HBase<a name="line.101"></a>
@@ -1062,8 +1062,8 @@
 <span class="sourceLineNo">1054</span>        this.connection = ConnectionFactory.createConnection(conf);<a name="line.1054"></a>
 <span class="sourceLineNo">1055</span>      }<a name="line.1055"></a>
 <span class="sourceLineNo">1056</span>      onStartup();<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1058"></a>
+<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1058"></a>
 <span class="sourceLineNo">1059</span>    }<a name="line.1059"></a>
 <span class="sourceLineNo">1060</span><a name="line.1060"></a>
 <span class="sourceLineNo">1061</span>    abstract void onStartup() throws IOException;<a name="line.1061"></a>
@@ -1129,21 +1129,21 @@
 <span class="sourceLineNo">1121</span>     */<a name="line.1121"></a>
 <span class="sourceLineNo">1122</span>    private void reportLatency() throws IOException {<a name="line.1122"></a>
 <span class="sourceLineNo">1123</span>      status.setStatus(testName + " latency log (microseconds), on " +<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>          latency.count() + " measures");<a name="line.1124"></a>
+<span class="sourceLineNo">1124</span>          latency.getCount() + " measures");<a name="line.1124"></a>
 <span class="sourceLineNo">1125</span>      reportHistogram(this.latency);<a name="line.1125"></a>
 <span class="sourceLineNo">1126</span>    }<a name="line.1126"></a>
 <span class="sourceLineNo">1127</span><a name="line.1127"></a>
 <span class="sourceLineNo">1128</span>    private void reportValueSize() throws IOException {<a name="line.1128"></a>
 <span class="sourceLineNo">1129</span>      status.setStatus(testName + " valueSize after " +<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>          valueSize.count() + " measures");<a name="line.1130"></a>
+<span class="sourceLineNo">1130</span>          valueSize.getCount() + " measures");<a name="line.1130"></a>
 <span class="sourceLineNo">1131</span>      reportHistogram(this.valueSize);<a name="line.1131"></a>
 <span class="sourceLineNo">1132</span>    }<a name="line.1132"></a>
 <span class="sourceLineNo">1133</span><a name="line.1133"></a>
 <span class="sourceLineNo">1134</span>    private void reportHistogram(final Histogram h) throws IOException {<a name="line.1134"></a>
 <span class="sourceLineNo">1135</span>      Snapshot sn = h.getSnapshot();<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + h.min());<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + h.mean());<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + h.stdDev());<a name="line.1138"></a>
+<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + sn.getMin());<a name="line.1136"></a>
+<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + sn.getMean());<a name="line.1137"></a>
+<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + sn.getStdDev());<a name="line.1138"></a>
 <span class="sourceLineNo">1139</span>      status.setStatus(testName + " 50th     = " + sn.getMedian());<a name="line.1139"></a>
 <span class="sourceLineNo">1140</span>      status.setStatus(testName + " 75th     = " + sn.get75thPercentile());<a name="line.1140"></a>
 <span class="sourceLineNo">1141</span>      status.setStatus(testName + " 95th     = " + sn.get95thPercentile());<a name="line.1141"></a>
@@ -1151,7 +1151,7 @@
 <span class="sourceLineNo">1143</span>      status.setStatus(testName + " 99.9th   = " + sn.get999thPercentile());<a name="line.1143"></a>
 <span class="sourceLineNo">1144</span>      status.setStatus(testName + " 99.99th  = " + sn.getValue(0.9999));<a name="line.1144"></a>
 <span class="sourceLineNo">1145</span>      status.setStatus(testName + " 99.999th = " + sn.getValue(0.99999));<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + h.max());<a name="line.1146"></a>
+<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + sn.getMax());<a name="line.1146"></a>
 <span class="sourceLineNo">1147</span>    }<a name="line.1147"></a>
 <span class="sourceLineNo">1148</span><a name="line.1148"></a>
 <span class="sourceLineNo">1149</span>    /**<a name="line.1149"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.SequentialWriteTest.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.SequentialWriteTest.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.SequentialWriteTest.html
index d15c216..bf5e0a0 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.SequentialWriteTest.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.SequentialWriteTest.html
@@ -101,9 +101,9 @@
 <span class="sourceLineNo">093</span><a name="line.93"></a>
 <span class="sourceLineNo">094</span>import com.google.common.base.Objects;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>import com.google.common.util.concurrent.ThreadFactoryBuilder;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import com.yammer.metrics.core.Histogram;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import com.yammer.metrics.stats.Snapshot;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import com.yammer.metrics.stats.UniformSample;<a name="line.98"></a>
+<span class="sourceLineNo">096</span>import com.codahale.metrics.Histogram;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import com.codahale.metrics.Snapshot;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import com.codahale.metrics.UniformReservoir;<a name="line.98"></a>
 <span class="sourceLineNo">099</span><a name="line.99"></a>
 <span class="sourceLineNo">100</span>/**<a name="line.100"></a>
 <span class="sourceLineNo">101</span> * Script used evaluating HBase performance and scalability.  Runs a HBase<a name="line.101"></a>
@@ -1062,8 +1062,8 @@
 <span class="sourceLineNo">1054</span>        this.connection = ConnectionFactory.createConnection(conf);<a name="line.1054"></a>
 <span class="sourceLineNo">1055</span>      }<a name="line.1055"></a>
 <span class="sourceLineNo">1056</span>      onStartup();<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1058"></a>
+<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1058"></a>
 <span class="sourceLineNo">1059</span>    }<a name="line.1059"></a>
 <span class="sourceLineNo">1060</span><a name="line.1060"></a>
 <span class="sourceLineNo">1061</span>    abstract void onStartup() throws IOException;<a name="line.1061"></a>
@@ -1129,21 +1129,21 @@
 <span class="sourceLineNo">1121</span>     */<a name="line.1121"></a>
 <span class="sourceLineNo">1122</span>    private void reportLatency() throws IOException {<a name="line.1122"></a>
 <span class="sourceLineNo">1123</span>      status.setStatus(testName + " latency log (microseconds), on " +<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>          latency.count() + " measures");<a name="line.1124"></a>
+<span class="sourceLineNo">1124</span>          latency.getCount() + " measures");<a name="line.1124"></a>
 <span class="sourceLineNo">1125</span>      reportHistogram(this.latency);<a name="line.1125"></a>
 <span class="sourceLineNo">1126</span>    }<a name="line.1126"></a>
 <span class="sourceLineNo">1127</span><a name="line.1127"></a>
 <span class="sourceLineNo">1128</span>    private void reportValueSize() throws IOException {<a name="line.1128"></a>
 <span class="sourceLineNo">1129</span>      status.setStatus(testName + " valueSize after " +<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>          valueSize.count() + " measures");<a name="line.1130"></a>
+<span class="sourceLineNo">1130</span>          valueSize.getCount() + " measures");<a name="line.1130"></a>
 <span class="sourceLineNo">1131</span>      reportHistogram(this.valueSize);<a name="line.1131"></a>
 <span class="sourceLineNo">1132</span>    }<a name="line.1132"></a>
 <span class="sourceLineNo">1133</span><a name="line.1133"></a>
 <span class="sourceLineNo">1134</span>    private void reportHistogram(final Histogram h) throws IOException {<a name="line.1134"></a>
 <span class="sourceLineNo">1135</span>      Snapshot sn = h.getSnapshot();<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + h.min());<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + h.mean());<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + h.stdDev());<a name="line.1138"></a>
+<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + sn.getMin());<a name="line.1136"></a>
+<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + sn.getMean());<a name="line.1137"></a>
+<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + sn.getStdDev());<a name="line.1138"></a>
 <span class="sourceLineNo">1139</span>      status.setStatus(testName + " 50th     = " + sn.getMedian());<a name="line.1139"></a>
 <span class="sourceLineNo">1140</span>      status.setStatus(testName + " 75th     = " + sn.get75thPercentile());<a name="line.1140"></a>
 <span class="sourceLineNo">1141</span>      status.setStatus(testName + " 95th     = " + sn.get95thPercentile());<a name="line.1141"></a>
@@ -1151,7 +1151,7 @@
 <span class="sourceLineNo">1143</span>      status.setStatus(testName + " 99.9th   = " + sn.get999thPercentile());<a name="line.1143"></a>
 <span class="sourceLineNo">1144</span>      status.setStatus(testName + " 99.99th  = " + sn.getValue(0.9999));<a name="line.1144"></a>
 <span class="sourceLineNo">1145</span>      status.setStatus(testName + " 99.999th = " + sn.getValue(0.99999));<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + h.max());<a name="line.1146"></a>
+<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + sn.getMax());<a name="line.1146"></a>
 <span class="sourceLineNo">1147</span>    }<a name="line.1147"></a>
 <span class="sourceLineNo">1148</span><a name="line.1148"></a>
 <span class="sourceLineNo">1149</span>    /**<a name="line.1149"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.Status.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.Status.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.Status.html
index d15c216..bf5e0a0 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.Status.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.Status.html
@@ -101,9 +101,9 @@
 <span class="sourceLineNo">093</span><a name="line.93"></a>
 <span class="sourceLineNo">094</span>import com.google.common.base.Objects;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>import com.google.common.util.concurrent.ThreadFactoryBuilder;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import com.yammer.metrics.core.Histogram;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import com.yammer.metrics.stats.Snapshot;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import com.yammer.metrics.stats.UniformSample;<a name="line.98"></a>
+<span class="sourceLineNo">096</span>import com.codahale.metrics.Histogram;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import com.codahale.metrics.Snapshot;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import com.codahale.metrics.UniformReservoir;<a name="line.98"></a>
 <span class="sourceLineNo">099</span><a name="line.99"></a>
 <span class="sourceLineNo">100</span>/**<a name="line.100"></a>
 <span class="sourceLineNo">101</span> * Script used evaluating HBase performance and scalability.  Runs a HBase<a name="line.101"></a>
@@ -1062,8 +1062,8 @@
 <span class="sourceLineNo">1054</span>        this.connection = ConnectionFactory.createConnection(conf);<a name="line.1054"></a>
 <span class="sourceLineNo">1055</span>      }<a name="line.1055"></a>
 <span class="sourceLineNo">1056</span>      onStartup();<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1058"></a>
+<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1058"></a>
 <span class="sourceLineNo">1059</span>    }<a name="line.1059"></a>
 <span class="sourceLineNo">1060</span><a name="line.1060"></a>
 <span class="sourceLineNo">1061</span>    abstract void onStartup() throws IOException;<a name="line.1061"></a>
@@ -1129,21 +1129,21 @@
 <span class="sourceLineNo">1121</span>     */<a name="line.1121"></a>
 <span class="sourceLineNo">1122</span>    private void reportLatency() throws IOException {<a name="line.1122"></a>
 <span class="sourceLineNo">1123</span>      status.setStatus(testName + " latency log (microseconds), on " +<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>          latency.count() + " measures");<a name="line.1124"></a>
+<span class="sourceLineNo">1124</span>          latency.getCount() + " measures");<a name="line.1124"></a>
 <span class="sourceLineNo">1125</span>      reportHistogram(this.latency);<a name="line.1125"></a>
 <span class="sourceLineNo">1126</span>    }<a name="line.1126"></a>
 <span class="sourceLineNo">1127</span><a name="line.1127"></a>
 <span class="sourceLineNo">1128</span>    private void reportValueSize() throws IOException {<a name="line.1128"></a>
 <span class="sourceLineNo">1129</span>      status.setStatus(testName + " valueSize after " +<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>          valueSize.count() + " measures");<a name="line.1130"></a>
+<span class="sourceLineNo">1130</span>          valueSize.getCount() + " measures");<a name="line.1130"></a>
 <span class="sourceLineNo">1131</span>      reportHistogram(this.valueSize);<a name="line.1131"></a>
 <span class="sourceLineNo">1132</span>    }<a name="line.1132"></a>
 <span class="sourceLineNo">1133</span><a name="line.1133"></a>
 <span class="sourceLineNo">1134</span>    private void reportHistogram(final Histogram h) throws IOException {<a name="line.1134"></a>
 <span class="sourceLineNo">1135</span>      Snapshot sn = h.getSnapshot();<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + h.min());<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + h.mean());<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + h.stdDev());<a name="line.1138"></a>
+<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + sn.getMin());<a name="line.1136"></a>
+<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + sn.getMean());<a name="line.1137"></a>
+<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + sn.getStdDev());<a name="line.1138"></a>
 <span class="sourceLineNo">1139</span>      status.setStatus(testName + " 50th     = " + sn.getMedian());<a name="line.1139"></a>
 <span class="sourceLineNo">1140</span>      status.setStatus(testName + " 75th     = " + sn.get75thPercentile());<a name="line.1140"></a>
 <span class="sourceLineNo">1141</span>      status.setStatus(testName + " 95th     = " + sn.get95thPercentile());<a name="line.1141"></a>
@@ -1151,7 +1151,7 @@
 <span class="sourceLineNo">1143</span>      status.setStatus(testName + " 99.9th   = " + sn.get999thPercentile());<a name="line.1143"></a>
 <span class="sourceLineNo">1144</span>      status.setStatus(testName + " 99.99th  = " + sn.getValue(0.9999));<a name="line.1144"></a>
 <span class="sourceLineNo">1145</span>      status.setStatus(testName + " 99.999th = " + sn.getValue(0.99999));<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + h.max());<a name="line.1146"></a>
+<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + sn.getMax());<a name="line.1146"></a>
 <span class="sourceLineNo">1147</span>    }<a name="line.1147"></a>
 <span class="sourceLineNo">1148</span><a name="line.1148"></a>
 <span class="sourceLineNo">1149</span>    /**<a name="line.1149"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.TableTest.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.TableTest.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.TableTest.html
index d15c216..bf5e0a0 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.TableTest.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.TableTest.html
@@ -101,9 +101,9 @@
 <span class="sourceLineNo">093</span><a name="line.93"></a>
 <span class="sourceLineNo">094</span>import com.google.common.base.Objects;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>import com.google.common.util.concurrent.ThreadFactoryBuilder;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import com.yammer.metrics.core.Histogram;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import com.yammer.metrics.stats.Snapshot;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import com.yammer.metrics.stats.UniformSample;<a name="line.98"></a>
+<span class="sourceLineNo">096</span>import com.codahale.metrics.Histogram;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import com.codahale.metrics.Snapshot;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import com.codahale.metrics.UniformReservoir;<a name="line.98"></a>
 <span class="sourceLineNo">099</span><a name="line.99"></a>
 <span class="sourceLineNo">100</span>/**<a name="line.100"></a>
 <span class="sourceLineNo">101</span> * Script used evaluating HBase performance and scalability.  Runs a HBase<a name="line.101"></a>
@@ -1062,8 +1062,8 @@
 <span class="sourceLineNo">1054</span>        this.connection = ConnectionFactory.createConnection(conf);<a name="line.1054"></a>
 <span class="sourceLineNo">1055</span>      }<a name="line.1055"></a>
 <span class="sourceLineNo">1056</span>      onStartup();<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1058"></a>
+<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1058"></a>
 <span class="sourceLineNo">1059</span>    }<a name="line.1059"></a>
 <span class="sourceLineNo">1060</span><a name="line.1060"></a>
 <span class="sourceLineNo">1061</span>    abstract void onStartup() throws IOException;<a name="line.1061"></a>
@@ -1129,21 +1129,21 @@
 <span class="sourceLineNo">1121</span>     */<a name="line.1121"></a>
 <span class="sourceLineNo">1122</span>    private void reportLatency() throws IOException {<a name="line.1122"></a>
 <span class="sourceLineNo">1123</span>      status.setStatus(testName + " latency log (microseconds), on " +<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>          latency.count() + " measures");<a name="line.1124"></a>
+<span class="sourceLineNo">1124</span>          latency.getCount() + " measures");<a name="line.1124"></a>
 <span class="sourceLineNo">1125</span>      reportHistogram(this.latency);<a name="line.1125"></a>
 <span class="sourceLineNo">1126</span>    }<a name="line.1126"></a>
 <span class="sourceLineNo">1127</span><a name="line.1127"></a>
 <span class="sourceLineNo">1128</span>    private void reportValueSize() throws IOException {<a name="line.1128"></a>
 <span class="sourceLineNo">1129</span>      status.setStatus(testName + " valueSize after " +<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>          valueSize.count() + " measures");<a name="line.1130"></a>
+<span class="sourceLineNo">1130</span>          valueSize.getCount() + " measures");<a name="line.1130"></a>
 <span class="sourceLineNo">1131</span>      reportHistogram(this.valueSize);<a name="line.1131"></a>
 <span class="sourceLineNo">1132</span>    }<a name="line.1132"></a>
 <span class="sourceLineNo">1133</span><a name="line.1133"></a>
 <span class="sourceLineNo">1134</span>    private void reportHistogram(final Histogram h) throws IOException {<a name="line.1134"></a>
 <span class="sourceLineNo">1135</span>      Snapshot sn = h.getSnapshot();<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + h.min());<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + h.mean());<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + h.stdDev());<a name="line.1138"></a>
+<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + sn.getMin());<a name="line.1136"></a>
+<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + sn.getMean());<a name="line.1137"></a>
+<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + sn.getStdDev());<a name="line.1138"></a>
 <span class="sourceLineNo">1139</span>      status.setStatus(testName + " 50th     = " + sn.getMedian());<a name="line.1139"></a>
 <span class="sourceLineNo">1140</span>      status.setStatus(testName + " 75th     = " + sn.get75thPercentile());<a name="line.1140"></a>
 <span class="sourceLineNo">1141</span>      status.setStatus(testName + " 95th     = " + sn.get95thPercentile());<a name="line.1141"></a>
@@ -1151,7 +1151,7 @@
 <span class="sourceLineNo">1143</span>      status.setStatus(testName + " 99.9th   = " + sn.get999thPercentile());<a name="line.1143"></a>
 <span class="sourceLineNo">1144</span>      status.setStatus(testName + " 99.99th  = " + sn.getValue(0.9999));<a name="line.1144"></a>
 <span class="sourceLineNo">1145</span>      status.setStatus(testName + " 99.999th = " + sn.getValue(0.99999));<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + h.max());<a name="line.1146"></a>
+<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + sn.getMax());<a name="line.1146"></a>
 <span class="sourceLineNo">1147</span>    }<a name="line.1147"></a>
 <span class="sourceLineNo">1148</span><a name="line.1148"></a>
 <span class="sourceLineNo">1149</span>    /**<a name="line.1149"></a>


[03/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html
index 9a57ce1..0317558 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html
@@ -70,532 +70,536 @@
 <span class="sourceLineNo">062</span>import org.apache.htrace.TraceScope;<a name="line.62"></a>
 <span class="sourceLineNo">063</span>import org.apache.htrace.impl.ProbabilitySampler;<a name="line.63"></a>
 <span class="sourceLineNo">064</span><a name="line.64"></a>
-<span class="sourceLineNo">065</span>import com.yammer.metrics.core.Histogram;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import com.yammer.metrics.core.Meter;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import com.yammer.metrics.core.MetricsRegistry;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import com.yammer.metrics.reporting.ConsoleReporter;<a name="line.68"></a>
-<span class="sourceLineNo">069</span><a name="line.69"></a>
-<span class="sourceLineNo">070</span>// imports for things that haven't moved from regionserver.wal yet.<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.regionserver.wal.SecureProtobufLogReader;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.regionserver.wal.SecureProtobufLogWriter;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.regionserver.wal.WALActionsListener;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.regionserver.wal.WALEdit;<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> * This class runs performance benchmarks for {@link WAL}.<a name="line.77"></a>
-<span class="sourceLineNo">078</span> * See usage for this tool by running:<a name="line.78"></a>
-<span class="sourceLineNo">079</span> * &lt;code&gt;$ hbase org.apache.hadoop.hbase.wal.WALPerformanceEvaluation -h&lt;/code&gt;<a name="line.79"></a>
-<span class="sourceLineNo">080</span> */<a name="line.80"></a>
-<span class="sourceLineNo">081</span>@InterfaceAudience.Private<a name="line.81"></a>
-<span class="sourceLineNo">082</span>public final class WALPerformanceEvaluation extends Configured implements Tool {<a name="line.82"></a>
-<span class="sourceLineNo">083</span>  private static final Log LOG = LogFactory.getLog(WALPerformanceEvaluation.class.getName());<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  private final MetricsRegistry metrics = new MetricsRegistry();<a name="line.84"></a>
-<span class="sourceLineNo">085</span>  private final Meter syncMeter =<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    metrics.newMeter(WALPerformanceEvaluation.class, "syncMeter", "syncs", TimeUnit.MILLISECONDS);<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  private final Histogram syncHistogram =<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    metrics.newHistogram(WALPerformanceEvaluation.class, "syncHistogram", "nanos-between-syncs",<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      true);<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  private final Histogram syncCountHistogram =<a name="line.90"></a>
-<span class="sourceLineNo">091</span>      metrics.newHistogram(WALPerformanceEvaluation.class, "syncCountHistogram", "countPerSync",<a name="line.91"></a>
-<span class="sourceLineNo">092</span>        true);<a name="line.92"></a>
-<span class="sourceLineNo">093</span>  private final Meter appendMeter =<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    metrics.newMeter(WALPerformanceEvaluation.class, "appendMeter", "bytes",<a name="line.94"></a>
-<span class="sourceLineNo">095</span>      TimeUnit.MILLISECONDS);<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  private final Histogram latencyHistogram =<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    metrics.newHistogram(WALPerformanceEvaluation.class, "latencyHistogram", "nanos", true);<a name="line.97"></a>
-<span class="sourceLineNo">098</span><a name="line.98"></a>
-<span class="sourceLineNo">099</span>  private final MultiVersionConcurrencyControl mvcc = new MultiVersionConcurrencyControl();<a name="line.99"></a>
-<span class="sourceLineNo">100</span><a name="line.100"></a>
-<span class="sourceLineNo">101</span>  private HBaseTestingUtility TEST_UTIL;<a name="line.101"></a>
-<span class="sourceLineNo">102</span><a name="line.102"></a>
-<span class="sourceLineNo">103</span>  static final String TABLE_NAME = "WALPerformanceEvaluation";<a name="line.103"></a>
-<span class="sourceLineNo">104</span>  static final String QUALIFIER_PREFIX = "q";<a name="line.104"></a>
-<span class="sourceLineNo">105</span>  static final String FAMILY_PREFIX = "cf";<a name="line.105"></a>
-<span class="sourceLineNo">106</span><a name="line.106"></a>
-<span class="sourceLineNo">107</span>  private int numQualifiers = 1;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>  private int valueSize = 512;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>  private int keySize = 16;<a name="line.109"></a>
-<span class="sourceLineNo">110</span><a name="line.110"></a>
-<span class="sourceLineNo">111</span>  @Override<a name="line.111"></a>
-<span class="sourceLineNo">112</span>  public void setConf(Configuration conf) {<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    super.setConf(conf);<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    TEST_UTIL = new HBaseTestingUtility(conf);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  }<a name="line.115"></a>
-<span class="sourceLineNo">116</span><a name="line.116"></a>
-<span class="sourceLineNo">117</span>  /**<a name="line.117"></a>
-<span class="sourceLineNo">118</span>   * Perform WAL.append() of Put object, for the number of iterations requested.<a name="line.118"></a>
-<span class="sourceLineNo">119</span>   * Keys and Vaues are generated randomly, the number of column families,<a name="line.119"></a>
-<span class="sourceLineNo">120</span>   * qualifiers and key/value size is tunable by the user.<a name="line.120"></a>
-<span class="sourceLineNo">121</span>   */<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  class WALPutBenchmark implements Runnable {<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    private final long numIterations;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    private final int numFamilies;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    private final boolean noSync;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    private final HRegion region;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    private final int syncInterval;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    private final HTableDescriptor htd;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    private final Sampler loopSampler;<a name="line.129"></a>
-<span class="sourceLineNo">130</span><a name="line.130"></a>
-<span class="sourceLineNo">131</span>    WALPutBenchmark(final HRegion region, final HTableDescriptor htd,<a name="line.131"></a>
-<span class="sourceLineNo">132</span>        final long numIterations, final boolean noSync, final int syncInterval,<a name="line.132"></a>
-<span class="sourceLineNo">133</span>        final double traceFreq) {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      this.numIterations = numIterations;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      this.noSync = noSync;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>      this.syncInterval = syncInterval;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      this.numFamilies = htd.getColumnFamilies().length;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      this.region = region;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>      this.htd = htd;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      String spanReceivers = getConf().get("hbase.trace.spanreceiver.classes");<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      if (spanReceivers == null || spanReceivers.isEmpty()) {<a name="line.141"></a>
-<span class="sourceLineNo">142</span>        loopSampler = Sampler.NEVER;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>      } else {<a name="line.143"></a>
-<span class="sourceLineNo">144</span>        if (traceFreq &lt;= 0.0) {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>          LOG.warn("Tracing enabled but traceFreq=0.");<a name="line.145"></a>
-<span class="sourceLineNo">146</span>          loopSampler = Sampler.NEVER;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>        } else if (traceFreq &gt;= 1.0) {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>          loopSampler = Sampler.ALWAYS;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>          if (numIterations &gt; 1000) {<a name="line.149"></a>
-<span class="sourceLineNo">150</span>            LOG.warn("Full tracing of all iterations will produce a lot of data. Be sure your"<a name="line.150"></a>
-<span class="sourceLineNo">151</span>              + " SpanReciever can keep up.");<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>          getConf().setDouble("hbase.sampler.fraction", traceFreq);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>          loopSampler = new ProbabilitySampler(new HBaseHTraceConfiguration(getConf()));<a name="line.155"></a>
-<span class="sourceLineNo">156</span>        }<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      }<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    }<a name="line.158"></a>
-<span class="sourceLineNo">159</span><a name="line.159"></a>
-<span class="sourceLineNo">160</span>    @Override<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    public void run() {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      byte[] key = new byte[keySize];<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      byte[] value = new byte[valueSize];<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      Random rand = new Random(Thread.currentThread().getId());<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      WAL wal = region.getWAL();<a name="line.165"></a>
-<span class="sourceLineNo">166</span><a name="line.166"></a>
-<span class="sourceLineNo">167</span>      TraceScope threadScope =<a name="line.167"></a>
-<span class="sourceLineNo">168</span>        Trace.startSpan("WALPerfEval." + Thread.currentThread().getName());<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      try {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>        long startTime = System.currentTimeMillis();<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        int lastSync = 0;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>        for (int i = 0; i &lt; numIterations; ++i) {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>          assert Trace.currentSpan() == threadScope.getSpan() : "Span leak detected.";<a name="line.173"></a>
-<span class="sourceLineNo">174</span>          TraceScope loopScope = Trace.startSpan("runLoopIter" + i, loopSampler);<a name="line.174"></a>
-<span class="sourceLineNo">175</span>          try {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>            long now = System.nanoTime();<a name="line.176"></a>
-<span class="sourceLineNo">177</span>            Put put = setupPut(rand, key, value, numFamilies);<a name="line.177"></a>
-<span class="sourceLineNo">178</span>            WALEdit walEdit = new WALEdit();<a name="line.178"></a>
-<span class="sourceLineNo">179</span>            addFamilyMapToWALEdit(put.getFamilyCellMap(), walEdit);<a name="line.179"></a>
-<span class="sourceLineNo">180</span>            HRegionInfo hri = region.getRegionInfo();<a name="line.180"></a>
-<span class="sourceLineNo">181</span>            final WALKey logkey =<a name="line.181"></a>
-<span class="sourceLineNo">182</span>                new WALKey(hri.getEncodedNameAsBytes(), hri.getTable(), now, mvcc);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>            wal.append(htd, hri, logkey, walEdit, true);<a name="line.183"></a>
-<span class="sourceLineNo">184</span>            if (!this.noSync) {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>              if (++lastSync &gt;= this.syncInterval) {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>                wal.sync();<a name="line.186"></a>
-<span class="sourceLineNo">187</span>                lastSync = 0;<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>            latencyHistogram.update(System.nanoTime() - now);<a name="line.190"></a>
-<span class="sourceLineNo">191</span>          } finally {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>            loopScope.close();<a name="line.192"></a>
-<span class="sourceLineNo">193</span>          }<a name="line.193"></a>
-<span class="sourceLineNo">194</span>        }<a name="line.194"></a>
-<span class="sourceLineNo">195</span>        long totalTime = (System.currentTimeMillis() - startTime);<a name="line.195"></a>
-<span class="sourceLineNo">196</span>        logBenchmarkResult(Thread.currentThread().getName(), numIterations, totalTime);<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      } catch (Exception e) {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>        LOG.error(getClass().getSimpleName() + " Thread failed", e);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      } finally {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>        threadScope.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>  }<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 run(String[] args) throws Exception {<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    Path rootRegionDir = null;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    int numThreads = 1;<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    long numIterations = 1000000;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    int numFamilies = 1;<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    int syncInterval = 0;<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    boolean noSync = false;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    boolean verify = false;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    boolean verbose = false;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    boolean cleanup = true;<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    boolean noclosefs = false;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    long roll = Long.MAX_VALUE;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    boolean compress = false;<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    String cipher = null;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    int numRegions = 1;<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    String spanReceivers = getConf().get("hbase.trace.spanreceiver.classes");<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    boolean trace = spanReceivers != null &amp;&amp; !spanReceivers.isEmpty();<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    double traceFreq = 1.0;<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    // Process command line args<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    for (int i = 0; i &lt; args.length; i++) {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      String cmd = args[i];<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      try {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>        if (cmd.equals("-threads")) {<a name="line.228"></a>
-<span class="sourceLineNo">229</span>          numThreads = Integer.parseInt(args[++i]);<a name="line.229"></a>
-<span class="sourceLineNo">230</span>        } else if (cmd.equals("-iterations")) {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>          numIterations = Long.parseLong(args[++i]);<a name="line.231"></a>
-<span class="sourceLineNo">232</span>        } else if (cmd.equals("-path")) {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>          rootRegionDir = new Path(args[++i]);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>        } else if (cmd.equals("-families")) {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>          numFamilies = Integer.parseInt(args[++i]);<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        } else if (cmd.equals("-qualifiers")) {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>          numQualifiers = Integer.parseInt(args[++i]);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>        } else if (cmd.equals("-keySize")) {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>          keySize = Integer.parseInt(args[++i]);<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        } else if (cmd.equals("-valueSize")) {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>          valueSize = Integer.parseInt(args[++i]);<a name="line.241"></a>
-<span class="sourceLineNo">242</span>        } else if (cmd.equals("-syncInterval")) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>          syncInterval = Integer.parseInt(args[++i]);<a name="line.243"></a>
-<span class="sourceLineNo">244</span>        } else if (cmd.equals("-nosync")) {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>          noSync = true;<a name="line.245"></a>
-<span class="sourceLineNo">246</span>        } else if (cmd.equals("-verify")) {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>          verify = true;<a name="line.247"></a>
-<span class="sourceLineNo">248</span>        } else if (cmd.equals("-verbose")) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>          verbose = true;<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        } else if (cmd.equals("-nocleanup")) {<a name="line.250"></a>
-<span class="sourceLineNo">251</span>          cleanup = false;<a name="line.251"></a>
-<span class="sourceLineNo">252</span>        } else if (cmd.equals("-noclosefs")) {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>          noclosefs = true;<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        } else if (cmd.equals("-roll")) {<a name="line.254"></a>
-<span class="sourceLineNo">255</span>          roll = Long.parseLong(args[++i]);<a name="line.255"></a>
-<span class="sourceLineNo">256</span>        } else if (cmd.equals("-compress")) {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>          compress = true;<a name="line.257"></a>
-<span class="sourceLineNo">258</span>        } else if (cmd.equals("-encryption")) {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>          cipher = args[++i];<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        } else if (cmd.equals("-regions")) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>          numRegions = Integer.parseInt(args[++i]);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        } else if (cmd.equals("-traceFreq")) {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>          traceFreq = Double.parseDouble(args[++i]);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>        } else if (cmd.equals("-h")) {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>          printUsageAndExit();<a name="line.265"></a>
-<span class="sourceLineNo">266</span>        } else if (cmd.equals("--help")) {<a name="line.266"></a>
-<span class="sourceLineNo">267</span>          printUsageAndExit();<a name="line.267"></a>
-<span class="sourceLineNo">268</span>        } else {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>          System.err.println("UNEXPECTED: " + cmd);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>          printUsageAndExit();<a name="line.270"></a>
-<span class="sourceLineNo">271</span>        }<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      } catch (Exception e) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>        printUsageAndExit();<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      }<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>    if (compress) {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      Configuration conf = getConf();<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      conf.setBoolean(HConstants.ENABLE_WAL_COMPRESSION, true);<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>    if (cipher != null) {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      // Set up WAL for encryption<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      Configuration conf = getConf();<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      conf.set(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase");<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      conf.setClass("hbase.regionserver.hlog.reader.impl", SecureProtobufLogReader.class,<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        WAL.Reader.class);<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      conf.setClass("hbase.regionserver.hlog.writer.impl", SecureProtobufLogWriter.class,<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        Writer.class);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      conf.setBoolean(HConstants.ENABLE_WAL_ENCRYPTION, true);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      conf.set(HConstants.CRYPTO_WAL_ALGORITHM_CONF_KEY, cipher);<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    }<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>    if (numThreads &lt; numRegions) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      LOG.warn("Number of threads is less than the number of regions; some regions will sit idle.");<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    }<a name="line.297"></a>
-<span class="sourceLineNo">298</span><a name="line.298"></a>
-<span class="sourceLineNo">299</span>    // Internal config. goes off number of threads; if more threads than handlers, stuff breaks.<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    // In regionserver, number of handlers == number of threads.<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    getConf().setInt(HConstants.REGION_SERVER_HANDLER_COUNT, numThreads);<a name="line.301"></a>
-<span class="sourceLineNo">302</span><a name="line.302"></a>
-<span class="sourceLineNo">303</span>    // Run WAL Performance Evaluation<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    // First set the fs from configs.  In case we are on hadoop1<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    FSUtils.setFsDefault(getConf(), FSUtils.getRootDir(getConf()));<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    FileSystem fs = FileSystem.get(getConf());<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    LOG.info("FileSystem: " + fs);<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>    SpanReceiverHost receiverHost = trace ? SpanReceiverHost.getInstance(getConf()) : null;<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    final Sampler&lt;?&gt; sampler = trace ? Sampler.ALWAYS : Sampler.NEVER;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    TraceScope scope = Trace.startSpan("WALPerfEval", sampler);<a name="line.311"></a>
-<span class="sourceLineNo">312</span><a name="line.312"></a>
-<span class="sourceLineNo">313</span>    try {<a name="line.313"></a>
-<span class="sourceLineNo">314</span>      if (rootRegionDir == null) {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>        rootRegionDir = TEST_UTIL.getDataTestDirOnTestFS("WALPerformanceEvaluation");<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      }<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      rootRegionDir = rootRegionDir.makeQualified(fs);<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      cleanRegionRootDir(fs, rootRegionDir);<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      FSUtils.setRootDir(getConf(), rootRegionDir);<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      final WALFactory wals = new WALFactory(getConf(), null, "wals");<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      final HRegion[] regions = new HRegion[numRegions];<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      final Runnable[] benchmarks = new Runnable[numRegions];<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      final MockRegionServerServices mockServices = new MockRegionServerServices(getConf());<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      final LogRoller roller = new LogRoller(mockServices, mockServices);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      Threads.setDaemonThreadRunning(roller.getThread(), "WALPerfEval.logRoller");<a name="line.325"></a>
-<span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>      try {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>        for(int i = 0; i &lt; numRegions; i++) {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>          // Initialize Table Descriptor<a name="line.329"></a>
-<span class="sourceLineNo">330</span>          // a table per desired region means we can avoid carving up the key space<a name="line.330"></a>
-<span class="sourceLineNo">331</span>          final HTableDescriptor htd = createHTableDescriptor(i, numFamilies);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>          regions[i] = openRegion(fs, rootRegionDir, htd, wals, roll, roller);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>          benchmarks[i] = Trace.wrap(new WALPutBenchmark(regions[i], htd, numIterations, noSync,<a name="line.333"></a>
-<span class="sourceLineNo">334</span>              syncInterval, traceFreq));<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        }<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        ConsoleReporter.enable(this.metrics, 30, TimeUnit.SECONDS);<a name="line.336"></a>
-<span class="sourceLineNo">337</span>        long putTime = runBenchmark(benchmarks, numThreads);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>        logBenchmarkResult("Summary: threads=" + numThreads + ", iterations=" + numIterations +<a name="line.338"></a>
-<span class="sourceLineNo">339</span>          ", syncInterval=" + syncInterval, numIterations * numThreads, putTime);<a name="line.339"></a>
-<span class="sourceLineNo">340</span>        <a name="line.340"></a>
-<span class="sourceLineNo">341</span>        for (int i = 0; i &lt; numRegions; i++) {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>          if (regions[i] != null) {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>            closeRegion(regions[i]);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>            regions[i] = null;<a name="line.344"></a>
-<span class="sourceLineNo">345</span>          }<a name="line.345"></a>
-<span class="sourceLineNo">346</span>        }<a name="line.346"></a>
-<span class="sourceLineNo">347</span>        if (verify) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>          LOG.info("verifying written log entries.");<a name="line.348"></a>
-<span class="sourceLineNo">349</span>          Path dir = new Path(FSUtils.getRootDir(getConf()),<a name="line.349"></a>
-<span class="sourceLineNo">350</span>              DefaultWALProvider.getWALDirectoryName("wals"));<a name="line.350"></a>
-<span class="sourceLineNo">351</span>          long editCount = 0;<a name="line.351"></a>
-<span class="sourceLineNo">352</span>          FileStatus [] fsss = fs.listStatus(dir);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>          if (fsss.length == 0) throw new IllegalStateException("No WAL found");<a name="line.353"></a>
-<span class="sourceLineNo">354</span>          for (FileStatus fss: fsss) {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>            Path p = fss.getPath();<a name="line.355"></a>
-<span class="sourceLineNo">356</span>            if (!fs.exists(p)) throw new IllegalStateException(p.toString());<a name="line.356"></a>
-<span class="sourceLineNo">357</span>            editCount += verify(wals, p, verbose);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>          }<a name="line.358"></a>
-<span class="sourceLineNo">359</span>          long expected = numIterations * numThreads;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>          if (editCount != expected) {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>            throw new IllegalStateException("Counted=" + editCount + ", expected=" + expected);<a name="line.361"></a>
+<span class="sourceLineNo">065</span>import com.codahale.metrics.ConsoleReporter;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import com.codahale.metrics.Histogram;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import com.codahale.metrics.Meter;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import com.codahale.metrics.MetricRegistry;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import com.codahale.metrics.MetricFilter;<a name="line.69"></a>
+<span class="sourceLineNo">070</span><a name="line.70"></a>
+<span class="sourceLineNo">071</span>// imports for things that haven't moved from regionserver.wal yet.<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.regionserver.wal.SecureProtobufLogReader;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.regionserver.wal.SecureProtobufLogWriter;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.regionserver.wal.WALActionsListener;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.regionserver.wal.WALEdit;<a name="line.75"></a>
+<span class="sourceLineNo">076</span><a name="line.76"></a>
+<span class="sourceLineNo">077</span>import static com.codahale.metrics.MetricRegistry.name;<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> * This class runs performance benchmarks for {@link WAL}.<a name="line.80"></a>
+<span class="sourceLineNo">081</span> * See usage for this tool by running:<a name="line.81"></a>
+<span class="sourceLineNo">082</span> * &lt;code&gt;$ hbase org.apache.hadoop.hbase.wal.WALPerformanceEvaluation -h&lt;/code&gt;<a name="line.82"></a>
+<span class="sourceLineNo">083</span> */<a name="line.83"></a>
+<span class="sourceLineNo">084</span>@InterfaceAudience.Private<a name="line.84"></a>
+<span class="sourceLineNo">085</span>public final class WALPerformanceEvaluation extends Configured implements Tool {<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  private static final Log LOG = LogFactory.getLog(WALPerformanceEvaluation.class.getName());<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  private final MetricRegistry metrics = new MetricRegistry();<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  private final Meter syncMeter =<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    metrics.meter(name(WALPerformanceEvaluation.class, "syncMeter", "syncs"));<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>  private final Histogram syncHistogram = metrics.histogram(<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    name(WALPerformanceEvaluation.class, "syncHistogram", "nanos-between-syncs"));<a name="line.92"></a>
+<span class="sourceLineNo">093</span>  private final Histogram syncCountHistogram = metrics.histogram(<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    name(WALPerformanceEvaluation.class, "syncCountHistogram", "countPerSync"));<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  private final Meter appendMeter = metrics.meter(<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    name(WALPerformanceEvaluation.class, "appendMeter", "bytes"));<a name="line.96"></a>
+<span class="sourceLineNo">097</span>  private final Histogram latencyHistogram =<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    metrics.histogram(name(WALPerformanceEvaluation.class, "latencyHistogram", "nanos"));<a name="line.98"></a>
+<span class="sourceLineNo">099</span><a name="line.99"></a>
+<span class="sourceLineNo">100</span>  private final MultiVersionConcurrencyControl mvcc = new MultiVersionConcurrencyControl();<a name="line.100"></a>
+<span class="sourceLineNo">101</span><a name="line.101"></a>
+<span class="sourceLineNo">102</span>  private HBaseTestingUtility TEST_UTIL;<a name="line.102"></a>
+<span class="sourceLineNo">103</span><a name="line.103"></a>
+<span class="sourceLineNo">104</span>  static final String TABLE_NAME = "WALPerformanceEvaluation";<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  static final String QUALIFIER_PREFIX = "q";<a name="line.105"></a>
+<span class="sourceLineNo">106</span>  static final String FAMILY_PREFIX = "cf";<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>  private int numQualifiers = 1;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>  private int valueSize = 512;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  private int keySize = 16;<a name="line.110"></a>
+<span class="sourceLineNo">111</span><a name="line.111"></a>
+<span class="sourceLineNo">112</span>  @Override<a name="line.112"></a>
+<span class="sourceLineNo">113</span>  public void setConf(Configuration conf) {<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    super.setConf(conf);<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    TEST_UTIL = new HBaseTestingUtility(conf);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  }<a name="line.116"></a>
+<span class="sourceLineNo">117</span><a name="line.117"></a>
+<span class="sourceLineNo">118</span>  /**<a name="line.118"></a>
+<span class="sourceLineNo">119</span>   * Perform WAL.append() of Put object, for the number of iterations requested.<a name="line.119"></a>
+<span class="sourceLineNo">120</span>   * Keys and Vaues are generated randomly, the number of column families,<a name="line.120"></a>
+<span class="sourceLineNo">121</span>   * qualifiers and key/value size is tunable by the user.<a name="line.121"></a>
+<span class="sourceLineNo">122</span>   */<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  class WALPutBenchmark implements Runnable {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    private final long numIterations;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    private final int numFamilies;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    private final boolean noSync;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    private final HRegion region;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    private final int syncInterval;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    private final HTableDescriptor htd;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    private final Sampler loopSampler;<a name="line.130"></a>
+<span class="sourceLineNo">131</span><a name="line.131"></a>
+<span class="sourceLineNo">132</span>    WALPutBenchmark(final HRegion region, final HTableDescriptor htd,<a name="line.132"></a>
+<span class="sourceLineNo">133</span>        final long numIterations, final boolean noSync, final int syncInterval,<a name="line.133"></a>
+<span class="sourceLineNo">134</span>        final double traceFreq) {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      this.numIterations = numIterations;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      this.noSync = noSync;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      this.syncInterval = syncInterval;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>      this.numFamilies = htd.getColumnFamilies().length;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>      this.region = region;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      this.htd = htd;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>      String spanReceivers = getConf().get("hbase.trace.spanreceiver.classes");<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      if (spanReceivers == null || spanReceivers.isEmpty()) {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>        loopSampler = Sampler.NEVER;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      } else {<a name="line.144"></a>
+<span class="sourceLineNo">145</span>        if (traceFreq &lt;= 0.0) {<a name="line.145"></a>
+<span class="sourceLineNo">146</span>          LOG.warn("Tracing enabled but traceFreq=0.");<a name="line.146"></a>
+<span class="sourceLineNo">147</span>          loopSampler = Sampler.NEVER;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>        } else if (traceFreq &gt;= 1.0) {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>          loopSampler = Sampler.ALWAYS;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>          if (numIterations &gt; 1000) {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>            LOG.warn("Full tracing of all iterations will produce a lot of data. Be sure your"<a name="line.151"></a>
+<span class="sourceLineNo">152</span>              + " SpanReciever can keep up.");<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>          getConf().setDouble("hbase.sampler.fraction", traceFreq);<a name="line.155"></a>
+<span class="sourceLineNo">156</span>          loopSampler = new ProbabilitySampler(new HBaseHTraceConfiguration(getConf()));<a name="line.156"></a>
+<span class="sourceLineNo">157</span>        }<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      }<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    }<a name="line.159"></a>
+<span class="sourceLineNo">160</span><a name="line.160"></a>
+<span class="sourceLineNo">161</span>    @Override<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    public void run() {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      byte[] key = new byte[keySize];<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      byte[] value = new byte[valueSize];<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      Random rand = new Random(Thread.currentThread().getId());<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      WAL wal = region.getWAL();<a name="line.166"></a>
+<span class="sourceLineNo">167</span><a name="line.167"></a>
+<span class="sourceLineNo">168</span>      TraceScope threadScope =<a name="line.168"></a>
+<span class="sourceLineNo">169</span>        Trace.startSpan("WALPerfEval." + Thread.currentThread().getName());<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      try {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>        long startTime = System.currentTimeMillis();<a name="line.171"></a>
+<span class="sourceLineNo">172</span>        int lastSync = 0;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        for (int i = 0; i &lt; numIterations; ++i) {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>          assert Trace.currentSpan() == threadScope.getSpan() : "Span leak detected.";<a name="line.174"></a>
+<span class="sourceLineNo">175</span>          TraceScope loopScope = Trace.startSpan("runLoopIter" + i, loopSampler);<a name="line.175"></a>
+<span class="sourceLineNo">176</span>          try {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>            long now = System.nanoTime();<a name="line.177"></a>
+<span class="sourceLineNo">178</span>            Put put = setupPut(rand, key, value, numFamilies);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>            WALEdit walEdit = new WALEdit();<a name="line.179"></a>
+<span class="sourceLineNo">180</span>            addFamilyMapToWALEdit(put.getFamilyCellMap(), walEdit);<a name="line.180"></a>
+<span class="sourceLineNo">181</span>            HRegionInfo hri = region.getRegionInfo();<a name="line.181"></a>
+<span class="sourceLineNo">182</span>            final WALKey logkey =<a name="line.182"></a>
+<span class="sourceLineNo">183</span>                new WALKey(hri.getEncodedNameAsBytes(), hri.getTable(), now, mvcc);<a name="line.183"></a>
+<span class="sourceLineNo">184</span>            wal.append(htd, hri, logkey, walEdit, true);<a name="line.184"></a>
+<span class="sourceLineNo">185</span>            if (!this.noSync) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>              if (++lastSync &gt;= this.syncInterval) {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>                wal.sync();<a name="line.187"></a>
+<span class="sourceLineNo">188</span>                lastSync = 0;<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>            latencyHistogram.update(System.nanoTime() - now);<a name="line.191"></a>
+<span class="sourceLineNo">192</span>          } finally {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>            loopScope.close();<a name="line.193"></a>
+<span class="sourceLineNo">194</span>          }<a name="line.194"></a>
+<span class="sourceLineNo">195</span>        }<a name="line.195"></a>
+<span class="sourceLineNo">196</span>        long totalTime = (System.currentTimeMillis() - startTime);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>        logBenchmarkResult(Thread.currentThread().getName(), numIterations, totalTime);<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      } catch (Exception e) {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>        LOG.error(getClass().getSimpleName() + " Thread failed", e);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      } finally {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>        threadScope.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>  }<a name="line.204"></a>
+<span class="sourceLineNo">205</span><a name="line.205"></a>
+<span class="sourceLineNo">206</span>  @Override<a name="line.206"></a>
+<span class="sourceLineNo">207</span>  public int run(String[] args) throws Exception {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    Path rootRegionDir = null;<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    int numThreads = 1;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    long numIterations = 1000000;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    int numFamilies = 1;<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    int syncInterval = 0;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    boolean noSync = false;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    boolean verify = false;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    boolean verbose = false;<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    boolean cleanup = true;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    boolean noclosefs = false;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    long roll = Long.MAX_VALUE;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    boolean compress = false;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    String cipher = null;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    int numRegions = 1;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    String spanReceivers = getConf().get("hbase.trace.spanreceiver.classes");<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    boolean trace = spanReceivers != null &amp;&amp; !spanReceivers.isEmpty();<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    double traceFreq = 1.0;<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    // Process command line args<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    for (int i = 0; i &lt; args.length; i++) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      String cmd = args[i];<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      try {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>        if (cmd.equals("-threads")) {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>          numThreads = Integer.parseInt(args[++i]);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>        } else if (cmd.equals("-iterations")) {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>          numIterations = Long.parseLong(args[++i]);<a name="line.232"></a>
+<span class="sourceLineNo">233</span>        } else if (cmd.equals("-path")) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>          rootRegionDir = new Path(args[++i]);<a name="line.234"></a>
+<span class="sourceLineNo">235</span>        } else if (cmd.equals("-families")) {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>          numFamilies = Integer.parseInt(args[++i]);<a name="line.236"></a>
+<span class="sourceLineNo">237</span>        } else if (cmd.equals("-qualifiers")) {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>          numQualifiers = Integer.parseInt(args[++i]);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>        } else if (cmd.equals("-keySize")) {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>          keySize = Integer.parseInt(args[++i]);<a name="line.240"></a>
+<span class="sourceLineNo">241</span>        } else if (cmd.equals("-valueSize")) {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>          valueSize = Integer.parseInt(args[++i]);<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        } else if (cmd.equals("-syncInterval")) {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>          syncInterval = Integer.parseInt(args[++i]);<a name="line.244"></a>
+<span class="sourceLineNo">245</span>        } else if (cmd.equals("-nosync")) {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>          noSync = true;<a name="line.246"></a>
+<span class="sourceLineNo">247</span>        } else if (cmd.equals("-verify")) {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>          verify = true;<a name="line.248"></a>
+<span class="sourceLineNo">249</span>        } else if (cmd.equals("-verbose")) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>          verbose = true;<a name="line.250"></a>
+<span class="sourceLineNo">251</span>        } else if (cmd.equals("-nocleanup")) {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>          cleanup = false;<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        } else if (cmd.equals("-noclosefs")) {<a name="line.253"></a>
+<span class="sourceLineNo">254</span>          noclosefs = true;<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        } else if (cmd.equals("-roll")) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>          roll = Long.parseLong(args[++i]);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>        } else if (cmd.equals("-compress")) {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>          compress = true;<a name="line.258"></a>
+<span class="sourceLineNo">259</span>        } else if (cmd.equals("-encryption")) {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>          cipher = args[++i];<a name="line.260"></a>
+<span class="sourceLineNo">261</span>        } else if (cmd.equals("-regions")) {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>          numRegions = Integer.parseInt(args[++i]);<a name="line.262"></a>
+<span class="sourceLineNo">263</span>        } else if (cmd.equals("-traceFreq")) {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>          traceFreq = Double.parseDouble(args[++i]);<a name="line.264"></a>
+<span class="sourceLineNo">265</span>        } else if (cmd.equals("-h")) {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>          printUsageAndExit();<a name="line.266"></a>
+<span class="sourceLineNo">267</span>        } else if (cmd.equals("--help")) {<a name="line.267"></a>
+<span class="sourceLineNo">268</span>          printUsageAndExit();<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        } else {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>          System.err.println("UNEXPECTED: " + cmd);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>          printUsageAndExit();<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        }<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      } catch (Exception e) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        printUsageAndExit();<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      }<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    }<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>    if (compress) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      Configuration conf = getConf();<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      conf.setBoolean(HConstants.ENABLE_WAL_COMPRESSION, true);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    }<a name="line.281"></a>
+<span class="sourceLineNo">282</span><a name="line.282"></a>
+<span class="sourceLineNo">283</span>    if (cipher != null) {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      // Set up WAL for encryption<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      Configuration conf = getConf();<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      conf.set(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase");<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      conf.setClass("hbase.regionserver.hlog.reader.impl", SecureProtobufLogReader.class,<a name="line.288"></a>
+<span class="sourceLineNo">289</span>        WAL.Reader.class);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      conf.setClass("hbase.regionserver.hlog.writer.impl", SecureProtobufLogWriter.class,<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        Writer.class);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>      conf.setBoolean(HConstants.ENABLE_WAL_ENCRYPTION, true);<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      conf.set(HConstants.CRYPTO_WAL_ALGORITHM_CONF_KEY, cipher);<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>    if (numThreads &lt; numRegions) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      LOG.warn("Number of threads is less than the number of regions; some regions will sit idle.");<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    }<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>    // Internal config. goes off number of threads; if more threads than handlers, stuff breaks.<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    // In regionserver, number of handlers == number of threads.<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    getConf().setInt(HConstants.REGION_SERVER_HANDLER_COUNT, numThreads);<a name="line.302"></a>
+<span class="sourceLineNo">303</span><a name="line.303"></a>
+<span class="sourceLineNo">304</span>    // Run WAL Performance Evaluation<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    // First set the fs from configs.  In case we are on hadoop1<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    FSUtils.setFsDefault(getConf(), FSUtils.getRootDir(getConf()));<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    FileSystem fs = FileSystem.get(getConf());<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    LOG.info("FileSystem: " + fs);<a name="line.308"></a>
+<span class="sourceLineNo">309</span><a name="line.309"></a>
+<span class="sourceLineNo">310</span>    SpanReceiverHost receiverHost = trace ? SpanReceiverHost.getInstance(getConf()) : null;<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    final Sampler&lt;?&gt; sampler = trace ? Sampler.ALWAYS : Sampler.NEVER;<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    TraceScope scope = Trace.startSpan("WALPerfEval", sampler);<a name="line.312"></a>
+<span class="sourceLineNo">313</span><a name="line.313"></a>
+<span class="sourceLineNo">314</span>    try {<a name="line.314"></a>
+<span class="sourceLineNo">315</span>      if (rootRegionDir == null) {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>        rootRegionDir = TEST_UTIL.getDataTestDirOnTestFS("WALPerformanceEvaluation");<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      }<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      rootRegionDir = rootRegionDir.makeQualified(fs);<a name="line.318"></a>
+<span class="sourceLineNo">319</span>      cleanRegionRootDir(fs, rootRegionDir);<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      FSUtils.setRootDir(getConf(), rootRegionDir);<a name="line.320"></a>
+<span class="sourceLineNo">321</span>      final WALFactory wals = new WALFactory(getConf(), null, "wals");<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      final HRegion[] regions = new HRegion[numRegions];<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      final Runnable[] benchmarks = new Runnable[numRegions];<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      final MockRegionServerServices mockServices = new MockRegionServerServices(getConf());<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      final LogRoller roller = new LogRoller(mockServices, mockServices);<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      Threads.setDaemonThreadRunning(roller.getThread(), "WALPerfEval.logRoller");<a name="line.326"></a>
+<span class="sourceLineNo">327</span><a name="line.327"></a>
+<span class="sourceLineNo">328</span>      try {<a name="line.328"></a>
+<span class="sourceLineNo">329</span>        for(int i = 0; i &lt; numRegions; i++) {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>          // Initialize Table Descriptor<a name="line.330"></a>
+<span class="sourceLineNo">331</span>          // a table per desired region means we can avoid carving up the key space<a name="line.331"></a>
+<span class="sourceLineNo">332</span>          final HTableDescriptor htd = createHTableDescriptor(i, numFamilies);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>          regions[i] = openRegion(fs, rootRegionDir, htd, wals, roll, roller);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>          benchmarks[i] = Trace.wrap(new WALPutBenchmark(regions[i], htd, numIterations, noSync,<a name="line.334"></a>
+<span class="sourceLineNo">335</span>              syncInterval, traceFreq));<a name="line.335"></a>
+<span class="sourceLineNo">336</span>        }<a name="line.336"></a>
+<span class="sourceLineNo">337</span>        ConsoleReporter reporter = ConsoleReporter.forRegistry(metrics).<a name="line.337"></a>
+<span class="sourceLineNo">338</span>          outputTo(System.out).convertRatesTo(TimeUnit.SECONDS).filter(MetricFilter.ALL).build();<a name="line.338"></a>
+<span class="sourceLineNo">339</span>        reporter.start(30, TimeUnit.SECONDS);<a name="line.339"></a>
+<span class="sourceLineNo">340</span><a name="line.340"></a>
+<span class="sourceLineNo">341</span>        long putTime = runBenchmark(benchmarks, numThreads);<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        logBenchmarkResult("Summary: threads=" + numThreads + ", iterations=" + numIterations +<a name="line.342"></a>
+<span class="sourceLineNo">343</span>          ", syncInterval=" + syncInterval, numIterations * numThreads, putTime);<a name="line.343"></a>
+<span class="sourceLineNo">344</span>        <a name="line.344"></a>
+<span class="sourceLineNo">345</span>        for (int i = 0; i &lt; numRegions; i++) {<a name="line.345"></a>
+<span class="sourceLineNo">346</span>          if (regions[i] != null) {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>            closeRegion(regions[i]);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>            regions[i] = null;<a name="line.348"></a>
+<span class="sourceLineNo">349</span>          }<a name="line.349"></a>
+<span class="sourceLineNo">350</span>        }<a name="line.350"></a>
+<span class="sourceLineNo">351</span>        if (verify) {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>          LOG.info("verifying written log entries.");<a name="line.352"></a>
+<span class="sourceLineNo">353</span>          Path dir = new Path(FSUtils.getRootDir(getConf()),<a name="line.353"></a>
+<span class="sourceLineNo">354</span>              DefaultWALProvider.getWALDirectoryName("wals"));<a name="line.354"></a>
+<span class="sourceLineNo">355</span>          long editCount = 0;<a name="line.355"></a>
+<span class="sourceLineNo">356</span>          FileStatus [] fsss = fs.listStatus(dir);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>          if (fsss.length == 0) throw new IllegalStateException("No WAL found");<a name="line.357"></a>
+<span class="sourceLineNo">358</span>          for (FileStatus fss: fsss) {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>            Path p = fss.getPath();<a name="line.359"></a>
+<span class="sourceLineNo">360</span>            if (!fs.exists(p)) throw new IllegalStateException(p.toString());<a name="line.360"></a>
+<span class="sourceLineNo">361</span>            editCount += verify(wals, p, verbose);<a name="line.361"></a>
 <span class="sourceLineNo">362</span>          }<a name="line.362"></a>
-<span class="sourceLineNo">363</span>        }<a name="line.363"></a>
-<span class="sourceLineNo">364</span>      } finally {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>        mockServices.stop("test clean up.");<a name="line.365"></a>
-<span class="sourceLineNo">366</span>        for (int i = 0; i &lt; numRegions; i++) {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>          if (regions[i] != null) {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>            closeRegion(regions[i]);<a name="line.368"></a>
-<span class="sourceLineNo">369</span>          }<a name="line.369"></a>
-<span class="sourceLineNo">370</span>        }<a name="line.370"></a>
-<span class="sourceLineNo">371</span>        if (null != roller) {<a name="line.371"></a>
-<span class="sourceLineNo">372</span>          LOG.info("shutting down log roller.");<a name="line.372"></a>
-<span class="sourceLineNo">373</span>          Threads.shutdown(roller.getThread());<a name="line.373"></a>
+<span class="sourceLineNo">363</span>          long expected = numIterations * numThreads;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>          if (editCount != expected) {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>            throw new IllegalStateException("Counted=" + editCount + ", expected=" + expected);<a name="line.365"></a>
+<span class="sourceLineNo">366</span>          }<a name="line.366"></a>
+<span class="sourceLineNo">367</span>        }<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      } finally {<a name="line.368"></a>
+<span class="sourceLineNo">369</span>        mockServices.stop("test clean up.");<a name="line.369"></a>
+<span class="sourceLineNo">370</span>        for (int i = 0; i &lt; numRegions; i++) {<a name="line.370"></a>
+<span class="sourceLineNo">371</span>          if (regions[i] != null) {<a name="line.371"></a>
+<span class="sourceLineNo">372</span>            closeRegion(regions[i]);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>          }<a name="line.373"></a>
 <span class="sourceLineNo">374</span>        }<a name="line.374"></a>
-<span class="sourceLineNo">375</span>        wals.shutdown();<a name="line.375"></a>
-<span class="sourceLineNo">376</span>        // Remove the root dir for this test region<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        if (cleanup) cleanRegionRootDir(fs, rootRegionDir);<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      }<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    } finally {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      // We may be called inside a test that wants to keep on using the fs.<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      if (!noclosefs) fs.close();<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      scope.close();<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      if (receiverHost != null) receiverHost.closeReceivers();<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    }<a name="line.384"></a>
-<span class="sourceLineNo">385</span><a name="line.385"></a>
-<span class="sourceLineNo">386</span>    return(0);<a name="line.386"></a>
-<span class="sourceLineNo">387</span>  }<a name="line.387"></a>
-<span class="sourceLineNo">388</span><a name="line.388"></a>
-<span class="sourceLineNo">389</span>  private static HTableDescriptor createHTableDescriptor(final int regionNum,<a name="line.389"></a>
-<span class="sourceLineNo">390</span>      final int numFamilies) {<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(TABLE_NAME + ":" + regionNum));<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    for (int i = 0; i &lt; numFamilies; ++i) {<a name="line.392"></a>
-<span class="sourceLineNo">393</span>      HColumnDescriptor colDef = new HColumnDescriptor(FAMILY_PREFIX + i);<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      htd.addFamily(colDef);<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    }<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    return htd;<a name="line.396"></a>
-<span class="sourceLineNo">397</span>  }<a name="line.397"></a>
-<span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>  /**<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * Verify the content of the WAL file.<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * Verify that the file has expected number of edits.<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   * @param wals may not be null<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   * @param wal<a name="line.403"></a>
-<span class="sourceLineNo">404</span>   * @return Count of edits.<a name="line.404"></a>
-<span class="sourceLineNo">405</span>   * @throws IOException<a name="line.405"></a>
-<span class="sourceLineNo">406</span>   */<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  private long verify(final WALFactory wals, final Path wal, final boolean verbose)<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      throws IOException {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    WAL.Reader reader = wals.createReader(wal.getFileSystem(getConf()), wal);<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    long count = 0;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    Map&lt;String, Long&gt; sequenceIds = new HashMap&lt;String, Long&gt;();<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    try {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      while (true) {<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        WAL.Entry e = reader.next();<a name="line.414"></a>
-<span class="sourceLineNo">415</span>        if (e == null) {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>          LOG.debug("Read count=" + count + " from " + wal);<a name="line.416"></a>
-<span class="sourceLineNo">417</span>          break;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>        }<a name="line.418"></a>
-<span class="sourceLineNo">419</span>        count++;<a name="line.419"></a>
-<span class="sourceLineNo">420</span>        long seqid = e.getKey().getLogSeqNum();<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        if (sequenceIds.containsKey(Bytes.toString(e.getKey().getEncodedRegionName()))) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>          // sequenceIds should be increasing for every regions<a name="line.422"></a>
-<span class="sourceLineNo">423</span>          if (sequenceIds.get(Bytes.toString(e.getKey().getEncodedRegionName())) &gt;= seqid) {<a name="line.423"></a>
-<span class="sourceLineNo">424</span>            throw new IllegalStateException("wal = " + wal.getName() + ", " + "previous seqid = "<a name="line.424"></a>
-<span class="sourceLineNo">425</span>                + sequenceIds.get(Bytes.toString(e.getKey().getEncodedRegionName()))<a name="line.425"></a>
-<span class="sourceLineNo">426</span>                + ", current seqid = " + seqid);<a name="line.426"></a>
-<span class="sourceLineNo">427</span>          }<a name="line.427"></a>
-<span class="sourceLineNo">428</span>        }<a name="line.428"></a>
-<span class="sourceLineNo">429</span>        // update the sequence Id.<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        sequenceIds.put(Bytes.toString(e.getKey().getEncodedRegionName()), seqid);<a name="line.430"></a>
-<span class="sourceLineNo">431</span>        if (verbose) LOG.info("seqid=" + seqid);<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      }<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    } finally {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      reader.close();<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    }<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    return count;<a name="line.436"></a>
-<span class="sourceLineNo">437</span>  }<a name="line.437"></a>
-<span class="sourceLineNo">438</span><a name="line.438"></a>
-<span class="sourceLineNo">439</span>  private static void logBenchmarkResult(String testName, long numTests, long totalTime) {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    float tsec = totalTime / 1000.0f;<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    LOG.info(String.format("%s took %.3fs %.3fops/s", testName, tsec, numTests / tsec));<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    <a name="line.442"></a>
-<span class="sourceLineNo">443</span>  }<a name="line.443"></a>
-<span class="sourceLineNo">444</span><a name="line.444"></a>
-<span class="sourceLineNo">445</span>  private void printUsageAndExit() {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    System.err.printf("Usage: bin/hbase %s [options]\n", getClass().getName());<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    System.err.println(" where [options] are:");<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    System.err.println("  -h|-help         Show this help and exit.");<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    System.err.println("  -threads &lt;N&gt;     Number of threads writing on the WAL.");<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    System.err.println("  -regions &lt;N&gt;     Number of regions to open in the WAL. Default: 1");<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    System.err.println("  -iterations &lt;N&gt;  Number of iterations per thread.");<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    System.err.println("  -path &lt;PATH&gt;     Path where region's root directory is created.");<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    System.err.println("  -families &lt;N&gt;    Number of column families to write.");<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    System.err.println("  -qualifiers &lt;N&gt;  Number of qualifiers to write.");<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    System.err.println("  -keySize &lt;N&gt;     Row key size in byte.");<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    System.err.println("  -valueSize &lt;N&gt;   Row/Col value size in byte.");<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    System.err.println("  -nocleanup       Do NOT remove test data when done.");<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    System.err.println("  -noclosefs       Do NOT close the filesystem when done.");<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    System.err.println("  -nosync          Append without syncing");<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    System.err.println("  -syncInterval &lt;N&gt; Append N edits and then sync. " +<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      "Default=0, i.e. sync every edit.");<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    System.err.println("  -verify          Verify edits written in sequence");<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    System.err.println("  -verbose         Output extra info; " +<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      "e.g. all edit seq ids when verifying");<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    System.err.println("  -roll &lt;N&gt;        Roll the way every N appends");<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    System.err.println("  -encryption &lt;A&gt;  Encrypt the WAL with algorithm A, e.g. AES");<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    System.err.println("  -traceFreq &lt;N&gt;   Rate of trace sampling. Default: 1.0, " +<a name="line.467"></a>
-<span class="sourceLineNo">468</span>      "only respected when tracing is enabled, ie -Dhbase.trace.spanreceiver.classes=...");<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    System.err.println("");<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    System.err.println("Examples:");<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    System.err.println("");<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    System.err.println(" To run 100 threads on hdfs with log rolling every 10k edits and " +<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      "verification afterward do:");<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    System.err.println(" $ ./bin/hbase org.apache.hadoop.hbase.wal." +<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      "WALPerformanceEvaluation \\");<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    System.err.println("    -conf ./core-site.xml -path hdfs://example.org:7000/tmp " +<a name="line.476"></a>
-<span class="sourceLineNo">477</span>      "-threads 100 -roll 10000 -verify");<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    System.exit(1);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>  }<a name="line.479"></a>
-<span class="sourceLineNo">480</span><a name="line.480"></a>
-<span class="sourceLineNo">481</span>  private final Set&lt;WAL&gt; walsListenedTo = new HashSet&lt;WAL&gt;();<a name="line.481"></a>
-<span class="sourceLineNo">482</span><a name="line.482"></a>
-<span class="sourceLineNo">483</span>  private HRegion openRegion(final FileSystem fs, final Path dir, final HTableDescriptor htd,<a name="line.483"></a>
-<span class="sourceLineNo">484</span>      final WALFactory wals, final long whenToRoll, final LogRoller roller) throws IOException {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    // Initialize HRegion<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    HRegionInfo regionInfo = new HRegionInfo(htd.getTableName());<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    // Initialize WAL<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    final WAL wal =<a name="line.488"></a>
-<span class="sourceLineNo">489</span>        wals.getWAL(regionInfo.getEncodedNameAsBytes(), regionInfo.getTable().getNamespace());<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    // If we haven't already, attach a listener to this wal to handle rolls and metrics.<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    if (walsListenedTo.add(wal)) {<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      roller.addWAL(wal);<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      wal.registerWALActionsListener(new WALActionsListener.Base() {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>        private int appends = 0;<a name="line.494"></a>
-<span class="sourceLineNo">495</span><a name="line.495"></a>
-<span class="sourceLineNo">496</span>        @Override<a name="line.496"></a>
-<span class="sourceLineNo">497</span>        public void visitLogEntryBeforeWrite(HTableDescriptor htd, WALKey logKey,<a name="line.497"></a>
-<span class="sourceLineNo">498</span>            WALEdit logEdit) {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>          this.appends++;<a name="line.499"></a>
-<span class="sourceLineNo">500</span>          if (this.appends % whenToRoll == 0) {<a name="line.500"></a>
-<span class="sourceLineNo">501</span>            LOG.info("Rolling after " + appends + " edits");<a name="line.501"></a>
-<span class="sourceLineNo">502</span>            // We used to do explicit call to rollWriter but changed it to a request<a name="line.502"></a>
-<span class="sourceLineNo">503</span>            // to avoid dead lock (there are less threads going on in this class than<a name="line.503"></a>
-<span class="sourceLineNo">504</span>            // in the regionserver -- regionserver does not have the issue).<a name="line.504"></a>
-<span class="sourceLineNo">505</span>            DefaultWALProvider.requestLogRoll(wal);<a name="line.505"></a>
-<span class="sourceLineNo">506</span>          }<a name="line.506"></a>
-<span class="sourceLineNo">507</span>        }<a name="line.507"></a>
-<span class="sourceLineNo">508</span><a name="line.508"></a>
-<span class="sourceLineNo">509</span>        @Override<a name="line.509"></a>
-<span class="sourceLineNo">510</span>        public void postSync(final long timeInNanos, final int handlerSyncs) {<a name="line.510"></a>
-<span class="sourceLineNo">511</span>          syncMeter.mark();<a name="line.511"></a>
-<span class="sourceLineNo">512</span>          syncHistogram.update(timeInNanos);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>          syncCountHistogram.update(handlerSyncs);<a name="line.513"></a>
-<span class="sourceLineNo">514</span>        }<a name="line.514"></a>
-<span class="sourceLineNo">515</span><a name="line.515"></a>
-<span class="sourceLineNo">516</span>        @Override<a name="line.516"></a>
-<span class="sourceLineNo">517</span>        public void postAppend(final long size, final long elapsedTime) {<a name="line.517"></a>
-<span class="sourceLineNo">518</span>          appendMeter.mark(size);<a name="line.518"></a>
-<span class="sourceLineNo">519</span>        }<a name="line.519"></a>
-<span class="sourceLineNo">520</span>      });<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    }<a name="line.521"></a>
-<span class="sourceLineNo">522</span>     <a name="line.522"></a>
-<span class="sourceLineNo">523</span>    return HRegion.createHRegion(regionInfo, dir, getConf(), htd, wal);<a name="line.523"></a>
-<span class="sourceLineNo">524</span>  }<a name="line.524"></a>
-<span class="sourceLineNo">525</span><a name="line.525"></a>
-<span class="sourceLineNo">526</span>  private void closeRegion(final HRegion region) throws IOException {<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    if (region != null) {<a name="line.527"></a>
-<span class="sourceLineNo">528</span>      region.close();<a name="line.528"></a>
-<span class="sourceLineNo">529</span>      WAL wal = region.getWAL();<a name="line.529"></a>
-<span class="sourceLineNo">530</span>      if (wal != null) {<a name="line.530"></a>
-<span class="sourceLineNo">531</span>        wal.shutdown();<a name="line.531"></a>
-<span class="sourceLineNo">532</span>      }<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    }<a name="line.533"></a>
-<span class="sourceLineNo">534</span>  }<a name="line.534"></a>
-<span class="sourceLineNo">535</span><a name="line.535"></a>
-<span class="sourceLineNo">536</span>  private void cleanRegionRootDir(final FileSystem fs, final Path dir) throws IOException {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    if (fs.exists(dir)) {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>      fs.delete(dir, true);<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    }<a name="line.539"></a>
-<span class="sourceLineNo">540</span>  }<a name="line.540"></a>
-<span class="sourceLineNo">541</span><a name="line.541"></a>
-<span class="sourceLineNo">542</span>  private Put setupPut(Random rand, byte[] key, byte[] value, final int numFamilies) {<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    rand.nextBytes(key);<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    Put put = new Put(key);<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    for (int cf = 0; cf &lt; numFamilies; ++cf) {<a name="line.545"></a>
-<span class="sourceLineNo">546</span>      for (int q = 0; q &lt; numQualifiers; ++q) {<a name="line.546"></a>
-<span class="sourceLineNo">547</span>        rand.nextBytes(value);<a name="line.547"></a>
-<span class="sourceLineNo">548</span>        put.addColumn(Bytes.toBytes(FAMILY_PREFIX + cf),<a name="line.548"></a>
-<span class="sourceLineNo">549</span>            Bytes.toBytes(QUALIFIER_PREFIX + q), value);<a name="line.549"></a>
-<span class="sourceLineNo">550</span>      }<a name="line.550"></a>
-<span class="sourceLineNo">551</span>    }<a name="line.551"></a>
-<span class="sourceLineNo">552</span>    return put;<a name="line.552"></a>
-<span class="sourceLineNo">553</span>  }<a name="line.553"></a>
-<span class="sourceLineNo">554</span><a name="line.554"></a>
-<span class="sourceLineNo">555</span>  private void addFamilyMapToWALEdit(Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.555"></a>
-<span class="sourceLineNo">556</span>      WALEdit walEdit) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    for (List&lt;Cell&gt; edits : familyMap.values()) {<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      for (Cell cell : edits) {<a name="line.558"></a>
-<span class="sourceLineNo">559</span>        walEdit.add(cell);<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      }<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    }<a name="line.561"></a>
-<span class="sourceLineNo">562</span>  }<a name="line.562"></a>
-<span class="sourceLineNo">563</span><a name="line.563"></a>
-<span class="sourceLineNo">564</span>  private long runBenchmark(Runnable[] runnable, final int numThreads) throws InterruptedException {<a name="line.564"></a>
-<span class="sourceLineNo">565</span>    Thread[] threads = new Thread[numThreads];<a name="line.565"></a>
-<span class="sourceLineNo">566</span>    long startTime = System.currentTimeMillis();<a name="line.566"></a>
-<span class="sourceLineNo">567</span>    for (int i = 0; i &lt; numThreads; ++i) {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>      threads[i] = new Thread(runnable[i%runnable.length], "t" + i + ",r" + (i%runnable.length));<a name="line.568"></a>
-<span class="sourceLineNo">569</span>      threads[i].start();<a name="line.569"></a>
-<span class="sourceLineNo">570</span>    }<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    for (Thread t : threads) t.join();<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    long endTime = System.currentTimeMillis();<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    return(endTime - startTime);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>  }<a name="line.574"></a>
-<span class="sourceLineNo">575</span><a name="line.575"></a>
-<span class="sourceLineNo">576</span>  /**<a name="line.576"></a>
-<span class="sourceLineNo">577</span>   * The guts of the {@link #main} method.<a name="line.577"></a>
-<span class="sourceLineNo">578</span>   * Call this method to avoid the {@link #main(String[])} System.exit.<a name="line.578"></a>
-<span class="sourceLineNo">579</span>   * @param args<a name="line.579"></a>
-<span class="sourceLineNo">580</span>   * @return errCode<a name="line.580"></a>
-<span class="sourceLineNo">581</span>   * @throws Exception<a name="line.581"></a>
-<span class="sourceLineNo">582</span>   */<a name="line.582"></a>
-<span class="sourceLineNo">583</span>  static int innerMain(final Configuration c, final String [] args) throws Exception {<a name="line.583"></a>
-<span class="sourceLineNo">584</span>    return ToolRunner.run(c, new WALPerformanceEvaluation(), args);<a name="line.584"></a>
-<span class="sourceLineNo">585</span>  }<a name="line.585"></a>
-<span class="sourceLineNo">586</span><a name="line.586"></a>
-<span class="sourceLineNo">587</span>  public static void main(String[] args) throws Exception {<a name="line.587"></a>
-<span class="sourceLineNo">588</span>     System.exit(innerMain(HBaseConfiguration.create(), args));<a name="line.588"></a>
+<span class="sourceLineNo">375</span>        if (null != roller) {<a name="line.375"></a>
+<span class="sourceLineNo">376</span>          LOG.info("shutting down log roller.");<a name="line.376"></a>
+<span class="sourceLineNo">377</span>          Threads.shutdown(roller.getThread());<a name="line.377"></a>
+<span class="sourceLineNo">378</span>        }<a name="line.378"></a>
+<span class="sourceLineNo">379</span>        wals.shutdown();<a name="line.379"></a>
+<span class="sourceLineNo">380</span>        // Remove the root dir for this test region<a name="line.380"></a>
+<span class="sourceLineNo">381</span>        if (cleanup) cleanRegionRootDir(fs, rootRegionDir);<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      }<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    } finally {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>      // We may be called inside a test that wants to keep on using the fs.<a name="line.384"></a>
+<span class="sourceLineNo">385</span>      if (!noclosefs) fs.close();<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      scope.close();<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      if (receiverHost != null) receiverHost.closeReceivers();<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    }<a name="line.388"></a>
+<span class="sourceLineNo">389</span><a name="line.389"></a>
+<span class="sourceLineNo">390</span>    return(0);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>  }<a name="line.391"></a>
+<span class="sourceLineNo">392</span><a name="line.392"></a>
+<span class="sourceLineNo">393</span>  private static HTableDescriptor createHTableDescriptor(final int regionNum,<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      final int numFamilies) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(TABLE_NAME + ":" + regionNum));<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    for (int i = 0; i &lt; numFamilies; ++i) {<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      HColumnDescriptor colDef = new HColumnDescriptor(FAMILY_PREFIX + i);<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      htd.addFamily(colDef);<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    }<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    return htd;<a name="line.400"></a>
+<span class="sourceLineNo">401</span>  }<a name="line.401"></a>
+<span class="sourceLineNo">402</span><a name="line.402"></a>
+<span class="sourceLineNo">403</span>  /**<a name="line.403"></a>
+<span class="sourceLineNo">404</span>   * Verify the content of the WAL file.<a name="line.404"></a>
+<span class="sourceLineNo">405</span>   * Verify that the file has expected number of edits.<a name="line.405"></a>
+<span class="sourceLineNo">406</span>   * @param wals may not be null<a name="line.406"></a>
+<span class="sourceLineNo">407</span>   * @param wal<a name="line.407"></a>
+<span class="sourceLineNo">408</span>   * @return Count of edits.<a name="line.408"></a>
+<span class="sourceLineNo">409</span>   * @throws IOException<a name="line.409"></a>
+<span class="sourceLineNo">410</span>   */<a name="line.410"></a>
+<span class="sourceLineNo">411</span>  private long verify(final WALFactory wals, final Path wal, final boolean verbose)<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      throws IOException {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    WAL.Reader reader = wals.c

<TRUNCATED>

[13/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/hbase-spark/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-spark/dependency-convergence.html b/hbase-spark/dependency-convergence.html
index a3ae923..0310acb 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 2015-12-15 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-12-16 -->
 <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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-12-15</span>
+        <span id="publishDate">Last Published: 2015-12-16</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>
@@ -297,22 +297,6 @@
 <li><a class="externalLink" href="http://hbase.apache.org/hbase-rest">org.apache.hbase:hbase-rest</a></li>
 <li><a class="externalLink" href="http://hbase.apache.org/hbase-server">org.apache.hbase:hbase-server</a></li></ol></td></tr></table></td></tr></table></div>
 <div class="section">
-<h4><a name="com.yammer.metrics:metrics-core"></a>com.yammer.metrics:metrics-core</h4>
-<table border="0" class="bodyTable">
-<tr class="a">
-<td><img alt="success" src="images/icon_success_sml.gif" /></td>
-<td>
-<table border="0" class="bodyTable">
-<tr class="b">
-<td width="25%">2.2.0</td>
-<td>
-<ol style="list-style-type: lower-alpha">
-<li><a class="externalLink" href="http://hbase.apache.org/hbase-client">org.apache.hbase:hbase-client</a></li>
-<li><a class="externalLink" href="http://hbase.apache.org/hbase-hadoop2-compat">org.apache.hbase:hbase-hadoop2-compat</a></li>
-<li><a class="externalLink" href="http://hbase.apache.org/hbase-it">org.apache.hbase:hbase-it</a></li>
-<li><a class="externalLink" href="http://hbase.apache.org/hbase-server">org.apache.hbase:hbase-server</a></li>
-<li><a class="externalLink" href="http://hbase.apache.org/hbase-shell">org.apache.hbase:hbase-shell</a></li></ol></td></tr></table></td></tr></table></div>
-<div class="section">
 <h4><a name="commons-cli:commons-cli"></a>commons-cli:commons-cli</h4>
 <table border="0" class="bodyTable">
 <tr class="a">
@@ -437,6 +421,22 @@
 <ol style="list-style-type: lower-alpha">
 <li><a class="externalLink" href="http://hbase.apache.org/hbase-thrift">org.apache.hbase:hbase-thrift</a></li></ol></td></tr></table></td></tr></table></div>
 <div class="section">
+<h4><a name="io.dropwizard.metrics:metrics-core"></a>io.dropwizard.metrics:metrics-core</h4>
+<table border="0" class="bodyTable">
+<tr class="a">
+<td><img alt="success" src="images/icon_success_sml.gif" /></td>
+<td>
+<table border="0" class="bodyTable">
+<tr class="b">
+<td width="25%">3.1.2</td>
+<td>
+<ol style="list-style-type: lower-alpha">
+<li><a class="externalLink" href="http://hbase.apache.org/hbase-client">org.apache.hbase:hbase-client</a></li>
+<li><a class="externalLink" href="http://hbase.apache.org/hbase-hadoop2-compat">org.apache.hbase:hbase-hadoop2-compat</a></li>
+<li><a class="externalLink" href="http://hbase.apache.org/hbase-it">org.apache.hbase:hbase-it</a></li>
+<li><a class="externalLink" href="http://hbase.apache.org/hbase-server">org.apache.hbase:hbase-server</a></li>
+<li><a class="externalLink" href="http://hbase.apache.org/hbase-shell">org.apache.hbase:hbase-shell</a></li></ol></td></tr></table></td></tr></table></div>
+<div class="section">
 <h4><a name="io.netty:netty"></a>io.netty:netty</h4>
 <table border="0" class="bodyTable">
 <tr class="a">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/hbase-spark/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-spark/dependency-info.html b/hbase-spark/dependency-info.html
index f133d5c..9c9fa22 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 2015-12-15 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-12-16 -->
 <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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-12-15</span>
+        <span id="publishDate">Last Published: 2015-12-16</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/539ad177/hbase-spark/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-spark/dependency-management.html b/hbase-spark/dependency-management.html
index a7056e5..7621678 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 2015-12-15 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-12-16 -->
 <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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-12-15</span>
+        <span id="publishDate">Last Published: 2015-12-16</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>
@@ -168,59 +168,59 @@
 <td>jar</td>
 <td><a class="externalLink" href="http://glassfish.java.net/public/CDDL+GPL_1_1.html">CDDL 1.1</a>, <a class="externalLink" href="http://glassfish.java.net/public/CDDL+GPL_1_1.html">GPL2 w/ CPE</a></td></tr>
 <tr class="a">
-<td>com.yammer.metrics</td>
-<td><a class="externalLink" href="http://metrics.codahale.com/metrics-core/">metrics-core</a></td>
-<td>2.2.0</td>
-<td>jar</td>
-<td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License 2.0</a></td></tr>
-<tr class="b">
 <td>commons-cli</td>
 <td><a class="externalLink" href="http://commons.apache.org/cli/">commons-cli</a></td>
 <td>1.2</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td>commons-codec</td>
 <td><a class="externalLink" href="http://commons.apache.org/proper/commons-codec/">commons-codec</a></td>
 <td>1.9</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td>commons-collections</td>
 <td><a class="externalLink" href="http://commons.apache.org/collections/">commons-collections</a></td>
 <td>3.2.2</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td>commons-httpclient</td>
 <td><a class="externalLink" href="http://jakarta.apache.org/httpcomponents/httpclient-3.x/">commons-httpclient</a></td>
 <td>3.1</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache License</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td>commons-io</td>
 <td><a class="externalLink" href="http://commons.apache.org/io/">commons-io</a></td>
 <td>2.4</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td>commons-lang</td>
 <td><a class="externalLink" href="http://commons.apache.org/lang/">commons-lang</a></td>
 <td>2.6</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td>commons-logging</td>
 <td><a class="externalLink" href="http://commons.apache.org/proper/commons-logging/">commons-logging</a></td>
 <td>1.2</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td>commons-net</td>
 <td><a class="externalLink" href="http://commons.apache.org/net/">commons-net</a></td>
 <td>3.1</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
+<tr class="a">
+<td>io.dropwizard.metrics</td>
+<td><a class="externalLink" href="http://metrics.codahale.com/metrics-core/">metrics-core</a></td>
+<td>3.1.2</td>
+<td>jar</td>
+<td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License 2.0</a></td></tr>
 <tr class="b">
 <td>io.netty</td>
 <td><a class="externalLink" href="http://netty.io/netty-all/">netty-all</a></td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/hbase-spark/distribution-management.html
----------------------------------------------------------------------
diff --git a/hbase-spark/distribution-management.html b/hbase-spark/distribution-management.html
index b625d58..47a4bbd 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 2015-12-15 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-12-16 -->
 <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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-12-15</span>
+        <span id="publishDate">Last Published: 2015-12-16</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/539ad177/hbase-spark/index.html
----------------------------------------------------------------------
diff --git a/hbase-spark/index.html b/hbase-spark/index.html
index f282cb0..7faf566 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 2015-12-15 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-12-16 -->
 <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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-12-15</span>
+        <span id="publishDate">Last Published: 2015-12-16</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/539ad177/hbase-spark/integration.html
----------------------------------------------------------------------
diff --git a/hbase-spark/integration.html b/hbase-spark/integration.html
index 6b7c309..3ffe67d 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 2015-12-15 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-12-16 -->
 <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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-12-15</span>
+        <span id="publishDate">Last Published: 2015-12-16</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/539ad177/hbase-spark/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-spark/issue-tracking.html b/hbase-spark/issue-tracking.html
index ec46f69..292d155 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 2015-12-15 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-12-16 -->
 <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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-12-15</span>
+        <span id="publishDate">Last Published: 2015-12-16</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/539ad177/hbase-spark/license.html
----------------------------------------------------------------------
diff --git a/hbase-spark/license.html b/hbase-spark/license.html
index 568704e..23549ac 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 2015-12-15 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-12-16 -->
 <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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-12-15</span>
+        <span id="publishDate">Last Published: 2015-12-16</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/539ad177/hbase-spark/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-spark/mail-lists.html b/hbase-spark/mail-lists.html
index 4ee2ad0..ac1d6a1 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 2015-12-15 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-12-16 -->
 <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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-12-15</span>
+        <span id="publishDate">Last Published: 2015-12-16</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/539ad177/hbase-spark/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-spark/plugin-management.html b/hbase-spark/plugin-management.html
index ab2af56..e39413d 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 2015-12-15 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-12-16 -->
 <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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-12-15</span>
+        <span id="publishDate">Last Published: 2015-12-16</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/539ad177/hbase-spark/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-spark/plugins.html b/hbase-spark/plugins.html
index 4d76fc2..bc0c4e2 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 2015-12-15 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-12-16 -->
 <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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-12-15</span>
+        <span id="publishDate">Last Published: 2015-12-16</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/539ad177/hbase-spark/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-spark/project-info.html b/hbase-spark/project-info.html
index 328f372..b9bf12e 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 2015-12-15 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-12-16 -->
 <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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-12-15</span>
+        <span id="publishDate">Last Published: 2015-12-16</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/539ad177/hbase-spark/project-reports.html
----------------------------------------------------------------------
diff --git a/hbase-spark/project-reports.html b/hbase-spark/project-reports.html
index bded2f5..5782c3a 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 2015-12-15 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-12-16 -->
 <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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-12-15</span>
+        <span id="publishDate">Last Published: 2015-12-16</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/539ad177/hbase-spark/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-spark/project-summary.html b/hbase-spark/project-summary.html
index 2450954..86f6bc5 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 2015-12-15 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-12-16 -->
 <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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-12-15</span>
+        <span id="publishDate">Last Published: 2015-12-16</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/539ad177/hbase-spark/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-spark/source-repository.html b/hbase-spark/source-repository.html
index bf5bc6d..e090ec3 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 2015-12-15 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-12-16 -->
 <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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-12-15</span>
+        <span id="publishDate">Last Published: 2015-12-16</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/539ad177/hbase-spark/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-spark/team-list.html b/hbase-spark/team-list.html
index 96118f4..383c170 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 2015-12-15 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-12-16 -->
 <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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-12-15</span>
+        <span id="publishDate">Last Published: 2015-12-16</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/539ad177/index.html
----------------------------------------------------------------------
diff --git a/index.html b/index.html
index 1fa4cb9..5fc8984 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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <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" />
@@ -420,7 +420,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: 2015-12-15</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-12-16</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/integration.html
----------------------------------------------------------------------
diff --git a/integration.html b/integration.html
index 6db9110..9a28c17 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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <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: 2015-12-15</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-12-16</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/issue-tracking.html
----------------------------------------------------------------------
diff --git a/issue-tracking.html b/issue-tracking.html
index 11dd3e4..c673353 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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <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: 2015-12-15</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-12-16</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/license.html
----------------------------------------------------------------------
diff --git a/license.html b/license.html
index c891b13..2e5f3be 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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <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: 2015-12-15</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-12-16</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/mail-lists.html
----------------------------------------------------------------------
diff --git a/mail-lists.html b/mail-lists.html
index 3918f77..c2cf94c 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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <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: 2015-12-15</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-12-16</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/metrics.html
----------------------------------------------------------------------
diff --git a/metrics.html b/metrics.html
index 7845698..5f6fbb5 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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <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: 2015-12-15</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-12-16</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/modules.html
----------------------------------------------------------------------
diff --git a/modules.html b/modules.html
index 38c2b18..40eb412 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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <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" />
@@ -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: 2015-12-15</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-12-16</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/old_news.html
----------------------------------------------------------------------
diff --git a/old_news.html b/old_news.html
index 47dad29..e3fa031 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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <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: 2015-12-15</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-12-16</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/plugin-management.html
----------------------------------------------------------------------
diff --git a/plugin-management.html b/plugin-management.html
index 8621e3c..ff97637 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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <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: 2015-12-15</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-12-16</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/plugins.html
----------------------------------------------------------------------
diff --git a/plugins.html b/plugins.html
index 263ca7e..11000a7 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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <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: 2015-12-15</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-12-16</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/poweredbyhbase.html
----------------------------------------------------------------------
diff --git a/poweredbyhbase.html b/poweredbyhbase.html
index 7b50351..ab5eb3e 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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <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" />
@@ -754,7 +754,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: 2015-12-15</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-12-16</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/project-info.html
----------------------------------------------------------------------
diff --git a/project-info.html b/project-info.html
index 79e826d..fb59f26 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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <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: 2015-12-15</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-12-16</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/project-reports.html
----------------------------------------------------------------------
diff --git a/project-reports.html b/project-reports.html
index 7f1f3ac..000803e 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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <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: 2015-12-15</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-12-16</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/project-summary.html
----------------------------------------------------------------------
diff --git a/project-summary.html b/project-summary.html
index c292f49..8b04809 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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <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: 2015-12-15</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-12-16</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/pseudo-distributed.html
----------------------------------------------------------------------
diff --git a/pseudo-distributed.html b/pseudo-distributed.html
index ee4f13e..9c21276 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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <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: 2015-12-15</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-12-16</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/replication.html
----------------------------------------------------------------------
diff --git a/replication.html b/replication.html
index 42d4a2c..00b9aeb 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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <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: 2015-12-15</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-12-16</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/resources.html
----------------------------------------------------------------------
diff --git a/resources.html b/resources.html
index 56b462c..65e188c 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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <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: 2015-12-15</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-12-16</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/source-repository.html
----------------------------------------------------------------------
diff --git a/source-repository.html b/source-repository.html
index 10b1ffe..cc74bef 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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <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: 2015-12-15</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-12-16</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/sponsors.html
----------------------------------------------------------------------
diff --git a/sponsors.html b/sponsors.html
index 2f54444..8a3d227 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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <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: 2015-12-15</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-12-16</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/supportingprojects.html
----------------------------------------------------------------------
diff --git a/supportingprojects.html b/supportingprojects.html
index 4ed7e0e..b07c53a 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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <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: 2015-12-15</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-12-16</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/team-list.html
----------------------------------------------------------------------
diff --git a/team-list.html b/team-list.html
index feffba6..2e7085c 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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <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: 2015-12-15</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-12-16</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/allclasses-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/allclasses-frame.html b/testdevapidocs/allclasses-frame.html
index 9d33f4b..3ab8cdc 100644
--- a/testdevapidocs/allclasses-frame.html
+++ b/testdevapidocs/allclasses-frame.html
@@ -1167,7 +1167,6 @@
 <li><a href="org/apache/hadoop/hbase/procedure2/TestProcedureReplayOrder.TestSingleStepProcedure.html" title="class in org.apache.hadoop.hbase.procedure2" target="classFrame">TestProcedureReplayOrder.TestSingleStepProcedure</a></li>
 <li><a href="org/apache/hadoop/hbase/procedure2/TestProcedureReplayOrder.TestTwoStepProcedure.html" title="class in org.apache.hadoop.hbase.procedure2" target="classFrame">TestProcedureReplayOrder.TestTwoStepProcedure</a></li>
 <li><a href="org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html" title="class in org.apache.hadoop.hbase.procedure2.store" target="classFrame">TestProcedureStoreTracker</a></li>
-<li><a href="org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html" title="class in org.apache.hadoop.hbase.procedure2.store" target="classFrame">TestProcedureStoreTracker.TestProcedure</a></li>
 <li><a href="org/apache/hadoop/hbase/procedure2/TestProcedureToString.html" title="class in org.apache.hadoop.hbase.procedure2" target="classFrame">TestProcedureToString</a></li>
 <li><a href="org/apache/hadoop/hbase/procedure2/TestProcedureToString.BasicProcedure.html" title="class in org.apache.hadoop.hbase.procedure2" target="classFrame">TestProcedureToString.BasicProcedure</a></li>
 <li><a href="org/apache/hadoop/hbase/procedure2/TestProcedureToString.BasicProcedureEnv.html" title="class in org.apache.hadoop.hbase.procedure2" target="classFrame">TestProcedureToString.BasicProcedureEnv</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/allclasses-noframe.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/allclasses-noframe.html b/testdevapidocs/allclasses-noframe.html
index 57d527a..0eb419d 100644
--- a/testdevapidocs/allclasses-noframe.html
+++ b/testdevapidocs/allclasses-noframe.html
@@ -1167,7 +1167,6 @@
 <li><a href="org/apache/hadoop/hbase/procedure2/TestProcedureReplayOrder.TestSingleStepProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">TestProcedureReplayOrder.TestSingleStepProcedure</a></li>
 <li><a href="org/apache/hadoop/hbase/procedure2/TestProcedureReplayOrder.TestTwoStepProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">TestProcedureReplayOrder.TestTwoStepProcedure</a></li>
 <li><a href="org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html" title="class in org.apache.hadoop.hbase.procedure2.store">TestProcedureStoreTracker</a></li>
-<li><a href="org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html" title="class in org.apache.hadoop.hbase.procedure2.store">TestProcedureStoreTracker.TestProcedure</a></li>
 <li><a href="org/apache/hadoop/hbase/procedure2/TestProcedureToString.html" title="class in org.apache.hadoop.hbase.procedure2">TestProcedureToString</a></li>
 <li><a href="org/apache/hadoop/hbase/procedure2/TestProcedureToString.BasicProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">TestProcedureToString.BasicProcedure</a></li>
 <li><a href="org/apache/hadoop/hbase/procedure2/TestProcedureToString.BasicProcedureEnv.html" title="class in org.apache.hadoop.hbase.procedure2">TestProcedureToString.BasicProcedureEnv</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/index-all.html b/testdevapidocs/index-all.html
index 9b28b18..f386c5f 100644
--- a/testdevapidocs/index-all.html
+++ b/testdevapidocs/index-all.html
@@ -120,8 +120,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/ProcedureTestingUtility.TestProcedure.html#abort(java.lang.Void)">abort(Void)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.<a href="./org/apache/hadoop/hbase/procedure2/ProcedureTestingUtility.TestProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureTestingUtility.TestProcedure</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html#abort(java.lang.Void)">abort(Void)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.store.<a href="./org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html" title="class in org.apache.hadoop.hbase.procedure2.store">TestProcedureStoreTracker.TestProcedure</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.TestSequentialProcedure.html#abort(java.lang.Void)">abort(Void)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.store.wal.<a href="./org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.TestSequentialProcedure.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">TestWALProcedureStore.TestSequentialProcedure</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/TestProcedureExecution.TestFaultyRollback.html#abort(java.lang.Void)">abort(Void)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.<a href="./org/apache/hadoop/hbase/procedure2/TestProcedureExecution.TestFaultyRollback.html" title="class in org.apache.hadoop.hbase.procedure2">TestProcedureExecution.TestFaultyRollback</a></dt>
@@ -918,7 +916,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/util/MultiThreadedAction.html#appendToStatus(java.lang.StringBuilder,%20java.lang.String,%20java.lang.String)">appendToStatus(StringBuilder, String, String)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="./org/apache/hadoop/hbase/util/MultiThreadedAction.html" title="class in org.apache.hadoop.hbase.util">MultiThreadedAction</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html#apply(com.yammer.metrics.core.Histogram)">apply(Histogram)</a></span> - Method in enum org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html" title="enum in org.apache.hadoop.hbase">IntegrationTestRegionReplicaPerf.Stat</a></dt>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html#apply(com.codahale.metrics.Histogram)">apply(Histogram)</a></span> - Method in enum org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html" title="enum in org.apache.hadoop.hbase">IntegrationTestRegionReplicaPerf.Stat</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/util/LoadTestTool.html#applyColumnFamilyOptions(org.apache.hadoop.hbase.TableName,%20byte[][])">applyColumnFamilyOptions(TableName, byte[][])</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="./org/apache/hadoop/hbase/util/LoadTestTool.html" title="class in org.apache.hadoop.hbase.util">LoadTestTool</a></dt>
 <dd>
@@ -6899,8 +6897,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/ProcedureTestingUtility.TestProcedure.html#deserializeStateData(java.io.InputStream)">deserializeStateData(InputStream)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.<a href="./org/apache/hadoop/hbase/procedure2/ProcedureTestingUtility.TestProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureTestingUtility.TestProcedure</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html#deserializeStateData(java.io.InputStream)">deserializeStateData(InputStream)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.store.<a href="./org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html" title="class in org.apache.hadoop.hbase.procedure2.store">TestProcedureStoreTracker.TestProcedure</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.TestSequentialProcedure.html#deserializeStateData(java.io.InputStream)">deserializeStateData(InputStream)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.store.wal.<a href="./org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.TestSequentialProcedure.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">TestWALProcedureStore.TestSequentialProcedure</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestStateMachineProcedure.html#deserializeStateData(java.io.InputStream)">deserializeStateData(InputStream)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.<a href="./org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestStateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">TestProcedureRecovery.TestStateMachineProcedure</a></dt>
@@ -7825,8 +7821,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/ProcedureTestingUtility.TestProcedure.html#execute(java.lang.Void)">execute(Void)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.<a href="./org/apache/hadoop/hbase/procedure2/ProcedureTestingUtility.TestProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureTestingUtility.TestProcedure</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html#execute(java.lang.Void)">execute(Void)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.store.<a href="./org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html" title="class in org.apache.hadoop.hbase.procedure2.store">TestProcedureStoreTracker.TestProcedure</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.TestSequentialProcedure.html#execute(java.lang.Void)">execute(Void)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.store.wal.<a href="./org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.TestSequentialProcedure.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">TestWALProcedureStore.TestSequentialProcedure</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/TestProcedureExecution.TestFaultyRollback.html#execute(java.lang.Void)">execute(Void)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.<a href="./org/apache/hadoop/hbase/procedure2/TestProcedureExecution.TestFaultyRollback.html" title="class in org.apache.hadoop.hbase.procedure2">TestProcedureExecution.TestFaultyRollback</a></dt>
@@ -19679,7 +19673,7 @@
 <dd>&nbsp;</dd>
 <dt><a href="./org/apache/hadoop/hbase/PerformanceEvaluation.RunResult.html" title="class in org.apache.hadoop.hbase"><span class="strong">PerformanceEvaluation.RunResult</span></a> - Class in <a href="./org/apache/hadoop/hbase/package-summary.html">org.apache.hadoop.hbase</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/PerformanceEvaluation.RunResult.html#PerformanceEvaluation.RunResult(long,%20com.yammer.metrics.core.Histogram)">PerformanceEvaluation.RunResult(long, Histogram)</a></span> - Constructor for class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/PerformanceEvaluation.RunResult.html" title="class in org.apache.hadoop.hbase">PerformanceEvaluation.RunResult</a></dt>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/PerformanceEvaluation.RunResult.html#PerformanceEvaluation.RunResult(long,%20com.codahale.metrics.Histogram)">PerformanceEvaluation.RunResult(long, Histogram)</a></span> - Constructor for class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/PerformanceEvaluation.RunResult.html" title="class in org.apache.hadoop.hbase">PerformanceEvaluation.RunResult</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="./org/apache/hadoop/hbase/PerformanceEvaluation.ScanTest.html" title="class in org.apache.hadoop.hbase"><span class="strong">PerformanceEvaluation.ScanTest</span></a> - Class in <a href="./org/apache/hadoop/hbase/package-summary.html">org.apache.hadoop.hbase</a></dt>
 <dd>&nbsp;</dd>
@@ -22524,7 +22518,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/util/BaseTestHBaseFsck.MockErrorReporter.html#reportError(org.apache.hadoop.hbase.util.HBaseFsck.ErrorReporter.ERROR_CODE,%20java.lang.String,%20org.apache.hadoop.hbase.util.HBaseFsck.TableInfo,%20org.apache.hadoop.hbase.util.HBaseFsck.HbckInfo,%20org.apache.hadoop.hbase.util.HBaseFsck.HbckInfo)">reportError(HBaseFsck.ErrorReporter.ERROR_CODE, String, HBaseFsck.TableInfo, HBaseFsck.HbckInfo, HBaseFsck.HbckInfo)</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="./org/apache/hadoop/hbase/util/BaseTestHBaseFsck.MockErrorReporter.html" title="class in org.apache.hadoop.hbase.util">BaseTestHBaseFsck.MockErrorReporter</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/PerformanceEvaluation.Test.html#reportHistogram(com.yammer.metrics.core.Histogram)">reportHistogram(Histogram)</a></span> - Method in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/PerformanceEvaluation.Test.html" title="class in org.apache.hadoop.hbase">PerformanceEvaluation.Test</a></dt>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/PerformanceEvaluation.Test.html#reportHistogram(com.codahale.metrics.Histogram)">reportHistogram(Histogram)</a></span> - Method in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/PerformanceEvaluation.Test.html" title="class in org.apache.hadoop.hbase">PerformanceEvaluation.Test</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/util/MultiThreadedAction.html#REPORTING_INTERVAL_MS">REPORTING_INTERVAL_MS</a></span> - Static variable in class org.apache.hadoop.hbase.util.<a href="./org/apache/hadoop/hbase/util/MultiThreadedAction.html" title="class in org.apache.hadoop.hbase.util">MultiThreadedAction</a></dt>
 <dd>&nbsp;</dd>
@@ -23019,8 +23013,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/ProcedureTestingUtility.TestProcedure.html#rollback(java.lang.Void)">rollback(Void)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.<a href="./org/apache/hadoop/hbase/procedure2/ProcedureTestingUtility.TestProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureTestingUtility.TestProcedure</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html#rollback(java.lang.Void)">rollback(Void)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.store.<a href="./org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html" title="class in org.apache.hadoop.hbase.procedure2.store">TestProcedureStoreTracker.TestProcedure</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.TestSequentialProcedure.html#rollback(java.lang.Void)">rollback(Void)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.store.wal.<a href="./org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.TestSequentialProcedure.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">TestWALProcedureStore.TestSequentialProcedure</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/TestProcedureExecution.TestFaultyRollback.html#rollback(java.lang.Void)">rollback(Void)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.<a href="./org/apache/hadoop/hbase/procedure2/TestProcedureExecution.TestFaultyRollback.html" title="class in org.apache.hadoop.hbase.procedure2">TestProcedureExecution.TestFaultyRollback</a></dt>
@@ -24633,8 +24625,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/ProcedureTestingUtility.TestProcedure.html#serializeStateData(java.io.OutputStream)">serializeStateData(OutputStream)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.<a href="./org/apache/hadoop/hbase/procedure2/ProcedureTestingUtility.TestProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureTestingUtility.TestProcedure</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html#serializeStateData(java.io.OutputStream)">serializeStateData(OutputStream)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.store.<a href="./org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html" title="class in org.apache.hadoop.hbase.procedure2.store">TestProcedureStoreTracker.TestProcedure</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.TestSequentialProcedure.html#serializeStateData(java.io.OutputStream)">serializeStateData(OutputStream)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.store.wal.<a href="./org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.TestSequentialProcedure.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">TestWALProcedureStore.TestSequentialProcedure</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestStateMachineProcedure.html#serializeStateData(java.io.OutputStream)">serializeStateData(OutputStream)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.<a href="./org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestStateMachineProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">TestProcedureRecovery.TestStateMachineProcedure</a></dt>
@@ -30443,6 +30433,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/security/access/TestAccessController2.html#TEST_VALUE">TEST_VALUE</a></span> - Static variable in class org.apache.hadoop.hbase.security.access.<a href="./org/apache/hadoop/hbase/security/access/TestAccessController2.html" title="class in org.apache.hadoop.hbase.security.access">TestAccessController2</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/executor/TestExecutorService.html#testAborting()">testAborting()</a></span> - Method in class org.apache.hadoop.hbase.executor.<a href="./org/apache/hadoop/hbase/executor/TestExecutorService.html" title="class in org.apache.hadoop.hbase.executor">TestExecutorService</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/master/procedure/TestProcedureAdmin.html#testAbortNonExistProcedure()">testAbortNonExistProcedure()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="./org/apache/hadoop/hbase/master/procedure/TestProcedureAdmin.html" title="class in org.apache.hadoop.hbase.master.procedure">TestProcedureAdmin</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/security/access/TestAccessController.html#testAbortProcedure()">testAbortProcedure()</a></span> - Method in class org.apache.hadoop.hbase.security.access.<a href="./org/apache/hadoop/hbase/security/access/TestAccessController.html" title="class in org.apache.hadoop.hbase.security.access">TestAccessController</a></dt>
@@ -39991,10 +39983,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html#TestProcedureStoreTracker()">TestProcedureStoreTracker()</a></span> - Constructor for class org.apache.hadoop.hbase.procedure2.store.<a href="./org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html" title="class in org.apache.hadoop.hbase.procedure2.store">TestProcedureStoreTracker</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="./org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html" title="class in org.apache.hadoop.hbase.procedure2.store"><span class="strong">TestProcedureStoreTracker.TestProcedure</span></a> - Class in <a href="./org/apache/hadoop/hbase/procedure2/store/package-summary.html">org.apache.hadoop.hbase.procedure2.store</a></dt>
-<dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html#TestProcedureStoreTracker.TestProcedure(long)">TestProcedureStoreTracker.TestProcedure(long)</a></span> - Constructor for class org.apache.hadoop.hbase.procedure2.store.<a href="./org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html" title="class in org.apache.hadoop.hbase.procedure2.store">TestProcedureStoreTracker.TestProcedure</a></dt>
-<dd>&nbsp;</dd>
 <dt><a href="./org/apache/hadoop/hbase/procedure2/TestProcedureToString.html" title="class in org.apache.hadoop.hbase.procedure2"><span class="strong">TestProcedureToString</span></a> - Class in <a href="./org/apache/hadoop/hbase/procedure2/package-summary.html">org.apache.hadoop.hbase.procedure2</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/TestProcedureToString.html#TestProcedureToString()">TestProcedureToString()</a></span> - Constructor for class org.apache.hadoop.hbase.procedure2.<a href="./org/apache/hadoop/hbase/procedure2/TestProcedureToString.html" title="class in org.apache.hadoop.hbase.procedure2">TestProcedureToString</a></dt>
@@ -41704,6 +41692,8 @@
 </dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.html#testRITStateForRollback()">testRITStateForRollback()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitTransactionOnCluster</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.html#testRollAndRemove()">testRollAndRemove()</a></span> - Method in class org.apache.hadoop.hbase.procedure2.store.wal.<a href="./org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">TestWALProcedureStore</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionMergeTransaction.html#testRollback()">testRollback()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionMergeTransaction.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionMergeTransaction</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestSplitTransaction.html#testRollback()">testRollback()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestSplitTransaction.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitTransaction</a></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html b/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html
index ee99b75..f6a6776 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html
@@ -151,7 +151,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>(package private) abstract double</code></td>
-<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html#apply(com.yammer.metrics.core.Histogram)">apply</a></strong>(com.yammer.metrics.core.Histogram&nbsp;hist)</code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html#apply(com.codahale.metrics.Histogram)">apply</a></strong>(com.codahale.metrics.Histogram&nbsp;hist)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html" title="enum in org.apache.hadoop.hbase">IntegrationTestRegionReplicaPerf.Stat</a></code></td>
@@ -256,13 +256,13 @@ not permitted.)</div>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/NullPointerException.html?is-external=true" title="class or interface in java.lang">NullPointerException</a></code> - if the argument is null</dd></dl>
 </li>
 </ul>
-<a name="apply(com.yammer.metrics.core.Histogram)">
+<a name="apply(com.codahale.metrics.Histogram)">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>apply</h4>
-<pre>abstract&nbsp;double&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html#line.91">apply</a>(com.yammer.metrics.core.Histogram&nbsp;hist)</pre>
+<pre>abstract&nbsp;double&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html#line.91">apply</a>(com.codahale.metrics.Histogram&nbsp;hist)</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/org/apache/hadoop/hbase/PerformanceEvaluation.RunResult.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/PerformanceEvaluation.RunResult.html b/testdevapidocs/org/apache/hadoop/hbase/PerformanceEvaluation.RunResult.html
index 1ed9458..849e459 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/PerformanceEvaluation.RunResult.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/PerformanceEvaluation.RunResult.html
@@ -129,7 +129,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Comparabl
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.RunResult.html#duration">duration</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>com.yammer.metrics.core.Histogram</code></td>
+<td class="colFirst"><code>com.codahale.metrics.Histogram</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.RunResult.html#hist">hist</a></strong></code>&nbsp;</td>
 </tr>
 </table>
@@ -147,8 +147,8 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Comparabl
 <th class="colOne" scope="col">Constructor and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colOne"><code><strong><a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.RunResult.html#PerformanceEvaluation.RunResult(long,%20com.yammer.metrics.core.Histogram)">PerformanceEvaluation.RunResult</a></strong>(long&nbsp;duration,
-                                                              com.yammer.metrics.core.Histogram&nbsp;hist)</code>&nbsp;</td>
+<td class="colOne"><code><strong><a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.RunResult.html#PerformanceEvaluation.RunResult(long,%20com.codahale.metrics.Histogram)">PerformanceEvaluation.RunResult</a></strong>(long&nbsp;duration,
+                                                              com.codahale.metrics.Histogram&nbsp;hist)</code>&nbsp;</td>
 </tr>
 </table>
 </li>
@@ -210,7 +210,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Comparabl
 <ul class="blockListLast">
 <li class="blockList">
 <h4>hist</h4>
-<pre>public final&nbsp;com.yammer.metrics.core.Histogram <a href="../../../../src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RunResult.html#line.189">hist</a></pre>
+<pre>public final&nbsp;com.codahale.metrics.Histogram <a href="../../../../src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RunResult.html#line.189">hist</a></pre>
 </li>
 </ul>
 </li>
@@ -221,14 +221,14 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Comparabl
 <!--   -->
 </a>
 <h3>Constructor Detail</h3>
-<a name="PerformanceEvaluation.RunResult(long, com.yammer.metrics.core.Histogram)">
+<a name="PerformanceEvaluation.RunResult(long, com.codahale.metrics.Histogram)">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>PerformanceEvaluation.RunResult</h4>
 <pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RunResult.html#line.183">PerformanceEvaluation.RunResult</a>(long&nbsp;duration,
-                               com.yammer.metrics.core.Histogram&nbsp;hist)</pre>
+                               com.codahale.metrics.Histogram&nbsp;hist)</pre>
 </li>
 </ul>
 </li>


[39/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html b/devapidocs/src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html
index 0d9837b..9090c08 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html
@@ -28,12 +28,12 @@
 <span class="sourceLineNo">020</span>import com.google.common.annotations.VisibleForTesting;<a name="line.20"></a>
 <span class="sourceLineNo">021</span>import com.google.protobuf.Descriptors.MethodDescriptor;<a name="line.21"></a>
 <span class="sourceLineNo">022</span>import com.google.protobuf.Message;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import com.yammer.metrics.core.Counter;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import com.yammer.metrics.core.Histogram;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import com.yammer.metrics.core.MetricsRegistry;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import com.yammer.metrics.core.Timer;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import com.yammer.metrics.reporting.JmxReporter;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import com.yammer.metrics.util.RatioGauge;<a name="line.28"></a>
+<span class="sourceLineNo">023</span>import com.codahale.metrics.Counter;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import com.codahale.metrics.Histogram;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import com.codahale.metrics.MetricRegistry;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import com.codahale.metrics.Timer;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import com.codahale.metrics.JmxReporter;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import com.codahale.metrics.RatioGauge;<a name="line.28"></a>
 <span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.ServerName;<a name="line.29"></a>
 <span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.30"></a>
 <span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.protobuf.generated.ClientProtos;<a name="line.31"></a>
@@ -48,394 +48,397 @@
 <span class="sourceLineNo">040</span>import java.util.concurrent.ThreadPoolExecutor;<a name="line.40"></a>
 <span class="sourceLineNo">041</span>import java.util.concurrent.TimeUnit;<a name="line.41"></a>
 <span class="sourceLineNo">042</span><a name="line.42"></a>
-<span class="sourceLineNo">043</span>/**<a name="line.43"></a>
-<span class="sourceLineNo">044</span> * This class is for maintaining the various connection statistics and publishing them through<a name="line.44"></a>
-<span class="sourceLineNo">045</span> * the metrics interfaces.<a name="line.45"></a>
-<span class="sourceLineNo">046</span> *<a name="line.46"></a>
-<span class="sourceLineNo">047</span> * This class manages its own {@link MetricsRegistry} and {@link JmxReporter} so as to not<a name="line.47"></a>
-<span class="sourceLineNo">048</span> * conflict with other uses of Yammer Metrics within the client application. Instantiating<a name="line.48"></a>
-<span class="sourceLineNo">049</span> * this class implicitly creates and "starts" instances of these classes; be sure to call<a name="line.49"></a>
-<span class="sourceLineNo">050</span> * {@link #shutdown()} to terminate the thread pools they allocate.<a name="line.50"></a>
-<span class="sourceLineNo">051</span> */<a name="line.51"></a>
-<span class="sourceLineNo">052</span>@InterfaceAudience.Private<a name="line.52"></a>
-<span class="sourceLineNo">053</span>public class MetricsConnection {<a name="line.53"></a>
-<span class="sourceLineNo">054</span><a name="line.54"></a>
-<span class="sourceLineNo">055</span>  /** Set this key to {@code true} to enable metrics collection of client requests. */<a name="line.55"></a>
-<span class="sourceLineNo">056</span>  public static final String CLIENT_SIDE_METRICS_ENABLED_KEY = "hbase.client.metrics.enable";<a name="line.56"></a>
-<span class="sourceLineNo">057</span><a name="line.57"></a>
-<span class="sourceLineNo">058</span>  private static final String DRTN_BASE = "rpcCallDurationMs_";<a name="line.58"></a>
-<span class="sourceLineNo">059</span>  private static final String REQ_BASE = "rpcCallRequestSizeBytes_";<a name="line.59"></a>
-<span class="sourceLineNo">060</span>  private static final String RESP_BASE = "rpcCallResponseSizeBytes_";<a name="line.60"></a>
-<span class="sourceLineNo">061</span>  private static final String MEMLOAD_BASE = "memstoreLoad_";<a name="line.61"></a>
-<span class="sourceLineNo">062</span>  private static final String HEAP_BASE = "heapOccupancy_";<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  private static final String CLIENT_SVC = ClientService.getDescriptor().getName();<a name="line.63"></a>
-<span class="sourceLineNo">064</span><a name="line.64"></a>
-<span class="sourceLineNo">065</span>  /** A container class for collecting details about the RPC call as it percolates. */<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  public static class CallStats {<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    private long requestSizeBytes = 0;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    private long responseSizeBytes = 0;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    private long startTime = 0;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    private long callTimeMs = 0;<a name="line.70"></a>
-<span class="sourceLineNo">071</span><a name="line.71"></a>
-<span class="sourceLineNo">072</span>    public long getRequestSizeBytes() {<a name="line.72"></a>
-<span class="sourceLineNo">073</span>      return requestSizeBytes;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    }<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>    public void setRequestSizeBytes(long requestSizeBytes) {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>      this.requestSizeBytes = requestSizeBytes;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    }<a name="line.78"></a>
-<span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>    public long getResponseSizeBytes() {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      return responseSizeBytes;<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 void setResponseSizeBytes(long responseSizeBytes) {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      this.responseSizeBytes = responseSizeBytes;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    }<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>    public long getStartTime() {<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      return startTime;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    }<a name="line.90"></a>
-<span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>    public void setStartTime(long startTime) {<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      this.startTime = startTime;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    }<a name="line.94"></a>
-<span class="sourceLineNo">095</span><a name="line.95"></a>
-<span class="sourceLineNo">096</span>    public long getCallTimeMs() {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>      return callTimeMs;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    }<a name="line.98"></a>
-<span class="sourceLineNo">099</span><a name="line.99"></a>
-<span class="sourceLineNo">100</span>    public void setCallTimeMs(long callTimeMs) {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      this.callTimeMs = callTimeMs;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    }<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  }<a name="line.103"></a>
-<span class="sourceLineNo">104</span><a name="line.104"></a>
-<span class="sourceLineNo">105</span>  @VisibleForTesting<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  protected final class CallTracker {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    private final String name;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    @VisibleForTesting final Timer callTimer;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    @VisibleForTesting final Histogram reqHist;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    @VisibleForTesting final Histogram respHist;<a name="line.110"></a>
-<span class="sourceLineNo">111</span><a name="line.111"></a>
-<span class="sourceLineNo">112</span>    private CallTracker(MetricsRegistry registry, String name, String subName, String scope) {<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      StringBuilder sb = new StringBuilder(CLIENT_SVC).append("_").append(name);<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      if (subName != null) {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>        sb.append("(").append(subName).append(")");<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      }<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      this.name = sb.toString();<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      this.callTimer = registry.newTimer(MetricsConnection.class, DRTN_BASE + this.name, scope);<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      this.reqHist = registry.newHistogram(MetricsConnection.class, REQ_BASE + this.name, scope);<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      this.respHist = registry.newHistogram(MetricsConnection.class, RESP_BASE + this.name, scope);<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>    private CallTracker(MetricsRegistry registry, String name, String scope) {<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      this(registry, name, null, scope);<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    }<a name="line.125"></a>
-<span class="sourceLineNo">126</span><a name="line.126"></a>
-<span class="sourceLineNo">127</span>    public void updateRpc(CallStats stats) {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      this.callTimer.update(stats.getCallTimeMs(), TimeUnit.MILLISECONDS);<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      this.reqHist.update(stats.getRequestSizeBytes());<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      this.respHist.update(stats.getResponseSizeBytes());<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    }<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>    @Override<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    public String toString() {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      return "CallTracker:" + name;<a name="line.135"></a>
+<span class="sourceLineNo">043</span>import static com.codahale.metrics.MetricRegistry.name;<a name="line.43"></a>
+<span class="sourceLineNo">044</span><a name="line.44"></a>
+<span class="sourceLineNo">045</span>/**<a name="line.45"></a>
+<span class="sourceLineNo">046</span> * This class is for maintaining the various connection statistics and publishing them through<a name="line.46"></a>
+<span class="sourceLineNo">047</span> * the metrics interfaces.<a name="line.47"></a>
+<span class="sourceLineNo">048</span> *<a name="line.48"></a>
+<span class="sourceLineNo">049</span> * This class manages its own {@link MetricRegistry} and {@link JmxReporter} so as to not<a name="line.49"></a>
+<span class="sourceLineNo">050</span> * conflict with other uses of Yammer Metrics within the client application. Instantiating<a name="line.50"></a>
+<span class="sourceLineNo">051</span> * this class implicitly creates and "starts" instances of these classes; be sure to call<a name="line.51"></a>
+<span class="sourceLineNo">052</span> * {@link #shutdown()} to terminate the thread pools they allocate.<a name="line.52"></a>
+<span class="sourceLineNo">053</span> */<a name="line.53"></a>
+<span class="sourceLineNo">054</span>@InterfaceAudience.Private<a name="line.54"></a>
+<span class="sourceLineNo">055</span>public class MetricsConnection {<a name="line.55"></a>
+<span class="sourceLineNo">056</span><a name="line.56"></a>
+<span class="sourceLineNo">057</span>  /** Set this key to {@code true} to enable metrics collection of client requests. */<a name="line.57"></a>
+<span class="sourceLineNo">058</span>  public static final String CLIENT_SIDE_METRICS_ENABLED_KEY = "hbase.client.metrics.enable";<a name="line.58"></a>
+<span class="sourceLineNo">059</span><a name="line.59"></a>
+<span class="sourceLineNo">060</span>  private static final String DRTN_BASE = "rpcCallDurationMs_";<a name="line.60"></a>
+<span class="sourceLineNo">061</span>  private static final String REQ_BASE = "rpcCallRequestSizeBytes_";<a name="line.61"></a>
+<span class="sourceLineNo">062</span>  private static final String RESP_BASE = "rpcCallResponseSizeBytes_";<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  private static final String MEMLOAD_BASE = "memstoreLoad_";<a name="line.63"></a>
+<span class="sourceLineNo">064</span>  private static final String HEAP_BASE = "heapOccupancy_";<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  private static final String CLIENT_SVC = ClientService.getDescriptor().getName();<a name="line.65"></a>
+<span class="sourceLineNo">066</span><a name="line.66"></a>
+<span class="sourceLineNo">067</span>  /** A container class for collecting details about the RPC call as it percolates. */<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  public static class CallStats {<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    private long requestSizeBytes = 0;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    private long responseSizeBytes = 0;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    private long startTime = 0;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    private long callTimeMs = 0;<a name="line.72"></a>
+<span class="sourceLineNo">073</span><a name="line.73"></a>
+<span class="sourceLineNo">074</span>    public long getRequestSizeBytes() {<a name="line.74"></a>
+<span class="sourceLineNo">075</span>      return requestSizeBytes;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    }<a name="line.76"></a>
+<span class="sourceLineNo">077</span><a name="line.77"></a>
+<span class="sourceLineNo">078</span>    public void setRequestSizeBytes(long requestSizeBytes) {<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      this.requestSizeBytes = requestSizeBytes;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    }<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>    public long getResponseSizeBytes() {<a name="line.82"></a>
+<span class="sourceLineNo">083</span>      return responseSizeBytes;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    }<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>    public void setResponseSizeBytes(long responseSizeBytes) {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>      this.responseSizeBytes = responseSizeBytes;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    }<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>    public long getStartTime() {<a name="line.90"></a>
+<span class="sourceLineNo">091</span>      return startTime;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    }<a name="line.92"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span>    public void setStartTime(long startTime) {<a name="line.94"></a>
+<span class="sourceLineNo">095</span>      this.startTime = startTime;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    }<a name="line.96"></a>
+<span class="sourceLineNo">097</span><a name="line.97"></a>
+<span class="sourceLineNo">098</span>    public long getCallTimeMs() {<a name="line.98"></a>
+<span class="sourceLineNo">099</span>      return callTimeMs;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    }<a name="line.100"></a>
+<span class="sourceLineNo">101</span><a name="line.101"></a>
+<span class="sourceLineNo">102</span>    public void setCallTimeMs(long callTimeMs) {<a name="line.102"></a>
+<span class="sourceLineNo">103</span>      this.callTimeMs = callTimeMs;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    }<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  }<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>  @VisibleForTesting<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  protected final class CallTracker {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    private final String name;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    @VisibleForTesting final Timer callTimer;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    @VisibleForTesting final Histogram reqHist;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    @VisibleForTesting final Histogram respHist;<a name="line.112"></a>
+<span class="sourceLineNo">113</span><a name="line.113"></a>
+<span class="sourceLineNo">114</span>    private CallTracker(MetricRegistry registry, String name, String subName, String scope) {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      StringBuilder sb = new StringBuilder(CLIENT_SVC).append("_").append(name);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      if (subName != null) {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>        sb.append("(").append(subName).append(")");<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      }<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      this.name = sb.toString();<a name="line.119"></a>
+<span class="sourceLineNo">120</span>      this.callTimer = registry.timer(name(MetricsConnection.class,<a name="line.120"></a>
+<span class="sourceLineNo">121</span>        DRTN_BASE + this.name, scope));<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      this.reqHist = registry.histogram(name(MetricsConnection.class,<a name="line.122"></a>
+<span class="sourceLineNo">123</span>        REQ_BASE + this.name, scope));<a name="line.123"></a>
+<span class="sourceLineNo">124</span>      this.respHist = registry.histogram(name(MetricsConnection.class,<a name="line.124"></a>
+<span class="sourceLineNo">125</span>        RESP_BASE + this.name, scope));<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    }<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>    private CallTracker(MetricRegistry registry, String name, String scope) {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      this(registry, name, null, scope);<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>    public void updateRpc(CallStats stats) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      this.callTimer.update(stats.getCallTimeMs(), TimeUnit.MILLISECONDS);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      this.reqHist.update(stats.getRequestSizeBytes());<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      this.respHist.update(stats.getResponseSizeBytes());<a name="line.135"></a>
 <span class="sourceLineNo">136</span>    }<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>  protected static class RegionStats {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    final String name;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    final Histogram memstoreLoadHist;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    final Histogram heapOccupancyHist;<a name="line.142"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span>    @Override<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    public String toString() {<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      return "CallTracker:" + name;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    }<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  }<a name="line.142"></a>
 <span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>    public RegionStats(MetricsRegistry registry, String name) {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      this.name = name;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      this.memstoreLoadHist = registry.newHistogram(MetricsConnection.class,<a name="line.146"></a>
-<span class="sourceLineNo">147</span>          MEMLOAD_BASE + this.name);<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      this.heapOccupancyHist = registry.newHistogram(MetricsConnection.class,<a name="line.148"></a>
-<span class="sourceLineNo">149</span>          HEAP_BASE + this.name);<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    }<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>    public void update(ClientProtos.RegionLoadStats regionStatistics) {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      this.memstoreLoadHist.update(regionStatistics.getMemstoreLoad());<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      this.heapOccupancyHist.update(regionStatistics.getHeapOccupancy());<a name="line.154"></a>
+<span class="sourceLineNo">144</span>  protected static class RegionStats {<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    final String name;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    final Histogram memstoreLoadHist;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    final Histogram heapOccupancyHist;<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>    public RegionStats(MetricRegistry registry, String name) {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      this.name = name;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>      this.memstoreLoadHist = registry.histogram(name(MetricsConnection.class,<a name="line.151"></a>
+<span class="sourceLineNo">152</span>          MEMLOAD_BASE + this.name));<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      this.heapOccupancyHist = registry.histogram(name(MetricsConnection.class,<a name="line.153"></a>
+<span class="sourceLineNo">154</span>          HEAP_BASE + this.name));<a name="line.154"></a>
 <span class="sourceLineNo">155</span>    }<a name="line.155"></a>
-<span class="sourceLineNo">156</span>  }<a name="line.156"></a>
-<span class="sourceLineNo">157</span><a name="line.157"></a>
-<span class="sourceLineNo">158</span>  @VisibleForTesting<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  protected static class RunnerStats {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    final Counter normalRunners;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    final Counter delayRunners;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    final Histogram delayIntevalHist;<a name="line.162"></a>
-<span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>    public RunnerStats(MetricsRegistry registry) {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      this.normalRunners = registry.newCounter(MetricsConnection.class, "normalRunnersCount");<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      this.delayRunners = registry.newCounter(MetricsConnection.class, "delayRunnersCount");<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      this.delayIntevalHist = registry.newHistogram(MetricsConnection.class, "delayIntervalHist");<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    }<a name="line.168"></a>
-<span class="sourceLineNo">169</span><a name="line.169"></a>
-<span class="sourceLineNo">170</span>    public void incrNormalRunners() {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      this.normalRunners.inc();<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    }<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>    public void incrDelayRunners() {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      this.delayRunners.inc();<a name="line.175"></a>
+<span class="sourceLineNo">156</span><a name="line.156"></a>
+<span class="sourceLineNo">157</span>    public void update(ClientProtos.RegionLoadStats regionStatistics) {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      this.memstoreLoadHist.update(regionStatistics.getMemstoreLoad());<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      this.heapOccupancyHist.update(regionStatistics.getHeapOccupancy());<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    }<a name="line.160"></a>
+<span class="sourceLineNo">161</span>  }<a name="line.161"></a>
+<span class="sourceLineNo">162</span><a name="line.162"></a>
+<span class="sourceLineNo">163</span>  @VisibleForTesting<a name="line.163"></a>
+<span class="sourceLineNo">164</span>  protected static class RunnerStats {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    final Counter normalRunners;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    final Counter delayRunners;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    final Histogram delayIntevalHist;<a name="line.167"></a>
+<span class="sourceLineNo">168</span><a name="line.168"></a>
+<span class="sourceLineNo">169</span>    public RunnerStats(MetricRegistry registry) {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      this.normalRunners = registry.counter(<a name="line.170"></a>
+<span class="sourceLineNo">171</span>        name(MetricsConnection.class, "normalRunnersCount"));<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      this.delayRunners = registry.counter(<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        name(MetricsConnection.class, "delayRunnersCount"));<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      this.delayIntevalHist = registry.histogram(<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        name(MetricsConnection.class, "delayIntervalHist"));<a name="line.175"></a>
 <span class="sourceLineNo">176</span>    }<a name="line.176"></a>
 <span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span>    public void updateDelayInterval(long interval) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      this.delayIntevalHist.update(interval);<a name="line.179"></a>
+<span class="sourceLineNo">178</span>    public void incrNormalRunners() {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      this.normalRunners.inc();<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><a name="line.182"></a>
-<span class="sourceLineNo">183</span>  @VisibleForTesting<a name="line.183"></a>
-<span class="sourceLineNo">184</span>  protected ConcurrentHashMap&lt;ServerName, ConcurrentMap&lt;byte[], RegionStats&gt;&gt; serverStats<a name="line.184"></a>
-<span class="sourceLineNo">185</span>          = new ConcurrentHashMap&lt;ServerName, ConcurrentMap&lt;byte[], RegionStats&gt;&gt;();<a name="line.185"></a>
-<span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>  public void updateServerStats(ServerName serverName, byte[] regionName,<a name="line.187"></a>
-<span class="sourceLineNo">188</span>                                Object r) {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    if (!(r instanceof Result)) {<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      return;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    }<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    Result result = (Result) r;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    ClientProtos.RegionLoadStats stats = result.getStats();<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    if(stats == null){<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      return;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    }<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    String name = serverName.getServerName() + "," + Bytes.toStringBinary(regionName);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    ConcurrentMap&lt;byte[], RegionStats&gt; rsStats = null;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    if (serverStats.containsKey(serverName)) {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      rsStats = serverStats.get(serverName);<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    } else {<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      rsStats = serverStats.putIfAbsent(serverName,<a name="line.202"></a>
-<span class="sourceLineNo">203</span>          new ConcurrentSkipListMap&lt;byte[], RegionStats&gt;(Bytes.BYTES_COMPARATOR));<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      if (rsStats == null) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>        rsStats = serverStats.get(serverName);<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>    RegionStats regionStats = null;<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    if (rsStats.containsKey(regionName)) {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      regionStats = rsStats.get(regionName);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    } else {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      regionStats = rsStats.putIfAbsent(regionName, new RegionStats(this.registry, name));<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      if (regionStats == null) {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        regionStats = rsStats.get(regionName);<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>    regionStats.update(stats);<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>  /** A lambda for dispatching to the appropriate metric factory method */<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  private static interface NewMetric&lt;T&gt; {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    T newMetric(Class&lt;?&gt; clazz, String name, String scope);<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>  /** Anticipated number of metric entries */<a name="line.226"></a>
-<span class="sourceLineNo">227</span>  private static final int CAPACITY = 50;<a name="line.227"></a>
-<span class="sourceLineNo">228</span>  /** Default load factor from {@link java.util.HashMap#DEFAULT_LOAD_FACTOR} */<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  private static final float LOAD_FACTOR = 0.75f;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  /**<a name="line.230"></a>
-<span class="sourceLineNo">231</span>   * Anticipated number of concurrent accessor threads, from<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   * {@link ConnectionImplementation#getBatchPool()}<a name="line.232"></a>
-<span class="sourceLineNo">233</span>   */<a name="line.233"></a>
-<span class="sourceLineNo">234</span>  private static final int CONCURRENCY_LEVEL = 256;<a name="line.234"></a>
-<span class="sourceLineNo">235</span><a name="line.235"></a>
-<span class="sourceLineNo">236</span>  private final MetricsRegistry registry;<a name="line.236"></a>
-<span class="sourceLineNo">237</span>  private final JmxReporter reporter;<a name="line.237"></a>
-<span class="sourceLineNo">238</span>  private final String scope;<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>  private final NewMetric&lt;Timer&gt; timerFactory = new NewMetric&lt;Timer&gt;() {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    @Override public Timer newMetric(Class&lt;?&gt; clazz, String name, String scope) {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      return registry.newTimer(clazz, name, scope);<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>  private final NewMetric&lt;Histogram&gt; histogramFactory = new NewMetric&lt;Histogram&gt;() {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    @Override public Histogram newMetric(Class&lt;?&gt; clazz, String name, String scope) {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      return registry.newHistogram(clazz, name, scope);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    }<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  };<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>  // static metrics<a name="line.252"></a>
+<span class="sourceLineNo">181</span><a name="line.181"></a>
+<span class="sourceLineNo">182</span>    public void incrDelayRunners() {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      this.delayRunners.inc();<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>    public void updateDelayInterval(long interval) {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      this.delayIntevalHist.update(interval);<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>  @VisibleForTesting<a name="line.191"></a>
+<span class="sourceLineNo">192</span>  protected ConcurrentHashMap&lt;ServerName, ConcurrentMap&lt;byte[], RegionStats&gt;&gt; serverStats<a name="line.192"></a>
+<span class="sourceLineNo">193</span>          = new ConcurrentHashMap&lt;ServerName, ConcurrentMap&lt;byte[], RegionStats&gt;&gt;();<a name="line.193"></a>
+<span class="sourceLineNo">194</span><a name="line.194"></a>
+<span class="sourceLineNo">195</span>  public void updateServerStats(ServerName serverName, byte[] regionName,<a name="line.195"></a>
+<span class="sourceLineNo">196</span>                                Object r) {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    if (!(r instanceof Result)) {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      return;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    }<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    Result result = (Result) r;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    ClientProtos.RegionLoadStats stats = result.getStats();<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    if(stats == null){<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      return;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    }<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    String name = serverName.getServerName() + "," + Bytes.toStringBinary(regionName);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    ConcurrentMap&lt;byte[], RegionStats&gt; rsStats = null;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    if (serverStats.containsKey(serverName)) {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      rsStats = serverStats.get(serverName);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    } else {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      rsStats = serverStats.putIfAbsent(serverName,<a name="line.210"></a>
+<span class="sourceLineNo">211</span>          new ConcurrentSkipListMap&lt;byte[], RegionStats&gt;(Bytes.BYTES_COMPARATOR));<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      if (rsStats == null) {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>        rsStats = serverStats.get(serverName);<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>    RegionStats regionStats = null;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    if (rsStats.containsKey(regionName)) {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      regionStats = rsStats.get(regionName);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    } else {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      regionStats = rsStats.putIfAbsent(regionName, new RegionStats(this.registry, name));<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      if (regionStats == null) {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>        regionStats = rsStats.get(regionName);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      }<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    }<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    regionStats.update(stats);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>  }<a name="line.226"></a>
+<span class="sourceLineNo">227</span><a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span>  /** A lambda for dispatching to the appropriate metric factory method */<a name="line.229"></a>
+<span class="sourceLineNo">230</span>  private static interface NewMetric&lt;T&gt; {<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    T newMetric(Class&lt;?&gt; clazz, String name, String scope);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>  }<a name="line.232"></a>
+<span class="sourceLineNo">233</span><a name="line.233"></a>
+<span class="sourceLineNo">234</span>  /** Anticipated number of metric entries */<a name="line.234"></a>
+<span class="sourceLineNo">235</span>  private static final int CAPACITY = 50;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>  /** Default load factor from {@link java.util.HashMap#DEFAULT_LOAD_FACTOR} */<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  private static final float LOAD_FACTOR = 0.75f;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>  /**<a name="line.238"></a>
+<span class="sourceLineNo">239</span>   * Anticipated number of concurrent accessor threads, from<a name="line.239"></a>
+<span class="sourceLineNo">240</span>   * {@link ConnectionImplementation#getBatchPool()}<a name="line.240"></a>
+<span class="sourceLineNo">241</span>   */<a name="line.241"></a>
+<span class="sourceLineNo">242</span>  private static final int CONCURRENCY_LEVEL = 256;<a name="line.242"></a>
+<span class="sourceLineNo">243</span><a name="line.243"></a>
+<span class="sourceLineNo">244</span>  private final MetricRegistry registry;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>  private final JmxReporter reporter;<a name="line.245"></a>
+<span class="sourceLineNo">246</span>  private final String scope;<a name="line.246"></a>
+<span class="sourceLineNo">247</span><a name="line.247"></a>
+<span class="sourceLineNo">248</span>  private final NewMetric&lt;Timer&gt; timerFactory = new NewMetric&lt;Timer&gt;() {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    @Override public Timer newMetric(Class&lt;?&gt; clazz, String name, String scope) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      return registry.timer(name(clazz, name, scope));<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    }<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  };<a name="line.252"></a>
 <span class="sourceLineNo">253</span><a name="line.253"></a>
-<span class="sourceLineNo">254</span>  @VisibleForTesting protected final Counter metaCacheHits;<a name="line.254"></a>
-<span class="sourceLineNo">255</span>  @VisibleForTesting protected final Counter metaCacheMisses;<a name="line.255"></a>
-<span class="sourceLineNo">256</span>  @VisibleForTesting protected final CallTracker getTracker;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>  @VisibleForTesting protected final CallTracker scanTracker;<a name="line.257"></a>
-<span class="sourceLineNo">258</span>  @VisibleForTesting protected final CallTracker appendTracker;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  @VisibleForTesting protected final CallTracker deleteTracker;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  @VisibleForTesting protected final CallTracker incrementTracker;<a name="line.260"></a>
-<span class="sourceLineNo">261</span>  @VisibleForTesting protected final CallTracker putTracker;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>  @VisibleForTesting protected final CallTracker multiTracker;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>  @VisibleForTesting protected final RunnerStats runnerStats;<a name="line.263"></a>
-<span class="sourceLineNo">264</span><a name="line.264"></a>
-<span class="sourceLineNo">265</span>  // dynamic metrics<a name="line.265"></a>
-<span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>  // These maps are used to cache references to the metric instances that are managed by the<a name="line.267"></a>
-<span class="sourceLineNo">268</span>  // registry. I don't think their use perfectly removes redundant allocations, but it's<a name="line.268"></a>
-<span class="sourceLineNo">269</span>  // a big improvement over calling registry.newMetric each time.<a name="line.269"></a>
-<span class="sourceLineNo">270</span>  @VisibleForTesting protected final ConcurrentMap&lt;String, Timer&gt; rpcTimers =<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      new ConcurrentHashMap&lt;&gt;(CAPACITY, LOAD_FACTOR, CONCURRENCY_LEVEL);<a name="line.271"></a>
-<span class="sourceLineNo">272</span>  @VisibleForTesting protected final ConcurrentMap&lt;String, Histogram&gt; rpcHistograms =<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      new ConcurrentHashMap&lt;&gt;(CAPACITY * 2 /* tracking both request and response sizes */,<a name="line.273"></a>
-<span class="sourceLineNo">274</span>          LOAD_FACTOR, CONCURRENCY_LEVEL);<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span>  public MetricsConnection(final ConnectionImplementation conn) {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    this.scope = conn.toString();<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    this.registry = new MetricsRegistry();<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    final ThreadPoolExecutor batchPool = (ThreadPoolExecutor) conn.getCurrentBatchPool();<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    final ThreadPoolExecutor metaPool = (ThreadPoolExecutor) conn.getCurrentMetaLookupPool();<a name="line.280"></a>
-<span class="sourceLineNo">281</span><a name="line.281"></a>
-<span class="sourceLineNo">282</span>    this.registry.newGauge(this.getClass(), "executorPoolActiveThreads", scope,<a name="line.282"></a>
-<span class="sourceLineNo">283</span>        new RatioGauge() {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>          @Override protected double getNumerator() {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>            return batchPool.getActiveCount();<a name="line.285"></a>
-<span class="sourceLineNo">286</span>          }<a name="line.286"></a>
-<span class="sourceLineNo">287</span>          @Override protected double getDenominator() {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>            return batchPool.getMaximumPoolSize();<a name="line.288"></a>
-<span class="sourceLineNo">289</span>          }<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        });<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    this.registry.newGauge(this.getClass(), "metaPoolActiveThreads", scope,<a name="line.291"></a>
-<span class="sourceLineNo">292</span>        new RatioGauge() {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>          @Override protected double getNumerator() {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>            return metaPool.getActiveCount();<a name="line.294"></a>
+<span class="sourceLineNo">254</span>  private final NewMetric&lt;Histogram&gt; histogramFactory = new NewMetric&lt;Histogram&gt;() {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    @Override public Histogram newMetric(Class&lt;?&gt; clazz, String name, String scope) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      return registry.histogram(name(clazz, name, scope));<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
+<span class="sourceLineNo">258</span>  };<a name="line.258"></a>
+<span class="sourceLineNo">259</span><a name="line.259"></a>
+<span class="sourceLineNo">260</span>  // static metrics<a name="line.260"></a>
+<span class="sourceLineNo">261</span><a name="line.261"></a>
+<span class="sourceLineNo">262</span>  @VisibleForTesting protected final Counter metaCacheHits;<a name="line.262"></a>
+<span class="sourceLineNo">263</span>  @VisibleForTesting protected final Counter metaCacheMisses;<a name="line.263"></a>
+<span class="sourceLineNo">264</span>  @VisibleForTesting protected final CallTracker getTracker;<a name="line.264"></a>
+<span class="sourceLineNo">265</span>  @VisibleForTesting protected final CallTracker scanTracker;<a name="line.265"></a>
+<span class="sourceLineNo">266</span>  @VisibleForTesting protected final CallTracker appendTracker;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>  @VisibleForTesting protected final CallTracker deleteTracker;<a name="line.267"></a>
+<span class="sourceLineNo">268</span>  @VisibleForTesting protected final CallTracker incrementTracker;<a name="line.268"></a>
+<span class="sourceLineNo">269</span>  @VisibleForTesting protected final CallTracker putTracker;<a name="line.269"></a>
+<span class="sourceLineNo">270</span>  @VisibleForTesting protected final CallTracker multiTracker;<a name="line.270"></a>
+<span class="sourceLineNo">271</span>  @VisibleForTesting protected final RunnerStats runnerStats;<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>  // dynamic metrics<a name="line.273"></a>
+<span class="sourceLineNo">274</span><a name="line.274"></a>
+<span class="sourceLineNo">275</span>  // These maps are used to cache references to the metric instances that are managed by the<a name="line.275"></a>
+<span class="sourceLineNo">276</span>  // registry. I don't think their use perfectly removes redundant allocations, but it's<a name="line.276"></a>
+<span class="sourceLineNo">277</span>  // a big improvement over calling registry.newMetric each time.<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  @VisibleForTesting protected final ConcurrentMap&lt;String, Timer&gt; rpcTimers =<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      new ConcurrentHashMap&lt;&gt;(CAPACITY, LOAD_FACTOR, CONCURRENCY_LEVEL);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>  @VisibleForTesting protected final ConcurrentMap&lt;String, Histogram&gt; rpcHistograms =<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      new ConcurrentHashMap&lt;&gt;(CAPACITY * 2 /* tracking both request and response sizes */,<a name="line.281"></a>
+<span class="sourceLineNo">282</span>          LOAD_FACTOR, CONCURRENCY_LEVEL);<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>  public MetricsConnection(final ConnectionImplementation conn) {<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    this.scope = conn.toString();<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    this.registry = new MetricRegistry();<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    final ThreadPoolExecutor batchPool = (ThreadPoolExecutor) conn.getCurrentBatchPool();<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    final ThreadPoolExecutor metaPool = (ThreadPoolExecutor) conn.getCurrentMetaLookupPool();<a name="line.288"></a>
+<span class="sourceLineNo">289</span><a name="line.289"></a>
+<span class="sourceLineNo">290</span>    this.registry.register(name(this.getClass(), "executorPoolActiveThreads", scope),<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        new RatioGauge() {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>          @Override<a name="line.292"></a>
+<span class="sourceLineNo">293</span>          protected Ratio getRatio() {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>            return Ratio.of(batchPool.getActiveCount(), batchPool.getMaximumPoolSize());<a name="line.294"></a>
 <span class="sourceLineNo">295</span>          }<a name="line.295"></a>
-<span class="sourceLineNo">296</span>          @Override protected double getDenominator() {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>            return metaPool.getMaximumPoolSize();<a name="line.297"></a>
-<span class="sourceLineNo">298</span>          }<a name="line.298"></a>
-<span class="sourceLineNo">299</span>        });<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    this.metaCacheHits = registry.newCounter(this.getClass(), "metaCacheHits", scope);<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    this.metaCacheMisses = registry.newCounter(this.getClass(), "metaCacheMisses", scope);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    this.getTracker = new CallTracker(this.registry, "Get", scope);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    this.scanTracker = new CallTracker(this.registry, "Scan", scope);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    this.appendTracker = new CallTracker(this.registry, "Mutate", "Append", scope);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    this.deleteTracker = new CallTracker(this.registry, "Mutate", "Delete", scope);<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    this.incrementTracker = new CallTracker(this.registry, "Mutate", "Increment", scope);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    this.putTracker = new CallTracker(this.registry, "Mutate", "Put", scope);<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    this.multiTracker = new CallTracker(this.registry, "Multi", scope);<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    this.runnerStats = new RunnerStats(this.registry);<a name="line.309"></a>
-<span class="sourceLineNo">310</span><a name="line.310"></a>
-<span class="sourceLineNo">311</span>    this.reporter = new JmxReporter(this.registry);<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    this.reporter.start();<a name="line.312"></a>
-<span class="sourceLineNo">313</span>  }<a name="line.313"></a>
+<span class="sourceLineNo">296</span>        });<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    this.registry.register(name(this.getClass(), "metaPoolActiveThreads", scope),<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        new RatioGauge() {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>          @Override<a name="line.299"></a>
+<span class="sourceLineNo">300</span>          protected Ratio getRatio() {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>            return Ratio.of(metaPool.getActiveCount(), metaPool.getMaximumPoolSize());<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>    this.metaCacheHits = registry.counter(name(this.getClass(), "metaCacheHits", scope));<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    this.metaCacheMisses = registry.counter(name(this.getClass(), "metaCacheMisses", scope));<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    this.getTracker = new CallTracker(this.registry, "Get", scope);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    this.scanTracker = new CallTracker(this.registry, "Scan", scope);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    this.appendTracker = new CallTracker(this.registry, "Mutate", "Append", scope);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    this.deleteTracker = new CallTracker(this.registry, "Mutate", "Delete", scope);<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    this.incrementTracker = new CallTracker(this.registry, "Mutate", "Increment", scope);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    this.putTracker = new CallTracker(this.registry, "Mutate", "Put", scope);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    this.multiTracker = new CallTracker(this.registry, "Multi", scope);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    this.runnerStats = new RunnerStats(this.registry);<a name="line.313"></a>
 <span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span>  public void shutdown() {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    this.reporter.shutdown();<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    this.registry.shutdown();<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  /** Produce an instance of {@link CallStats} for clients to attach to RPCs. */<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  public static CallStats newCallStats() {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    // TODO: instance pool to reduce GC?<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    return new CallStats();<a name="line.323"></a>
-<span class="sourceLineNo">324</span>  }<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>  /** Increment the number of meta cache hits. */<a name="line.326"></a>
-<span class="sourceLineNo">327</span>  public void incrMetaCacheHit() {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    metaCacheHits.inc();<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>  /** Increment the number of meta cache misses. */<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  public void incrMetaCacheMiss() {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    metaCacheMisses.inc();<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  }<a name="line.334"></a>
-<span class="sourceLineNo">335</span><a name="line.335"></a>
-<span class="sourceLineNo">336</span>  /** Increment the number of normal runner counts. */<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  public void incrNormalRunners() {<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    this.runnerStats.incrNormalRunners();<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  }<a name="line.339"></a>
-<span class="sourceLineNo">340</span><a name="line.340"></a>
-<span class="sourceLineNo">341</span>  /** Increment the number of delay runner counts. */<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  public void incrDelayRunners() {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    this.runnerStats.incrDelayRunners();<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  }<a name="line.344"></a>
-<span class="sourceLineNo">345</span><a name="line.345"></a>
-<span class="sourceLineNo">346</span>  /** Update delay interval of delay runner. */<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  public void updateDelayInterval(long interval) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    this.runnerStats.updateDelayInterval(interval);<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  }<a name="line.349"></a>
-<span class="sourceLineNo">350</span><a name="line.350"></a>
-<span class="sourceLineNo">351</span>  /**<a name="line.351"></a>
-<span class="sourceLineNo">352</span>   * Get a metric for {@code key} from {@code map}, or create it with {@code factory}.<a name="line.352"></a>
-<span class="sourceLineNo">353</span>   */<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  private &lt;T&gt; T getMetric(String key, ConcurrentMap&lt;String, T&gt; map, NewMetric&lt;T&gt; factory) {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    T t = map.get(key);<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    if (t == null) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      t = factory.newMetric(this.getClass(), key, scope);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      map.putIfAbsent(key, t);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    }<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    return t;<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>  /** Update call stats for non-critical-path methods */<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  private void updateRpcGeneric(MethodDescriptor method, CallStats stats) {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    final String methodName = method.getService().getName() + "_" + method.getName();<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    getMetric(DRTN_BASE + methodName, rpcTimers, timerFactory)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        .update(stats.getCallTimeMs(), TimeUnit.MILLISECONDS);<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    getMetric(REQ_BASE + methodName, rpcHistograms, histogramFactory)<a name="line.368"></a>
-<span class="sourceLineNo">369</span>        .update(stats.getRequestSizeBytes());<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    getMetric(RESP_BASE + methodName, rpcHistograms, histogramFactory)<a name="line.370"></a>
-<span class="sourceLineNo">371</span>        .update(stats.getResponseSizeBytes());<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>  /** Report RPC context to metrics system. */<a name="line.374"></a>
-<span class="sourceLineNo">375</span>  public void updateRpc(MethodDescriptor method, Message param, CallStats stats) {<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    // this implementation is tied directly to protobuf implementation details. would be better<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    // if we could dispatch based on something static, ie, request Message type.<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    if (method.getService() == ClientService.getDescriptor()) {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      switch(method.getIndex()) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      case 0:<a name="line.380"></a>
-<span class="sourceLineNo">381</span>        assert "Get".equals(method.getName());<a name="line.381"></a>
-<span class="sourceLineNo">382</span>        getTracker.updateRpc(stats);<a name="line.382"></a>
-<span class="sourceLineNo">383</span>        return;<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      case 1:<a name="line.384"></a>
-<span class="sourceLineNo">385</span>        assert "Mutate".equals(method.getName());<a name="line.385"></a>
-<span class="sourceLineNo">386</span>        final MutationType mutationType = ((MutateRequest) param).getMutation().getMutateType();<a name="line.386"></a>
-<span class="sourceLineNo">387</span>        switch(mutationType) {<a name="line.387"></a>
-<span class="sourceLineNo">388</span>        case APPEND:<a name="line.388"></a>
-<span class="sourceLineNo">389</span>          appendTracker.updateRpc(stats);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>          return;<a name="line.390"></a>
-<span class="sourceLineNo">391</span>        case DELETE:<a name="line.391"></a>
-<span class="sourceLineNo">392</span>          deleteTracker.updateRpc(stats);<a name="line.392"></a>
+<span class="sourceLineNo">315</span>    this.reporter = JmxReporter.forRegistry(this.registry).build();<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    this.reporter.start();<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  }<a name="line.317"></a>
+<span class="sourceLineNo">318</span><a name="line.318"></a>
+<span class="sourceLineNo">319</span>  public void shutdown() {<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    this.reporter.stop();<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  }<a name="line.321"></a>
+<span class="sourceLineNo">322</span><a name="line.322"></a>
+<span class="sourceLineNo">323</span>  /** Produce an instance of {@link CallStats} for clients to attach to RPCs. */<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  public static CallStats newCallStats() {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    // TODO: instance pool to reduce GC?<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    return new CallStats();<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>  /** Increment the number of meta cache hits. */<a name="line.329"></a>
+<span class="sourceLineNo">330</span>  public void incrMetaCacheHit() {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    metaCacheHits.inc();<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  }<a name="line.332"></a>
+<span class="sourceLineNo">333</span><a name="line.333"></a>
+<span class="sourceLineNo">334</span>  /** Increment the number of meta cache misses. */<a name="line.334"></a>
+<span class="sourceLineNo">335</span>  public void incrMetaCacheMiss() {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    metaCacheMisses.inc();<a name="line.336"></a>
+<span class="sourceLineNo">337</span>  }<a name="line.337"></a>
+<span class="sourceLineNo">338</span><a name="line.338"></a>
+<span class="sourceLineNo">339</span>  /** Increment the number of normal runner counts. */<a name="line.339"></a>
+<span class="sourceLineNo">340</span>  public void incrNormalRunners() {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    this.runnerStats.incrNormalRunners();<a name="line.341"></a>
+<span class="sourceLineNo">342</span>  }<a name="line.342"></a>
+<span class="sourceLineNo">343</span><a name="line.343"></a>
+<span class="sourceLineNo">344</span>  /** Increment the number of delay runner counts. */<a name="line.344"></a>
+<span class="sourceLineNo">345</span>  public void incrDelayRunners() {<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    this.runnerStats.incrDelayRunners();<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  }<a name="line.347"></a>
+<span class="sourceLineNo">348</span><a name="line.348"></a>
+<span class="sourceLineNo">349</span>  /** Update delay interval of delay runner. */<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  public void updateDelayInterval(long interval) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    this.runnerStats.updateDelayInterval(interval);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>  }<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>  /**<a name="line.354"></a>
+<span class="sourceLineNo">355</span>   * Get a metric for {@code key} from {@code map}, or create it with {@code factory}.<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   */<a name="line.356"></a>
+<span class="sourceLineNo">357</span>  private &lt;T&gt; T getMetric(String key, ConcurrentMap&lt;String, T&gt; map, NewMetric&lt;T&gt; factory) {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    T t = map.get(key);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    if (t == null) {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      t = factory.newMetric(this.getClass(), key, scope);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      map.putIfAbsent(key, t);<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    }<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    return t;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>  }<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>  /** Update call stats for non-critical-path methods */<a name="line.366"></a>
+<span class="sourceLineNo">367</span>  private void updateRpcGeneric(MethodDescriptor method, CallStats stats) {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    final String methodName = method.getService().getName() + "_" + method.getName();<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    getMetric(DRTN_BASE + methodName, rpcTimers, timerFactory)<a name="line.369"></a>
+<span class="sourceLineNo">370</span>        .update(stats.getCallTimeMs(), TimeUnit.MILLISECONDS);<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    getMetric(REQ_BASE + methodName, rpcHistograms, histogramFactory)<a name="line.371"></a>
+<span class="sourceLineNo">372</span>        .update(stats.getRequestSizeBytes());<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    getMetric(RESP_BASE + methodName, rpcHistograms, histogramFactory)<a name="line.373"></a>
+<span class="sourceLineNo">374</span>        .update(stats.getResponseSizeBytes());<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  }<a name="line.375"></a>
+<span class="sourceLineNo">376</span><a name="line.376"></a>
+<span class="sourceLineNo">377</span>  /** Report RPC context to metrics system. */<a name="line.377"></a>
+<span class="sourceLineNo">378</span>  public void updateRpc(MethodDescriptor method, Message param, CallStats stats) {<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    // this implementation is tied directly to protobuf implementation details. would be better<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    // if we could dispatch based on something static, ie, request Message type.<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    if (method.getService() == ClientService.getDescriptor()) {<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      switch(method.getIndex()) {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      case 0:<a name="line.383"></a>
+<span class="sourceLineNo">384</span>        assert "Get".equals(method.getName());<a name="line.384"></a>
+<span class="sourceLineNo">385</span>        getTracker.updateRpc(stats);<a name="line.385"></a>
+<span class="sourceLineNo">386</span>        return;<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      case 1:<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        assert "Mutate".equals(method.getName());<a name="line.388"></a>
+<span class="sourceLineNo">389</span>        final MutationType mutationType = ((MutateRequest) param).getMutation().getMutateType();<a name="line.389"></a>
+<span class="sourceLineNo">390</span>        switch(mutationType) {<a name="line.390"></a>
+<span class="sourceLineNo">391</span>        case APPEND:<a name="line.391"></a>
+<span class="sourceLineNo">392</span>          appendTracker.updateRpc(stats);<a name="line.392"></a>
 <span class="sourceLineNo">393</span>          return;<a name="line.393"></a>
-<span class="sourceLineNo">394</span>        case INCREMENT:<a name="line.394"></a>
-<span class="sourceLineNo">395</span>          incrementTracker.updateRpc(stats);<a name="line.395"></a>
+<span class="sourceLineNo">394</span>        case DELETE:<a name="line.394"></a>
+<span class="sourceLineNo">395</span>          deleteTracker.updateRpc(stats);<a name="line.395"></a>
 <span class="sourceLineNo">396</span>          return;<a name="line.396"></a>
-<span class="sourceLineNo">397</span>        case PUT:<a name="line.397"></a>
-<span class="sourceLineNo">398</span>          putTracker.updateRpc(stats);<a name="line.398"></a>
+<span class="sourceLineNo">397</span>        case INCREMENT:<a name="line.397"></a>
+<span class="sourceLineNo">398</span>          incrementTracker.updateRpc(stats);<a name="line.398"></a>
 <span class="sourceLineNo">399</span>          return;<a name="line.399"></a>
-<span class="sourceLineNo">400</span>        default:<a name="line.400"></a>
-<span class="sourceLineNo">401</span>          throw new RuntimeException("Unrecognized mutation type " + mutationType);<a name="line.401"></a>
-<span class="sourceLineNo">402</span>        }<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      case 2:<a name="line.403"></a>
-<span class="sourceLineNo">404</span>        assert "Scan".equals(method.getName());<a name="line.404"></a>
-<span class="sourceLineNo">405</span>        scanTracker.updateRpc(stats);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>        return;<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      case 3:<a name="line.407"></a>
-<span class="sourceLineNo">408</span>        assert "BulkLoadHFile".equals(method.getName());<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        // use generic implementation<a name="line.409"></a>
-<span class="sourceLineNo">410</span>        break;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      case 4:<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        assert "ExecService".equals(method.getName());<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        // use generic implementation<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        break;<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      case 5:<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        assert "ExecRegionServerService".equals(method.getName());<a name="line.416"></a>
-<span class="sourceLineNo">417</span>        // use generic implementation<a name="line.417"></a>
-<span class="sourceLineNo">418</span>        break;<a name="line.418"></a>
-<span class="sourceLineNo">419</span>      case 6:<a name="line.419"></a>
-<span class="sourceLineNo">420</span>        assert "Multi".equals(method.getName());<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        multiTracker.updateRpc(stats);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        return;<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      default:<a name="line.423"></a>
-<span class="sourceLineNo">424</span>        throw new RuntimeException("Unrecognized ClientService RPC type " + method.getFullName());<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      }<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    }<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    // Fallback to dynamic registry lookup for DDL methods.<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    updateRpcGeneric(method, stats);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>  }<a name="line.429"></a>
-<span class="sourceLineNo">430</span>}<a name="line.430"></a>
+<span class="sourceLineNo">400</span>        case PUT:<a name="line.400"></a>
+<span class="sourceLineNo">401</span>          putTracker.updateRpc(stats);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>          return;<a name="line.402"></a>
+<span class="sourceLineNo">403</span>        default:<a name="line.403"></a>
+<span class="sourceLineNo">404</span>          throw new RuntimeException("Unrecognized mutation type " + mutationType);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>        }<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      case 2:<a name="line.406"></a>
+<span class="sourceLineNo">407</span>        assert "Scan".equals(method.getName());<a name="line.407"></a>
+<span class="sourceLineNo">408</span>        scanTracker.updateRpc(stats);<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        return;<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      case 3:<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        assert "BulkLoadHFile".equals(method.getName());<a name="line.411"></a>
+<span class="sourceLineNo">412</span>        // use generic implementation<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        break;<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      case 4:<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        assert "ExecService".equals(method.getName());<a name="line.415"></a>
+<span class="sourceLineNo">416</span>        // use generic implementation<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        break;<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      case 5:<a name="line.418"></a>
+<span class="sourceLineNo">419</span>        assert "ExecRegionServerService".equals(method.getName());<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        // use generic implementation<a name="line.420"></a>
+<span class="sourceLineNo">421</span>        break;<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      case 6:<a name="line.422"></a>
+<span class="sourceLineNo">423</span>        assert "Multi".equals(method.getName());<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        multiTracker.updateRpc(stats);<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        return;<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      default:<a name="line.426"></a>
+<span class="sourceLineNo">427</span>        throw new RuntimeException("Unrecognized ClientService RPC type " + method.getFullName());<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      }<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    }<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    // Fallback to dynamic registry lookup for DDL methods.<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    updateRpcGeneric(method, stats);<a name="line.431"></a>
+<span class="sourceLineNo">432</span>  }<a name="line.432"></a>
+<span class="sourceLineNo">433</span>}<a name="line.433"></a>
 
 
 


[07/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html
index 5abbadd..7bf2314 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html
@@ -110,7 +110,7 @@
 <span class="sourceLineNo">102</span>  @Test<a name="line.102"></a>
 <span class="sourceLineNo">103</span>  public void testEmptyRoll() throws Exception {<a name="line.103"></a>
 <span class="sourceLineNo">104</span>    for (int i = 0; i &lt; 10; ++i) {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>      procStore.periodicRoll();<a name="line.105"></a>
+<span class="sourceLineNo">105</span>      procStore.periodicRollForTesting();<a name="line.105"></a>
 <span class="sourceLineNo">106</span>    }<a name="line.106"></a>
 <span class="sourceLineNo">107</span>    FileStatus[] status = fs.listStatus(logDir);<a name="line.107"></a>
 <span class="sourceLineNo">108</span>    assertEquals(1, status.length);<a name="line.108"></a>
@@ -222,14 +222,14 @@
 <span class="sourceLineNo">214</span>      procStore.update(rootProcs[i-1]);<a name="line.214"></a>
 <span class="sourceLineNo">215</span>    }<a name="line.215"></a>
 <span class="sourceLineNo">216</span>    // insert root-child txn<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    procStore.rollWriter();<a name="line.217"></a>
+<span class="sourceLineNo">217</span>    procStore.rollWriterForTesting();<a name="line.217"></a>
 <span class="sourceLineNo">218</span>    for (int i = 1; i &lt;= rootProcs.length; i++) {<a name="line.218"></a>
 <span class="sourceLineNo">219</span>      TestProcedure b = new TestProcedure(rootProcs.length + i, i);<a name="line.219"></a>
 <span class="sourceLineNo">220</span>      rootProcs[i-1].addStackId(1);<a name="line.220"></a>
 <span class="sourceLineNo">221</span>      procStore.insert(rootProcs[i-1], new Procedure[] { b });<a name="line.221"></a>
 <span class="sourceLineNo">222</span>    }<a name="line.222"></a>
 <span class="sourceLineNo">223</span>    // insert child updates<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    procStore.rollWriter();<a name="line.224"></a>
+<span class="sourceLineNo">224</span>    procStore.rollWriterForTesting();<a name="line.224"></a>
 <span class="sourceLineNo">225</span>    for (int i = 1; i &lt;= rootProcs.length; i++) {<a name="line.225"></a>
 <span class="sourceLineNo">226</span>      procStore.update(new TestProcedure(rootProcs.length + i, i));<a name="line.226"></a>
 <span class="sourceLineNo">227</span>    }<a name="line.227"></a>
@@ -237,347 +237,376 @@
 <span class="sourceLineNo">229</span>    // Stop the store<a name="line.229"></a>
 <span class="sourceLineNo">230</span>    procStore.stop(false);<a name="line.230"></a>
 <span class="sourceLineNo">231</span><a name="line.231"></a>
-<span class="sourceLineNo">232</span>    // Remove 4 byte from the trailer<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    FileStatus[] logs = fs.listStatus(logDir);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    assertEquals(3, logs.length);<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    Arrays.sort(logs, new Comparator&lt;FileStatus&gt;() {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      @Override<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      public int compare(FileStatus o1, FileStatus o2) {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>        return o1.getPath().getName().compareTo(o2.getPath().getName());<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      }<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    });<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>    // Remove the first log, we have insert-txn and updates in the others so everything is fine.<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    fs.delete(logs[0].getPath(), false);<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    LoadCounter loader = new LoadCounter();<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    storeRestart(loader);<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    assertEquals(rootProcs.length * 2, loader.getLoadedCount());<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    assertEquals(0, loader.getCorruptedCount());<a name="line.247"></a>
-<span class="sourceLineNo">248</span><a name="line.248"></a>
-<span class="sourceLineNo">249</span>    // Remove the second log, we have lost any root/parent references<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    fs.delete(logs[1].getPath(), false);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    loader.reset();<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    storeRestart(loader);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    assertEquals(0, loader.getLoadedCount());<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    assertEquals(rootProcs.length, loader.getCorruptedCount());<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    for (Procedure proc: loader.getCorrupted()) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      assertTrue(proc.toString(), proc.getParentProcId() &lt;= rootProcs.length);<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      assertTrue(proc.toString(),<a name="line.257"></a>
-<span class="sourceLineNo">258</span>                  proc.getProcId() &gt; rootProcs.length &amp;&amp;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>                  proc.getProcId() &lt;= (rootProcs.length * 2));<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    }<a name="line.260"></a>
-<span class="sourceLineNo">261</span>  }<a name="line.261"></a>
-<span class="sourceLineNo">262</span><a name="line.262"></a>
-<span class="sourceLineNo">263</span>  @Test(timeout=60000)<a name="line.263"></a>
-<span class="sourceLineNo">264</span>  public void testWalReplayOrder_AB_A() throws Exception {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    /*<a name="line.265"></a>
-<span class="sourceLineNo">266</span>     * | A B | -&gt; | A |<a name="line.266"></a>
-<span class="sourceLineNo">267</span>     */<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    TestProcedure a = new TestProcedure(1, 0);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    TestProcedure b = new TestProcedure(2, 1);<a name="line.269"></a>
-<span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span>    procStore.insert(a, null);<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    a.addStackId(0);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    procStore.update(a);<a name="line.273"></a>
-<span class="sourceLineNo">274</span><a name="line.274"></a>
-<span class="sourceLineNo">275</span>    procStore.insert(a, new Procedure[] { b });<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    b.addStackId(1);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    procStore.update(b);<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>    procStore.rollWriter();<a name="line.279"></a>
-<span class="sourceLineNo">280</span><a name="line.280"></a>
-<span class="sourceLineNo">281</span>    a.addStackId(2);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    procStore.update(a);<a name="line.282"></a>
-<span class="sourceLineNo">283</span><a name="line.283"></a>
-<span class="sourceLineNo">284</span>    storeRestart(new ProcedureStore.ProcedureLoader() {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      @Override<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      public void setMaxProcId(long maxProcId) {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>        assertEquals(2, maxProcId);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      }<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>      @Override<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      public void load(ProcedureIterator procIter) throws IOException {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>        assertTrue(procIter.hasNext());<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        assertEquals(1, procIter.next().getProcId());<a name="line.293"></a>
-<span class="sourceLineNo">294</span>        assertTrue(procIter.hasNext());<a name="line.294"></a>
-<span class="sourceLineNo">295</span>        assertEquals(2, procIter.next().getProcId());<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        assertFalse(procIter.hasNext());<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      }<a name="line.297"></a>
-<span class="sourceLineNo">298</span><a name="line.298"></a>
-<span class="sourceLineNo">299</span>      @Override<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      public void handleCorrupted(ProcedureIterator procIter) throws IOException {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>        assertFalse(procIter.hasNext());<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      }<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    });<a name="line.303"></a>
-<span class="sourceLineNo">304</span>  }<a name="line.304"></a>
-<span class="sourceLineNo">305</span><a name="line.305"></a>
-<span class="sourceLineNo">306</span>  @Test(timeout=60000)<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  public void testWalReplayOrder_ABC_BAD() throws Exception {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    /*<a name="line.308"></a>
-<span class="sourceLineNo">309</span>     * | A B C | -&gt; | B A D |<a name="line.309"></a>
-<span class="sourceLineNo">310</span>     */<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    TestProcedure a = new TestProcedure(1, 0);<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    TestProcedure b = new TestProcedure(2, 1);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    TestProcedure c = new TestProcedure(3, 2);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    TestProcedure d = new TestProcedure(4, 0);<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>    procStore.insert(a, null);<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    a.addStackId(0);<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    procStore.update(a);<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>    procStore.insert(a, new Procedure[] { b });<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    b.addStackId(1);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    procStore.update(b);<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span>    procStore.insert(b, new Procedure[] { c });<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    b.addStackId(2);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    procStore.update(b);<a name="line.326"></a>
-<span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>    procStore.rollWriter();<a name="line.328"></a>
-<span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>    b.addStackId(3);<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    procStore.update(b);<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>    a.addStackId(4);<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    procStore.update(a);<a name="line.334"></a>
-<span class="sourceLineNo">335</span><a name="line.335"></a>
-<span class="sourceLineNo">336</span>    procStore.insert(d, null);<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    d.addStackId(0);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    procStore.update(d);<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>    storeRestart(new ProcedureStore.ProcedureLoader() {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      @Override<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      public void setMaxProcId(long maxProcId) {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>        assertEquals(4, maxProcId);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      }<a name="line.344"></a>
-<span class="sourceLineNo">345</span><a name="line.345"></a>
-<span class="sourceLineNo">346</span>      @Override<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      public void load(ProcedureIterator procIter) throws IOException {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>        assertTrue(procIter.hasNext());<a name="line.348"></a>
-<span class="sourceLineNo">349</span>        assertEquals(4, procIter.next().getProcId());<a name="line.349"></a>
-<span class="sourceLineNo">350</span>        // TODO: This will be multiple call once we do fast-start<a name="line.350"></a>
-<span class="sourceLineNo">351</span>        //assertFalse(procIter.hasNext());<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>        assertTrue(procIter.hasNext());<a name="line.353"></a>
-<span class="sourceLineNo">354</span>        assertEquals(1, procIter.next().getProcId());<a name="line.354"></a>
-<span class="sourceLineNo">355</span>        assertTrue(procIter.hasNext());<a name="line.355"></a>
-<span class="sourceLineNo">356</span>        assertEquals(2, procIter.next().getProcId());<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        assertTrue(procIter.hasNext());<a name="line.357"></a>
-<span class="sourceLineNo">358</span>        assertEquals(3, procIter.next().getProcId());<a name="line.358"></a>
-<span class="sourceLineNo">359</span>        assertFalse(procIter.hasNext());<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      }<a name="line.360"></a>
-<span class="sourceLineNo">361</span><a name="line.361"></a>
-<span class="sourceLineNo">362</span>      @Override<a name="line.362"></a>
-<span class="sourceLineNo">363</span>      public void handleCorrupted(ProcedureIterator procIter) throws IOException {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        assertFalse(procIter.hasNext());<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      }<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    });<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  }<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>  @Test<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  public void testInsertUpdateDelete() throws Exception {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    final int NTHREAD = 2;<a name="line.371"></a>
-<span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>    procStore.stop(false);<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    fs.delete(logDir, true);<a name="line.374"></a>
-<span class="sourceLineNo">375</span><a name="line.375"></a>
-<span class="sourceLineNo">376</span>    org.apache.hadoop.conf.Configuration conf =<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      new org.apache.hadoop.conf.Configuration(htu.getConfiguration());<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    conf.setBoolean("hbase.procedure.store.wal.use.hsync", false);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    conf.setInt("hbase.procedure.store.wal.periodic.roll.msec", 10000);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    conf.setInt("hbase.procedure.store.wal.roll.threshold", 128 * 1024);<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>    fs.mkdirs(logDir);<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    procStore = ProcedureTestingUtility.createWalStore(conf, fs, logDir);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    procStore.start(NTHREAD);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    procStore.recoverLease();<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span>    LoadCounter loader = new LoadCounter();<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    procStore.load(loader);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    assertEquals(0, loader.getMaxProcId());<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    assertEquals(0, loader.getLoadedCount());<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    assertEquals(0, loader.getCorruptedCount());<a name="line.391"></a>
-<span class="sourceLineNo">392</span><a name="line.392"></a>
-<span class="sourceLineNo">393</span>    final long LAST_PROC_ID = 9999;<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    final Thread[] thread = new Thread[NTHREAD];<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    final AtomicLong procCounter = new AtomicLong((long)Math.round(Math.random() * 100));<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    for (int i = 0; i &lt; thread.length; ++i) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      thread[i] = new Thread() {<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        @Override<a name="line.398"></a>
-<span class="sourceLineNo">399</span>        public void run() {<a name="line.399"></a>
-<span class="sourceLineNo">400</span>          Random rand = new Random();<a name="line.400"></a>
-<span class="sourceLineNo">401</span>          TestProcedure proc;<a name="line.401"></a>
-<span class="sourceLineNo">402</span>          do {<a name="line.402"></a>
-<span class="sourceLineNo">403</span>            proc = new TestProcedure(procCounter.addAndGet(1));<a name="line.403"></a>
-<span class="sourceLineNo">404</span>            // Insert<a name="line.404"></a>
-<span class="sourceLineNo">405</span>            procStore.insert(proc, null);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>            // Update<a name="line.406"></a>
-<span class="sourceLineNo">407</span>            for (int i = 0, nupdates = rand.nextInt(10); i &lt;= nupdates; ++i) {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>              try { Thread.sleep(0, rand.nextInt(15)); } catch (InterruptedException e) {}<a name="line.408"></a>
-<span class="sourceLineNo">409</span>              procStore.update(proc);<a name="line.409"></a>
-<span class="sourceLineNo">410</span>            }<a name="line.410"></a>
-<span class="sourceLineNo">411</span>            // Delete<a name="line.411"></a>
-<span class="sourceLineNo">412</span>            procStore.delete(proc.getProcId());<a name="line.412"></a>
-<span class="sourceLineNo">413</span>          } while (proc.getProcId() &lt; LAST_PROC_ID);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        }<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      };<a name="line.415"></a>
-<span class="sourceLineNo">416</span>      thread[i].start();<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    }<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>    for (int i = 0; i &lt; thread.length; ++i) {<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      thread[i].join();<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    }<a name="line.421"></a>
-<span class="sourceLineNo">422</span><a name="line.422"></a>
-<span class="sourceLineNo">423</span>    procStore.getStoreTracker().dump();<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    assertTrue(procCounter.get() &gt;= LAST_PROC_ID);<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    assertTrue(procStore.getStoreTracker().isEmpty());<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    assertEquals(1, procStore.getActiveLogs().size());<a name="line.426"></a>
-<span class="sourceLineNo">427</span>  }<a name="line.427"></a>
-<span class="sourceLineNo">428</span><a name="line.428"></a>
-<span class="sourceLineNo">429</span>  private void corruptLog(final FileStatus logFile, final long dropBytes)<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      throws IOException {<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    assertTrue(logFile.getLen() &gt; dropBytes);<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    LOG.debug("corrupt log " + logFile.getPath() +<a name="line.432"></a>
-<span class="sourceLineNo">433</span>              " size=" + logFile.getLen() + " drop=" + dropBytes);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    Path tmpPath = new Path(testDir, "corrupted.log");<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    InputStream in = fs.open(logFile.getPath());<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    OutputStream out =  fs.create(tmpPath);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    IOUtils.copyBytes(in, out, logFile.getLen() - dropBytes, true);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    if (!fs.rename(tmpPath, logFile.getPath())) {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      throw new IOException("Unable to rename");<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><a name="line.442"></a>
-<span class="sourceLineNo">443</span>  private void verifyProcIdsOnRestart(final Set&lt;Long&gt; procIds) throws Exception {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    LOG.debug("expected: " + procIds);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    LoadCounter loader = new LoadCounter();<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    storeRestart(loader);<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    assertEquals(procIds.size(), loader.getLoadedCount());<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    assertEquals(0, loader.getCorruptedCount());<a name="line.448"></a>
-<span class="sourceLineNo">449</span>  }<a name="line.449"></a>
+<span class="sourceLineNo">232</span>    // the first log was removed,<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    // we have insert-txn and updates in the others so everything is fine<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    FileStatus[] logs = fs.listStatus(logDir);<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    assertEquals(Arrays.toString(logs), 2, logs.length);<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    Arrays.sort(logs, new Comparator&lt;FileStatus&gt;() {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      @Override<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      public int compare(FileStatus o1, FileStatus o2) {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>        return o1.getPath().getName().compareTo(o2.getPath().getName());<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      }<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    });<a name="line.241"></a>
+<span class="sourceLineNo">242</span><a name="line.242"></a>
+<span class="sourceLineNo">243</span>    LoadCounter loader = new LoadCounter();<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    storeRestart(loader);<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    assertEquals(rootProcs.length * 2, loader.getLoadedCount());<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    assertEquals(0, loader.getCorruptedCount());<a name="line.246"></a>
+<span class="sourceLineNo">247</span><a name="line.247"></a>
+<span class="sourceLineNo">248</span>    // Remove the second log, we have lost all the root/parent references<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    fs.delete(logs[0].getPath(), false);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    loader.reset();<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    storeRestart(loader);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    assertEquals(0, loader.getLoadedCount());<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    assertEquals(rootProcs.length, loader.getCorruptedCount());<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    for (Procedure proc: loader.getCorrupted()) {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      assertTrue(proc.toString(), proc.getParentProcId() &lt;= rootProcs.length);<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      assertTrue(proc.toString(),<a name="line.256"></a>
+<span class="sourceLineNo">257</span>                  proc.getProcId() &gt; rootProcs.length &amp;&amp;<a name="line.257"></a>
+<span class="sourceLineNo">258</span>                  proc.getProcId() &lt;= (rootProcs.length * 2));<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    }<a name="line.259"></a>
+<span class="sourceLineNo">260</span>  }<a name="line.260"></a>
+<span class="sourceLineNo">261</span><a name="line.261"></a>
+<span class="sourceLineNo">262</span>  @Test(timeout=60000)<a name="line.262"></a>
+<span class="sourceLineNo">263</span>  public void testWalReplayOrder_AB_A() throws Exception {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    /*<a name="line.264"></a>
+<span class="sourceLineNo">265</span>     * | A B | -&gt; | A |<a name="line.265"></a>
+<span class="sourceLineNo">266</span>     */<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    TestProcedure a = new TestProcedure(1, 0);<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    TestProcedure b = new TestProcedure(2, 1);<a name="line.268"></a>
+<span class="sourceLineNo">269</span><a name="line.269"></a>
+<span class="sourceLineNo">270</span>    procStore.insert(a, null);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    a.addStackId(0);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    procStore.update(a);<a name="line.272"></a>
+<span class="sourceLineNo">273</span><a name="line.273"></a>
+<span class="sourceLineNo">274</span>    procStore.insert(a, new Procedure[] { b });<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    b.addStackId(1);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    procStore.update(b);<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>    procStore.rollWriterForTesting();<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>    a.addStackId(2);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    procStore.update(a);<a name="line.281"></a>
+<span class="sourceLineNo">282</span><a name="line.282"></a>
+<span class="sourceLineNo">283</span>    storeRestart(new ProcedureStore.ProcedureLoader() {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      @Override<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      public void setMaxProcId(long maxProcId) {<a name="line.285"></a>
+<span class="sourceLineNo">286</span>        assertEquals(2, maxProcId);<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      }<a name="line.287"></a>
+<span class="sourceLineNo">288</span><a name="line.288"></a>
+<span class="sourceLineNo">289</span>      @Override<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      public void load(ProcedureIterator procIter) throws IOException {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        assertTrue(procIter.hasNext());<a name="line.291"></a>
+<span class="sourceLineNo">292</span>        assertEquals(1, procIter.next().getProcId());<a name="line.292"></a>
+<span class="sourceLineNo">293</span>        assertTrue(procIter.hasNext());<a name="line.293"></a>
+<span class="sourceLineNo">294</span>        assertEquals(2, procIter.next().getProcId());<a name="line.294"></a>
+<span class="sourceLineNo">295</span>        assertFalse(procIter.hasNext());<a name="line.295"></a>
+<span class="sourceLineNo">296</span>      }<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>      @Override<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      public void handleCorrupted(ProcedureIterator procIter) throws IOException {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        assertFalse(procIter.hasNext());<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>  }<a name="line.303"></a>
+<span class="sourceLineNo">304</span><a name="line.304"></a>
+<span class="sourceLineNo">305</span>  @Test(timeout=60000)<a name="line.305"></a>
+<span class="sourceLineNo">306</span>  public void testWalReplayOrder_ABC_BAD() throws Exception {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    /*<a name="line.307"></a>
+<span class="sourceLineNo">308</span>     * | A B C | -&gt; | B A D |<a name="line.308"></a>
+<span class="sourceLineNo">309</span>     */<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    TestProcedure a = new TestProcedure(1, 0);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    TestProcedure b = new TestProcedure(2, 1);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    TestProcedure c = new TestProcedure(3, 2);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    TestProcedure d = new TestProcedure(4, 0);<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>    procStore.insert(a, null);<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    a.addStackId(0);<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    procStore.update(a);<a name="line.317"></a>
+<span class="sourceLineNo">318</span><a name="line.318"></a>
+<span class="sourceLineNo">319</span>    procStore.insert(a, new Procedure[] { b });<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    b.addStackId(1);<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    procStore.update(b);<a name="line.321"></a>
+<span class="sourceLineNo">322</span><a name="line.322"></a>
+<span class="sourceLineNo">323</span>    procStore.insert(b, new Procedure[] { c });<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    b.addStackId(2);<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    procStore.update(b);<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>    procStore.rollWriterForTesting();<a name="line.327"></a>
+<span class="sourceLineNo">328</span><a name="line.328"></a>
+<span class="sourceLineNo">329</span>    b.addStackId(3);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    procStore.update(b);<a name="line.330"></a>
+<span class="sourceLineNo">331</span><a name="line.331"></a>
+<span class="sourceLineNo">332</span>    a.addStackId(4);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    procStore.update(a);<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>    procStore.insert(d, null);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    d.addStackId(0);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    procStore.update(d);<a name="line.337"></a>
+<span class="sourceLineNo">338</span><a name="line.338"></a>
+<span class="sourceLineNo">339</span>    storeRestart(new ProcedureStore.ProcedureLoader() {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      @Override<a name="line.340"></a>
+<span class="sourceLineNo">341</span>      public void setMaxProcId(long maxProcId) {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        assertEquals(4, maxProcId);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>      }<a name="line.343"></a>
+<span class="sourceLineNo">344</span><a name="line.344"></a>
+<span class="sourceLineNo">345</span>      @Override<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      public void load(ProcedureIterator procIter) throws IOException {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        assertTrue(procIter.hasNext());<a name="line.347"></a>
+<span class="sourceLineNo">348</span>        assertEquals(4, procIter.next().getProcId());<a name="line.348"></a>
+<span class="sourceLineNo">349</span>        // TODO: This will be multiple call once we do fast-start<a name="line.349"></a>
+<span class="sourceLineNo">350</span>        //assertFalse(procIter.hasNext());<a name="line.350"></a>
+<span class="sourceLineNo">351</span><a name="line.351"></a>
+<span class="sourceLineNo">352</span>        assertTrue(procIter.hasNext());<a name="line.352"></a>
+<span class="sourceLineNo">353</span>        assertEquals(1, procIter.next().getProcId());<a name="line.353"></a>
+<span class="sourceLineNo">354</span>        assertTrue(procIter.hasNext());<a name="line.354"></a>
+<span class="sourceLineNo">355</span>        assertEquals(2, procIter.next().getProcId());<a name="line.355"></a>
+<span class="sourceLineNo">356</span>        assertTrue(procIter.hasNext());<a name="line.356"></a>
+<span class="sourceLineNo">357</span>        assertEquals(3, procIter.next().getProcId());<a name="line.357"></a>
+<span class="sourceLineNo">358</span>        assertFalse(procIter.hasNext());<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      }<a name="line.359"></a>
+<span class="sourceLineNo">360</span><a name="line.360"></a>
+<span class="sourceLineNo">361</span>      @Override<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      public void handleCorrupted(ProcedureIterator procIter) throws IOException {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>        assertFalse(procIter.hasNext());<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      }<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    });<a name="line.365"></a>
+<span class="sourceLineNo">366</span>  }<a name="line.366"></a>
+<span class="sourceLineNo">367</span><a name="line.367"></a>
+<span class="sourceLineNo">368</span>  @Test<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  public void testInsertUpdateDelete() throws Exception {<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    final int NTHREAD = 2;<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>    procStore.stop(false);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    fs.delete(logDir, true);<a name="line.373"></a>
+<span class="sourceLineNo">374</span><a name="line.374"></a>
+<span class="sourceLineNo">375</span>    org.apache.hadoop.conf.Configuration conf =<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      new org.apache.hadoop.conf.Configuration(htu.getConfiguration());<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    conf.setBoolean("hbase.procedure.store.wal.use.hsync", false);<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    conf.setInt("hbase.procedure.store.wal.periodic.roll.msec", 10000);<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    conf.setInt("hbase.procedure.store.wal.roll.threshold", 128 * 1024);<a name="line.379"></a>
+<span class="sourceLineNo">380</span><a name="line.380"></a>
+<span class="sourceLineNo">381</span>    fs.mkdirs(logDir);<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    procStore = ProcedureTestingUtility.createWalStore(conf, fs, logDir);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    procStore.start(NTHREAD);<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    procStore.recoverLease();<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>    LoadCounter loader = new LoadCounter();<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    procStore.load(loader);<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    assertEquals(0, loader.getMaxProcId());<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    assertEquals(0, loader.getLoadedCount());<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    assertEquals(0, loader.getCorruptedCount());<a name="line.390"></a>
+<span class="sourceLineNo">391</span><a name="line.391"></a>
+<span class="sourceLineNo">392</span>    final long LAST_PROC_ID = 9999;<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    final Thread[] thread = new Thread[NTHREAD];<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    final AtomicLong procCounter = new AtomicLong((long)Math.round(Math.random() * 100));<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    for (int i = 0; i &lt; thread.length; ++i) {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      thread[i] = new Thread() {<a name="line.396"></a>
+<span class="sourceLineNo">397</span>        @Override<a name="line.397"></a>
+<span class="sourceLineNo">398</span>        public void run() {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>          Random rand = new Random();<a name="line.399"></a>
+<span class="sourceLineNo">400</span>          TestProcedure proc;<a name="line.400"></a>
+<span class="sourceLineNo">401</span>          do {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>            proc = new TestProcedure(procCounter.addAndGet(1));<a name="line.402"></a>
+<span class="sourceLineNo">403</span>            // Insert<a name="line.403"></a>
+<span class="sourceLineNo">404</span>            procStore.insert(proc, null);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>            // Update<a name="line.405"></a>
+<span class="sourceLineNo">406</span>            for (int i = 0, nupdates = rand.nextInt(10); i &lt;= nupdates; ++i) {<a name="line.406"></a>
+<span class="sourceLineNo">407</span>              try { Thread.sleep(0, rand.nextInt(15)); } catch (InterruptedException e) {}<a name="line.407"></a>
+<span class="sourceLineNo">408</span>              procStore.update(proc);<a name="line.408"></a>
+<span class="sourceLineNo">409</span>            }<a name="line.409"></a>
+<span class="sourceLineNo">410</span>            // Delete<a name="line.410"></a>
+<span class="sourceLineNo">411</span>            procStore.delete(proc.getProcId());<a name="line.411"></a>
+<span class="sourceLineNo">412</span>          } while (proc.getProcId() &lt; LAST_PROC_ID);<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        }<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      };<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      thread[i].start();<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    }<a name="line.416"></a>
+<span class="sourceLineNo">417</span><a name="line.417"></a>
+<span class="sourceLineNo">418</span>    for (int i = 0; i &lt; thread.length; ++i) {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      thread[i].join();<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>    procStore.getStoreTracker().dump();<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    assertTrue(procCounter.get() &gt;= LAST_PROC_ID);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    assertTrue(procStore.getStoreTracker().isEmpty());<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    assertEquals(1, procStore.getActiveLogs().size());<a name="line.425"></a>
+<span class="sourceLineNo">426</span>  }<a name="line.426"></a>
+<span class="sourceLineNo">427</span><a name="line.427"></a>
+<span class="sourceLineNo">428</span>  @Test<a name="line.428"></a>
+<span class="sourceLineNo">429</span>  public void testRollAndRemove() throws IOException {<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    // Insert something in the log<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    Procedure proc1 = new TestSequentialProcedure();<a name="line.431"></a>
+<span class="sourceLineNo">432</span>    procStore.insert(proc1, null);<a name="line.432"></a>
+<span class="sourceLineNo">433</span><a name="line.433"></a>
+<span class="sourceLineNo">434</span>    Procedure proc2 = new TestSequentialProcedure();<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    procStore.insert(proc2, null);<a name="line.435"></a>
+<span class="sourceLineNo">436</span><a name="line.436"></a>
+<span class="sourceLineNo">437</span>    // roll the log, now we have 2<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    procStore.rollWriterForTesting();<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    assertEquals(2, procStore.getActiveLogs().size());<a name="line.439"></a>
+<span class="sourceLineNo">440</span><a name="line.440"></a>
+<span class="sourceLineNo">441</span>    // everything will be up to date in the second log<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    // so we can remove the first one<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    procStore.update(proc1);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    procStore.update(proc2);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    assertEquals(1, procStore.getActiveLogs().size());<a name="line.445"></a>
+<span class="sourceLineNo">446</span><a name="line.446"></a>
+<span class="sourceLineNo">447</span>    // roll the log, now we have 2<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    procStore.rollWriterForTesting();<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    assertEquals(2, procStore.getActiveLogs().size());<a name="line.449"></a>
 <span class="sourceLineNo">450</span><a name="line.450"></a>
-<span class="sourceLineNo">451</span>  private void assertEmptyLogDir() {<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    try {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      FileStatus[] status = fs.listStatus(logDir);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      assertTrue("expected empty state-log dir", status == null || status.length == 0);<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    } catch (FileNotFoundException e) {<a name="line.455"></a>
-<span class="sourceLineNo">456</span>      fail("expected the state-log dir to be present: " + logDir);<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    } catch (IOException e) {<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      fail("got en exception on state-log dir list: " + e.getMessage());<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    }<a name="line.459"></a>
-<span class="sourceLineNo">460</span>  }<a name="line.460"></a>
-<span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>  public static class TestSequentialProcedure extends SequentialProcedure&lt;Void&gt; {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    private static long seqid = 0;<a name="line.463"></a>
-<span class="sourceLineNo">464</span><a name="line.464"></a>
-<span class="sourceLineNo">465</span>    public TestSequentialProcedure() {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      setProcId(++seqid);<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    }<a name="line.467"></a>
-<span class="sourceLineNo">468</span><a name="line.468"></a>
-<span class="sourceLineNo">469</span>    @Override<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    protected Procedure[] execute(Void env) { return null; }<a name="line.470"></a>
+<span class="sourceLineNo">451</span>    // remove everything active<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    // so we can remove all the logs<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    procStore.delete(proc1.getProcId());<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    procStore.delete(proc2.getProcId());<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    assertEquals(1, procStore.getActiveLogs().size());<a name="line.455"></a>
+<span class="sourceLineNo">456</span>  }<a name="line.456"></a>
+<span class="sourceLineNo">457</span><a name="line.457"></a>
+<span class="sourceLineNo">458</span>  private void corruptLog(final FileStatus logFile, final long dropBytes)<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      throws IOException {<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    assertTrue(logFile.getLen() &gt; dropBytes);<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    LOG.debug("corrupt log " + logFile.getPath() +<a name="line.461"></a>
+<span class="sourceLineNo">462</span>              " size=" + logFile.getLen() + " drop=" + dropBytes);<a name="line.462"></a>
+<span class="sourceLineNo">463</span>    Path tmpPath = new Path(testDir, "corrupted.log");<a name="line.463"></a>
+<span class="sourceLineNo">464</span>    InputStream in = fs.open(logFile.getPath());<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    OutputStream out =  fs.create(tmpPath);<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    IOUtils.copyBytes(in, out, logFile.getLen() - dropBytes, true);<a name="line.466"></a>
+<span class="sourceLineNo">467</span>    if (!fs.rename(tmpPath, logFile.getPath())) {<a name="line.467"></a>
+<span class="sourceLineNo">468</span>      throw new IOException("Unable to rename");<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    }<a name="line.469"></a>
+<span class="sourceLineNo">470</span>  }<a name="line.470"></a>
 <span class="sourceLineNo">471</span><a name="line.471"></a>
-<span class="sourceLineNo">472</span>    @Override<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    protected void rollback(Void env) { }<a name="line.473"></a>
-<span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span>    @Override<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    protected boolean abort(Void env) { return false; }<a name="line.476"></a>
-<span class="sourceLineNo">477</span><a name="line.477"></a>
-<span class="sourceLineNo">478</span>    @Override<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    protected void serializeStateData(final OutputStream stream) throws IOException {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>      long procId = getProcId();<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      if (procId % 2 == 0) {<a name="line.481"></a>
-<span class="sourceLineNo">482</span>        stream.write(Bytes.toBytes(procId));<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><a name="line.485"></a>
-<span class="sourceLineNo">486</span>    @Override<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    protected void deserializeStateData(InputStream stream) throws IOException {<a name="line.487"></a>
-<span class="sourceLineNo">488</span>      long procId = getProcId();<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      if (procId % 2 == 0) {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>        byte[] bProcId = new byte[8];<a name="line.490"></a>
-<span class="sourceLineNo">491</span>        assertEquals(8, stream.read(bProcId));<a name="line.491"></a>
-<span class="sourceLineNo">492</span>        assertEquals(procId, Bytes.toLong(bProcId));<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      } else {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>        assertEquals(0, stream.available());<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      }<a name="line.495"></a>
+<span class="sourceLineNo">472</span>  private void verifyProcIdsOnRestart(final Set&lt;Long&gt; procIds) throws Exception {<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    LOG.debug("expected: " + procIds);<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    LoadCounter loader = new LoadCounter();<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    storeRestart(loader);<a name="line.475"></a>
+<span class="sourceLineNo">476</span>    assertEquals(procIds.size(), loader.getLoadedCount());<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    assertEquals(0, loader.getCorruptedCount());<a name="line.477"></a>
+<span class="sourceLineNo">478</span>  }<a name="line.478"></a>
+<span class="sourceLineNo">479</span><a name="line.479"></a>
+<span class="sourceLineNo">480</span>  private void assertEmptyLogDir() {<a name="line.480"></a>
+<span class="sourceLineNo">481</span>    try {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>      FileStatus[] status = fs.listStatus(logDir);<a name="line.482"></a>
+<span class="sourceLineNo">483</span>      assertTrue("expected empty state-log dir", status == null || status.length == 0);<a name="line.483"></a>
+<span class="sourceLineNo">484</span>    } catch (FileNotFoundException e) {<a name="line.484"></a>
+<span class="sourceLineNo">485</span>      fail("expected the state-log dir to be present: " + logDir);<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    } catch (IOException e) {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>      fail("got en exception on state-log dir list: " + e.getMessage());<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    }<a name="line.488"></a>
+<span class="sourceLineNo">489</span>  }<a name="line.489"></a>
+<span class="sourceLineNo">490</span><a name="line.490"></a>
+<span class="sourceLineNo">491</span>  public static class TestSequentialProcedure extends SequentialProcedure&lt;Void&gt; {<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    private static long seqid = 0;<a name="line.492"></a>
+<span class="sourceLineNo">493</span><a name="line.493"></a>
+<span class="sourceLineNo">494</span>    public TestSequentialProcedure() {<a name="line.494"></a>
+<span class="sourceLineNo">495</span>      setProcId(++seqid);<a name="line.495"></a>
 <span class="sourceLineNo">496</span>    }<a name="line.496"></a>
-<span class="sourceLineNo">497</span>  }<a name="line.497"></a>
-<span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>  private class LoadCounter implements ProcedureStore.ProcedureLoader {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    private final ArrayList&lt;Procedure&gt; corrupted = new ArrayList&lt;Procedure&gt;();<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    private final ArrayList&lt;Procedure&gt; loaded = new ArrayList&lt;Procedure&gt;();<a name="line.501"></a>
-<span class="sourceLineNo">502</span><a name="line.502"></a>
-<span class="sourceLineNo">503</span>    private Set&lt;Long&gt; procIds;<a name="line.503"></a>
-<span class="sourceLineNo">504</span>    private long maxProcId = 0;<a name="line.504"></a>
-<span class="sourceLineNo">505</span><a name="line.505"></a>
-<span class="sourceLineNo">506</span>    public LoadCounter() {<a name="line.506"></a>
-<span class="sourceLineNo">507</span>      this(null);<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    }<a name="line.508"></a>
-<span class="sourceLineNo">509</span><a name="line.509"></a>
-<span class="sourceLineNo">510</span>    public LoadCounter(final Set&lt;Long&gt; procIds) {<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      this.procIds = procIds;<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    }<a name="line.512"></a>
-<span class="sourceLineNo">513</span><a name="line.513"></a>
-<span class="sourceLineNo">514</span>    public void reset() {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      reset(null);<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    }<a name="line.516"></a>
-<span class="sourceLineNo">517</span><a name="line.517"></a>
-<span class="sourceLineNo">518</span>    public void reset(final Set&lt;Long&gt; procIds) {<a name="line.518"></a>
-<span class="sourceLineNo">519</span>      corrupted.clear();<a name="line.519"></a>
-<span class="sourceLineNo">520</span>      loaded.clear();<a name="line.520"></a>
-<span class="sourceLineNo">521</span>      this.procIds = procIds;<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      this.maxProcId = 0;<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    }<a name="line.523"></a>
-<span class="sourceLineNo">524</span><a name="line.524"></a>
-<span class="sourceLineNo">525</span>    public long getMaxProcId() {<a name="line.525"></a>
-<span class="sourceLineNo">526</span>      return maxProcId;<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    }<a name="line.527"></a>
-<span class="sourceLineNo">528</span><a name="line.528"></a>
-<span class="sourceLineNo">529</span>    public ArrayList&lt;Procedure&gt; getLoaded() {<a name="line.529"></a>
-<span class="sourceLineNo">530</span>      return loaded;<a name="line.530"></a>
-<span class="sourceLineNo">531</span>    }<a name="line.531"></a>
-<span class="sourceLineNo">532</span><a name="line.532"></a>
-<span class="sourceLineNo">533</span>    public int getLoadedCount() {<a name="line.533"></a>
-<span class="sourceLineNo">534</span>      return loaded.size();<a name="line.534"></a>
-<span class="sourceLineNo">535</span>    }<a name="line.535"></a>
-<span class="sourceLineNo">536</span><a name="line.536"></a>
-<span class="sourceLineNo">537</span>    public ArrayList&lt;Procedure&gt; getCorrupted() {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>      return corrupted;<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    }<a name="line.539"></a>
-<span class="sourceLineNo">540</span><a name="line.540"></a>
-<span class="sourceLineNo">541</span>    public int getCorruptedCount() {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>      return corrupted.size();<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    }<a name="line.543"></a>
-<span class="sourceLineNo">544</span><a name="line.544"></a>
-<span class="sourceLineNo">545</span>    @Override<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    public void setMaxProcId(long maxProcId) {<a name="line.546"></a>
-<span class="sourceLineNo">547</span>      maxProcId = maxProcId;<a name="line.547"></a>
-<span class="sourceLineNo">548</span>    }<a name="line.548"></a>
-<span class="sourceLineNo">549</span><a name="line.549"></a>
-<span class="sourceLineNo">550</span>    @Override<a name="line.550"></a>
-<span class="sourceLineNo">551</span>    public void load(ProcedureIterator procIter) throws IOException {<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      while (procIter.hasNext()) {<a name="line.552"></a>
-<span class="sourceLineNo">553</span>        Procedure proc = procIter.next();<a name="line.553"></a>
-<span class="sourceLineNo">554</span>        LOG.debug("loading procId=" + proc.getProcId() + ": " + proc);<a name="line.554"></a>
-<span class="sourceLineNo">555</span>        if (procIds != null) {<a name="line.555"></a>
-<span class="sourceLineNo">556</span>          assertTrue("procId=" + proc.getProcId() + " unexpected",<a name="line.556"></a>
-<span class="sourceLineNo">557</span>                     procIds.contains(proc.getProcId()));<a name="line.557"></a>
-<span class="sourceLineNo">558</span>        }<a name="line.558"></a>
-<span class="sourceLineNo">559</span>        loaded.add(proc);<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      }<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    }<a name="line.561"></a>
-<span class="sourceLineNo">562</span><a name="line.562"></a>
-<span class="sourceLineNo">563</span>    @Override<a name="line.563"></a>
-<span class="sourceLineNo">564</span>    public void handleCorrupted(ProcedureIterator procIter) throws IOException {<a name="line.564"></a>
-<span class="sourceLineNo">565</span>      while (procIter.hasNext()) {<a name="line.565"></a>
-<span class="sourceLineNo">566</span>        Procedure proc = procIter.next();<a name="line.566"></a>
-<span class="sourceLineNo">567</span>        LOG.debug("corrupted procId=" + proc.getProcId() + ": " + proc);<a name="line.567"></a>
-<span class="sourceLineNo">568</span>        corrupted.add(proc);<a name="line.568"></a>
-<span class="sourceLineNo">569</span>      }<a name="line.569"></a>
-<span class="sourceLineNo">570</span>    }<a name="line.570"></a>
-<span class="sourceLineNo">571</span>  }<a name="line.571"></a>
-<span class="sourceLineNo">572</span>}<a name="line.572"></a>
+<span class="sourceLineNo">497</span><a name="line.497"></a>
+<span class="sourceLineNo">498</span>    @Override<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    protected Procedure[] execute(Void env) { return null; }<a name="line.499"></a>
+<span class="sourceLineNo">500</span><a name="line.500"></a>
+<span class="sourceLineNo">501</span>    @Override<a name="line.501"></a>
+<span class="sourceLineNo">502</span>    protected void rollback(Void env) { }<a name="line.502"></a>
+<span class="sourceLineNo">503</span><a name="line.503"></a>
+<span class="sourceLineNo">504</span>    @Override<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    protected boolean abort(Void env) { return false; }<a name="line.505"></a>
+<span class="sourceLineNo">506</span><a name="line.506"></a>
+<span class="sourceLineNo">507</span>    @Override<a name="line.507"></a>
+<span class="sourceLineNo">508</span>    protected void serializeStateData(final OutputStream stream) throws IOException {<a name="line.508"></a>
+<span class="sourceLineNo">509</span>      long procId = getProcId();<a name="line.509"></a>
+<span class="sourceLineNo">510</span>      if (procId % 2 == 0) {<a name="line.510"></a>
+<span class="sourceLineNo">511</span>        stream.write(Bytes.toBytes(procId));<a name="line.511"></a>
+<span class="sourceLineNo">512</span>      }<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    }<a name="line.513"></a>
+<span class="sourceLineNo">514</span><a name="line.514"></a>
+<span class="sourceLineNo">515</span>    @Override<a name="line.515"></a>
+<span class="sourceLineNo">516</span>    protected void deserializeStateData(InputStream stream) throws IOException {<a name="line.516"></a>
+<span class="sourceLineNo">517</span>      long procId = getProcId();<a name="line.517"></a>
+<span class="sourceLineNo">518</span>      if (procId % 2 == 0) {<a name="line.518"></a>
+<span class="sourceLineNo">519</span>        byte[] bProcId = new byte[8];<a name="line.519"></a>
+<span class="sourceLineNo">520</span>        assertEquals(8, stream.read(bProcId));<a name="line.520"></a>
+<span class="sourceLineNo">521</span>        assertEquals(procId, Bytes.toLong(bProcId));<a name="line.521"></a>
+<span class="sourceLineNo">522</span>      } else {<a name="line.522"></a>
+<span class="sourceLineNo">523</span>        assertEquals(0, stream.available());<a name="line.523"></a>
+<span class="sourceLineNo">524</span>      }<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    }<a name="line.525"></a>
+<span class="sourceLineNo">526</span>  }<a name="line.526"></a>
+<span class="sourceLineNo">527</span><a name="line.527"></a>
+<span class="sourceLineNo">528</span>  private class LoadCounter implements ProcedureStore.ProcedureLoader {<a name="line.528"></a>
+<span class="sourceLineNo">529</span>    private final ArrayList&lt;Procedure&gt; corrupted = new ArrayList&lt;Procedure&gt;();<a name="line.529"></a>
+<span class="sourceLineNo">530</span>    private final ArrayList&lt;Procedure&gt; loaded = new ArrayList&lt;Procedure&gt;();<a name="line.530"></a>
+<span class="sourceLineNo">531</span><a name="line.531"></a>
+<span class="sourceLineNo">532</span>    private Set&lt;Long&gt; procIds;<a name="line.532"></a>
+<span class="sourceLineNo">533</span>    private long maxProcId = 0;<a name="line.533"></a>
+<span class="sourceLineNo">534</span><a name="line.534"></a>
+<span class="sourceLineNo">535</span>    public LoadCounter() {<a name="line.535"></a>
+<span class="sourceLineNo">536</span>      this(null);<a name="line.536"></a>
+<span class="sourceLineNo">537</span>    }<a name="line.537"></a>
+<span class="sourceLineNo">538</span><a name="line.538"></a>
+<span class="sourceLineNo">539</span>    public LoadCounter(final Set&lt;Long&gt; procIds) {<a name="line.539"></a>
+<span class="sourceLineNo">540</span>      this.procIds = procIds;<a name="line.540"></a>
+<span class="sourceLineNo">541</span>    }<a name="line.541"></a>
+<span class="sourceLineNo">542</span><a name="line.542"></a>
+<span class="sourceLineNo">543</span>    public void reset() {<a name="line.543"></a>
+<span class="sourceLineNo">544</span>      reset(null);<a name="line.544"></a>
+<span class="sourceLineNo">545</span>    }<a name="line.545"></a>
+<span class="sourceLineNo">546</span><a name="line.546"></a>
+<span class="sourceLineNo">547</span>    public void reset(final Set&lt;Long&gt; procIds) {<a name="line.547"></a>
+<span class="sourceLineNo">548</span>      corrupted.clear();<a name="line.548"></a>
+<span class="sourceLineNo">549</span>      loaded.clear();<a name="line.549"></a>
+<span class="sourceLineNo">550</span>      this.procIds = procIds;<a name="line.550"></a>
+<span class="sourceLineNo">551</span>      this.maxProcId = 0;<a name="line.551"></a>
+<span class="sourceLineNo">552</span>    }<a name="line.552"></a>
+<span class="sourceLineNo">553</span><a name="line.553"></a>
+<span class="sourceLineNo">554</span>    public long getMaxProcId() {<a name="line.554"></a>
+<span class="sourceLineNo">555</span>      return maxProcId;<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    }<a name="line.556"></a>
+<span class="sourceLineNo">557</span><a name="line.557"></a>
+<span class="sourceLineNo">558</span>    public ArrayList&lt;Procedure&gt; getLoaded() {<a name="line.558"></a>
+<span class="sourceLineNo">559</span>      return loaded;<a name="line.559"></a>
+<span class="sourceLineNo">560</span>    }<a name="line.560"></a>
+<span class="sourceLineNo">561</span><a name="line.561"></a>
+<span class="sourceLineNo">562</span>    public int getLoadedCount() {<a name="line.562"></a>
+<span class="sourceLineNo">563</span>      return loaded.size();<a name="line.563"></a>
+<span class="sourceLineNo">564</span>    }<a name="line.564"></a>
+<span class="sourceLineNo">565</span><a name="line.565"></a>
+<span class="sourceLineNo">566</span>    public ArrayList&lt;Procedure&gt; getCorrupted() {<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      return corrupted;<a name="line.567"></a>
+<span class="sourceLineNo">568</span>    }<a name="line.568"></a>
+<span class="sourceLineNo">569</span><a name="line.569"></a>
+<span class="sourceLineNo">570</span>    public int getCorruptedCount() {<a name="line.570"></a>
+<span class="sourceLineNo">571</span>      return corrupted.size();<a name="line.571"></a>
+<span class="sourceLineNo">572</span>    }<a name="line.572"></a>
+<span class="sourceLineNo">573</span><a name="line.573"></a>
+<span class="sourceLineNo">574</span>    @Override<a name="line.574"></a>
+<span class="sourceLineNo">575</span>    public void setMaxProcId(long maxProcId) {<a name="line.575"></a>
+<span class="sourceLineNo">576</span>      maxProcId = maxProcId;<a name="line.576"></a>
+<span class="sourceLineNo">577</span>    }<a name="line.577"></a>
+<span class="sourceLineNo">578</span><a name="line.578"></a>
+<span class="sourceLineNo">579</span>    @Override<a name="line.579"></a>
+<span class="sourceLineNo">580</span>    public void load(ProcedureIterator procIter) throws IOException {<a name="line.580"></a>
+<span class="sourceLineNo">581</span>      while (procIter.hasNext()) {<a name="line.581"></a>
+<span class="sourceLineNo">582</span>        Procedure proc = procIter.next();<a name="line.582"></a>
+<span class="sourceLineNo">583</span>        LOG.debug("loading procId=" + proc.getProcId() + ": " + proc);<a name="line.583"></a>
+<span class="sourceLineNo">584</span>        if (procIds != null) {<a name="line.584"></a>
+<span class="sourceLineNo">585</span>          assertTrue("procId=" + proc.getProcId() + " unexpected",<a name="line.585"></a>
+<span class="sourceLineNo">586</span>                     procIds.contains(proc.getProcId()));<a name="line.586"></a>
+<span class="sourceLineNo">587</span>        }<a name="line.587"></a>
+<span class="sourceLineNo">588</span>        loaded.add(proc);<a name="line.588"></a>
+<span class="sourceLineNo">589</span>      }<a name="line.589"></a>
+<span class="sourceLineNo">590</span>    }<a name="line.590"></a>
+<span class="sourceLineNo">591</span><a name="line.591"></a>
+<span class="sourceLineNo">592</span>    @Override<a name="line.592"></a>
+<span class="sourceLineNo">593</span>    public void handleCorrupted(ProcedureIterator procIter) throws IOException {<a name="line.593"></a>
+<span class="sourceLineNo">594</span>      while (procIter.hasNext()) {<a name="line.594"></a>
+<span class="sourceLineNo">595</span>        Procedure proc = procIter.next();<a name="line.595"></a>
+<span class="sourceLineNo">596</span>        LOG.debug("corrupted procId=" + proc.getProcId() + ": " + proc);<a name="line.596"></a>
+<span class="sourceLineNo">597</span>        corrupted.add(proc);<a name="line.597"></a>
+<span class="sourceLineNo">598</span>      }<a name="line.598"></a>
+<span class="sourceLineNo">599</span>    }<a name="line.599"></a>
+<span class="sourceLineNo">600</span>  }<a name="line.600"></a>
+<span class="sourceLineNo">601</span>}<a name="line.601"></a>
 
 
 


[04/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.WALPutBenchmark.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.WALPutBenchmark.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.WALPutBenchmark.html
index 9a57ce1..0317558 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.WALPutBenchmark.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.WALPutBenchmark.html
@@ -70,532 +70,536 @@
 <span class="sourceLineNo">062</span>import org.apache.htrace.TraceScope;<a name="line.62"></a>
 <span class="sourceLineNo">063</span>import org.apache.htrace.impl.ProbabilitySampler;<a name="line.63"></a>
 <span class="sourceLineNo">064</span><a name="line.64"></a>
-<span class="sourceLineNo">065</span>import com.yammer.metrics.core.Histogram;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import com.yammer.metrics.core.Meter;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import com.yammer.metrics.core.MetricsRegistry;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import com.yammer.metrics.reporting.ConsoleReporter;<a name="line.68"></a>
-<span class="sourceLineNo">069</span><a name="line.69"></a>
-<span class="sourceLineNo">070</span>// imports for things that haven't moved from regionserver.wal yet.<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.regionserver.wal.SecureProtobufLogReader;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.regionserver.wal.SecureProtobufLogWriter;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.regionserver.wal.WALActionsListener;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.regionserver.wal.WALEdit;<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> * This class runs performance benchmarks for {@link WAL}.<a name="line.77"></a>
-<span class="sourceLineNo">078</span> * See usage for this tool by running:<a name="line.78"></a>
-<span class="sourceLineNo">079</span> * &lt;code&gt;$ hbase org.apache.hadoop.hbase.wal.WALPerformanceEvaluation -h&lt;/code&gt;<a name="line.79"></a>
-<span class="sourceLineNo">080</span> */<a name="line.80"></a>
-<span class="sourceLineNo">081</span>@InterfaceAudience.Private<a name="line.81"></a>
-<span class="sourceLineNo">082</span>public final class WALPerformanceEvaluation extends Configured implements Tool {<a name="line.82"></a>
-<span class="sourceLineNo">083</span>  private static final Log LOG = LogFactory.getLog(WALPerformanceEvaluation.class.getName());<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  private final MetricsRegistry metrics = new MetricsRegistry();<a name="line.84"></a>
-<span class="sourceLineNo">085</span>  private final Meter syncMeter =<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    metrics.newMeter(WALPerformanceEvaluation.class, "syncMeter", "syncs", TimeUnit.MILLISECONDS);<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  private final Histogram syncHistogram =<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    metrics.newHistogram(WALPerformanceEvaluation.class, "syncHistogram", "nanos-between-syncs",<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      true);<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  private final Histogram syncCountHistogram =<a name="line.90"></a>
-<span class="sourceLineNo">091</span>      metrics.newHistogram(WALPerformanceEvaluation.class, "syncCountHistogram", "countPerSync",<a name="line.91"></a>
-<span class="sourceLineNo">092</span>        true);<a name="line.92"></a>
-<span class="sourceLineNo">093</span>  private final Meter appendMeter =<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    metrics.newMeter(WALPerformanceEvaluation.class, "appendMeter", "bytes",<a name="line.94"></a>
-<span class="sourceLineNo">095</span>      TimeUnit.MILLISECONDS);<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  private final Histogram latencyHistogram =<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    metrics.newHistogram(WALPerformanceEvaluation.class, "latencyHistogram", "nanos", true);<a name="line.97"></a>
-<span class="sourceLineNo">098</span><a name="line.98"></a>
-<span class="sourceLineNo">099</span>  private final MultiVersionConcurrencyControl mvcc = new MultiVersionConcurrencyControl();<a name="line.99"></a>
-<span class="sourceLineNo">100</span><a name="line.100"></a>
-<span class="sourceLineNo">101</span>  private HBaseTestingUtility TEST_UTIL;<a name="line.101"></a>
-<span class="sourceLineNo">102</span><a name="line.102"></a>
-<span class="sourceLineNo">103</span>  static final String TABLE_NAME = "WALPerformanceEvaluation";<a name="line.103"></a>
-<span class="sourceLineNo">104</span>  static final String QUALIFIER_PREFIX = "q";<a name="line.104"></a>
-<span class="sourceLineNo">105</span>  static final String FAMILY_PREFIX = "cf";<a name="line.105"></a>
-<span class="sourceLineNo">106</span><a name="line.106"></a>
-<span class="sourceLineNo">107</span>  private int numQualifiers = 1;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>  private int valueSize = 512;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>  private int keySize = 16;<a name="line.109"></a>
-<span class="sourceLineNo">110</span><a name="line.110"></a>
-<span class="sourceLineNo">111</span>  @Override<a name="line.111"></a>
-<span class="sourceLineNo">112</span>  public void setConf(Configuration conf) {<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    super.setConf(conf);<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    TEST_UTIL = new HBaseTestingUtility(conf);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  }<a name="line.115"></a>
-<span class="sourceLineNo">116</span><a name="line.116"></a>
-<span class="sourceLineNo">117</span>  /**<a name="line.117"></a>
-<span class="sourceLineNo">118</span>   * Perform WAL.append() of Put object, for the number of iterations requested.<a name="line.118"></a>
-<span class="sourceLineNo">119</span>   * Keys and Vaues are generated randomly, the number of column families,<a name="line.119"></a>
-<span class="sourceLineNo">120</span>   * qualifiers and key/value size is tunable by the user.<a name="line.120"></a>
-<span class="sourceLineNo">121</span>   */<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  class WALPutBenchmark implements Runnable {<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    private final long numIterations;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    private final int numFamilies;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    private final boolean noSync;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    private final HRegion region;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    private final int syncInterval;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    private final HTableDescriptor htd;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    private final Sampler loopSampler;<a name="line.129"></a>
-<span class="sourceLineNo">130</span><a name="line.130"></a>
-<span class="sourceLineNo">131</span>    WALPutBenchmark(final HRegion region, final HTableDescriptor htd,<a name="line.131"></a>
-<span class="sourceLineNo">132</span>        final long numIterations, final boolean noSync, final int syncInterval,<a name="line.132"></a>
-<span class="sourceLineNo">133</span>        final double traceFreq) {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      this.numIterations = numIterations;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      this.noSync = noSync;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>      this.syncInterval = syncInterval;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      this.numFamilies = htd.getColumnFamilies().length;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      this.region = region;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>      this.htd = htd;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      String spanReceivers = getConf().get("hbase.trace.spanreceiver.classes");<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      if (spanReceivers == null || spanReceivers.isEmpty()) {<a name="line.141"></a>
-<span class="sourceLineNo">142</span>        loopSampler = Sampler.NEVER;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>      } else {<a name="line.143"></a>
-<span class="sourceLineNo">144</span>        if (traceFreq &lt;= 0.0) {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>          LOG.warn("Tracing enabled but traceFreq=0.");<a name="line.145"></a>
-<span class="sourceLineNo">146</span>          loopSampler = Sampler.NEVER;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>        } else if (traceFreq &gt;= 1.0) {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>          loopSampler = Sampler.ALWAYS;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>          if (numIterations &gt; 1000) {<a name="line.149"></a>
-<span class="sourceLineNo">150</span>            LOG.warn("Full tracing of all iterations will produce a lot of data. Be sure your"<a name="line.150"></a>
-<span class="sourceLineNo">151</span>              + " SpanReciever can keep up.");<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>          getConf().setDouble("hbase.sampler.fraction", traceFreq);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>          loopSampler = new ProbabilitySampler(new HBaseHTraceConfiguration(getConf()));<a name="line.155"></a>
-<span class="sourceLineNo">156</span>        }<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      }<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    }<a name="line.158"></a>
-<span class="sourceLineNo">159</span><a name="line.159"></a>
-<span class="sourceLineNo">160</span>    @Override<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    public void run() {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      byte[] key = new byte[keySize];<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      byte[] value = new byte[valueSize];<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      Random rand = new Random(Thread.currentThread().getId());<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      WAL wal = region.getWAL();<a name="line.165"></a>
-<span class="sourceLineNo">166</span><a name="line.166"></a>
-<span class="sourceLineNo">167</span>      TraceScope threadScope =<a name="line.167"></a>
-<span class="sourceLineNo">168</span>        Trace.startSpan("WALPerfEval." + Thread.currentThread().getName());<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      try {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>        long startTime = System.currentTimeMillis();<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        int lastSync = 0;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>        for (int i = 0; i &lt; numIterations; ++i) {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>          assert Trace.currentSpan() == threadScope.getSpan() : "Span leak detected.";<a name="line.173"></a>
-<span class="sourceLineNo">174</span>          TraceScope loopScope = Trace.startSpan("runLoopIter" + i, loopSampler);<a name="line.174"></a>
-<span class="sourceLineNo">175</span>          try {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>            long now = System.nanoTime();<a name="line.176"></a>
-<span class="sourceLineNo">177</span>            Put put = setupPut(rand, key, value, numFamilies);<a name="line.177"></a>
-<span class="sourceLineNo">178</span>            WALEdit walEdit = new WALEdit();<a name="line.178"></a>
-<span class="sourceLineNo">179</span>            addFamilyMapToWALEdit(put.getFamilyCellMap(), walEdit);<a name="line.179"></a>
-<span class="sourceLineNo">180</span>            HRegionInfo hri = region.getRegionInfo();<a name="line.180"></a>
-<span class="sourceLineNo">181</span>            final WALKey logkey =<a name="line.181"></a>
-<span class="sourceLineNo">182</span>                new WALKey(hri.getEncodedNameAsBytes(), hri.getTable(), now, mvcc);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>            wal.append(htd, hri, logkey, walEdit, true);<a name="line.183"></a>
-<span class="sourceLineNo">184</span>            if (!this.noSync) {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>              if (++lastSync &gt;= this.syncInterval) {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>                wal.sync();<a name="line.186"></a>
-<span class="sourceLineNo">187</span>                lastSync = 0;<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>            latencyHistogram.update(System.nanoTime() - now);<a name="line.190"></a>
-<span class="sourceLineNo">191</span>          } finally {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>            loopScope.close();<a name="line.192"></a>
-<span class="sourceLineNo">193</span>          }<a name="line.193"></a>
-<span class="sourceLineNo">194</span>        }<a name="line.194"></a>
-<span class="sourceLineNo">195</span>        long totalTime = (System.currentTimeMillis() - startTime);<a name="line.195"></a>
-<span class="sourceLineNo">196</span>        logBenchmarkResult(Thread.currentThread().getName(), numIterations, totalTime);<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      } catch (Exception e) {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>        LOG.error(getClass().getSimpleName() + " Thread failed", e);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      } finally {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>        threadScope.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>  }<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 run(String[] args) throws Exception {<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    Path rootRegionDir = null;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    int numThreads = 1;<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    long numIterations = 1000000;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    int numFamilies = 1;<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    int syncInterval = 0;<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    boolean noSync = false;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    boolean verify = false;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    boolean verbose = false;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    boolean cleanup = true;<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    boolean noclosefs = false;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    long roll = Long.MAX_VALUE;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    boolean compress = false;<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    String cipher = null;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    int numRegions = 1;<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    String spanReceivers = getConf().get("hbase.trace.spanreceiver.classes");<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    boolean trace = spanReceivers != null &amp;&amp; !spanReceivers.isEmpty();<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    double traceFreq = 1.0;<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    // Process command line args<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    for (int i = 0; i &lt; args.length; i++) {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      String cmd = args[i];<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      try {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>        if (cmd.equals("-threads")) {<a name="line.228"></a>
-<span class="sourceLineNo">229</span>          numThreads = Integer.parseInt(args[++i]);<a name="line.229"></a>
-<span class="sourceLineNo">230</span>        } else if (cmd.equals("-iterations")) {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>          numIterations = Long.parseLong(args[++i]);<a name="line.231"></a>
-<span class="sourceLineNo">232</span>        } else if (cmd.equals("-path")) {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>          rootRegionDir = new Path(args[++i]);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>        } else if (cmd.equals("-families")) {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>          numFamilies = Integer.parseInt(args[++i]);<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        } else if (cmd.equals("-qualifiers")) {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>          numQualifiers = Integer.parseInt(args[++i]);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>        } else if (cmd.equals("-keySize")) {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>          keySize = Integer.parseInt(args[++i]);<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        } else if (cmd.equals("-valueSize")) {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>          valueSize = Integer.parseInt(args[++i]);<a name="line.241"></a>
-<span class="sourceLineNo">242</span>        } else if (cmd.equals("-syncInterval")) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>          syncInterval = Integer.parseInt(args[++i]);<a name="line.243"></a>
-<span class="sourceLineNo">244</span>        } else if (cmd.equals("-nosync")) {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>          noSync = true;<a name="line.245"></a>
-<span class="sourceLineNo">246</span>        } else if (cmd.equals("-verify")) {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>          verify = true;<a name="line.247"></a>
-<span class="sourceLineNo">248</span>        } else if (cmd.equals("-verbose")) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>          verbose = true;<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        } else if (cmd.equals("-nocleanup")) {<a name="line.250"></a>
-<span class="sourceLineNo">251</span>          cleanup = false;<a name="line.251"></a>
-<span class="sourceLineNo">252</span>        } else if (cmd.equals("-noclosefs")) {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>          noclosefs = true;<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        } else if (cmd.equals("-roll")) {<a name="line.254"></a>
-<span class="sourceLineNo">255</span>          roll = Long.parseLong(args[++i]);<a name="line.255"></a>
-<span class="sourceLineNo">256</span>        } else if (cmd.equals("-compress")) {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>          compress = true;<a name="line.257"></a>
-<span class="sourceLineNo">258</span>        } else if (cmd.equals("-encryption")) {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>          cipher = args[++i];<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        } else if (cmd.equals("-regions")) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>          numRegions = Integer.parseInt(args[++i]);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        } else if (cmd.equals("-traceFreq")) {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>          traceFreq = Double.parseDouble(args[++i]);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>        } else if (cmd.equals("-h")) {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>          printUsageAndExit();<a name="line.265"></a>
-<span class="sourceLineNo">266</span>        } else if (cmd.equals("--help")) {<a name="line.266"></a>
-<span class="sourceLineNo">267</span>          printUsageAndExit();<a name="line.267"></a>
-<span class="sourceLineNo">268</span>        } else {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>          System.err.println("UNEXPECTED: " + cmd);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>          printUsageAndExit();<a name="line.270"></a>
-<span class="sourceLineNo">271</span>        }<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      } catch (Exception e) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>        printUsageAndExit();<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      }<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>    if (compress) {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      Configuration conf = getConf();<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      conf.setBoolean(HConstants.ENABLE_WAL_COMPRESSION, true);<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>    if (cipher != null) {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      // Set up WAL for encryption<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      Configuration conf = getConf();<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      conf.set(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase");<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      conf.setClass("hbase.regionserver.hlog.reader.impl", SecureProtobufLogReader.class,<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        WAL.Reader.class);<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      conf.setClass("hbase.regionserver.hlog.writer.impl", SecureProtobufLogWriter.class,<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        Writer.class);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      conf.setBoolean(HConstants.ENABLE_WAL_ENCRYPTION, true);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      conf.set(HConstants.CRYPTO_WAL_ALGORITHM_CONF_KEY, cipher);<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    }<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>    if (numThreads &lt; numRegions) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      LOG.warn("Number of threads is less than the number of regions; some regions will sit idle.");<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    }<a name="line.297"></a>
-<span class="sourceLineNo">298</span><a name="line.298"></a>
-<span class="sourceLineNo">299</span>    // Internal config. goes off number of threads; if more threads than handlers, stuff breaks.<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    // In regionserver, number of handlers == number of threads.<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    getConf().setInt(HConstants.REGION_SERVER_HANDLER_COUNT, numThreads);<a name="line.301"></a>
-<span class="sourceLineNo">302</span><a name="line.302"></a>
-<span class="sourceLineNo">303</span>    // Run WAL Performance Evaluation<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    // First set the fs from configs.  In case we are on hadoop1<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    FSUtils.setFsDefault(getConf(), FSUtils.getRootDir(getConf()));<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    FileSystem fs = FileSystem.get(getConf());<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    LOG.info("FileSystem: " + fs);<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>    SpanReceiverHost receiverHost = trace ? SpanReceiverHost.getInstance(getConf()) : null;<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    final Sampler&lt;?&gt; sampler = trace ? Sampler.ALWAYS : Sampler.NEVER;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    TraceScope scope = Trace.startSpan("WALPerfEval", sampler);<a name="line.311"></a>
-<span class="sourceLineNo">312</span><a name="line.312"></a>
-<span class="sourceLineNo">313</span>    try {<a name="line.313"></a>
-<span class="sourceLineNo">314</span>      if (rootRegionDir == null) {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>        rootRegionDir = TEST_UTIL.getDataTestDirOnTestFS("WALPerformanceEvaluation");<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      }<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      rootRegionDir = rootRegionDir.makeQualified(fs);<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      cleanRegionRootDir(fs, rootRegionDir);<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      FSUtils.setRootDir(getConf(), rootRegionDir);<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      final WALFactory wals = new WALFactory(getConf(), null, "wals");<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      final HRegion[] regions = new HRegion[numRegions];<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      final Runnable[] benchmarks = new Runnable[numRegions];<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      final MockRegionServerServices mockServices = new MockRegionServerServices(getConf());<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      final LogRoller roller = new LogRoller(mockServices, mockServices);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      Threads.setDaemonThreadRunning(roller.getThread(), "WALPerfEval.logRoller");<a name="line.325"></a>
-<span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>      try {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>        for(int i = 0; i &lt; numRegions; i++) {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>          // Initialize Table Descriptor<a name="line.329"></a>
-<span class="sourceLineNo">330</span>          // a table per desired region means we can avoid carving up the key space<a name="line.330"></a>
-<span class="sourceLineNo">331</span>          final HTableDescriptor htd = createHTableDescriptor(i, numFamilies);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>          regions[i] = openRegion(fs, rootRegionDir, htd, wals, roll, roller);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>          benchmarks[i] = Trace.wrap(new WALPutBenchmark(regions[i], htd, numIterations, noSync,<a name="line.333"></a>
-<span class="sourceLineNo">334</span>              syncInterval, traceFreq));<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        }<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        ConsoleReporter.enable(this.metrics, 30, TimeUnit.SECONDS);<a name="line.336"></a>
-<span class="sourceLineNo">337</span>        long putTime = runBenchmark(benchmarks, numThreads);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>        logBenchmarkResult("Summary: threads=" + numThreads + ", iterations=" + numIterations +<a name="line.338"></a>
-<span class="sourceLineNo">339</span>          ", syncInterval=" + syncInterval, numIterations * numThreads, putTime);<a name="line.339"></a>
-<span class="sourceLineNo">340</span>        <a name="line.340"></a>
-<span class="sourceLineNo">341</span>        for (int i = 0; i &lt; numRegions; i++) {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>          if (regions[i] != null) {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>            closeRegion(regions[i]);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>            regions[i] = null;<a name="line.344"></a>
-<span class="sourceLineNo">345</span>          }<a name="line.345"></a>
-<span class="sourceLineNo">346</span>        }<a name="line.346"></a>
-<span class="sourceLineNo">347</span>        if (verify) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>          LOG.info("verifying written log entries.");<a name="line.348"></a>
-<span class="sourceLineNo">349</span>          Path dir = new Path(FSUtils.getRootDir(getConf()),<a name="line.349"></a>
-<span class="sourceLineNo">350</span>              DefaultWALProvider.getWALDirectoryName("wals"));<a name="line.350"></a>
-<span class="sourceLineNo">351</span>          long editCount = 0;<a name="line.351"></a>
-<span class="sourceLineNo">352</span>          FileStatus [] fsss = fs.listStatus(dir);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>          if (fsss.length == 0) throw new IllegalStateException("No WAL found");<a name="line.353"></a>
-<span class="sourceLineNo">354</span>          for (FileStatus fss: fsss) {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>            Path p = fss.getPath();<a name="line.355"></a>
-<span class="sourceLineNo">356</span>            if (!fs.exists(p)) throw new IllegalStateException(p.toString());<a name="line.356"></a>
-<span class="sourceLineNo">357</span>            editCount += verify(wals, p, verbose);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>          }<a name="line.358"></a>
-<span class="sourceLineNo">359</span>          long expected = numIterations * numThreads;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>          if (editCount != expected) {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>            throw new IllegalStateException("Counted=" + editCount + ", expected=" + expected);<a name="line.361"></a>
+<span class="sourceLineNo">065</span>import com.codahale.metrics.ConsoleReporter;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import com.codahale.metrics.Histogram;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import com.codahale.metrics.Meter;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import com.codahale.metrics.MetricRegistry;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import com.codahale.metrics.MetricFilter;<a name="line.69"></a>
+<span class="sourceLineNo">070</span><a name="line.70"></a>
+<span class="sourceLineNo">071</span>// imports for things that haven't moved from regionserver.wal yet.<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.regionserver.wal.SecureProtobufLogReader;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.regionserver.wal.SecureProtobufLogWriter;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.regionserver.wal.WALActionsListener;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.regionserver.wal.WALEdit;<a name="line.75"></a>
+<span class="sourceLineNo">076</span><a name="line.76"></a>
+<span class="sourceLineNo">077</span>import static com.codahale.metrics.MetricRegistry.name;<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> * This class runs performance benchmarks for {@link WAL}.<a name="line.80"></a>
+<span class="sourceLineNo">081</span> * See usage for this tool by running:<a name="line.81"></a>
+<span class="sourceLineNo">082</span> * &lt;code&gt;$ hbase org.apache.hadoop.hbase.wal.WALPerformanceEvaluation -h&lt;/code&gt;<a name="line.82"></a>
+<span class="sourceLineNo">083</span> */<a name="line.83"></a>
+<span class="sourceLineNo">084</span>@InterfaceAudience.Private<a name="line.84"></a>
+<span class="sourceLineNo">085</span>public final class WALPerformanceEvaluation extends Configured implements Tool {<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  private static final Log LOG = LogFactory.getLog(WALPerformanceEvaluation.class.getName());<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  private final MetricRegistry metrics = new MetricRegistry();<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  private final Meter syncMeter =<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    metrics.meter(name(WALPerformanceEvaluation.class, "syncMeter", "syncs"));<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>  private final Histogram syncHistogram = metrics.histogram(<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    name(WALPerformanceEvaluation.class, "syncHistogram", "nanos-between-syncs"));<a name="line.92"></a>
+<span class="sourceLineNo">093</span>  private final Histogram syncCountHistogram = metrics.histogram(<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    name(WALPerformanceEvaluation.class, "syncCountHistogram", "countPerSync"));<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  private final Meter appendMeter = metrics.meter(<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    name(WALPerformanceEvaluation.class, "appendMeter", "bytes"));<a name="line.96"></a>
+<span class="sourceLineNo">097</span>  private final Histogram latencyHistogram =<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    metrics.histogram(name(WALPerformanceEvaluation.class, "latencyHistogram", "nanos"));<a name="line.98"></a>
+<span class="sourceLineNo">099</span><a name="line.99"></a>
+<span class="sourceLineNo">100</span>  private final MultiVersionConcurrencyControl mvcc = new MultiVersionConcurrencyControl();<a name="line.100"></a>
+<span class="sourceLineNo">101</span><a name="line.101"></a>
+<span class="sourceLineNo">102</span>  private HBaseTestingUtility TEST_UTIL;<a name="line.102"></a>
+<span class="sourceLineNo">103</span><a name="line.103"></a>
+<span class="sourceLineNo">104</span>  static final String TABLE_NAME = "WALPerformanceEvaluation";<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  static final String QUALIFIER_PREFIX = "q";<a name="line.105"></a>
+<span class="sourceLineNo">106</span>  static final String FAMILY_PREFIX = "cf";<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>  private int numQualifiers = 1;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>  private int valueSize = 512;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  private int keySize = 16;<a name="line.110"></a>
+<span class="sourceLineNo">111</span><a name="line.111"></a>
+<span class="sourceLineNo">112</span>  @Override<a name="line.112"></a>
+<span class="sourceLineNo">113</span>  public void setConf(Configuration conf) {<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    super.setConf(conf);<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    TEST_UTIL = new HBaseTestingUtility(conf);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  }<a name="line.116"></a>
+<span class="sourceLineNo">117</span><a name="line.117"></a>
+<span class="sourceLineNo">118</span>  /**<a name="line.118"></a>
+<span class="sourceLineNo">119</span>   * Perform WAL.append() of Put object, for the number of iterations requested.<a name="line.119"></a>
+<span class="sourceLineNo">120</span>   * Keys and Vaues are generated randomly, the number of column families,<a name="line.120"></a>
+<span class="sourceLineNo">121</span>   * qualifiers and key/value size is tunable by the user.<a name="line.121"></a>
+<span class="sourceLineNo">122</span>   */<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  class WALPutBenchmark implements Runnable {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    private final long numIterations;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    private final int numFamilies;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    private final boolean noSync;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    private final HRegion region;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    private final int syncInterval;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    private final HTableDescriptor htd;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    private final Sampler loopSampler;<a name="line.130"></a>
+<span class="sourceLineNo">131</span><a name="line.131"></a>
+<span class="sourceLineNo">132</span>    WALPutBenchmark(final HRegion region, final HTableDescriptor htd,<a name="line.132"></a>
+<span class="sourceLineNo">133</span>        final long numIterations, final boolean noSync, final int syncInterval,<a name="line.133"></a>
+<span class="sourceLineNo">134</span>        final double traceFreq) {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      this.numIterations = numIterations;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      this.noSync = noSync;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      this.syncInterval = syncInterval;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>      this.numFamilies = htd.getColumnFamilies().length;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>      this.region = region;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      this.htd = htd;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>      String spanReceivers = getConf().get("hbase.trace.spanreceiver.classes");<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      if (spanReceivers == null || spanReceivers.isEmpty()) {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>        loopSampler = Sampler.NEVER;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      } else {<a name="line.144"></a>
+<span class="sourceLineNo">145</span>        if (traceFreq &lt;= 0.0) {<a name="line.145"></a>
+<span class="sourceLineNo">146</span>          LOG.warn("Tracing enabled but traceFreq=0.");<a name="line.146"></a>
+<span class="sourceLineNo">147</span>          loopSampler = Sampler.NEVER;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>        } else if (traceFreq &gt;= 1.0) {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>          loopSampler = Sampler.ALWAYS;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>          if (numIterations &gt; 1000) {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>            LOG.warn("Full tracing of all iterations will produce a lot of data. Be sure your"<a name="line.151"></a>
+<span class="sourceLineNo">152</span>              + " SpanReciever can keep up.");<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>          getConf().setDouble("hbase.sampler.fraction", traceFreq);<a name="line.155"></a>
+<span class="sourceLineNo">156</span>          loopSampler = new ProbabilitySampler(new HBaseHTraceConfiguration(getConf()));<a name="line.156"></a>
+<span class="sourceLineNo">157</span>        }<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      }<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    }<a name="line.159"></a>
+<span class="sourceLineNo">160</span><a name="line.160"></a>
+<span class="sourceLineNo">161</span>    @Override<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    public void run() {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      byte[] key = new byte[keySize];<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      byte[] value = new byte[valueSize];<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      Random rand = new Random(Thread.currentThread().getId());<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      WAL wal = region.getWAL();<a name="line.166"></a>
+<span class="sourceLineNo">167</span><a name="line.167"></a>
+<span class="sourceLineNo">168</span>      TraceScope threadScope =<a name="line.168"></a>
+<span class="sourceLineNo">169</span>        Trace.startSpan("WALPerfEval." + Thread.currentThread().getName());<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      try {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>        long startTime = System.currentTimeMillis();<a name="line.171"></a>
+<span class="sourceLineNo">172</span>        int lastSync = 0;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        for (int i = 0; i &lt; numIterations; ++i) {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>          assert Trace.currentSpan() == threadScope.getSpan() : "Span leak detected.";<a name="line.174"></a>
+<span class="sourceLineNo">175</span>          TraceScope loopScope = Trace.startSpan("runLoopIter" + i, loopSampler);<a name="line.175"></a>
+<span class="sourceLineNo">176</span>          try {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>            long now = System.nanoTime();<a name="line.177"></a>
+<span class="sourceLineNo">178</span>            Put put = setupPut(rand, key, value, numFamilies);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>            WALEdit walEdit = new WALEdit();<a name="line.179"></a>
+<span class="sourceLineNo">180</span>            addFamilyMapToWALEdit(put.getFamilyCellMap(), walEdit);<a name="line.180"></a>
+<span class="sourceLineNo">181</span>            HRegionInfo hri = region.getRegionInfo();<a name="line.181"></a>
+<span class="sourceLineNo">182</span>            final WALKey logkey =<a name="line.182"></a>
+<span class="sourceLineNo">183</span>                new WALKey(hri.getEncodedNameAsBytes(), hri.getTable(), now, mvcc);<a name="line.183"></a>
+<span class="sourceLineNo">184</span>            wal.append(htd, hri, logkey, walEdit, true);<a name="line.184"></a>
+<span class="sourceLineNo">185</span>            if (!this.noSync) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>              if (++lastSync &gt;= this.syncInterval) {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>                wal.sync();<a name="line.187"></a>
+<span class="sourceLineNo">188</span>                lastSync = 0;<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>            latencyHistogram.update(System.nanoTime() - now);<a name="line.191"></a>
+<span class="sourceLineNo">192</span>          } finally {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>            loopScope.close();<a name="line.193"></a>
+<span class="sourceLineNo">194</span>          }<a name="line.194"></a>
+<span class="sourceLineNo">195</span>        }<a name="line.195"></a>
+<span class="sourceLineNo">196</span>        long totalTime = (System.currentTimeMillis() - startTime);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>        logBenchmarkResult(Thread.currentThread().getName(), numIterations, totalTime);<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      } catch (Exception e) {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>        LOG.error(getClass().getSimpleName() + " Thread failed", e);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      } finally {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>        threadScope.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>  }<a name="line.204"></a>
+<span class="sourceLineNo">205</span><a name="line.205"></a>
+<span class="sourceLineNo">206</span>  @Override<a name="line.206"></a>
+<span class="sourceLineNo">207</span>  public int run(String[] args) throws Exception {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    Path rootRegionDir = null;<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    int numThreads = 1;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    long numIterations = 1000000;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    int numFamilies = 1;<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    int syncInterval = 0;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    boolean noSync = false;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    boolean verify = false;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    boolean verbose = false;<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    boolean cleanup = true;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    boolean noclosefs = false;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    long roll = Long.MAX_VALUE;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    boolean compress = false;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    String cipher = null;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    int numRegions = 1;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    String spanReceivers = getConf().get("hbase.trace.spanreceiver.classes");<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    boolean trace = spanReceivers != null &amp;&amp; !spanReceivers.isEmpty();<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    double traceFreq = 1.0;<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    // Process command line args<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    for (int i = 0; i &lt; args.length; i++) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      String cmd = args[i];<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      try {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>        if (cmd.equals("-threads")) {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>          numThreads = Integer.parseInt(args[++i]);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>        } else if (cmd.equals("-iterations")) {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>          numIterations = Long.parseLong(args[++i]);<a name="line.232"></a>
+<span class="sourceLineNo">233</span>        } else if (cmd.equals("-path")) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>          rootRegionDir = new Path(args[++i]);<a name="line.234"></a>
+<span class="sourceLineNo">235</span>        } else if (cmd.equals("-families")) {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>          numFamilies = Integer.parseInt(args[++i]);<a name="line.236"></a>
+<span class="sourceLineNo">237</span>        } else if (cmd.equals("-qualifiers")) {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>          numQualifiers = Integer.parseInt(args[++i]);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>        } else if (cmd.equals("-keySize")) {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>          keySize = Integer.parseInt(args[++i]);<a name="line.240"></a>
+<span class="sourceLineNo">241</span>        } else if (cmd.equals("-valueSize")) {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>          valueSize = Integer.parseInt(args[++i]);<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        } else if (cmd.equals("-syncInterval")) {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>          syncInterval = Integer.parseInt(args[++i]);<a name="line.244"></a>
+<span class="sourceLineNo">245</span>        } else if (cmd.equals("-nosync")) {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>          noSync = true;<a name="line.246"></a>
+<span class="sourceLineNo">247</span>        } else if (cmd.equals("-verify")) {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>          verify = true;<a name="line.248"></a>
+<span class="sourceLineNo">249</span>        } else if (cmd.equals("-verbose")) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>          verbose = true;<a name="line.250"></a>
+<span class="sourceLineNo">251</span>        } else if (cmd.equals("-nocleanup")) {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>          cleanup = false;<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        } else if (cmd.equals("-noclosefs")) {<a name="line.253"></a>
+<span class="sourceLineNo">254</span>          noclosefs = true;<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        } else if (cmd.equals("-roll")) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>          roll = Long.parseLong(args[++i]);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>        } else if (cmd.equals("-compress")) {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>          compress = true;<a name="line.258"></a>
+<span class="sourceLineNo">259</span>        } else if (cmd.equals("-encryption")) {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>          cipher = args[++i];<a name="line.260"></a>
+<span class="sourceLineNo">261</span>        } else if (cmd.equals("-regions")) {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>          numRegions = Integer.parseInt(args[++i]);<a name="line.262"></a>
+<span class="sourceLineNo">263</span>        } else if (cmd.equals("-traceFreq")) {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>          traceFreq = Double.parseDouble(args[++i]);<a name="line.264"></a>
+<span class="sourceLineNo">265</span>        } else if (cmd.equals("-h")) {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>          printUsageAndExit();<a name="line.266"></a>
+<span class="sourceLineNo">267</span>        } else if (cmd.equals("--help")) {<a name="line.267"></a>
+<span class="sourceLineNo">268</span>          printUsageAndExit();<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        } else {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>          System.err.println("UNEXPECTED: " + cmd);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>          printUsageAndExit();<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        }<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      } catch (Exception e) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        printUsageAndExit();<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      }<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    }<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>    if (compress) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      Configuration conf = getConf();<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      conf.setBoolean(HConstants.ENABLE_WAL_COMPRESSION, true);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    }<a name="line.281"></a>
+<span class="sourceLineNo">282</span><a name="line.282"></a>
+<span class="sourceLineNo">283</span>    if (cipher != null) {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      // Set up WAL for encryption<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      Configuration conf = getConf();<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      conf.set(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY, KeyProviderForTesting.class.getName());<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      conf.set(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase");<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      conf.setClass("hbase.regionserver.hlog.reader.impl", SecureProtobufLogReader.class,<a name="line.288"></a>
+<span class="sourceLineNo">289</span>        WAL.Reader.class);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      conf.setClass("hbase.regionserver.hlog.writer.impl", SecureProtobufLogWriter.class,<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        Writer.class);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>      conf.setBoolean(HConstants.ENABLE_WAL_ENCRYPTION, true);<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      conf.set(HConstants.CRYPTO_WAL_ALGORITHM_CONF_KEY, cipher);<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>    if (numThreads &lt; numRegions) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      LOG.warn("Number of threads is less than the number of regions; some regions will sit idle.");<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    }<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>    // Internal config. goes off number of threads; if more threads than handlers, stuff breaks.<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    // In regionserver, number of handlers == number of threads.<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    getConf().setInt(HConstants.REGION_SERVER_HANDLER_COUNT, numThreads);<a name="line.302"></a>
+<span class="sourceLineNo">303</span><a name="line.303"></a>
+<span class="sourceLineNo">304</span>    // Run WAL Performance Evaluation<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    // First set the fs from configs.  In case we are on hadoop1<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    FSUtils.setFsDefault(getConf(), FSUtils.getRootDir(getConf()));<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    FileSystem fs = FileSystem.get(getConf());<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    LOG.info("FileSystem: " + fs);<a name="line.308"></a>
+<span class="sourceLineNo">309</span><a name="line.309"></a>
+<span class="sourceLineNo">310</span>    SpanReceiverHost receiverHost = trace ? SpanReceiverHost.getInstance(getConf()) : null;<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    final Sampler&lt;?&gt; sampler = trace ? Sampler.ALWAYS : Sampler.NEVER;<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    TraceScope scope = Trace.startSpan("WALPerfEval", sampler);<a name="line.312"></a>
+<span class="sourceLineNo">313</span><a name="line.313"></a>
+<span class="sourceLineNo">314</span>    try {<a name="line.314"></a>
+<span class="sourceLineNo">315</span>      if (rootRegionDir == null) {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>        rootRegionDir = TEST_UTIL.getDataTestDirOnTestFS("WALPerformanceEvaluation");<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      }<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      rootRegionDir = rootRegionDir.makeQualified(fs);<a name="line.318"></a>
+<span class="sourceLineNo">319</span>      cleanRegionRootDir(fs, rootRegionDir);<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      FSUtils.setRootDir(getConf(), rootRegionDir);<a name="line.320"></a>
+<span class="sourceLineNo">321</span>      final WALFactory wals = new WALFactory(getConf(), null, "wals");<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      final HRegion[] regions = new HRegion[numRegions];<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      final Runnable[] benchmarks = new Runnable[numRegions];<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      final MockRegionServerServices mockServices = new MockRegionServerServices(getConf());<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      final LogRoller roller = new LogRoller(mockServices, mockServices);<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      Threads.setDaemonThreadRunning(roller.getThread(), "WALPerfEval.logRoller");<a name="line.326"></a>
+<span class="sourceLineNo">327</span><a name="line.327"></a>
+<span class="sourceLineNo">328</span>      try {<a name="line.328"></a>
+<span class="sourceLineNo">329</span>        for(int i = 0; i &lt; numRegions; i++) {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>          // Initialize Table Descriptor<a name="line.330"></a>
+<span class="sourceLineNo">331</span>          // a table per desired region means we can avoid carving up the key space<a name="line.331"></a>
+<span class="sourceLineNo">332</span>          final HTableDescriptor htd = createHTableDescriptor(i, numFamilies);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>          regions[i] = openRegion(fs, rootRegionDir, htd, wals, roll, roller);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>          benchmarks[i] = Trace.wrap(new WALPutBenchmark(regions[i], htd, numIterations, noSync,<a name="line.334"></a>
+<span class="sourceLineNo">335</span>              syncInterval, traceFreq));<a name="line.335"></a>
+<span class="sourceLineNo">336</span>        }<a name="line.336"></a>
+<span class="sourceLineNo">337</span>        ConsoleReporter reporter = ConsoleReporter.forRegistry(metrics).<a name="line.337"></a>
+<span class="sourceLineNo">338</span>          outputTo(System.out).convertRatesTo(TimeUnit.SECONDS).filter(MetricFilter.ALL).build();<a name="line.338"></a>
+<span class="sourceLineNo">339</span>        reporter.start(30, TimeUnit.SECONDS);<a name="line.339"></a>
+<span class="sourceLineNo">340</span><a name="line.340"></a>
+<span class="sourceLineNo">341</span>        long putTime = runBenchmark(benchmarks, numThreads);<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        logBenchmarkResult("Summary: threads=" + numThreads + ", iterations=" + numIterations +<a name="line.342"></a>
+<span class="sourceLineNo">343</span>          ", syncInterval=" + syncInterval, numIterations * numThreads, putTime);<a name="line.343"></a>
+<span class="sourceLineNo">344</span>        <a name="line.344"></a>
+<span class="sourceLineNo">345</span>        for (int i = 0; i &lt; numRegions; i++) {<a name="line.345"></a>
+<span class="sourceLineNo">346</span>          if (regions[i] != null) {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>            closeRegion(regions[i]);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>            regions[i] = null;<a name="line.348"></a>
+<span class="sourceLineNo">349</span>          }<a name="line.349"></a>
+<span class="sourceLineNo">350</span>        }<a name="line.350"></a>
+<span class="sourceLineNo">351</span>        if (verify) {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>          LOG.info("verifying written log entries.");<a name="line.352"></a>
+<span class="sourceLineNo">353</span>          Path dir = new Path(FSUtils.getRootDir(getConf()),<a name="line.353"></a>
+<span class="sourceLineNo">354</span>              DefaultWALProvider.getWALDirectoryName("wals"));<a name="line.354"></a>
+<span class="sourceLineNo">355</span>          long editCount = 0;<a name="line.355"></a>
+<span class="sourceLineNo">356</span>          FileStatus [] fsss = fs.listStatus(dir);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>          if (fsss.length == 0) throw new IllegalStateException("No WAL found");<a name="line.357"></a>
+<span class="sourceLineNo">358</span>          for (FileStatus fss: fsss) {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>            Path p = fss.getPath();<a name="line.359"></a>
+<span class="sourceLineNo">360</span>            if (!fs.exists(p)) throw new IllegalStateException(p.toString());<a name="line.360"></a>
+<span class="sourceLineNo">361</span>            editCount += verify(wals, p, verbose);<a name="line.361"></a>
 <span class="sourceLineNo">362</span>          }<a name="line.362"></a>
-<span class="sourceLineNo">363</span>        }<a name="line.363"></a>
-<span class="sourceLineNo">364</span>      } finally {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>        mockServices.stop("test clean up.");<a name="line.365"></a>
-<span class="sourceLineNo">366</span>        for (int i = 0; i &lt; numRegions; i++) {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>          if (regions[i] != null) {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>            closeRegion(regions[i]);<a name="line.368"></a>
-<span class="sourceLineNo">369</span>          }<a name="line.369"></a>
-<span class="sourceLineNo">370</span>        }<a name="line.370"></a>
-<span class="sourceLineNo">371</span>        if (null != roller) {<a name="line.371"></a>
-<span class="sourceLineNo">372</span>          LOG.info("shutting down log roller.");<a name="line.372"></a>
-<span class="sourceLineNo">373</span>          Threads.shutdown(roller.getThread());<a name="line.373"></a>
+<span class="sourceLineNo">363</span>          long expected = numIterations * numThreads;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>          if (editCount != expected) {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>            throw new IllegalStateException("Counted=" + editCount + ", expected=" + expected);<a name="line.365"></a>
+<span class="sourceLineNo">366</span>          }<a name="line.366"></a>
+<span class="sourceLineNo">367</span>        }<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      } finally {<a name="line.368"></a>
+<span class="sourceLineNo">369</span>        mockServices.stop("test clean up.");<a name="line.369"></a>
+<span class="sourceLineNo">370</span>        for (int i = 0; i &lt; numRegions; i++) {<a name="line.370"></a>
+<span class="sourceLineNo">371</span>          if (regions[i] != null) {<a name="line.371"></a>
+<span class="sourceLineNo">372</span>            closeRegion(regions[i]);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>          }<a name="line.373"></a>
 <span class="sourceLineNo">374</span>        }<a name="line.374"></a>
-<span class="sourceLineNo">375</span>        wals.shutdown();<a name="line.375"></a>
-<span class="sourceLineNo">376</span>        // Remove the root dir for this test region<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        if (cleanup) cleanRegionRootDir(fs, rootRegionDir);<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      }<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    } finally {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      // We may be called inside a test that wants to keep on using the fs.<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      if (!noclosefs) fs.close();<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      scope.close();<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      if (receiverHost != null) receiverHost.closeReceivers();<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    }<a name="line.384"></a>
-<span class="sourceLineNo">385</span><a name="line.385"></a>
-<span class="sourceLineNo">386</span>    return(0);<a name="line.386"></a>
-<span class="sourceLineNo">387</span>  }<a name="line.387"></a>
-<span class="sourceLineNo">388</span><a name="line.388"></a>
-<span class="sourceLineNo">389</span>  private static HTableDescriptor createHTableDescriptor(final int regionNum,<a name="line.389"></a>
-<span class="sourceLineNo">390</span>      final int numFamilies) {<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(TABLE_NAME + ":" + regionNum));<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    for (int i = 0; i &lt; numFamilies; ++i) {<a name="line.392"></a>
-<span class="sourceLineNo">393</span>      HColumnDescriptor colDef = new HColumnDescriptor(FAMILY_PREFIX + i);<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      htd.addFamily(colDef);<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    }<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    return htd;<a name="line.396"></a>
-<span class="sourceLineNo">397</span>  }<a name="line.397"></a>
-<span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>  /**<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * Verify the content of the WAL file.<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * Verify that the file has expected number of edits.<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   * @param wals may not be null<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   * @param wal<a name="line.403"></a>
-<span class="sourceLineNo">404</span>   * @return Count of edits.<a name="line.404"></a>
-<span class="sourceLineNo">405</span>   * @throws IOException<a name="line.405"></a>
-<span class="sourceLineNo">406</span>   */<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  private long verify(final WALFactory wals, final Path wal, final boolean verbose)<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      throws IOException {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    WAL.Reader reader = wals.createReader(wal.getFileSystem(getConf()), wal);<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    long count = 0;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    Map&lt;String, Long&gt; sequenceIds = new HashMap&lt;String, Long&gt;();<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    try {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      while (true) {<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        WAL.Entry e = reader.next();<a name="line.414"></a>
-<span class="sourceLineNo">415</span>        if (e == null) {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>          LOG.debug("Read count=" + count + " from " + wal);<a name="line.416"></a>
-<span class="sourceLineNo">417</span>          break;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>        }<a name="line.418"></a>
-<span class="sourceLineNo">419</span>        count++;<a name="line.419"></a>
-<span class="sourceLineNo">420</span>        long seqid = e.getKey().getLogSeqNum();<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        if (sequenceIds.containsKey(Bytes.toString(e.getKey().getEncodedRegionName()))) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>          // sequenceIds should be increasing for every regions<a name="line.422"></a>
-<span class="sourceLineNo">423</span>          if (sequenceIds.get(Bytes.toString(e.getKey().getEncodedRegionName())) &gt;= seqid) {<a name="line.423"></a>
-<span class="sourceLineNo">424</span>            throw new IllegalStateException("wal = " + wal.getName() + ", " + "previous seqid = "<a name="line.424"></a>
-<span class="sourceLineNo">425</span>                + sequenceIds.get(Bytes.toString(e.getKey().getEncodedRegionName()))<a name="line.425"></a>
-<span class="sourceLineNo">426</span>                + ", current seqid = " + seqid);<a name="line.426"></a>
-<span class="sourceLineNo">427</span>          }<a name="line.427"></a>
-<span class="sourceLineNo">428</span>        }<a name="line.428"></a>
-<span class="sourceLineNo">429</span>        // update the sequence Id.<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        sequenceIds.put(Bytes.toString(e.getKey().getEncodedRegionName()), seqid);<a name="line.430"></a>
-<span class="sourceLineNo">431</span>        if (verbose) LOG.info("seqid=" + seqid);<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      }<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    } finally {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      reader.close();<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    }<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    return count;<a name="line.436"></a>
-<span class="sourceLineNo">437</span>  }<a name="line.437"></a>
-<span class="sourceLineNo">438</span><a name="line.438"></a>
-<span class="sourceLineNo">439</span>  private static void logBenchmarkResult(String testName, long numTests, long totalTime) {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    float tsec = totalTime / 1000.0f;<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    LOG.info(String.format("%s took %.3fs %.3fops/s", testName, tsec, numTests / tsec));<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    <a name="line.442"></a>
-<span class="sourceLineNo">443</span>  }<a name="line.443"></a>
-<span class="sourceLineNo">444</span><a name="line.444"></a>
-<span class="sourceLineNo">445</span>  private void printUsageAndExit() {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    System.err.printf("Usage: bin/hbase %s [options]\n", getClass().getName());<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    System.err.println(" where [options] are:");<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    System.err.println("  -h|-help         Show this help and exit.");<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    System.err.println("  -threads &lt;N&gt;     Number of threads writing on the WAL.");<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    System.err.println("  -regions &lt;N&gt;     Number of regions to open in the WAL. Default: 1");<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    System.err.println("  -iterations &lt;N&gt;  Number of iterations per thread.");<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    System.err.println("  -path &lt;PATH&gt;     Path where region's root directory is created.");<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    System.err.println("  -families &lt;N&gt;    Number of column families to write.");<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    System.err.println("  -qualifiers &lt;N&gt;  Number of qualifiers to write.");<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    System.err.println("  -keySize &lt;N&gt;     Row key size in byte.");<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    System.err.println("  -valueSize &lt;N&gt;   Row/Col value size in byte.");<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    System.err.println("  -nocleanup       Do NOT remove test data when done.");<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    System.err.println("  -noclosefs       Do NOT close the filesystem when done.");<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    System.err.println("  -nosync          Append without syncing");<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    System.err.println("  -syncInterval &lt;N&gt; Append N edits and then sync. " +<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      "Default=0, i.e. sync every edit.");<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    System.err.println("  -verify          Verify edits written in sequence");<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    System.err.println("  -verbose         Output extra info; " +<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      "e.g. all edit seq ids when verifying");<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    System.err.println("  -roll &lt;N&gt;        Roll the way every N appends");<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    System.err.println("  -encryption &lt;A&gt;  Encrypt the WAL with algorithm A, e.g. AES");<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    System.err.println("  -traceFreq &lt;N&gt;   Rate of trace sampling. Default: 1.0, " +<a name="line.467"></a>
-<span class="sourceLineNo">468</span>      "only respected when tracing is enabled, ie -Dhbase.trace.spanreceiver.classes=...");<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    System.err.println("");<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    System.err.println("Examples:");<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    System.err.println("");<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    System.err.println(" To run 100 threads on hdfs with log rolling every 10k edits and " +<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      "verification afterward do:");<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    System.err.println(" $ ./bin/hbase org.apache.hadoop.hbase.wal." +<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      "WALPerformanceEvaluation \\");<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    System.err.println("    -conf ./core-site.xml -path hdfs://example.org:7000/tmp " +<a name="line.476"></a>
-<span class="sourceLineNo">477</span>      "-threads 100 -roll 10000 -verify");<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    System.exit(1);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>  }<a name="line.479"></a>
-<span class="sourceLineNo">480</span><a name="line.480"></a>
-<span class="sourceLineNo">481</span>  private final Set&lt;WAL&gt; walsListenedTo = new HashSet&lt;WAL&gt;();<a name="line.481"></a>
-<span class="sourceLineNo">482</span><a name="line.482"></a>
-<span class="sourceLineNo">483</span>  private HRegion openRegion(final FileSystem fs, final Path dir, final HTableDescriptor htd,<a name="line.483"></a>
-<span class="sourceLineNo">484</span>      final WALFactory wals, final long whenToRoll, final LogRoller roller) throws IOException {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    // Initialize HRegion<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    HRegionInfo regionInfo = new HRegionInfo(htd.getTableName());<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    // Initialize WAL<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    final WAL wal =<a name="line.488"></a>
-<span class="sourceLineNo">489</span>        wals.getWAL(regionInfo.getEncodedNameAsBytes(), regionInfo.getTable().getNamespace());<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    // If we haven't already, attach a listener to this wal to handle rolls and metrics.<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    if (walsListenedTo.add(wal)) {<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      roller.addWAL(wal);<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      wal.registerWALActionsListener(new WALActionsListener.Base() {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>        private int appends = 0;<a name="line.494"></a>
-<span class="sourceLineNo">495</span><a name="line.495"></a>
-<span class="sourceLineNo">496</span>        @Override<a name="line.496"></a>
-<span class="sourceLineNo">497</span>        public void visitLogEntryBeforeWrite(HTableDescriptor htd, WALKey logKey,<a name="line.497"></a>
-<span class="sourceLineNo">498</span>            WALEdit logEdit) {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>          this.appends++;<a name="line.499"></a>
-<span class="sourceLineNo">500</span>          if (this.appends % whenToRoll == 0) {<a name="line.500"></a>
-<span class="sourceLineNo">501</span>            LOG.info("Rolling after " + appends + " edits");<a name="line.501"></a>
-<span class="sourceLineNo">502</span>            // We used to do explicit call to rollWriter but changed it to a request<a name="line.502"></a>
-<span class="sourceLineNo">503</span>            // to avoid dead lock (there are less threads going on in this class than<a name="line.503"></a>
-<span class="sourceLineNo">504</span>            // in the regionserver -- regionserver does not have the issue).<a name="line.504"></a>
-<span class="sourceLineNo">505</span>            DefaultWALProvider.requestLogRoll(wal);<a name="line.505"></a>
-<span class="sourceLineNo">506</span>          }<a name="line.506"></a>
-<span class="sourceLineNo">507</span>        }<a name="line.507"></a>
-<span class="sourceLineNo">508</span><a name="line.508"></a>
-<span class="sourceLineNo">509</span>        @Override<a name="line.509"></a>
-<span class="sourceLineNo">510</span>        public void postSync(final long timeInNanos, final int handlerSyncs) {<a name="line.510"></a>
-<span class="sourceLineNo">511</span>          syncMeter.mark();<a name="line.511"></a>
-<span class="sourceLineNo">512</span>          syncHistogram.update(timeInNanos);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>          syncCountHistogram.update(handlerSyncs);<a name="line.513"></a>
-<span class="sourceLineNo">514</span>        }<a name="line.514"></a>
-<span class="sourceLineNo">515</span><a name="line.515"></a>
-<span class="sourceLineNo">516</span>        @Override<a name="line.516"></a>
-<span class="sourceLineNo">517</span>        public void postAppend(final long size, final long elapsedTime) {<a name="line.517"></a>
-<span class="sourceLineNo">518</span>          appendMeter.mark(size);<a name="line.518"></a>
-<span class="sourceLineNo">519</span>        }<a name="line.519"></a>
-<span class="sourceLineNo">520</span>      });<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    }<a name="line.521"></a>
-<span class="sourceLineNo">522</span>     <a name="line.522"></a>
-<span class="sourceLineNo">523</span>    return HRegion.createHRegion(regionInfo, dir, getConf(), htd, wal);<a name="line.523"></a>
-<span class="sourceLineNo">524</span>  }<a name="line.524"></a>
-<span class="sourceLineNo">525</span><a name="line.525"></a>
-<span class="sourceLineNo">526</span>  private void closeRegion(final HRegion region) throws IOException {<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    if (region != null) {<a name="line.527"></a>
-<span class="sourceLineNo">528</span>      region.close();<a name="line.528"></a>
-<span class="sourceLineNo">529</span>      WAL wal = region.getWAL();<a name="line.529"></a>
-<span class="sourceLineNo">530</span>      if (wal != null) {<a name="line.530"></a>
-<span class="sourceLineNo">531</span>        wal.shutdown();<a name="line.531"></a>
-<span class="sourceLineNo">532</span>      }<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    }<a name="line.533"></a>
-<span class="sourceLineNo">534</span>  }<a name="line.534"></a>
-<span class="sourceLineNo">535</span><a name="line.535"></a>
-<span class="sourceLineNo">536</span>  private void cleanRegionRootDir(final FileSystem fs, final Path dir) throws IOException {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    if (fs.exists(dir)) {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>      fs.delete(dir, true);<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    }<a name="line.539"></a>
-<span class="sourceLineNo">540</span>  }<a name="line.540"></a>
-<span class="sourceLineNo">541</span><a name="line.541"></a>
-<span class="sourceLineNo">542</span>  private Put setupPut(Random rand, byte[] key, byte[] value, final int numFamilies) {<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    rand.nextBytes(key);<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    Put put = new Put(key);<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    for (int cf = 0; cf &lt; numFamilies; ++cf) {<a name="line.545"></a>
-<span class="sourceLineNo">546</span>      for (int q = 0; q &lt; numQualifiers; ++q) {<a name="line.546"></a>
-<span class="sourceLineNo">547</span>        rand.nextBytes(value);<a name="line.547"></a>
-<span class="sourceLineNo">548</span>        put.addColumn(Bytes.toBytes(FAMILY_PREFIX + cf),<a name="line.548"></a>
-<span class="sourceLineNo">549</span>            Bytes.toBytes(QUALIFIER_PREFIX + q), value);<a name="line.549"></a>
-<span class="sourceLineNo">550</span>      }<a name="line.550"></a>
-<span class="sourceLineNo">551</span>    }<a name="line.551"></a>
-<span class="sourceLineNo">552</span>    return put;<a name="line.552"></a>
-<span class="sourceLineNo">553</span>  }<a name="line.553"></a>
-<span class="sourceLineNo">554</span><a name="line.554"></a>
-<span class="sourceLineNo">555</span>  private void addFamilyMapToWALEdit(Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.555"></a>
-<span class="sourceLineNo">556</span>      WALEdit walEdit) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    for (List&lt;Cell&gt; edits : familyMap.values()) {<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      for (Cell cell : edits) {<a name="line.558"></a>
-<span class="sourceLineNo">559</span>        walEdit.add(cell);<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      }<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    }<a name="line.561"></a>
-<span class="sourceLineNo">562</span>  }<a name="line.562"></a>
-<span class="sourceLineNo">563</span><a name="line.563"></a>
-<span class="sourceLineNo">564</span>  private long runBenchmark(Runnable[] runnable, final int numThreads) throws InterruptedException {<a name="line.564"></a>
-<span class="sourceLineNo">565</span>    Thread[] threads = new Thread[numThreads];<a name="line.565"></a>
-<span class="sourceLineNo">566</span>    long startTime = System.currentTimeMillis();<a name="line.566"></a>
-<span class="sourceLineNo">567</span>    for (int i = 0; i &lt; numThreads; ++i) {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>      threads[i] = new Thread(runnable[i%runnable.length], "t" + i + ",r" + (i%runnable.length));<a name="line.568"></a>
-<span class="sourceLineNo">569</span>      threads[i].start();<a name="line.569"></a>
-<span class="sourceLineNo">570</span>    }<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    for (Thread t : threads) t.join();<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    long endTime = System.currentTimeMillis();<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    return(endTime - startTime);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>  }<a name="line.574"></a>
-<span class="sourceLineNo">575</span><a name="line.575"></a>
-<span class="sourceLineNo">576</span>  /**<a name="line.576"></a>
-<span class="sourceLineNo">577</span>   * The guts of the {@link #main} method.<a name="line.577"></a>
-<span class="sourceLineNo">578</span>   * Call this method to avoid the {@link #main(String[])} System.exit.<a name="line.578"></a>
-<span class="sourceLineNo">579</span>   * @param args<a name="line.579"></a>
-<span class="sourceLineNo">580</span>   * @return errCode<a name="line.580"></a>
-<span class="sourceLineNo">581</span>   * @throws Exception<a name="line.581"></a>
-<span class="sourceLineNo">582</span>   */<a name="line.582"></a>
-<span class="sourceLineNo">583</span>  static int innerMain(final Configuration c, final String [] args) throws Exception {<a name="line.583"></a>
-<span class="sourceLineNo">584</span>    return ToolRunner.run(c, new WALPerformanceEvaluation(), args);<a name="line.584"></a>
-<span class="sourceLineNo">585</span>  }<a name="line.585"></a>
-<span class="sourceLineNo">586</span><a name="line.586"></a>
-<span class="sourceLineNo">587</span>  public static void main(String[] args) throws Exception {<a name="line.587"></a>
-<span class="sourceLineNo">588</span>     System.exit(innerMain(HBaseConfiguration.create(), args));<a name="line.588"></a>
+<span class="sourceLineNo">375</span>        if (null != roller) {<a name="line.375"></a>
+<span class="sourceLineNo">376</span>          LOG.info("shutting down log roller.");<a name="line.376"></a>
+<span class="sourceLineNo">377</span>          Threads.shutdown(roller.getThread());<a name="line.377"></a>
+<span class="sourceLineNo">378</span>        }<a name="line.378"></a>
+<span class="sourceLineNo">379</span>        wals.shutdown();<a name="line.379"></a>
+<span class="sourceLineNo">380</span>        // Remove the root dir for this test region<a name="line.380"></a>
+<span class="sourceLineNo">381</span>        if (cleanup) cleanRegionRootDir(fs, rootRegionDir);<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      }<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    } finally {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>      // We may be called inside a test that wants to keep on using the fs.<a name="line.384"></a>
+<span class="sourceLineNo">385</span>      if (!noclosefs) fs.close();<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      scope.close();<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      if (receiverHost != null) receiverHost.closeReceivers();<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    }<a name="line.388"></a>
+<span class="sourceLineNo">389</span><a name="line.389"></a>
+<span class="sourceLineNo">390</span>    return(0);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>  }<a name="line.391"></a>
+<span class="sourceLineNo">392</span><a name="line.392"></a>
+<span class="sourceLineNo">393</span>  private static HTableDescriptor createHTableDescriptor(final int regionNum,<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      final int numFamilies) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(TABLE_NAME + ":" + regionNum));<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    for (int i = 0; i &lt; numFamilies; ++i) {<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      HColumnDescriptor colDef = new HColumnDescriptor(FAMILY_PREFIX + i);<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      htd.addFamily(colDef);<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    }<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    return htd;<a name="line.400"></a>
+<span class="sourceLineNo">401</span>  }<a name="line.401"></a>
+<span class="sourceLineNo">402</span><a name="line.402"></a>
+<span class="sourceLineNo">403</span>  /**<a name="line.403"></a>
+<span class="sourceLineNo">404</span>   * Verify the content of the WAL file.<a name="line.404"></a>
+<span class="sourceLineNo">405</span>   * Verify that the file has expected number of edits.<a name="line.405"></a>
+<span class="sourceLineNo">406</span>   * @param wals may not be null<a name="line.406"></a>
+<span class="sourceLineNo">407</span>   * @param wal<a name="line.407"></a>
+<span class="sourceLineNo">408</span>   * @return Count of edits.<a name="line.408"></a>
+<span class="sourceLineNo">409</span>   * @throws IOException<a name="line.409"></a>
+<span class="sourceLineNo">410</span>   */<a name="line.410"></a>
+<span class="sourceLineNo">411</span>  private long verify(final WALFactory wals, final Path wal, final boolean verbose)<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      throws IOException {<a name="lin

<TRUNCATED>

[15/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/hbase-annotations/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependency-management.html b/hbase-annotations/dependency-management.html
index 635f1b6..e90e2cd 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 2015-12-15 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-12-16 -->
 <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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-12-15</span>
+        <span id="publishDate">Last Published: 2015-12-16</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>
@@ -168,59 +168,59 @@
 <td>jar</td>
 <td><a class="externalLink" href="http://glassfish.java.net/public/CDDL+GPL_1_1.html">CDDL 1.1</a>, <a class="externalLink" href="http://glassfish.java.net/public/CDDL+GPL_1_1.html">GPL2 w/ CPE</a></td></tr>
 <tr class="a">
-<td>com.yammer.metrics</td>
-<td><a class="externalLink" href="http://metrics.codahale.com/metrics-core/">metrics-core</a></td>
-<td>2.2.0</td>
-<td>jar</td>
-<td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License 2.0</a></td></tr>
-<tr class="b">
 <td>commons-cli</td>
 <td><a class="externalLink" href="http://commons.apache.org/cli/">commons-cli</a></td>
 <td>1.2</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td>commons-codec</td>
 <td><a class="externalLink" href="http://commons.apache.org/proper/commons-codec/">commons-codec</a></td>
 <td>1.9</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td>commons-collections</td>
 <td><a class="externalLink" href="http://commons.apache.org/collections/">commons-collections</a></td>
 <td>3.2.2</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td>commons-httpclient</td>
 <td><a class="externalLink" href="http://jakarta.apache.org/httpcomponents/httpclient-3.x/">commons-httpclient</a></td>
 <td>3.1</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache License</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td>commons-io</td>
 <td><a class="externalLink" href="http://commons.apache.org/io/">commons-io</a></td>
 <td>2.4</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td>commons-lang</td>
 <td><a class="externalLink" href="http://commons.apache.org/lang/">commons-lang</a></td>
 <td>2.6</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td>commons-logging</td>
 <td><a class="externalLink" href="http://commons.apache.org/proper/commons-logging/">commons-logging</a></td>
 <td>1.2</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td>commons-net</td>
 <td><a class="externalLink" href="http://commons.apache.org/net/">commons-net</a></td>
 <td>3.1</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
+<tr class="a">
+<td>io.dropwizard.metrics</td>
+<td><a class="externalLink" href="http://metrics.codahale.com/metrics-core/">metrics-core</a></td>
+<td>3.1.2</td>
+<td>jar</td>
+<td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License 2.0</a></td></tr>
 <tr class="b">
 <td>io.netty</td>
 <td><a class="externalLink" href="http://netty.io/netty-all/">netty-all</a></td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/hbase-annotations/distribution-management.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/distribution-management.html b/hbase-annotations/distribution-management.html
index 9eca3dd..041d05b 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 2015-12-15 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-12-16 -->
 <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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-12-15</span>
+        <span id="publishDate">Last Published: 2015-12-16</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/539ad177/hbase-annotations/index.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/index.html b/hbase-annotations/index.html
index 1fdd831..a6fd3f5 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 2015-12-15 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-12-16 -->
 <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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-12-15</span>
+        <span id="publishDate">Last Published: 2015-12-16</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/539ad177/hbase-annotations/integration.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/integration.html b/hbase-annotations/integration.html
index 6906a1b..5e09287 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 2015-12-15 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-12-16 -->
 <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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-12-15</span>
+        <span id="publishDate">Last Published: 2015-12-16</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/539ad177/hbase-annotations/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/issue-tracking.html b/hbase-annotations/issue-tracking.html
index ffdebf6..ce46f4f 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 2015-12-15 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-12-16 -->
 <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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-12-15</span>
+        <span id="publishDate">Last Published: 2015-12-16</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/539ad177/hbase-annotations/license.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/license.html b/hbase-annotations/license.html
index 4d98779..f408f27 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 2015-12-15 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-12-16 -->
 <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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-12-15</span>
+        <span id="publishDate">Last Published: 2015-12-16</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/539ad177/hbase-annotations/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/mail-lists.html b/hbase-annotations/mail-lists.html
index 3b8829e..b979314 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 2015-12-15 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-12-16 -->
 <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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-12-15</span>
+        <span id="publishDate">Last Published: 2015-12-16</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/539ad177/hbase-annotations/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/plugin-management.html b/hbase-annotations/plugin-management.html
index 48a0e18..c631351 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 2015-12-15 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-12-16 -->
 <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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-12-15</span>
+        <span id="publishDate">Last Published: 2015-12-16</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/539ad177/hbase-annotations/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/plugins.html b/hbase-annotations/plugins.html
index 3d9e1a2..44b1eee 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 2015-12-15 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-12-16 -->
 <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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-12-15</span>
+        <span id="publishDate">Last Published: 2015-12-16</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/539ad177/hbase-annotations/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/project-info.html b/hbase-annotations/project-info.html
index c404a57..84c3874 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 2015-12-15 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-12-16 -->
 <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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-12-15</span>
+        <span id="publishDate">Last Published: 2015-12-16</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/539ad177/hbase-annotations/project-reports.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/project-reports.html b/hbase-annotations/project-reports.html
index 137fbb7..cd07b69 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 2015-12-15 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-12-16 -->
 <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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-12-15</span>
+        <span id="publishDate">Last Published: 2015-12-16</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/539ad177/hbase-annotations/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/project-summary.html b/hbase-annotations/project-summary.html
index c8d4292..9c26da5 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 2015-12-15 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-12-16 -->
 <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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-12-15</span>
+        <span id="publishDate">Last Published: 2015-12-16</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/539ad177/hbase-annotations/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/source-repository.html b/hbase-annotations/source-repository.html
index 5f7adda..d8f0086 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 2015-12-15 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-12-16 -->
 <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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-12-15</span>
+        <span id="publishDate">Last Published: 2015-12-16</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/539ad177/hbase-annotations/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/team-list.html b/hbase-annotations/team-list.html
index cde6126..3a6fb47 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 2015-12-15 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-12-16 -->
 <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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-12-15</span>
+        <span id="publishDate">Last Published: 2015-12-16</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/539ad177/hbase-spark/checkstyle.html
----------------------------------------------------------------------
diff --git a/hbase-spark/checkstyle.html b/hbase-spark/checkstyle.html
index b8ae1f5..3e1e40a 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 2015-12-15 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-12-16 -->
 <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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-12-15</span>
+        <span id="publishDate">Last Published: 2015-12-16</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>


[46/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html
index 2a62a82..8b92322 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html
@@ -99,7 +99,7 @@
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html#line.184">BlockCacheUtil.CachedBlocksByFile</a>
+<pre>public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html#line.186">BlockCacheUtil.CachedBlocksByFile</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">Use one of these to keep a running account of cached blocks by file.  Throw it away when done.
  This is different than metrics in that it is stats on current state of a cache.
@@ -123,7 +123,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <th class="colLast" scope="col">Field and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>(package private) com.yammer.metrics.core.Histogram</code></td>
+<td class="colFirst"><code>(package private) com.codahale.metrics.Histogram</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#age">age</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
@@ -259,7 +259,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>count</h4>
-<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.185">count</a></pre>
+<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.187">count</a></pre>
 </li>
 </ul>
 <a name="dataBlockCount">
@@ -268,7 +268,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>dataBlockCount</h4>
-<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.186">dataBlockCount</a></pre>
+<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.188">dataBlockCount</a></pre>
 </li>
 </ul>
 <a name="size">
@@ -277,7 +277,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>size</h4>
-<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.187">size</a></pre>
+<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.189">size</a></pre>
 </li>
 </ul>
 <a name="dataSize">
@@ -286,7 +286,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>dataSize</h4>
-<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.188">dataSize</a></pre>
+<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.190">dataSize</a></pre>
 </li>
 </ul>
 <a name="now">
@@ -295,7 +295,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>now</h4>
-<pre>private final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.189">now</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.191">now</a></pre>
 </li>
 </ul>
 <a name="max">
@@ -304,7 +304,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>max</h4>
-<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.190">max</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.192">max</a></pre>
 </li>
 </ul>
 <a name="DEFAULT_MAX">
@@ -313,7 +313,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_MAX</h4>
-<pre>public static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.191">DEFAULT_MAX</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.193">DEFAULT_MAX</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.io.hfile.BlockCacheUtil.CachedBlocksByFile.DEFAULT_MAX">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -323,7 +323,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>cachedBlockByFile</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/NavigableMap.html?is-external=true" title="class or interface in java.util">NavigableMap</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/util/NavigableSet.html?is-external=true" title="class or interface in java.util">NavigableSet</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CachedBlock.html" title="interface in org.apache.hadoop.hbase.io.hfile">CachedBlock</a>&gt;&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.205">cachedBlockByFile</a></pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/NavigableMap.html?is-external=true" title="class or interface in java.util">NavigableMap</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/util/NavigableSet.html?is-external=true" title="class or interface in java.util">NavigableSet</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CachedBlock.html" title="interface in org.apache.hadoop.hbase.io.hfile">CachedBlock</a>&gt;&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.207">cachedBlockByFile</a></pre>
 <div class="block">Map by filename. use concurent utils because we want our Map and contained blocks sorted.</div>
 </li>
 </ul>
@@ -333,7 +333,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>age</h4>
-<pre>com.yammer.metrics.core.Histogram <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.207">age</a></pre>
+<pre>com.codahale.metrics.Histogram <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.209">age</a></pre>
 </li>
 </ul>
 </li>
@@ -350,7 +350,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>BlockCacheUtil.CachedBlocksByFile</h4>
-<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.193">BlockCacheUtil.CachedBlocksByFile</a>()</pre>
+<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.195">BlockCacheUtil.CachedBlocksByFile</a>()</pre>
 </li>
 </ul>
 <a name="BlockCacheUtil.CachedBlocksByFile(org.apache.hadoop.conf.Configuration)">
@@ -359,7 +359,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>BlockCacheUtil.CachedBlocksByFile</h4>
-<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.197">BlockCacheUtil.CachedBlocksByFile</a>(org.apache.hadoop.conf.Configuration&nbsp;c)</pre>
+<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.199">BlockCacheUtil.CachedBlocksByFile</a>(org.apache.hadoop.conf.Configuration&nbsp;c)</pre>
 </li>
 </ul>
 </li>
@@ -376,7 +376,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>update</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.213">update</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CachedBlock.html" title="interface in org.apache.hadoop.hbase.io.hfile">CachedBlock</a>&nbsp;cb)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.215">update</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CachedBlock.html" title="interface in org.apache.hadoop.hbase.io.hfile">CachedBlock</a>&nbsp;cb)</pre>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>cb</code> - </dd>
 <dt><span class="strong">Returns:</span></dt><dd>True if full.... if we won't be adding any more.</dd></dl>
 </li>
@@ -387,7 +387,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>isFull</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.238">isFull</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.240">isFull</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>True if full; i.e. there are more items in the cache but we only loaded up
  the maximum set in configuration <code>hbase.ui.blockcache.by.file.max</code>
  (Default: DEFAULT_MAX).</dd></dl>
@@ -399,7 +399,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getCachedBlockStatsByFile</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/NavigableMap.html?is-external=true" title="class or interface in java.util">NavigableMap</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/util/NavigableSet.html?is-external=true" title="class or interface in java.util">NavigableSet</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CachedBlock.html" title="interface in org.apache.hadoop.hbase.io.hfile">CachedBlock</a>&gt;&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.242">getCachedBlockStatsByFile</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/NavigableMap.html?is-external=true" title="class or interface in java.util">NavigableMap</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/util/NavigableSet.html?is-external=true" title="class or interface in java.util">NavigableSet</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CachedBlock.html" title="interface in org.apache.hadoop.hbase.io.hfile">CachedBlock</a>&gt;&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.244">getCachedBlockStatsByFile</a>()</pre>
 </li>
 </ul>
 <a name="getCount()">
@@ -408,7 +408,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getCount</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.249">getCount</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.251">getCount</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>count of blocks in the cache</dd></dl>
 </li>
 </ul>
@@ -418,7 +418,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getDataCount</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.253">getDataCount</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.255">getDataCount</a>()</pre>
 </li>
 </ul>
 <a name="getSize()">
@@ -427,7 +427,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.260">getSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.262">getSize</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>size of blocks in the cache</dd></dl>
 </li>
 </ul>
@@ -437,7 +437,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getDataSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.267">getDataSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.269">getDataSize</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>Size of data.</dd></dl>
 </li>
 </ul>
@@ -447,7 +447,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getAgeInCacheSnapshot</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html" title="class in org.apache.hadoop.hbase.io.hfile">AgeSnapshot</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.271">getAgeInCacheSnapshot</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html" title="class in org.apache.hadoop.hbase.io.hfile">AgeSnapshot</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.273">getAgeInCacheSnapshot</a>()</pre>
 </li>
 </ul>
 <a name="toString()">
@@ -456,7 +456,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>toString</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/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.276">toString</a>()</pre>
+<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/io/hfile/BlockCacheUtil.CachedBlocksByFile.html#line.278">toString</a>()</pre>
 <dl>
 <dt><strong>Overrides:</strong></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html
index 347466b..9926060 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html
@@ -96,7 +96,7 @@
 <hr>
 <br>
 <pre><a href="../../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.Private.html" title="annotation in org.apache.hadoop.hbase.classification">@InterfaceAudience.Private</a>
-public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html#line.43">BlockCacheUtil</a>
+public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html#line.45">BlockCacheUtil</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">Utilty for aggregating counts in CachedBlocks and toString/toJSON CachedBlocks and BlockCaches.
  No attempt has been made at making this thread safe.</div>
@@ -152,7 +152,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 </td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>private static com.yammer.metrics.core.MetricsRegistry</code></td>
+<td class="colFirst"><code>private static com.codahale.metrics.MetricRegistry</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html#METRICS">METRICS</a></strong></code>
 <div class="block">Needed making histograms.</div>
 </td>
@@ -248,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>METRICS</h4>
-<pre>private static final&nbsp;com.yammer.metrics.core.MetricsRegistry <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html#line.47">METRICS</a></pre>
+<pre>private static final&nbsp;com.codahale.metrics.MetricRegistry <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html#line.49">METRICS</a></pre>
 <div class="block">Needed making histograms.</div>
 </li>
 </ul>
@@ -258,7 +258,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MAPPER</h4>
-<pre>private static final&nbsp;org.codehaus.jackson.map.ObjectMapper <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html#line.52">MAPPER</a></pre>
+<pre>private static final&nbsp;org.codehaus.jackson.map.ObjectMapper <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html#line.54">MAPPER</a></pre>
 <div class="block">Needed generating JSON.</div>
 </li>
 </ul>
@@ -276,7 +276,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>BlockCacheUtil</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html#line.43">BlockCacheUtil</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html#line.45">BlockCacheUtil</a>()</pre>
 </li>
 </ul>
 </li>
@@ -293,7 +293,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</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/io/hfile/BlockCacheUtil.html#line.63">toString</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CachedBlock.html" title="interface in org.apache.hadoop.hbase.io.hfile">CachedBlock</a>&nbsp;cb,
+<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/io/hfile/BlockCacheUtil.html#line.65">toString</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CachedBlock.html" title="interface in org.apache.hadoop.hbase.io.hfile">CachedBlock</a>&nbsp;cb,
               long&nbsp;now)</pre>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>cb</code> - </dd>
 <dt><span class="strong">Returns:</span></dt><dd>The block content as String.</dd></dl>
@@ -305,7 +305,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>toJSON</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/io/hfile/BlockCacheUtil.html#line.111">toJSON</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;filename,
+<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/io/hfile/BlockCacheUtil.html#line.113">toJSON</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;filename,
             <a href="http://docs.oracle.com/javase/7/docs/api/java/util/NavigableSet.html?is-external=true" title="class or interface in java.util">NavigableSet</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CachedBlock.html" title="interface in org.apache.hadoop.hbase.io.hfile">CachedBlock</a>&gt;&nbsp;blocks)
                      throws org.codehaus.jackson.JsonGenerationException,
                             org.codehaus.jackson.map.JsonMappingException,
@@ -324,7 +324,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>toJSON</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/io/hfile/BlockCacheUtil.html#line.133">toJSON</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheUtil.CachedBlocksByFile</a>&nbsp;cbsbf)
+<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/io/hfile/BlockCacheUtil.html#line.135">toJSON</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheUtil.CachedBlocksByFile</a>&nbsp;cbsbf)
                      throws org.codehaus.jackson.JsonGenerationException,
                             org.codehaus.jackson.map.JsonMappingException,
                             <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>
@@ -342,7 +342,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>toJSON</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/io/hfile/BlockCacheUtil.html#line.145">toJSON</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html" title="interface in org.apache.hadoop.hbase.io.hfile">BlockCache</a>&nbsp;bc)
+<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/io/hfile/BlockCacheUtil.html#line.147">toJSON</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html" title="interface in org.apache.hadoop.hbase.io.hfile">BlockCache</a>&nbsp;bc)
                      throws org.codehaus.jackson.JsonGenerationException,
                             org.codehaus.jackson.map.JsonMappingException,
                             <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>
@@ -360,7 +360,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>toStringMinusFileName</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/io/hfile/BlockCacheUtil.html#line.154">toStringMinusFileName</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CachedBlock.html" title="interface in org.apache.hadoop.hbase.io.hfile">CachedBlock</a>&nbsp;cb,
+<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/io/hfile/BlockCacheUtil.html#line.156">toStringMinusFileName</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CachedBlock.html" title="interface in org.apache.hadoop.hbase.io.hfile">CachedBlock</a>&nbsp;cb,
                            long&nbsp;now)</pre>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>cb</code> - </dd>
 <dt><span class="strong">Returns:</span></dt><dd>The block content of <code>bc</code> as a String minus the filename.</dd></dl>
@@ -372,7 +372,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getLoadedCachedBlocksByFile</h4>
-<pre>public static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheUtil.CachedBlocksByFile</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html#line.169">getLoadedCachedBlocksByFile</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html" title="class in org.apache.hadoop.hbase.io.hfile">BlockCacheUtil.CachedBlocksByFile</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html#line.171">getLoadedCachedBlocksByFile</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                                             <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html" title="interface in org.apache.hadoop.hbase.io.hfile">BlockCache</a>&nbsp;bc)</pre>
 <div class="block">Get a <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlocksByFile.html" title="class in org.apache.hadoop.hbase.io.hfile"><code>BlockCacheUtil.CachedBlocksByFile</code></a> instance and load it up by iterating content in
  <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockCache.html" title="interface in org.apache.hadoop.hbase.io.hfile"><code>BlockCache</code></a>.</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/hbase/io/hfile/CacheStats.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/CacheStats.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/CacheStats.html
index 1cf7e1b..6ee3bde 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/CacheStats.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/CacheStats.html
@@ -100,7 +100,7 @@
 <hr>
 <br>
 <pre><a href="../../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.Private.html" title="annotation in org.apache.hadoop.hbase.classification">@InterfaceAudience.Private</a>
-public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.32">CacheStats</a>
+public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.34">CacheStats</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">Class that implements cache metrics.</div>
 </li>
@@ -122,7 +122,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <th class="colLast" scope="col">Field and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>private com.yammer.metrics.core.Histogram</code></td>
+<td class="colFirst"><code>private com.codahale.metrics.Histogram</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CacheStats.html#ageAtEviction">ageAtEviction</a></strong></code>
 <div class="block">Keep running age at eviction time</div>
 </td>
@@ -201,7 +201,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 </td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>private static com.yammer.metrics.core.MetricsRegistry</code></td>
+<td class="colFirst"><code>private static com.codahale.metrics.MetricRegistry</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CacheStats.html#METRICS">METRICS</a></strong></code>
 <div class="block">Needed making histograms.</div>
 </td>
@@ -468,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>METRICS</h4>
-<pre>private static final&nbsp;com.yammer.metrics.core.MetricsRegistry <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.36">METRICS</a></pre>
+<pre>private static final&nbsp;com.codahale.metrics.MetricRegistry <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.38">METRICS</a></pre>
 <div class="block">Needed making histograms.</div>
 </li>
 </ul>
@@ -478,7 +478,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_WINDOW_PERIODS</h4>
-<pre>static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.41">DEFAULT_WINDOW_PERIODS</a></pre>
+<pre>static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.43">DEFAULT_WINDOW_PERIODS</a></pre>
 <div class="block">Sliding window statistics. The number of metric periods to include in
  sliding window hit ratio calculations.</div>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.io.hfile.CacheStats.DEFAULT_WINDOW_PERIODS">Constant Field Values</a></dd></dl>
@@ -490,7 +490,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>hitCount</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.44">hitCount</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.46">hitCount</a></pre>
 <div class="block">The number of getBlock requests that were cache hits</div>
 </li>
 </ul>
@@ -500,7 +500,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>primaryHitCount</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.47">primaryHitCount</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.49">primaryHitCount</a></pre>
 <div class="block">The number of getBlock requests that were cache hits from primary replica</div>
 </li>
 </ul>
@@ -510,7 +510,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>hitCachingCount</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.55">hitCachingCount</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.57">hitCachingCount</a></pre>
 <div class="block">The number of getBlock requests that were cache hits, but only from
  requests that were set to use the block cache.  This is because all reads
  attempt to read from the block cache even if they will not put new blocks
@@ -523,7 +523,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>missCount</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.58">missCount</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.60">missCount</a></pre>
 <div class="block">The number of getBlock requests that were cache misses</div>
 </li>
 </ul>
@@ -533,7 +533,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>primaryMissCount</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.61">primaryMissCount</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.63">primaryMissCount</a></pre>
 <div class="block">The number of getBlock requests for primary replica that were cache misses</div>
 </li>
 </ul>
@@ -543,7 +543,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>missCachingCount</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.66">missCachingCount</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.68">missCachingCount</a></pre>
 <div class="block">The number of getBlock requests that were cache misses, but only from
  requests that were set to use the block cache.</div>
 </li>
@@ -554,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>evictionCount</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.69">evictionCount</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.71">evictionCount</a></pre>
 <div class="block">The number of times an eviction has occurred</div>
 </li>
 </ul>
@@ -564,7 +564,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>evictedBlockCount</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.72">evictedBlockCount</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.74">evictedBlockCount</a></pre>
 <div class="block">The total number of blocks that have been evicted</div>
 </li>
 </ul>
@@ -574,7 +574,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>primaryEvictedBlockCount</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.75">primaryEvictedBlockCount</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.77">primaryEvictedBlockCount</a></pre>
 <div class="block">The total number of blocks for primary replica that have been evicted</div>
 </li>
 </ul>
@@ -584,7 +584,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>failedInserts</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.78">failedInserts</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.80">failedInserts</a></pre>
 <div class="block">The total number of blocks that were not inserted.</div>
 </li>
 </ul>
@@ -594,7 +594,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>numPeriodsInWindow</h4>
-<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.81">numPeriodsInWindow</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.83">numPeriodsInWindow</a></pre>
 <div class="block">The number of metrics periods to include in window</div>
 </li>
 </ul>
@@ -604,7 +604,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>hitCounts</h4>
-<pre>private final&nbsp;long[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.83">hitCounts</a></pre>
+<pre>private final&nbsp;long[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.85">hitCounts</a></pre>
 <div class="block">Hit counts for each period in window</div>
 </li>
 </ul>
@@ -614,7 +614,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>hitCachingCounts</h4>
-<pre>private final&nbsp;long[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.85">hitCachingCounts</a></pre>
+<pre>private final&nbsp;long[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.87">hitCachingCounts</a></pre>
 <div class="block">Caching hit counts for each period in window</div>
 </li>
 </ul>
@@ -624,7 +624,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>requestCounts</h4>
-<pre>private final&nbsp;long[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.87">requestCounts</a></pre>
+<pre>private final&nbsp;long[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.89">requestCounts</a></pre>
 <div class="block">Access counts for each period in window</div>
 </li>
 </ul>
@@ -634,7 +634,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>requestCachingCounts</h4>
-<pre>private final&nbsp;long[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.89">requestCachingCounts</a></pre>
+<pre>private final&nbsp;long[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.91">requestCachingCounts</a></pre>
 <div class="block">Caching access counts for each period in window</div>
 </li>
 </ul>
@@ -644,7 +644,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>lastHitCount</h4>
-<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.91">lastHitCount</a></pre>
+<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.93">lastHitCount</a></pre>
 <div class="block">Last hit count read</div>
 </li>
 </ul>
@@ -654,7 +654,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>lastHitCachingCount</h4>
-<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.93">lastHitCachingCount</a></pre>
+<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.95">lastHitCachingCount</a></pre>
 <div class="block">Last hit caching count read</div>
 </li>
 </ul>
@@ -664,7 +664,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>lastRequestCount</h4>
-<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.95">lastRequestCount</a></pre>
+<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.97">lastRequestCount</a></pre>
 <div class="block">Last request count read</div>
 </li>
 </ul>
@@ -674,7 +674,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>lastRequestCachingCount</h4>
-<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.97">lastRequestCachingCount</a></pre>
+<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.99">lastRequestCachingCount</a></pre>
 <div class="block">Last request caching count read</div>
 </li>
 </ul>
@@ -684,7 +684,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>windowIndex</h4>
-<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.99">windowIndex</a></pre>
+<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.101">windowIndex</a></pre>
 <div class="block">Current window index (next to be updated)</div>
 </li>
 </ul>
@@ -694,7 +694,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>ageAtEviction</h4>
-<pre>private&nbsp;com.yammer.metrics.core.Histogram <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.103">ageAtEviction</a></pre>
+<pre>private&nbsp;com.codahale.metrics.Histogram <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.105">ageAtEviction</a></pre>
 <div class="block">Keep running age at eviction time</div>
 </li>
 </ul>
@@ -704,7 +704,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>startTime</h4>
-<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.104">startTime</a></pre>
+<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.106">startTime</a></pre>
 </li>
 </ul>
 </li>
@@ -721,7 +721,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>CacheStats</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.106">CacheStats</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>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.108">CacheStats</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>
 </li>
 </ul>
 <a name="CacheStats(java.lang.String, int)">
@@ -730,7 +730,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CacheStats</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.110">CacheStats</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/io/hfile/CacheStats.html#line.112">CacheStats</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;numPeriodsInWindow)</pre>
 </li>
 </ul>
@@ -748,7 +748,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/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/io/hfile/CacheStats.html#line.120">toString</a>()</pre>
+<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/io/hfile/CacheStats.html#line.122">toString</a>()</pre>
 <dl>
 <dt><strong>Overrides:</strong></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
@@ -761,7 +761,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>miss</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.132">miss</a>(boolean&nbsp;caching,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.134">miss</a>(boolean&nbsp;caching,
         boolean&nbsp;primary)</pre>
 </li>
 </ul>
@@ -771,7 +771,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>hit</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.138">hit</a>(boolean&nbsp;caching)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.140">hit</a>(boolean&nbsp;caching)</pre>
 </li>
 </ul>
 <a name="hit(boolean, boolean)">
@@ -780,7 +780,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>hit</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.142">hit</a>(boolean&nbsp;caching,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.144">hit</a>(boolean&nbsp;caching,
        boolean&nbsp;primary)</pre>
 </li>
 </ul>
@@ -790,7 +790,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>evict</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.148">evict</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.150">evict</a>()</pre>
 </li>
 </ul>
 <a name="evicted(long, boolean)">
@@ -799,7 +799,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>evicted</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.152">evicted</a>(long&nbsp;t,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.154">evicted</a>(long&nbsp;t,
            boolean&nbsp;primary)</pre>
 </li>
 </ul>
@@ -809,7 +809,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>failInsert</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.160">failInsert</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.162">failInsert</a>()</pre>
 </li>
 </ul>
 <a name="getRequestCount()">
@@ -818,7 +818,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getRequestCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.164">getRequestCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.166">getRequestCount</a>()</pre>
 </li>
 </ul>
 <a name="getRequestCachingCount()">
@@ -827,7 +827,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getRequestCachingCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.168">getRequestCachingCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.170">getRequestCachingCount</a>()</pre>
 </li>
 </ul>
 <a name="getMissCount()">
@@ -836,7 +836,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getMissCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.172">getMissCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.174">getMissCount</a>()</pre>
 </li>
 </ul>
 <a name="getPrimaryMissCount()">
@@ -845,7 +845,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getPrimaryMissCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.176">getPrimaryMissCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.178">getPrimaryMissCount</a>()</pre>
 </li>
 </ul>
 <a name="getMissCachingCount()">
@@ -854,7 +854,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getMissCachingCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.180">getMissCachingCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.182">getMissCachingCount</a>()</pre>
 </li>
 </ul>
 <a name="getHitCount()">
@@ -863,7 +863,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getHitCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.184">getHitCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.186">getHitCount</a>()</pre>
 </li>
 </ul>
 <a name="getPrimaryHitCount()">
@@ -872,7 +872,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getPrimaryHitCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.188">getPrimaryHitCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.190">getPrimaryHitCount</a>()</pre>
 </li>
 </ul>
 <a name="getHitCachingCount()">
@@ -881,7 +881,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getHitCachingCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.192">getHitCachingCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.194">getHitCachingCount</a>()</pre>
 </li>
 </ul>
 <a name="getEvictionCount()">
@@ -890,7 +890,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getEvictionCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.196">getEvictionCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.198">getEvictionCount</a>()</pre>
 </li>
 </ul>
 <a name="getEvictedCount()">
@@ -899,7 +899,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getEvictedCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.200">getEvictedCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.202">getEvictedCount</a>()</pre>
 </li>
 </ul>
 <a name="getPrimaryEvictedCount()">
@@ -908,7 +908,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getPrimaryEvictedCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.204">getPrimaryEvictedCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.206">getPrimaryEvictedCount</a>()</pre>
 </li>
 </ul>
 <a name="getHitRatio()">
@@ -917,7 +917,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getHitRatio</h4>
-<pre>public&nbsp;double&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.208">getHitRatio</a>()</pre>
+<pre>public&nbsp;double&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.210">getHitRatio</a>()</pre>
 </li>
 </ul>
 <a name="getHitCachingRatio()">
@@ -926,7 +926,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getHitCachingRatio</h4>
-<pre>public&nbsp;double&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.212">getHitCachingRatio</a>()</pre>
+<pre>public&nbsp;double&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.214">getHitCachingRatio</a>()</pre>
 </li>
 </ul>
 <a name="getMissRatio()">
@@ -935,7 +935,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getMissRatio</h4>
-<pre>public&nbsp;double&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.216">getMissRatio</a>()</pre>
+<pre>public&nbsp;double&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.218">getMissRatio</a>()</pre>
 </li>
 </ul>
 <a name="getMissCachingRatio()">
@@ -944,7 +944,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getMissCachingRatio</h4>
-<pre>public&nbsp;double&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.220">getMissCachingRatio</a>()</pre>
+<pre>public&nbsp;double&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.222">getMissCachingRatio</a>()</pre>
 </li>
 </ul>
 <a name="evictedPerEviction()">
@@ -953,7 +953,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>evictedPerEviction</h4>
-<pre>public&nbsp;double&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.224">evictedPerEviction</a>()</pre>
+<pre>public&nbsp;double&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.226">evictedPerEviction</a>()</pre>
 </li>
 </ul>
 <a name="getFailedInserts()">
@@ -962,7 +962,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getFailedInserts</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.228">getFailedInserts</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.230">getFailedInserts</a>()</pre>
 </li>
 </ul>
 <a name="rollMetricsPeriod()">
@@ -971,7 +971,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>rollMetricsPeriod</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.232">rollMetricsPeriod</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.234">rollMetricsPeriod</a>()</pre>
 </li>
 </ul>
 <a name="getSumHitCountsPastNPeriods()">
@@ -980,7 +980,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getSumHitCountsPastNPeriods</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.246">getSumHitCountsPastNPeriods</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.248">getSumHitCountsPastNPeriods</a>()</pre>
 </li>
 </ul>
 <a name="getSumRequestCountsPastNPeriods()">
@@ -989,7 +989,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getSumRequestCountsPastNPeriods</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.250">getSumRequestCountsPastNPeriods</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.252">getSumRequestCountsPastNPeriods</a>()</pre>
 </li>
 </ul>
 <a name="getSumHitCachingCountsPastNPeriods()">
@@ -998,7 +998,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getSumHitCachingCountsPastNPeriods</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.254">getSumHitCachingCountsPastNPeriods</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.256">getSumHitCachingCountsPastNPeriods</a>()</pre>
 </li>
 </ul>
 <a name="getSumRequestCachingCountsPastNPeriods()">
@@ -1007,7 +1007,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getSumRequestCachingCountsPastNPeriods</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.258">getSumRequestCachingCountsPastNPeriods</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.260">getSumRequestCachingCountsPastNPeriods</a>()</pre>
 </li>
 </ul>
 <a name="getHitRatioPastNPeriods()">
@@ -1016,7 +1016,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getHitRatioPastNPeriods</h4>
-<pre>public&nbsp;double&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.262">getHitRatioPastNPeriods</a>()</pre>
+<pre>public&nbsp;double&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.264">getHitRatioPastNPeriods</a>()</pre>
 </li>
 </ul>
 <a name="getHitCachingRatioPastNPeriods()">
@@ -1025,7 +1025,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getHitCachingRatioPastNPeriods</h4>
-<pre>public&nbsp;double&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.268">getHitCachingRatioPastNPeriods</a>()</pre>
+<pre>public&nbsp;double&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.270">getHitCachingRatioPastNPeriods</a>()</pre>
 </li>
 </ul>
 <a name="getAgeAtEvictionSnapshot()">
@@ -1034,7 +1034,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getAgeAtEvictionSnapshot</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html" title="class in org.apache.hadoop.hbase.io.hfile">AgeSnapshot</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.274">getAgeAtEvictionSnapshot</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html" title="class in org.apache.hadoop.hbase.io.hfile">AgeSnapshot</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.276">getAgeAtEvictionSnapshot</a>()</pre>
 </li>
 </ul>
 <a name="sum(long[])">
@@ -1043,7 +1043,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>sum</h4>
-<pre>private static&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.278">sum</a>(long[]&nbsp;counts)</pre>
+<pre>private static&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.280">sum</a>(long[]&nbsp;counts)</pre>
 </li>
 </ul>
 <a name="initializeZeros(int)">
@@ -1052,7 +1052,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>initializeZeros</h4>
-<pre>private static&nbsp;long[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.284">initializeZeros</a>(int&nbsp;n)</pre>
+<pre>private static&nbsp;long[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html#line.286">initializeZeros</a>(int&nbsp;n)</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html
index d9c42b1..604a813 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html
@@ -99,7 +99,7 @@
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.546">HFilePrettyPrinter.KeyValueStatsCollector</a>
+<pre>private static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#line.556">HFilePrettyPrinter.KeyValueStatsCollector</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>
@@ -136,7 +136,7 @@ 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/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#curRowKeyLength">curRowKeyLength</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>(package private) com.yammer.metrics.core.Histogram</code></td>
+<td class="colFirst"><code>(package private) com.codahale.metrics.Histogram</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#keyLen">keyLen</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
@@ -148,7 +148,7 @@ 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/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#metricsOutput">metricsOutput</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>private com.yammer.metrics.core.MetricsRegistry</code></td>
+<td class="colFirst"><code>private com.codahale.metrics.MetricRegistry</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#metricsRegistry">metricsRegistry</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
@@ -156,11 +156,11 @@ 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/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#prevCell">prevCell</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>(package private) com.yammer.metrics.core.Histogram</code></td>
+<td class="colFirst"><code>(package private) com.codahale.metrics.Histogram</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#rowSizeBytes">rowSizeBytes</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>(package private) com.yammer.metrics.core.Histogram</code></td>
+<td class="colFirst"><code>(package private) com.codahale.metrics.Histogram</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#rowSizeCols">rowSizeCols</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
@@ -168,7 +168,7 @@ 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/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#simpleReporter">simpleReporter</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>(package private) com.yammer.metrics.core.Histogram</code></td>
+<td class="colFirst"><code>(package private) com.codahale.metrics.Histogram</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#valLen">valLen</a></strong></code>&nbsp;</td>
 </tr>
 </table>
@@ -249,7 +249,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>metricsRegistry</h4>
-<pre>private final&nbsp;com.yammer.metrics.core.MetricsRegistry <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#line.547">metricsRegistry</a></pre>
+<pre>private final&nbsp;com.codahale.metrics.MetricRegistry <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#line.557">metricsRegistry</a></pre>
 </li>
 </ul>
 <a name="metricsOutput">
@@ -258,7 +258,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>metricsOutput</h4>
-<pre>private final&nbsp;<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> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#line.548">metricsOutput</a></pre>
+<pre>private final&nbsp;<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> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#line.558">metricsOutput</a></pre>
 </li>
 </ul>
 <a name="simpleReporter">
@@ -267,7 +267,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>simpleReporter</h4>
-<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.SimpleReporter</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#line.549">simpleReporter</a></pre>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.SimpleReporter</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#line.559">simpleReporter</a></pre>
 </li>
 </ul>
 <a name="keyLen">
@@ -276,7 +276,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>keyLen</h4>
-<pre>com.yammer.metrics.core.Histogram <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#line.550">keyLen</a></pre>
+<pre>com.codahale.metrics.Histogram <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#line.562">keyLen</a></pre>
 </li>
 </ul>
 <a name="valLen">
@@ -285,7 +285,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>valLen</h4>
-<pre>com.yammer.metrics.core.Histogram <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#line.551">valLen</a></pre>
+<pre>com.codahale.metrics.Histogram <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#line.563">valLen</a></pre>
 </li>
 </ul>
 <a name="rowSizeBytes">
@@ -294,7 +294,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>rowSizeBytes</h4>
-<pre>com.yammer.metrics.core.Histogram <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#line.552">rowSizeBytes</a></pre>
+<pre>com.codahale.metrics.Histogram <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#line.564">rowSizeBytes</a></pre>
 </li>
 </ul>
 <a name="rowSizeCols">
@@ -303,7 +303,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>rowSizeCols</h4>
-<pre>com.yammer.metrics.core.Histogram <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#line.553">rowSizeCols</a></pre>
+<pre>com.codahale.metrics.Histogram <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#line.566">rowSizeCols</a></pre>
 </li>
 </ul>
 <a name="curRowBytes">
@@ -312,7 +312,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>curRowBytes</h4>
-<pre>long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#line.555">curRowBytes</a></pre>
+<pre>long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#line.569">curRowBytes</a></pre>
 </li>
 </ul>
 <a name="curRowCols">
@@ -321,7 +321,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>curRowCols</h4>
-<pre>long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#line.556">curRowCols</a></pre>
+<pre>long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#line.570">curRowCols</a></pre>
 </li>
 </ul>
 <a name="biggestRow">
@@ -330,7 +330,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>biggestRow</h4>
-<pre>byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#line.558">biggestRow</a></pre>
+<pre>byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#line.572">biggestRow</a></pre>
 </li>
 </ul>
 <a name="prevCell">
@@ -339,7 +339,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>prevCell</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#line.560">prevCell</a></pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#line.574">prevCell</a></pre>
 </li>
 </ul>
 <a name="maxRowBytes">
@@ -348,7 +348,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>maxRowBytes</h4>
-<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#line.561">maxRowBytes</a></pre>
+<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#line.575">maxRowBytes</a></pre>
 </li>
 </ul>
 <a name="curRowKeyLength">
@@ -357,7 +357,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>curRowKeyLength</h4>
-<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#line.562">curRowKeyLength</a></pre>
+<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#line.576">curRowKeyLength</a></pre>
 </li>
 </ul>
 </li>
@@ -374,7 +374,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>HFilePrettyPrinter.KeyValueStatsCollector</h4>
-<pre>private&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#line.546">HFilePrettyPrinter.KeyValueStatsCollector</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#line.556">HFilePrettyPrinter.KeyValueStatsCollector</a>()</pre>
 </li>
 </ul>
 </li>
@@ -391,7 +391,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>collect</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#line.564">collect</a>(<a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#line.578">collect</a>(<a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</pre>
 </li>
 </ul>
 <a name="collectRow()">
@@ -400,7 +400,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>collectRow</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#line.577">collectRow</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#line.591">collectRow</a>()</pre>
 </li>
 </ul>
 <a name="finish()">
@@ -409,7 +409,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>finish</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#line.591">finish</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#line.605">finish</a>()</pre>
 </li>
 </ul>
 <a name="toString()">
@@ -418,7 +418,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>toString</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/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#line.598">toString</a>()</pre>
+<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/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#line.612">toString</a>()</pre>
 <dl>
 <dt><strong>Overrides:</strong></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>


[40/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html b/devapidocs/src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html
index 0d9837b..9090c08 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/client/MetricsConnection.CallStats.html
@@ -28,12 +28,12 @@
 <span class="sourceLineNo">020</span>import com.google.common.annotations.VisibleForTesting;<a name="line.20"></a>
 <span class="sourceLineNo">021</span>import com.google.protobuf.Descriptors.MethodDescriptor;<a name="line.21"></a>
 <span class="sourceLineNo">022</span>import com.google.protobuf.Message;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import com.yammer.metrics.core.Counter;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import com.yammer.metrics.core.Histogram;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import com.yammer.metrics.core.MetricsRegistry;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import com.yammer.metrics.core.Timer;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import com.yammer.metrics.reporting.JmxReporter;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import com.yammer.metrics.util.RatioGauge;<a name="line.28"></a>
+<span class="sourceLineNo">023</span>import com.codahale.metrics.Counter;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import com.codahale.metrics.Histogram;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import com.codahale.metrics.MetricRegistry;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import com.codahale.metrics.Timer;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import com.codahale.metrics.JmxReporter;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import com.codahale.metrics.RatioGauge;<a name="line.28"></a>
 <span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.ServerName;<a name="line.29"></a>
 <span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.30"></a>
 <span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.protobuf.generated.ClientProtos;<a name="line.31"></a>
@@ -48,394 +48,397 @@
 <span class="sourceLineNo">040</span>import java.util.concurrent.ThreadPoolExecutor;<a name="line.40"></a>
 <span class="sourceLineNo">041</span>import java.util.concurrent.TimeUnit;<a name="line.41"></a>
 <span class="sourceLineNo">042</span><a name="line.42"></a>
-<span class="sourceLineNo">043</span>/**<a name="line.43"></a>
-<span class="sourceLineNo">044</span> * This class is for maintaining the various connection statistics and publishing them through<a name="line.44"></a>
-<span class="sourceLineNo">045</span> * the metrics interfaces.<a name="line.45"></a>
-<span class="sourceLineNo">046</span> *<a name="line.46"></a>
-<span class="sourceLineNo">047</span> * This class manages its own {@link MetricsRegistry} and {@link JmxReporter} so as to not<a name="line.47"></a>
-<span class="sourceLineNo">048</span> * conflict with other uses of Yammer Metrics within the client application. Instantiating<a name="line.48"></a>
-<span class="sourceLineNo">049</span> * this class implicitly creates and "starts" instances of these classes; be sure to call<a name="line.49"></a>
-<span class="sourceLineNo">050</span> * {@link #shutdown()} to terminate the thread pools they allocate.<a name="line.50"></a>
-<span class="sourceLineNo">051</span> */<a name="line.51"></a>
-<span class="sourceLineNo">052</span>@InterfaceAudience.Private<a name="line.52"></a>
-<span class="sourceLineNo">053</span>public class MetricsConnection {<a name="line.53"></a>
-<span class="sourceLineNo">054</span><a name="line.54"></a>
-<span class="sourceLineNo">055</span>  /** Set this key to {@code true} to enable metrics collection of client requests. */<a name="line.55"></a>
-<span class="sourceLineNo">056</span>  public static final String CLIENT_SIDE_METRICS_ENABLED_KEY = "hbase.client.metrics.enable";<a name="line.56"></a>
-<span class="sourceLineNo">057</span><a name="line.57"></a>
-<span class="sourceLineNo">058</span>  private static final String DRTN_BASE = "rpcCallDurationMs_";<a name="line.58"></a>
-<span class="sourceLineNo">059</span>  private static final String REQ_BASE = "rpcCallRequestSizeBytes_";<a name="line.59"></a>
-<span class="sourceLineNo">060</span>  private static final String RESP_BASE = "rpcCallResponseSizeBytes_";<a name="line.60"></a>
-<span class="sourceLineNo">061</span>  private static final String MEMLOAD_BASE = "memstoreLoad_";<a name="line.61"></a>
-<span class="sourceLineNo">062</span>  private static final String HEAP_BASE = "heapOccupancy_";<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  private static final String CLIENT_SVC = ClientService.getDescriptor().getName();<a name="line.63"></a>
-<span class="sourceLineNo">064</span><a name="line.64"></a>
-<span class="sourceLineNo">065</span>  /** A container class for collecting details about the RPC call as it percolates. */<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  public static class CallStats {<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    private long requestSizeBytes = 0;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    private long responseSizeBytes = 0;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    private long startTime = 0;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    private long callTimeMs = 0;<a name="line.70"></a>
-<span class="sourceLineNo">071</span><a name="line.71"></a>
-<span class="sourceLineNo">072</span>    public long getRequestSizeBytes() {<a name="line.72"></a>
-<span class="sourceLineNo">073</span>      return requestSizeBytes;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    }<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>    public void setRequestSizeBytes(long requestSizeBytes) {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>      this.requestSizeBytes = requestSizeBytes;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    }<a name="line.78"></a>
-<span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>    public long getResponseSizeBytes() {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      return responseSizeBytes;<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 void setResponseSizeBytes(long responseSizeBytes) {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      this.responseSizeBytes = responseSizeBytes;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    }<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>    public long getStartTime() {<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      return startTime;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    }<a name="line.90"></a>
-<span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>    public void setStartTime(long startTime) {<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      this.startTime = startTime;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    }<a name="line.94"></a>
-<span class="sourceLineNo">095</span><a name="line.95"></a>
-<span class="sourceLineNo">096</span>    public long getCallTimeMs() {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>      return callTimeMs;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    }<a name="line.98"></a>
-<span class="sourceLineNo">099</span><a name="line.99"></a>
-<span class="sourceLineNo">100</span>    public void setCallTimeMs(long callTimeMs) {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      this.callTimeMs = callTimeMs;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    }<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  }<a name="line.103"></a>
-<span class="sourceLineNo">104</span><a name="line.104"></a>
-<span class="sourceLineNo">105</span>  @VisibleForTesting<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  protected final class CallTracker {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    private final String name;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    @VisibleForTesting final Timer callTimer;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    @VisibleForTesting final Histogram reqHist;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    @VisibleForTesting final Histogram respHist;<a name="line.110"></a>
-<span class="sourceLineNo">111</span><a name="line.111"></a>
-<span class="sourceLineNo">112</span>    private CallTracker(MetricsRegistry registry, String name, String subName, String scope) {<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      StringBuilder sb = new StringBuilder(CLIENT_SVC).append("_").append(name);<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      if (subName != null) {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>        sb.append("(").append(subName).append(")");<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      }<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      this.name = sb.toString();<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      this.callTimer = registry.newTimer(MetricsConnection.class, DRTN_BASE + this.name, scope);<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      this.reqHist = registry.newHistogram(MetricsConnection.class, REQ_BASE + this.name, scope);<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      this.respHist = registry.newHistogram(MetricsConnection.class, RESP_BASE + this.name, scope);<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>    private CallTracker(MetricsRegistry registry, String name, String scope) {<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      this(registry, name, null, scope);<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    }<a name="line.125"></a>
-<span class="sourceLineNo">126</span><a name="line.126"></a>
-<span class="sourceLineNo">127</span>    public void updateRpc(CallStats stats) {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      this.callTimer.update(stats.getCallTimeMs(), TimeUnit.MILLISECONDS);<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      this.reqHist.update(stats.getRequestSizeBytes());<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      this.respHist.update(stats.getResponseSizeBytes());<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    }<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>    @Override<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    public String toString() {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      return "CallTracker:" + name;<a name="line.135"></a>
+<span class="sourceLineNo">043</span>import static com.codahale.metrics.MetricRegistry.name;<a name="line.43"></a>
+<span class="sourceLineNo">044</span><a name="line.44"></a>
+<span class="sourceLineNo">045</span>/**<a name="line.45"></a>
+<span class="sourceLineNo">046</span> * This class is for maintaining the various connection statistics and publishing them through<a name="line.46"></a>
+<span class="sourceLineNo">047</span> * the metrics interfaces.<a name="line.47"></a>
+<span class="sourceLineNo">048</span> *<a name="line.48"></a>
+<span class="sourceLineNo">049</span> * This class manages its own {@link MetricRegistry} and {@link JmxReporter} so as to not<a name="line.49"></a>
+<span class="sourceLineNo">050</span> * conflict with other uses of Yammer Metrics within the client application. Instantiating<a name="line.50"></a>
+<span class="sourceLineNo">051</span> * this class implicitly creates and "starts" instances of these classes; be sure to call<a name="line.51"></a>
+<span class="sourceLineNo">052</span> * {@link #shutdown()} to terminate the thread pools they allocate.<a name="line.52"></a>
+<span class="sourceLineNo">053</span> */<a name="line.53"></a>
+<span class="sourceLineNo">054</span>@InterfaceAudience.Private<a name="line.54"></a>
+<span class="sourceLineNo">055</span>public class MetricsConnection {<a name="line.55"></a>
+<span class="sourceLineNo">056</span><a name="line.56"></a>
+<span class="sourceLineNo">057</span>  /** Set this key to {@code true} to enable metrics collection of client requests. */<a name="line.57"></a>
+<span class="sourceLineNo">058</span>  public static final String CLIENT_SIDE_METRICS_ENABLED_KEY = "hbase.client.metrics.enable";<a name="line.58"></a>
+<span class="sourceLineNo">059</span><a name="line.59"></a>
+<span class="sourceLineNo">060</span>  private static final String DRTN_BASE = "rpcCallDurationMs_";<a name="line.60"></a>
+<span class="sourceLineNo">061</span>  private static final String REQ_BASE = "rpcCallRequestSizeBytes_";<a name="line.61"></a>
+<span class="sourceLineNo">062</span>  private static final String RESP_BASE = "rpcCallResponseSizeBytes_";<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  private static final String MEMLOAD_BASE = "memstoreLoad_";<a name="line.63"></a>
+<span class="sourceLineNo">064</span>  private static final String HEAP_BASE = "heapOccupancy_";<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  private static final String CLIENT_SVC = ClientService.getDescriptor().getName();<a name="line.65"></a>
+<span class="sourceLineNo">066</span><a name="line.66"></a>
+<span class="sourceLineNo">067</span>  /** A container class for collecting details about the RPC call as it percolates. */<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  public static class CallStats {<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    private long requestSizeBytes = 0;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    private long responseSizeBytes = 0;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    private long startTime = 0;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    private long callTimeMs = 0;<a name="line.72"></a>
+<span class="sourceLineNo">073</span><a name="line.73"></a>
+<span class="sourceLineNo">074</span>    public long getRequestSizeBytes() {<a name="line.74"></a>
+<span class="sourceLineNo">075</span>      return requestSizeBytes;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    }<a name="line.76"></a>
+<span class="sourceLineNo">077</span><a name="line.77"></a>
+<span class="sourceLineNo">078</span>    public void setRequestSizeBytes(long requestSizeBytes) {<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      this.requestSizeBytes = requestSizeBytes;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    }<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>    public long getResponseSizeBytes() {<a name="line.82"></a>
+<span class="sourceLineNo">083</span>      return responseSizeBytes;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    }<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>    public void setResponseSizeBytes(long responseSizeBytes) {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>      this.responseSizeBytes = responseSizeBytes;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    }<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>    public long getStartTime() {<a name="line.90"></a>
+<span class="sourceLineNo">091</span>      return startTime;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    }<a name="line.92"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span>    public void setStartTime(long startTime) {<a name="line.94"></a>
+<span class="sourceLineNo">095</span>      this.startTime = startTime;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    }<a name="line.96"></a>
+<span class="sourceLineNo">097</span><a name="line.97"></a>
+<span class="sourceLineNo">098</span>    public long getCallTimeMs() {<a name="line.98"></a>
+<span class="sourceLineNo">099</span>      return callTimeMs;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    }<a name="line.100"></a>
+<span class="sourceLineNo">101</span><a name="line.101"></a>
+<span class="sourceLineNo">102</span>    public void setCallTimeMs(long callTimeMs) {<a name="line.102"></a>
+<span class="sourceLineNo">103</span>      this.callTimeMs = callTimeMs;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    }<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  }<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>  @VisibleForTesting<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  protected final class CallTracker {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    private final String name;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    @VisibleForTesting final Timer callTimer;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    @VisibleForTesting final Histogram reqHist;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    @VisibleForTesting final Histogram respHist;<a name="line.112"></a>
+<span class="sourceLineNo">113</span><a name="line.113"></a>
+<span class="sourceLineNo">114</span>    private CallTracker(MetricRegistry registry, String name, String subName, String scope) {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      StringBuilder sb = new StringBuilder(CLIENT_SVC).append("_").append(name);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      if (subName != null) {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>        sb.append("(").append(subName).append(")");<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      }<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      this.name = sb.toString();<a name="line.119"></a>
+<span class="sourceLineNo">120</span>      this.callTimer = registry.timer(name(MetricsConnection.class,<a name="line.120"></a>
+<span class="sourceLineNo">121</span>        DRTN_BASE + this.name, scope));<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      this.reqHist = registry.histogram(name(MetricsConnection.class,<a name="line.122"></a>
+<span class="sourceLineNo">123</span>        REQ_BASE + this.name, scope));<a name="line.123"></a>
+<span class="sourceLineNo">124</span>      this.respHist = registry.histogram(name(MetricsConnection.class,<a name="line.124"></a>
+<span class="sourceLineNo">125</span>        RESP_BASE + this.name, scope));<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    }<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>    private CallTracker(MetricRegistry registry, String name, String scope) {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      this(registry, name, null, scope);<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>    public void updateRpc(CallStats stats) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      this.callTimer.update(stats.getCallTimeMs(), TimeUnit.MILLISECONDS);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      this.reqHist.update(stats.getRequestSizeBytes());<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      this.respHist.update(stats.getResponseSizeBytes());<a name="line.135"></a>
 <span class="sourceLineNo">136</span>    }<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>  protected static class RegionStats {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    final String name;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    final Histogram memstoreLoadHist;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    final Histogram heapOccupancyHist;<a name="line.142"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span>    @Override<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    public String toString() {<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      return "CallTracker:" + name;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    }<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  }<a name="line.142"></a>
 <span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>    public RegionStats(MetricsRegistry registry, String name) {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      this.name = name;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      this.memstoreLoadHist = registry.newHistogram(MetricsConnection.class,<a name="line.146"></a>
-<span class="sourceLineNo">147</span>          MEMLOAD_BASE + this.name);<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      this.heapOccupancyHist = registry.newHistogram(MetricsConnection.class,<a name="line.148"></a>
-<span class="sourceLineNo">149</span>          HEAP_BASE + this.name);<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    }<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>    public void update(ClientProtos.RegionLoadStats regionStatistics) {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      this.memstoreLoadHist.update(regionStatistics.getMemstoreLoad());<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      this.heapOccupancyHist.update(regionStatistics.getHeapOccupancy());<a name="line.154"></a>
+<span class="sourceLineNo">144</span>  protected static class RegionStats {<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    final String name;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    final Histogram memstoreLoadHist;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    final Histogram heapOccupancyHist;<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>    public RegionStats(MetricRegistry registry, String name) {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      this.name = name;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>      this.memstoreLoadHist = registry.histogram(name(MetricsConnection.class,<a name="line.151"></a>
+<span class="sourceLineNo">152</span>          MEMLOAD_BASE + this.name));<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      this.heapOccupancyHist = registry.histogram(name(MetricsConnection.class,<a name="line.153"></a>
+<span class="sourceLineNo">154</span>          HEAP_BASE + this.name));<a name="line.154"></a>
 <span class="sourceLineNo">155</span>    }<a name="line.155"></a>
-<span class="sourceLineNo">156</span>  }<a name="line.156"></a>
-<span class="sourceLineNo">157</span><a name="line.157"></a>
-<span class="sourceLineNo">158</span>  @VisibleForTesting<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  protected static class RunnerStats {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    final Counter normalRunners;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    final Counter delayRunners;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    final Histogram delayIntevalHist;<a name="line.162"></a>
-<span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>    public RunnerStats(MetricsRegistry registry) {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      this.normalRunners = registry.newCounter(MetricsConnection.class, "normalRunnersCount");<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      this.delayRunners = registry.newCounter(MetricsConnection.class, "delayRunnersCount");<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      this.delayIntevalHist = registry.newHistogram(MetricsConnection.class, "delayIntervalHist");<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    }<a name="line.168"></a>
-<span class="sourceLineNo">169</span><a name="line.169"></a>
-<span class="sourceLineNo">170</span>    public void incrNormalRunners() {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      this.normalRunners.inc();<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    }<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>    public void incrDelayRunners() {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      this.delayRunners.inc();<a name="line.175"></a>
+<span class="sourceLineNo">156</span><a name="line.156"></a>
+<span class="sourceLineNo">157</span>    public void update(ClientProtos.RegionLoadStats regionStatistics) {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      this.memstoreLoadHist.update(regionStatistics.getMemstoreLoad());<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      this.heapOccupancyHist.update(regionStatistics.getHeapOccupancy());<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    }<a name="line.160"></a>
+<span class="sourceLineNo">161</span>  }<a name="line.161"></a>
+<span class="sourceLineNo">162</span><a name="line.162"></a>
+<span class="sourceLineNo">163</span>  @VisibleForTesting<a name="line.163"></a>
+<span class="sourceLineNo">164</span>  protected static class RunnerStats {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    final Counter normalRunners;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    final Counter delayRunners;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    final Histogram delayIntevalHist;<a name="line.167"></a>
+<span class="sourceLineNo">168</span><a name="line.168"></a>
+<span class="sourceLineNo">169</span>    public RunnerStats(MetricRegistry registry) {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      this.normalRunners = registry.counter(<a name="line.170"></a>
+<span class="sourceLineNo">171</span>        name(MetricsConnection.class, "normalRunnersCount"));<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      this.delayRunners = registry.counter(<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        name(MetricsConnection.class, "delayRunnersCount"));<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      this.delayIntevalHist = registry.histogram(<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        name(MetricsConnection.class, "delayIntervalHist"));<a name="line.175"></a>
 <span class="sourceLineNo">176</span>    }<a name="line.176"></a>
 <span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span>    public void updateDelayInterval(long interval) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      this.delayIntevalHist.update(interval);<a name="line.179"></a>
+<span class="sourceLineNo">178</span>    public void incrNormalRunners() {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      this.normalRunners.inc();<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><a name="line.182"></a>
-<span class="sourceLineNo">183</span>  @VisibleForTesting<a name="line.183"></a>
-<span class="sourceLineNo">184</span>  protected ConcurrentHashMap&lt;ServerName, ConcurrentMap&lt;byte[], RegionStats&gt;&gt; serverStats<a name="line.184"></a>
-<span class="sourceLineNo">185</span>          = new ConcurrentHashMap&lt;ServerName, ConcurrentMap&lt;byte[], RegionStats&gt;&gt;();<a name="line.185"></a>
-<span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>  public void updateServerStats(ServerName serverName, byte[] regionName,<a name="line.187"></a>
-<span class="sourceLineNo">188</span>                                Object r) {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    if (!(r instanceof Result)) {<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      return;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    }<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    Result result = (Result) r;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    ClientProtos.RegionLoadStats stats = result.getStats();<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    if(stats == null){<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      return;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    }<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    String name = serverName.getServerName() + "," + Bytes.toStringBinary(regionName);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    ConcurrentMap&lt;byte[], RegionStats&gt; rsStats = null;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    if (serverStats.containsKey(serverName)) {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      rsStats = serverStats.get(serverName);<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    } else {<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      rsStats = serverStats.putIfAbsent(serverName,<a name="line.202"></a>
-<span class="sourceLineNo">203</span>          new ConcurrentSkipListMap&lt;byte[], RegionStats&gt;(Bytes.BYTES_COMPARATOR));<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      if (rsStats == null) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>        rsStats = serverStats.get(serverName);<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>    RegionStats regionStats = null;<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    if (rsStats.containsKey(regionName)) {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      regionStats = rsStats.get(regionName);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    } else {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      regionStats = rsStats.putIfAbsent(regionName, new RegionStats(this.registry, name));<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      if (regionStats == null) {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        regionStats = rsStats.get(regionName);<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>    regionStats.update(stats);<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>  /** A lambda for dispatching to the appropriate metric factory method */<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  private static interface NewMetric&lt;T&gt; {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    T newMetric(Class&lt;?&gt; clazz, String name, String scope);<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>  /** Anticipated number of metric entries */<a name="line.226"></a>
-<span class="sourceLineNo">227</span>  private static final int CAPACITY = 50;<a name="line.227"></a>
-<span class="sourceLineNo">228</span>  /** Default load factor from {@link java.util.HashMap#DEFAULT_LOAD_FACTOR} */<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  private static final float LOAD_FACTOR = 0.75f;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  /**<a name="line.230"></a>
-<span class="sourceLineNo">231</span>   * Anticipated number of concurrent accessor threads, from<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   * {@link ConnectionImplementation#getBatchPool()}<a name="line.232"></a>
-<span class="sourceLineNo">233</span>   */<a name="line.233"></a>
-<span class="sourceLineNo">234</span>  private static final int CONCURRENCY_LEVEL = 256;<a name="line.234"></a>
-<span class="sourceLineNo">235</span><a name="line.235"></a>
-<span class="sourceLineNo">236</span>  private final MetricsRegistry registry;<a name="line.236"></a>
-<span class="sourceLineNo">237</span>  private final JmxReporter reporter;<a name="line.237"></a>
-<span class="sourceLineNo">238</span>  private final String scope;<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>  private final NewMetric&lt;Timer&gt; timerFactory = new NewMetric&lt;Timer&gt;() {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    @Override public Timer newMetric(Class&lt;?&gt; clazz, String name, String scope) {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      return registry.newTimer(clazz, name, scope);<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>  private final NewMetric&lt;Histogram&gt; histogramFactory = new NewMetric&lt;Histogram&gt;() {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    @Override public Histogram newMetric(Class&lt;?&gt; clazz, String name, String scope) {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      return registry.newHistogram(clazz, name, scope);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    }<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  };<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>  // static metrics<a name="line.252"></a>
+<span class="sourceLineNo">181</span><a name="line.181"></a>
+<span class="sourceLineNo">182</span>    public void incrDelayRunners() {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      this.delayRunners.inc();<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>    public void updateDelayInterval(long interval) {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      this.delayIntevalHist.update(interval);<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>  @VisibleForTesting<a name="line.191"></a>
+<span class="sourceLineNo">192</span>  protected ConcurrentHashMap&lt;ServerName, ConcurrentMap&lt;byte[], RegionStats&gt;&gt; serverStats<a name="line.192"></a>
+<span class="sourceLineNo">193</span>          = new ConcurrentHashMap&lt;ServerName, ConcurrentMap&lt;byte[], RegionStats&gt;&gt;();<a name="line.193"></a>
+<span class="sourceLineNo">194</span><a name="line.194"></a>
+<span class="sourceLineNo">195</span>  public void updateServerStats(ServerName serverName, byte[] regionName,<a name="line.195"></a>
+<span class="sourceLineNo">196</span>                                Object r) {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    if (!(r instanceof Result)) {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      return;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    }<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    Result result = (Result) r;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    ClientProtos.RegionLoadStats stats = result.getStats();<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    if(stats == null){<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      return;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    }<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    String name = serverName.getServerName() + "," + Bytes.toStringBinary(regionName);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    ConcurrentMap&lt;byte[], RegionStats&gt; rsStats = null;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    if (serverStats.containsKey(serverName)) {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      rsStats = serverStats.get(serverName);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    } else {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      rsStats = serverStats.putIfAbsent(serverName,<a name="line.210"></a>
+<span class="sourceLineNo">211</span>          new ConcurrentSkipListMap&lt;byte[], RegionStats&gt;(Bytes.BYTES_COMPARATOR));<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      if (rsStats == null) {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>        rsStats = serverStats.get(serverName);<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>    RegionStats regionStats = null;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    if (rsStats.containsKey(regionName)) {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      regionStats = rsStats.get(regionName);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    } else {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      regionStats = rsStats.putIfAbsent(regionName, new RegionStats(this.registry, name));<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      if (regionStats == null) {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>        regionStats = rsStats.get(regionName);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      }<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    }<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    regionStats.update(stats);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>  }<a name="line.226"></a>
+<span class="sourceLineNo">227</span><a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span>  /** A lambda for dispatching to the appropriate metric factory method */<a name="line.229"></a>
+<span class="sourceLineNo">230</span>  private static interface NewMetric&lt;T&gt; {<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    T newMetric(Class&lt;?&gt; clazz, String name, String scope);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>  }<a name="line.232"></a>
+<span class="sourceLineNo">233</span><a name="line.233"></a>
+<span class="sourceLineNo">234</span>  /** Anticipated number of metric entries */<a name="line.234"></a>
+<span class="sourceLineNo">235</span>  private static final int CAPACITY = 50;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>  /** Default load factor from {@link java.util.HashMap#DEFAULT_LOAD_FACTOR} */<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  private static final float LOAD_FACTOR = 0.75f;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>  /**<a name="line.238"></a>
+<span class="sourceLineNo">239</span>   * Anticipated number of concurrent accessor threads, from<a name="line.239"></a>
+<span class="sourceLineNo">240</span>   * {@link ConnectionImplementation#getBatchPool()}<a name="line.240"></a>
+<span class="sourceLineNo">241</span>   */<a name="line.241"></a>
+<span class="sourceLineNo">242</span>  private static final int CONCURRENCY_LEVEL = 256;<a name="line.242"></a>
+<span class="sourceLineNo">243</span><a name="line.243"></a>
+<span class="sourceLineNo">244</span>  private final MetricRegistry registry;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>  private final JmxReporter reporter;<a name="line.245"></a>
+<span class="sourceLineNo">246</span>  private final String scope;<a name="line.246"></a>
+<span class="sourceLineNo">247</span><a name="line.247"></a>
+<span class="sourceLineNo">248</span>  private final NewMetric&lt;Timer&gt; timerFactory = new NewMetric&lt;Timer&gt;() {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    @Override public Timer newMetric(Class&lt;?&gt; clazz, String name, String scope) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      return registry.timer(name(clazz, name, scope));<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    }<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  };<a name="line.252"></a>
 <span class="sourceLineNo">253</span><a name="line.253"></a>
-<span class="sourceLineNo">254</span>  @VisibleForTesting protected final Counter metaCacheHits;<a name="line.254"></a>
-<span class="sourceLineNo">255</span>  @VisibleForTesting protected final Counter metaCacheMisses;<a name="line.255"></a>
-<span class="sourceLineNo">256</span>  @VisibleForTesting protected final CallTracker getTracker;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>  @VisibleForTesting protected final CallTracker scanTracker;<a name="line.257"></a>
-<span class="sourceLineNo">258</span>  @VisibleForTesting protected final CallTracker appendTracker;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  @VisibleForTesting protected final CallTracker deleteTracker;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  @VisibleForTesting protected final CallTracker incrementTracker;<a name="line.260"></a>
-<span class="sourceLineNo">261</span>  @VisibleForTesting protected final CallTracker putTracker;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>  @VisibleForTesting protected final CallTracker multiTracker;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>  @VisibleForTesting protected final RunnerStats runnerStats;<a name="line.263"></a>
-<span class="sourceLineNo">264</span><a name="line.264"></a>
-<span class="sourceLineNo">265</span>  // dynamic metrics<a name="line.265"></a>
-<span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>  // These maps are used to cache references to the metric instances that are managed by the<a name="line.267"></a>
-<span class="sourceLineNo">268</span>  // registry. I don't think their use perfectly removes redundant allocations, but it's<a name="line.268"></a>
-<span class="sourceLineNo">269</span>  // a big improvement over calling registry.newMetric each time.<a name="line.269"></a>
-<span class="sourceLineNo">270</span>  @VisibleForTesting protected final ConcurrentMap&lt;String, Timer&gt; rpcTimers =<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      new ConcurrentHashMap&lt;&gt;(CAPACITY, LOAD_FACTOR, CONCURRENCY_LEVEL);<a name="line.271"></a>
-<span class="sourceLineNo">272</span>  @VisibleForTesting protected final ConcurrentMap&lt;String, Histogram&gt; rpcHistograms =<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      new ConcurrentHashMap&lt;&gt;(CAPACITY * 2 /* tracking both request and response sizes */,<a name="line.273"></a>
-<span class="sourceLineNo">274</span>          LOAD_FACTOR, CONCURRENCY_LEVEL);<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span>  public MetricsConnection(final ConnectionImplementation conn) {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    this.scope = conn.toString();<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    this.registry = new MetricsRegistry();<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    final ThreadPoolExecutor batchPool = (ThreadPoolExecutor) conn.getCurrentBatchPool();<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    final ThreadPoolExecutor metaPool = (ThreadPoolExecutor) conn.getCurrentMetaLookupPool();<a name="line.280"></a>
-<span class="sourceLineNo">281</span><a name="line.281"></a>
-<span class="sourceLineNo">282</span>    this.registry.newGauge(this.getClass(), "executorPoolActiveThreads", scope,<a name="line.282"></a>
-<span class="sourceLineNo">283</span>        new RatioGauge() {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>          @Override protected double getNumerator() {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>            return batchPool.getActiveCount();<a name="line.285"></a>
-<span class="sourceLineNo">286</span>          }<a name="line.286"></a>
-<span class="sourceLineNo">287</span>          @Override protected double getDenominator() {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>            return batchPool.getMaximumPoolSize();<a name="line.288"></a>
-<span class="sourceLineNo">289</span>          }<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        });<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    this.registry.newGauge(this.getClass(), "metaPoolActiveThreads", scope,<a name="line.291"></a>
-<span class="sourceLineNo">292</span>        new RatioGauge() {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>          @Override protected double getNumerator() {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>            return metaPool.getActiveCount();<a name="line.294"></a>
+<span class="sourceLineNo">254</span>  private final NewMetric&lt;Histogram&gt; histogramFactory = new NewMetric&lt;Histogram&gt;() {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    @Override public Histogram newMetric(Class&lt;?&gt; clazz, String name, String scope) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      return registry.histogram(name(clazz, name, scope));<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
+<span class="sourceLineNo">258</span>  };<a name="line.258"></a>
+<span class="sourceLineNo">259</span><a name="line.259"></a>
+<span class="sourceLineNo">260</span>  // static metrics<a name="line.260"></a>
+<span class="sourceLineNo">261</span><a name="line.261"></a>
+<span class="sourceLineNo">262</span>  @VisibleForTesting protected final Counter metaCacheHits;<a name="line.262"></a>
+<span class="sourceLineNo">263</span>  @VisibleForTesting protected final Counter metaCacheMisses;<a name="line.263"></a>
+<span class="sourceLineNo">264</span>  @VisibleForTesting protected final CallTracker getTracker;<a name="line.264"></a>
+<span class="sourceLineNo">265</span>  @VisibleForTesting protected final CallTracker scanTracker;<a name="line.265"></a>
+<span class="sourceLineNo">266</span>  @VisibleForTesting protected final CallTracker appendTracker;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>  @VisibleForTesting protected final CallTracker deleteTracker;<a name="line.267"></a>
+<span class="sourceLineNo">268</span>  @VisibleForTesting protected final CallTracker incrementTracker;<a name="line.268"></a>
+<span class="sourceLineNo">269</span>  @VisibleForTesting protected final CallTracker putTracker;<a name="line.269"></a>
+<span class="sourceLineNo">270</span>  @VisibleForTesting protected final CallTracker multiTracker;<a name="line.270"></a>
+<span class="sourceLineNo">271</span>  @VisibleForTesting protected final RunnerStats runnerStats;<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>  // dynamic metrics<a name="line.273"></a>
+<span class="sourceLineNo">274</span><a name="line.274"></a>
+<span class="sourceLineNo">275</span>  // These maps are used to cache references to the metric instances that are managed by the<a name="line.275"></a>
+<span class="sourceLineNo">276</span>  // registry. I don't think their use perfectly removes redundant allocations, but it's<a name="line.276"></a>
+<span class="sourceLineNo">277</span>  // a big improvement over calling registry.newMetric each time.<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  @VisibleForTesting protected final ConcurrentMap&lt;String, Timer&gt; rpcTimers =<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      new ConcurrentHashMap&lt;&gt;(CAPACITY, LOAD_FACTOR, CONCURRENCY_LEVEL);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>  @VisibleForTesting protected final ConcurrentMap&lt;String, Histogram&gt; rpcHistograms =<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      new ConcurrentHashMap&lt;&gt;(CAPACITY * 2 /* tracking both request and response sizes */,<a name="line.281"></a>
+<span class="sourceLineNo">282</span>          LOAD_FACTOR, CONCURRENCY_LEVEL);<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>  public MetricsConnection(final ConnectionImplementation conn) {<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    this.scope = conn.toString();<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    this.registry = new MetricRegistry();<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    final ThreadPoolExecutor batchPool = (ThreadPoolExecutor) conn.getCurrentBatchPool();<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    final ThreadPoolExecutor metaPool = (ThreadPoolExecutor) conn.getCurrentMetaLookupPool();<a name="line.288"></a>
+<span class="sourceLineNo">289</span><a name="line.289"></a>
+<span class="sourceLineNo">290</span>    this.registry.register(name(this.getClass(), "executorPoolActiveThreads", scope),<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        new RatioGauge() {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>          @Override<a name="line.292"></a>
+<span class="sourceLineNo">293</span>          protected Ratio getRatio() {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>            return Ratio.of(batchPool.getActiveCount(), batchPool.getMaximumPoolSize());<a name="line.294"></a>
 <span class="sourceLineNo">295</span>          }<a name="line.295"></a>
-<span class="sourceLineNo">296</span>          @Override protected double getDenominator() {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>            return metaPool.getMaximumPoolSize();<a name="line.297"></a>
-<span class="sourceLineNo">298</span>          }<a name="line.298"></a>
-<span class="sourceLineNo">299</span>        });<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    this.metaCacheHits = registry.newCounter(this.getClass(), "metaCacheHits", scope);<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    this.metaCacheMisses = registry.newCounter(this.getClass(), "metaCacheMisses", scope);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    this.getTracker = new CallTracker(this.registry, "Get", scope);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    this.scanTracker = new CallTracker(this.registry, "Scan", scope);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    this.appendTracker = new CallTracker(this.registry, "Mutate", "Append", scope);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    this.deleteTracker = new CallTracker(this.registry, "Mutate", "Delete", scope);<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    this.incrementTracker = new CallTracker(this.registry, "Mutate", "Increment", scope);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    this.putTracker = new CallTracker(this.registry, "Mutate", "Put", scope);<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    this.multiTracker = new CallTracker(this.registry, "Multi", scope);<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    this.runnerStats = new RunnerStats(this.registry);<a name="line.309"></a>
-<span class="sourceLineNo">310</span><a name="line.310"></a>
-<span class="sourceLineNo">311</span>    this.reporter = new JmxReporter(this.registry);<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    this.reporter.start();<a name="line.312"></a>
-<span class="sourceLineNo">313</span>  }<a name="line.313"></a>
+<span class="sourceLineNo">296</span>        });<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    this.registry.register(name(this.getClass(), "metaPoolActiveThreads", scope),<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        new RatioGauge() {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>          @Override<a name="line.299"></a>
+<span class="sourceLineNo">300</span>          protected Ratio getRatio() {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>            return Ratio.of(metaPool.getActiveCount(), metaPool.getMaximumPoolSize());<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>    this.metaCacheHits = registry.counter(name(this.getClass(), "metaCacheHits", scope));<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    this.metaCacheMisses = registry.counter(name(this.getClass(), "metaCacheMisses", scope));<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    this.getTracker = new CallTracker(this.registry, "Get", scope);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    this.scanTracker = new CallTracker(this.registry, "Scan", scope);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    this.appendTracker = new CallTracker(this.registry, "Mutate", "Append", scope);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    this.deleteTracker = new CallTracker(this.registry, "Mutate", "Delete", scope);<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    this.incrementTracker = new CallTracker(this.registry, "Mutate", "Increment", scope);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    this.putTracker = new CallTracker(this.registry, "Mutate", "Put", scope);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    this.multiTracker = new CallTracker(this.registry, "Multi", scope);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    this.runnerStats = new RunnerStats(this.registry);<a name="line.313"></a>
 <span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span>  public void shutdown() {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    this.reporter.shutdown();<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    this.registry.shutdown();<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  /** Produce an instance of {@link CallStats} for clients to attach to RPCs. */<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  public static CallStats newCallStats() {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    // TODO: instance pool to reduce GC?<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    return new CallStats();<a name="line.323"></a>
-<span class="sourceLineNo">324</span>  }<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>  /** Increment the number of meta cache hits. */<a name="line.326"></a>
-<span class="sourceLineNo">327</span>  public void incrMetaCacheHit() {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    metaCacheHits.inc();<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>  /** Increment the number of meta cache misses. */<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  public void incrMetaCacheMiss() {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    metaCacheMisses.inc();<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  }<a name="line.334"></a>
-<span class="sourceLineNo">335</span><a name="line.335"></a>
-<span class="sourceLineNo">336</span>  /** Increment the number of normal runner counts. */<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  public void incrNormalRunners() {<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    this.runnerStats.incrNormalRunners();<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  }<a name="line.339"></a>
-<span class="sourceLineNo">340</span><a name="line.340"></a>
-<span class="sourceLineNo">341</span>  /** Increment the number of delay runner counts. */<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  public void incrDelayRunners() {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    this.runnerStats.incrDelayRunners();<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  }<a name="line.344"></a>
-<span class="sourceLineNo">345</span><a name="line.345"></a>
-<span class="sourceLineNo">346</span>  /** Update delay interval of delay runner. */<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  public void updateDelayInterval(long interval) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    this.runnerStats.updateDelayInterval(interval);<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  }<a name="line.349"></a>
-<span class="sourceLineNo">350</span><a name="line.350"></a>
-<span class="sourceLineNo">351</span>  /**<a name="line.351"></a>
-<span class="sourceLineNo">352</span>   * Get a metric for {@code key} from {@code map}, or create it with {@code factory}.<a name="line.352"></a>
-<span class="sourceLineNo">353</span>   */<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  private &lt;T&gt; T getMetric(String key, ConcurrentMap&lt;String, T&gt; map, NewMetric&lt;T&gt; factory) {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    T t = map.get(key);<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    if (t == null) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      t = factory.newMetric(this.getClass(), key, scope);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      map.putIfAbsent(key, t);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    }<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    return t;<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>  /** Update call stats for non-critical-path methods */<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  private void updateRpcGeneric(MethodDescriptor method, CallStats stats) {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    final String methodName = method.getService().getName() + "_" + method.getName();<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    getMetric(DRTN_BASE + methodName, rpcTimers, timerFactory)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        .update(stats.getCallTimeMs(), TimeUnit.MILLISECONDS);<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    getMetric(REQ_BASE + methodName, rpcHistograms, histogramFactory)<a name="line.368"></a>
-<span class="sourceLineNo">369</span>        .update(stats.getRequestSizeBytes());<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    getMetric(RESP_BASE + methodName, rpcHistograms, histogramFactory)<a name="line.370"></a>
-<span class="sourceLineNo">371</span>        .update(stats.getResponseSizeBytes());<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>  /** Report RPC context to metrics system. */<a name="line.374"></a>
-<span class="sourceLineNo">375</span>  public void updateRpc(MethodDescriptor method, Message param, CallStats stats) {<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    // this implementation is tied directly to protobuf implementation details. would be better<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    // if we could dispatch based on something static, ie, request Message type.<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    if (method.getService() == ClientService.getDescriptor()) {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      switch(method.getIndex()) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      case 0:<a name="line.380"></a>
-<span class="sourceLineNo">381</span>        assert "Get".equals(method.getName());<a name="line.381"></a>
-<span class="sourceLineNo">382</span>        getTracker.updateRpc(stats);<a name="line.382"></a>
-<span class="sourceLineNo">383</span>        return;<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      case 1:<a name="line.384"></a>
-<span class="sourceLineNo">385</span>        assert "Mutate".equals(method.getName());<a name="line.385"></a>
-<span class="sourceLineNo">386</span>        final MutationType mutationType = ((MutateRequest) param).getMutation().getMutateType();<a name="line.386"></a>
-<span class="sourceLineNo">387</span>        switch(mutationType) {<a name="line.387"></a>
-<span class="sourceLineNo">388</span>        case APPEND:<a name="line.388"></a>
-<span class="sourceLineNo">389</span>          appendTracker.updateRpc(stats);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>          return;<a name="line.390"></a>
-<span class="sourceLineNo">391</span>        case DELETE:<a name="line.391"></a>
-<span class="sourceLineNo">392</span>          deleteTracker.updateRpc(stats);<a name="line.392"></a>
+<span class="sourceLineNo">315</span>    this.reporter = JmxReporter.forRegistry(this.registry).build();<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    this.reporter.start();<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  }<a name="line.317"></a>
+<span class="sourceLineNo">318</span><a name="line.318"></a>
+<span class="sourceLineNo">319</span>  public void shutdown() {<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    this.reporter.stop();<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  }<a name="line.321"></a>
+<span class="sourceLineNo">322</span><a name="line.322"></a>
+<span class="sourceLineNo">323</span>  /** Produce an instance of {@link CallStats} for clients to attach to RPCs. */<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  public static CallStats newCallStats() {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    // TODO: instance pool to reduce GC?<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    return new CallStats();<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>  /** Increment the number of meta cache hits. */<a name="line.329"></a>
+<span class="sourceLineNo">330</span>  public void incrMetaCacheHit() {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    metaCacheHits.inc();<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  }<a name="line.332"></a>
+<span class="sourceLineNo">333</span><a name="line.333"></a>
+<span class="sourceLineNo">334</span>  /** Increment the number of meta cache misses. */<a name="line.334"></a>
+<span class="sourceLineNo">335</span>  public void incrMetaCacheMiss() {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    metaCacheMisses.inc();<a name="line.336"></a>
+<span class="sourceLineNo">337</span>  }<a name="line.337"></a>
+<span class="sourceLineNo">338</span><a name="line.338"></a>
+<span class="sourceLineNo">339</span>  /** Increment the number of normal runner counts. */<a name="line.339"></a>
+<span class="sourceLineNo">340</span>  public void incrNormalRunners() {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    this.runnerStats.incrNormalRunners();<a name="line.341"></a>
+<span class="sourceLineNo">342</span>  }<a name="line.342"></a>
+<span class="sourceLineNo">343</span><a name="line.343"></a>
+<span class="sourceLineNo">344</span>  /** Increment the number of delay runner counts. */<a name="line.344"></a>
+<span class="sourceLineNo">345</span>  public void incrDelayRunners() {<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    this.runnerStats.incrDelayRunners();<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  }<a name="line.347"></a>
+<span class="sourceLineNo">348</span><a name="line.348"></a>
+<span class="sourceLineNo">349</span>  /** Update delay interval of delay runner. */<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  public void updateDelayInterval(long interval) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    this.runnerStats.updateDelayInterval(interval);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>  }<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>  /**<a name="line.354"></a>
+<span class="sourceLineNo">355</span>   * Get a metric for {@code key} from {@code map}, or create it with {@code factory}.<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   */<a name="line.356"></a>
+<span class="sourceLineNo">357</span>  private &lt;T&gt; T getMetric(String key, ConcurrentMap&lt;String, T&gt; map, NewMetric&lt;T&gt; factory) {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    T t = map.get(key);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    if (t == null) {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      t = factory.newMetric(this.getClass(), key, scope);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      map.putIfAbsent(key, t);<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    }<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    return t;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>  }<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>  /** Update call stats for non-critical-path methods */<a name="line.366"></a>
+<span class="sourceLineNo">367</span>  private void updateRpcGeneric(MethodDescriptor method, CallStats stats) {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    final String methodName = method.getService().getName() + "_" + method.getName();<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    getMetric(DRTN_BASE + methodName, rpcTimers, timerFactory)<a name="line.369"></a>
+<span class="sourceLineNo">370</span>        .update(stats.getCallTimeMs(), TimeUnit.MILLISECONDS);<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    getMetric(REQ_BASE + methodName, rpcHistograms, histogramFactory)<a name="line.371"></a>
+<span class="sourceLineNo">372</span>        .update(stats.getRequestSizeBytes());<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    getMetric(RESP_BASE + methodName, rpcHistograms, histogramFactory)<a name="line.373"></a>
+<span class="sourceLineNo">374</span>        .update(stats.getResponseSizeBytes());<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  }<a name="line.375"></a>
+<span class="sourceLineNo">376</span><a name="line.376"></a>
+<span class="sourceLineNo">377</span>  /** Report RPC context to metrics system. */<a name="line.377"></a>
+<span class="sourceLineNo">378</span>  public void updateRpc(MethodDescriptor method, Message param, CallStats stats) {<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    // this implementation is tied directly to protobuf implementation details. would be better<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    // if we could dispatch based on something static, ie, request Message type.<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    if (method.getService() == ClientService.getDescriptor()) {<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      switch(method.getIndex()) {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      case 0:<a name="line.383"></a>
+<span class="sourceLineNo">384</span>        assert "Get".equals(method.getName());<a name="line.384"></a>
+<span class="sourceLineNo">385</span>        getTracker.updateRpc(stats);<a name="line.385"></a>
+<span class="sourceLineNo">386</span>        return;<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      case 1:<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        assert "Mutate".equals(method.getName());<a name="line.388"></a>
+<span class="sourceLineNo">389</span>        final MutationType mutationType = ((MutateRequest) param).getMutation().getMutateType();<a name="line.389"></a>
+<span class="sourceLineNo">390</span>        switch(mutationType) {<a name="line.390"></a>
+<span class="sourceLineNo">391</span>        case APPEND:<a name="line.391"></a>
+<span class="sourceLineNo">392</span>          appendTracker.updateRpc(stats);<a name="line.392"></a>
 <span class="sourceLineNo">393</span>          return;<a name="line.393"></a>
-<span class="sourceLineNo">394</span>        case INCREMENT:<a name="line.394"></a>
-<span class="sourceLineNo">395</span>          incrementTracker.updateRpc(stats);<a name="line.395"></a>
+<span class="sourceLineNo">394</span>        case DELETE:<a name="line.394"></a>
+<span class="sourceLineNo">395</span>          deleteTracker.updateRpc(stats);<a name="line.395"></a>
 <span class="sourceLineNo">396</span>          return;<a name="line.396"></a>
-<span class="sourceLineNo">397</span>        case PUT:<a name="line.397"></a>
-<span class="sourceLineNo">398</span>          putTracker.updateRpc(stats);<a name="line.398"></a>
+<span class="sourceLineNo">397</span>        case INCREMENT:<a name="line.397"></a>
+<span class="sourceLineNo">398</span>          incrementTracker.updateRpc(stats);<a name="line.398"></a>
 <span class="sourceLineNo">399</span>          return;<a name="line.399"></a>
-<span class="sourceLineNo">400</span>        default:<a name="line.400"></a>
-<span class="sourceLineNo">401</span>          throw new RuntimeException("Unrecognized mutation type " + mutationType);<a name="line.401"></a>
-<span class="sourceLineNo">402</span>        }<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      case 2:<a name="line.403"></a>
-<span class="sourceLineNo">404</span>        assert "Scan".equals(method.getName());<a name="line.404"></a>
-<span class="sourceLineNo">405</span>        scanTracker.updateRpc(stats);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>        return;<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      case 3:<a name="line.407"></a>
-<span class="sourceLineNo">408</span>        assert "BulkLoadHFile".equals(method.getName());<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        // use generic implementation<a name="line.409"></a>
-<span class="sourceLineNo">410</span>        break;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      case 4:<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        assert "ExecService".equals(method.getName());<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        // use generic implementation<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        break;<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      case 5:<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        assert "ExecRegionServerService".equals(method.getName());<a name="line.416"></a>
-<span class="sourceLineNo">417</span>        // use generic implementation<a name="line.417"></a>
-<span class="sourceLineNo">418</span>        break;<a name="line.418"></a>
-<span class="sourceLineNo">419</span>      case 6:<a name="line.419"></a>
-<span class="sourceLineNo">420</span>        assert "Multi".equals(method.getName());<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        multiTracker.updateRpc(stats);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        return;<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      default:<a name="line.423"></a>
-<span class="sourceLineNo">424</span>        throw new RuntimeException("Unrecognized ClientService RPC type " + method.getFullName());<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      }<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    }<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    // Fallback to dynamic registry lookup for DDL methods.<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    updateRpcGeneric(method, stats);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>  }<a name="line.429"></a>
-<span class="sourceLineNo">430</span>}<a name="line.430"></a>
+<span class="sourceLineNo">400</span>        case PUT:<a name="line.400"></a>
+<span class="sourceLineNo">401</span>          putTracker.updateRpc(stats);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>          return;<a name="line.402"></a>
+<span class="sourceLineNo">403</span>        default:<a name="line.403"></a>
+<span class="sourceLineNo">404</span>          throw new RuntimeException("Unrecognized mutation type " + mutationType);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>        }<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      case 2:<a name="line.406"></a>
+<span class="sourceLineNo">407</span>        assert "Scan".equals(method.getName());<a name="line.407"></a>
+<span class="sourceLineNo">408</span>        scanTracker.updateRpc(stats);<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        return;<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      case 3:<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        assert "BulkLoadHFile".equals(method.getName());<a name="line.411"></a>
+<span class="sourceLineNo">412</span>        // use generic implementation<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        break;<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      case 4:<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        assert "ExecService".equals(method.getName());<a name="line.415"></a>
+<span class="sourceLineNo">416</span>        // use generic implementation<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        break;<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      case 5:<a name="line.418"></a>
+<span class="sourceLineNo">419</span>        assert "ExecRegionServerService".equals(method.getName());<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        // use generic implementation<a name="line.420"></a>
+<span class="sourceLineNo">421</span>        break;<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      case 6:<a name="line.422"></a>
+<span class="sourceLineNo">423</span>        assert "Multi".equals(method.getName());<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        multiTracker.updateRpc(stats);<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        return;<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      default:<a name="line.426"></a>
+<span class="sourceLineNo">427</span>        throw new RuntimeException("Unrecognized ClientService RPC type " + method.getFullName());<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      }<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    }<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    // Fallback to dynamic registry lookup for DDL methods.<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    updateRpcGeneric(method, stats);<a name="line.431"></a>
+<span class="sourceLineNo">432</span>  }<a name="line.432"></a>
+<span class="sourceLineNo">433</span>}<a name="line.433"></a>
 
 
 


[19/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html b/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html
index 4a90c16..fc06682 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html
@@ -108,866 +108,870 @@
 <span class="sourceLineNo">100</span><a name="line.100"></a>
 <span class="sourceLineNo">101</span>  private final LinkedList&lt;ProcedureWALFile&gt; logs = new LinkedList&lt;ProcedureWALFile&gt;();<a name="line.101"></a>
 <span class="sourceLineNo">102</span>  private final ProcedureStoreTracker storeTracker = new ProcedureStoreTracker();<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  private final AtomicLong inactiveLogsMaxId = new AtomicLong(0);<a name="line.103"></a>
-<span class="sourceLineNo">104</span>  private final ReentrantLock lock = new ReentrantLock();<a name="line.104"></a>
-<span class="sourceLineNo">105</span>  private final Condition waitCond = lock.newCondition();<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  private final Condition slotCond = lock.newCondition();<a name="line.106"></a>
-<span class="sourceLineNo">107</span>  private final Condition syncCond = lock.newCondition();<a name="line.107"></a>
-<span class="sourceLineNo">108</span><a name="line.108"></a>
-<span class="sourceLineNo">109</span>  private final LeaseRecovery leaseRecovery;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>  private final Configuration conf;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  private final FileSystem fs;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>  private final Path logDir;<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>  private final AtomicReference&lt;Throwable&gt; syncException = new AtomicReference&lt;Throwable&gt;();<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  private final AtomicBoolean loading = new AtomicBoolean(true);<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  private final AtomicBoolean inSync = new AtomicBoolean(false);<a name="line.116"></a>
-<span class="sourceLineNo">117</span>  private final AtomicLong totalSynced = new AtomicLong(0);<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  private final AtomicLong lastRollTs = new AtomicLong(0);<a name="line.118"></a>
-<span class="sourceLineNo">119</span><a name="line.119"></a>
-<span class="sourceLineNo">120</span>  private LinkedTransferQueue&lt;ByteSlot&gt; slotsCache = null;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>  private Set&lt;ProcedureWALFile&gt; corruptedLogs = null;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  private FSDataOutputStream stream = null;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  private long flushLogId = 0;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  private int slotIndex = 0;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>  private Thread syncThread;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>  private ByteSlot[] slots;<a name="line.126"></a>
-<span class="sourceLineNo">127</span><a name="line.127"></a>
-<span class="sourceLineNo">128</span>  private int maxRetriesBeforeRoll;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  private int maxSyncFailureRoll;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  private int waitBeforeRoll;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  private int rollRetries;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>  private int periodicRollMsec;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  private long rollThreshold;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  private boolean useHsync;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>  private int syncWaitMsec;<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>  public WALProcedureStore(final Configuration conf, final FileSystem fs, final Path logDir,<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      final LeaseRecovery leaseRecovery) {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    this.fs = fs;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    this.conf = conf;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    this.logDir = logDir;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    this.leaseRecovery = leaseRecovery;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>  }<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span>  @Override<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  public void start(int numSlots) throws IOException {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    if (!setRunning(true)) {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      return;<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>    // Init buffer slots<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    loading.set(true);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    slots = new ByteSlot[numSlots];<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    slotsCache = new LinkedTransferQueue();<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    while (slotsCache.size() &lt; numSlots) {<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      slotsCache.offer(new ByteSlot());<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    }<a name="line.157"></a>
-<span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>    // Tunings<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    maxRetriesBeforeRoll =<a name="line.160"></a>
-<span class="sourceLineNo">161</span>      conf.getInt(MAX_RETRIES_BEFORE_ROLL_CONF_KEY, DEFAULT_MAX_RETRIES_BEFORE_ROLL);<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    maxSyncFailureRoll = conf.getInt(MAX_SYNC_FAILURE_ROLL_CONF_KEY, DEFAULT_MAX_SYNC_FAILURE_ROLL);<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    waitBeforeRoll = conf.getInt(WAIT_BEFORE_ROLL_CONF_KEY, DEFAULT_WAIT_BEFORE_ROLL);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    rollRetries = conf.getInt(ROLL_RETRIES_CONF_KEY, DEFAULT_ROLL_RETRIES);<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    rollThreshold = conf.getLong(ROLL_THRESHOLD_CONF_KEY, DEFAULT_ROLL_THRESHOLD);<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    periodicRollMsec = conf.getInt(PERIODIC_ROLL_CONF_KEY, DEFAULT_PERIODIC_ROLL);<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    syncWaitMsec = conf.getInt(SYNC_WAIT_MSEC_CONF_KEY, DEFAULT_SYNC_WAIT_MSEC);<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    useHsync = conf.getBoolean(USE_HSYNC_CONF_KEY, DEFAULT_USE_HSYNC);<a name="line.168"></a>
-<span class="sourceLineNo">169</span><a name="line.169"></a>
-<span class="sourceLineNo">170</span>    // Init sync thread<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    syncThread = new Thread("WALProcedureStoreSyncThread") {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      @Override<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      public void run() {<a name="line.173"></a>
-<span class="sourceLineNo">174</span>        try {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>          syncLoop();<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        } catch (Throwable e) {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>          LOG.error("Got an exception from the sync-loop", e);<a name="line.177"></a>
-<span class="sourceLineNo">178</span>          if (!isSyncAborted()) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>            sendAbortProcessSignal();<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>      }<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    };<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    syncThread.start();<a name="line.184"></a>
-<span class="sourceLineNo">185</span>  }<a name="line.185"></a>
-<span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>  @Override<a name="line.187"></a>
-<span class="sourceLineNo">188</span>  public void stop(boolean abort) {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    if (!setRunning(false)) {<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      return;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    }<a name="line.191"></a>
-<span class="sourceLineNo">192</span><a name="line.192"></a>
-<span class="sourceLineNo">193</span>    LOG.info("Stopping the WAL Procedure Store");<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    if (lock.tryLock()) {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      try {<a name="line.195"></a>
-<span class="sourceLineNo">196</span>        waitCond.signalAll();<a name="line.196"></a>
-<span class="sourceLineNo">197</span>        syncCond.signalAll();<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      } finally {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>        lock.unlock();<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 (!abort) {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      try {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>        syncThread.join();<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      } catch (InterruptedException e) {<a name="line.206"></a>
-<span class="sourceLineNo">207</span>        Thread.currentThread().interrupt();<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><a name="line.210"></a>
-<span class="sourceLineNo">211</span>    // Close the writer<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    closeStream();<a name="line.212"></a>
-<span class="sourceLineNo">213</span><a name="line.213"></a>
-<span class="sourceLineNo">214</span>    // Close the old logs<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    // they should be already closed, this is just in case the load fails<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    // and we call start() and then stop()<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    for (ProcedureWALFile log: logs) {<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      log.close();<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    }<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    logs.clear();<a name="line.220"></a>
-<span class="sourceLineNo">221</span>  }<a name="line.221"></a>
-<span class="sourceLineNo">222</span><a name="line.222"></a>
-<span class="sourceLineNo">223</span>  @Override<a name="line.223"></a>
-<span class="sourceLineNo">224</span>  public int getNumThreads() {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    return slots == null ? 0 : slots.length;<a name="line.225"></a>
-<span class="sourceLineNo">226</span>  }<a name="line.226"></a>
-<span class="sourceLineNo">227</span><a name="line.227"></a>
-<span class="sourceLineNo">228</span>  public ProcedureStoreTracker getStoreTracker() {<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    return storeTracker;<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>  public LinkedList&lt;ProcedureWALFile&gt; getActiveLogs() {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    return logs;<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>  public Set&lt;ProcedureWALFile&gt; getCorruptedLogs() {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    return corruptedLogs;<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>  @Override<a name="line.240"></a>
-<span class="sourceLineNo">241</span>  public void recoverLease() throws IOException {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    LOG.info("Starting WAL Procedure Store lease recovery");<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    FileStatus[] oldLogs = getLogFiles();<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    while (isRunning()) {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>      // Get Log-MaxID and recover lease on old logs<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      flushLogId = initOldLogs(oldLogs);<a name="line.246"></a>
-<span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>      // Create new state-log<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      if (!rollWriter(flushLogId + 1)) {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        // someone else has already created this log<a name="line.250"></a>
-<span class="sourceLineNo">251</span>        LOG.debug("someone else has already created log " + flushLogId);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>        continue;<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>      // We have the lease on the log<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      oldLogs = getLogFiles();<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      if (getMaxLogId(oldLogs) &gt; flushLogId) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>        if (LOG.isDebugEnabled()) {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>          LOG.debug("Someone else created new logs. Expected maxLogId &lt; " + flushLogId);<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        }<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        logs.getLast().removeFile();<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        continue;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      }<a name="line.263"></a>
-<span class="sourceLineNo">264</span><a name="line.264"></a>
-<span class="sourceLineNo">265</span>      LOG.info("Lease acquired for flushLogId: " + flushLogId);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      break;<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    }<a name="line.267"></a>
-<span class="sourceLineNo">268</span>  }<a name="line.268"></a>
-<span class="sourceLineNo">269</span><a name="line.269"></a>
-<span class="sourceLineNo">270</span>  @Override<a name="line.270"></a>
-<span class="sourceLineNo">271</span>  public void load(final ProcedureLoader loader) throws IOException {<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    if (logs.isEmpty()) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      throw new RuntimeException("recoverLease() must be called before loading data");<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    }<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span>    // Nothing to do, If we have only the current log.<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    if (logs.size() == 1) {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      if (LOG.isDebugEnabled()) {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>        LOG.debug("No state logs to replay.");<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      }<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      loader.setMaxProcId(0);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      loading.set(false);<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      return;<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    }<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>    // Load the old logs<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    final ArrayList&lt;ProcedureWALFile&gt; toRemove = new ArrayList&lt;ProcedureWALFile&gt;();<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    Iterator&lt;ProcedureWALFile&gt; it = logs.descendingIterator();<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    it.next(); // Skip the current log<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    try {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      ProcedureWALFormat.load(it, storeTracker, new ProcedureWALFormat.Loader() {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>        @Override<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        public void setMaxProcId(long maxProcId) {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>          loader.setMaxProcId(maxProcId);<a name="line.294"></a>
-<span class="sourceLineNo">295</span>        }<a name="line.295"></a>
-<span class="sourceLineNo">296</span><a name="line.296"></a>
-<span class="sourceLineNo">297</span>        @Override<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        public void load(ProcedureIterator procIter) throws IOException {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>          loader.load(procIter);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        }<a name="line.300"></a>
-<span class="sourceLineNo">301</span><a name="line.301"></a>
-<span class="sourceLineNo">302</span>        @Override<a name="line.302"></a>
-<span class="sourceLineNo">303</span>        public void handleCorrupted(ProcedureIterator procIter) throws IOException {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>          loader.handleCorrupted(procIter);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>        }<a name="line.305"></a>
-<span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>        @Override<a name="line.307"></a>
-<span class="sourceLineNo">308</span>        public void removeLog(ProcedureWALFile log) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>          toRemove.add(log);<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>        @Override<a name="line.312"></a>
-<span class="sourceLineNo">313</span>        public void markCorruptedWAL(ProcedureWALFile log, IOException e) {<a name="line.313"></a>
-<span class="sourceLineNo">314</span>          if (corruptedLogs == null) {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>            corruptedLogs = new HashSet&lt;ProcedureWALFile&gt;();<a name="line.315"></a>
-<span class="sourceLineNo">316</span>          }<a name="line.316"></a>
-<span class="sourceLineNo">317</span>          corruptedLogs.add(log);<a name="line.317"></a>
-<span class="sourceLineNo">318</span>          // TODO: sideline corrupted log<a name="line.318"></a>
-<span class="sourceLineNo">319</span>        }<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      });<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    } finally {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      if (!toRemove.isEmpty()) {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>        for (ProcedureWALFile log: toRemove) {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>          removeLogFile(log);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>        }<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      }<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      loading.set(false);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    }<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  }<a name="line.329"></a>
-<span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>  @Override<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  public void insert(final Procedure proc, final Procedure[] subprocs) {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    if (LOG.isTraceEnabled()) {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      LOG.trace("Insert " + proc + ", subproc=" + Arrays.toString(subprocs));<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    }<a name="line.335"></a>
-<span class="sourceLineNo">336</span><a name="line.336"></a>
-<span class="sourceLineNo">337</span>    ByteSlot slot = acquireSlot();<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    long logId = -1;<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    try {<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      // Serialize the insert<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      if (subprocs != null) {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>        ProcedureWALFormat.writeInsert(slot, proc, subprocs);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      } else {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>        assert !proc.hasParent();<a name="line.344"></a>
-<span class="sourceLineNo">345</span>        ProcedureWALFormat.writeInsert(slot, proc);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      }<a name="line.346"></a>
-<span class="sourceLineNo">347</span><a name="line.347"></a>
-<span class="sourceLineNo">348</span>      // Push the transaction data and wait until it is persisted<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      pushData(slot);<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    } catch (IOException e) {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      // We are not able to serialize the procedure.<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      // this is a code error, and we are not able to go on.<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      LOG.fatal("Unable to serialize one of the procedure: proc=" + proc +<a name="line.353"></a>
-<span class="sourceLineNo">354</span>                ", subprocs=" + Arrays.toString(subprocs), e);<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      throw new RuntimeException(e);<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    } finally {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      releaseSlot(slot);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    }<a name="line.358"></a>
-<span class="sourceLineNo">359</span><a name="line.359"></a>
-<span class="sourceLineNo">360</span>    // Update the store tracker<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    synchronized (storeTracker) {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      storeTracker.insert(proc, subprocs);<a name="line.362"></a>
-<span class="sourceLineNo">363</span>      if (logId == flushLogId) {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        checkAndTryRoll();<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      }<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    }<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  }<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>  @Override<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  public void update(final Procedure proc) {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    if (LOG.isTraceEnabled()) {<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      LOG.trace("Update " + proc);<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    }<a name="line.373"></a>
-<span class="sourceLineNo">374</span><a name="line.374"></a>
-<span class="sourceLineNo">375</span>    ByteSlot slot = acquireSlot();<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    long logId = -1;<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    try {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      // Serialize the update<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      ProcedureWALFormat.writeUpdate(slot, proc);<a name="line.379"></a>
-<span class="sourceLineNo">380</span><a name="line.380"></a>
-<span class="sourceLineNo">381</span>      // Push the transaction data and wait until it is persisted<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      logId = pushData(slot);<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    } catch (IOException e) {<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      // We are not able to serialize the procedure.<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      // this is a code error, and we are not able to go on.<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      LOG.fatal("Unable to serialize the procedure: " + proc, e);<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      throw new RuntimeException(e);<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    } finally {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      releaseSlot(slot);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    }<a name="line.390"></a>
-<span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span>    // Update the store tracker<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    boolean removeOldLogs = false;<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    synchronized (storeTracker) {<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      storeTracker.update(proc);<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      if (logId == flushLogId) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>        removeOldLogs = storeTracker.isUpdated();<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        checkAndTryRoll();<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><a name="line.401"></a>
-<span class="sourceLineNo">402</span>    if (removeOldLogs) {<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      setInactiveLogsMaxId(logId - 1);<a name="line.403"></a>
+<span class="sourceLineNo">103</span>  private final ReentrantLock lock = new ReentrantLock();<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  private final Condition waitCond = lock.newCondition();<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  private final Condition slotCond = lock.newCondition();<a name="line.105"></a>
+<span class="sourceLineNo">106</span>  private final Condition syncCond = lock.newCondition();<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>  private final LeaseRecovery leaseRecovery;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>  private final Configuration conf;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  private final FileSystem fs;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  private final Path logDir;<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>  private final AtomicReference&lt;Throwable&gt; syncException = new AtomicReference&lt;Throwable&gt;();<a name="line.113"></a>
+<span class="sourceLineNo">114</span>  private final AtomicBoolean loading = new AtomicBoolean(true);<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  private final AtomicBoolean inSync = new AtomicBoolean(false);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  private final AtomicLong totalSynced = new AtomicLong(0);<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  private final AtomicLong lastRollTs = new AtomicLong(0);<a name="line.117"></a>
+<span class="sourceLineNo">118</span><a name="line.118"></a>
+<span class="sourceLineNo">119</span>  private LinkedTransferQueue&lt;ByteSlot&gt; slotsCache = null;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  private Set&lt;ProcedureWALFile&gt; corruptedLogs = null;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>  private FSDataOutputStream stream = null;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>  private long flushLogId = 0;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  private int slotIndex = 0;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  private Thread syncThread;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  private ByteSlot[] slots;<a name="line.125"></a>
+<span class="sourceLineNo">126</span><a name="line.126"></a>
+<span class="sourceLineNo">127</span>  private int maxRetriesBeforeRoll;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  private int maxSyncFailureRoll;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  private int waitBeforeRoll;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  private int rollRetries;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>  private int periodicRollMsec;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  private long rollThreshold;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  private boolean useHsync;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  private int syncWaitMsec;<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>  public WALProcedureStore(final Configuration conf, final FileSystem fs, final Path logDir,<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      final LeaseRecovery leaseRecovery) {<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    this.fs = fs;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    this.conf = conf;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    this.logDir = logDir;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    this.leaseRecovery = leaseRecovery;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  }<a name="line.142"></a>
+<span class="sourceLineNo">143</span><a name="line.143"></a>
+<span class="sourceLineNo">144</span>  @Override<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  public void start(int numSlots) throws IOException {<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    if (!setRunning(true)) {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      return;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    }<a name="line.148"></a>
+<span class="sourceLineNo">149</span><a name="line.149"></a>
+<span class="sourceLineNo">150</span>    // Init buffer slots<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    loading.set(true);<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    slots = new ByteSlot[numSlots];<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    slotsCache = new LinkedTransferQueue();<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    while (slotsCache.size() &lt; numSlots) {<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      slotsCache.offer(new ByteSlot());<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>    // Tunings<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    maxRetriesBeforeRoll =<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      conf.getInt(MAX_RETRIES_BEFORE_ROLL_CONF_KEY, DEFAULT_MAX_RETRIES_BEFORE_ROLL);<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    maxSyncFailureRoll = conf.getInt(MAX_SYNC_FAILURE_ROLL_CONF_KEY, DEFAULT_MAX_SYNC_FAILURE_ROLL);<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    waitBeforeRoll = conf.getInt(WAIT_BEFORE_ROLL_CONF_KEY, DEFAULT_WAIT_BEFORE_ROLL);<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    rollRetries = conf.getInt(ROLL_RETRIES_CONF_KEY, DEFAULT_ROLL_RETRIES);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    rollThreshold = conf.getLong(ROLL_THRESHOLD_CONF_KEY, DEFAULT_ROLL_THRESHOLD);<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    periodicRollMsec = conf.getInt(PERIODIC_ROLL_CONF_KEY, DEFAULT_PERIODIC_ROLL);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    syncWaitMsec = conf.getInt(SYNC_WAIT_MSEC_CONF_KEY, DEFAULT_SYNC_WAIT_MSEC);<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    useHsync = conf.getBoolean(USE_HSYNC_CONF_KEY, DEFAULT_USE_HSYNC);<a name="line.167"></a>
+<span class="sourceLineNo">168</span><a name="line.168"></a>
+<span class="sourceLineNo">169</span>    // Init sync thread<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    syncThread = new Thread("WALProcedureStoreSyncThread") {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      @Override<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      public void run() {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        try {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>          syncLoop();<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        } catch (Throwable e) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>          LOG.error("Got an exception from the sync-loop", e);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>          if (!isSyncAborted()) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>            sendAbortProcessSignal();<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>    };<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    syncThread.start();<a name="line.183"></a>
+<span class="sourceLineNo">184</span>  }<a name="line.184"></a>
+<span class="sourceLineNo">185</span><a name="line.185"></a>
+<span class="sourceLineNo">186</span>  @Override<a name="line.186"></a>
+<span class="sourceLineNo">187</span>  public void stop(boolean abort) {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    if (!setRunning(false)) {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      return;<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>    LOG.info("Stopping the WAL Procedure Store");<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    sendStopSignal();<a name="line.193"></a>
+<span class="sourceLineNo">194</span><a name="line.194"></a>
+<span class="sourceLineNo">195</span>    if (!abort) {<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      try {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>        while (syncThread.isAlive()) {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>          sendStopSignal();<a name="line.198"></a>
+<span class="sourceLineNo">199</span>          syncThread.join(250);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>        }<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      } catch (InterruptedException e) {<a name="line.201"></a>
+<span class="sourceLineNo">202</span>        LOG.warn("join interrupted", e);<a name="line.202"></a>
+<span class="sourceLineNo">203</span>        Thread.currentThread().interrupt();<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      }<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    }<a name="line.205"></a>
+<span class="sourceLineNo">206</span><a name="line.206"></a>
+<span class="sourceLineNo">207</span>    // Close the writer<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    closeStream();<a name="line.208"></a>
+<span class="sourceLineNo">209</span><a name="line.209"></a>
+<span class="sourceLineNo">210</span>    // Close the old logs<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    // they should be already closed, this is just in case the load fails<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    // and we call start() and then stop()<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    for (ProcedureWALFile log: logs) {<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      log.close();<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    }<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    logs.clear();<a name="line.216"></a>
+<span class="sourceLineNo">217</span>  }<a name="line.217"></a>
+<span class="sourceLineNo">218</span><a name="line.218"></a>
+<span class="sourceLineNo">219</span>  private void sendStopSignal() {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    if (lock.tryLock()) {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      try {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>        waitCond.signalAll();<a name="line.222"></a>
+<span class="sourceLineNo">223</span>        syncCond.signalAll();<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      } finally {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>        lock.unlock();<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      }<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    }<a name="line.227"></a>
+<span class="sourceLineNo">228</span>  }<a name="line.228"></a>
+<span class="sourceLineNo">229</span><a name="line.229"></a>
+<span class="sourceLineNo">230</span>  @Override<a name="line.230"></a>
+<span class="sourceLineNo">231</span>  public int getNumThreads() {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    return slots == null ? 0 : slots.length;<a name="line.232"></a>
+<span class="sourceLineNo">233</span>  }<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span>  public ProcedureStoreTracker getStoreTracker() {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    return storeTracker;<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  }<a name="line.237"></a>
+<span class="sourceLineNo">238</span><a name="line.238"></a>
+<span class="sourceLineNo">239</span>  public LinkedList&lt;ProcedureWALFile&gt; getActiveLogs() {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    return logs;<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>  public Set&lt;ProcedureWALFile&gt; getCorruptedLogs() {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    return corruptedLogs;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>  }<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>  @Override<a name="line.247"></a>
+<span class="sourceLineNo">248</span>  public void recoverLease() throws IOException {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    lock.lock();<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    try {<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      LOG.info("Starting WAL Procedure Store lease recovery");<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      FileStatus[] oldLogs = getLogFiles();<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      while (isRunning()) {<a name="line.253"></a>
+<span class="sourceLineNo">254</span>        // Get Log-MaxID and recover lease on old logs<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        flushLogId = initOldLogs(oldLogs);<a name="line.255"></a>
+<span class="sourceLineNo">256</span><a name="line.256"></a>
+<span class="sourceLineNo">257</span>        // Create new state-log<a name="line.257"></a>
+<span class="sourceLineNo">258</span>        if (!rollWriter(flushLogId + 1)) {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          // someone else has already created this log<a name="line.259"></a>
+<span class="sourceLineNo">260</span>          LOG.debug("someone else has already created log " + flushLogId);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>          continue;<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        }<a name="line.262"></a>
+<span class="sourceLineNo">263</span><a name="line.263"></a>
+<span class="sourceLineNo">264</span>        // We have the lease on the log<a name="line.264"></a>
+<span class="sourceLineNo">265</span>        oldLogs = getLogFiles();<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        if (getMaxLogId(oldLogs) &gt; flushLogId) {<a name="line.266"></a>
+<span class="sourceLineNo">267</span>          if (LOG.isDebugEnabled()) {<a name="line.267"></a>
+<span class="sourceLineNo">268</span>            LOG.debug("Someone else created new logs. Expected maxLogId &lt; " + flushLogId);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>          }<a name="line.269"></a>
+<span class="sourceLineNo">270</span>          logs.getLast().removeFile();<a name="line.270"></a>
+<span class="sourceLineNo">271</span>          continue;<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        }<a name="line.272"></a>
+<span class="sourceLineNo">273</span><a name="line.273"></a>
+<span class="sourceLineNo">274</span>        LOG.info("Lease acquired for flushLogId: " + flushLogId);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>        break;<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      }<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    } finally {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      lock.unlock();<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    }<a name="line.279"></a>
+<span class="sourceLineNo">280</span>  }<a name="line.280"></a>
+<span class="sourceLineNo">281</span><a name="line.281"></a>
+<span class="sourceLineNo">282</span>  @Override<a name="line.282"></a>
+<span class="sourceLineNo">283</span>  public void load(final ProcedureLoader loader) throws IOException {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    if (logs.isEmpty()) {<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      throw new RuntimeException("recoverLease() must be called before loading data");<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    }<a name="line.286"></a>
+<span class="sourceLineNo">287</span><a name="line.287"></a>
+<span class="sourceLineNo">288</span>    // Nothing to do, If we have only the current log.<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    if (logs.size() == 1) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      if (LOG.isDebugEnabled()) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        LOG.debug("No state logs to replay.");<a name="line.291"></a>
+<span class="sourceLineNo">292</span>      }<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      loader.setMaxProcId(0);<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      loading.set(false);<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      return;<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    }<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>    // Load the old logs<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    final ArrayList&lt;ProcedureWALFile&gt; toRemove = new ArrayList&lt;ProcedureWALFile&gt;();<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    Iterator&lt;ProcedureWALFile&gt; it = logs.descendingIterator();<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    it.next(); // Skip the current log<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    try {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      ProcedureWALFormat.load(it, storeTracker, new ProcedureWALFormat.Loader() {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>        @Override<a name="line.304"></a>
+<span class="sourceLineNo">305</span>        public void setMaxProcId(long maxProcId) {<a name="line.305"></a>
+<span class="sourceLineNo">306</span>          loader.setMaxProcId(maxProcId);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>        }<a name="line.307"></a>
+<span class="sourceLineNo">308</span><a name="line.308"></a>
+<span class="sourceLineNo">309</span>        @Override<a name="line.309"></a>
+<span class="sourceLineNo">310</span>        public void load(ProcedureIterator procIter) throws IOException {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>          loader.load(procIter);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>        }<a name="line.312"></a>
+<span class="sourceLineNo">313</span><a name="line.313"></a>
+<span class="sourceLineNo">314</span>        @Override<a name="line.314"></a>
+<span class="sourceLineNo">315</span>        public void handleCorrupted(ProcedureIterator procIter) throws IOException {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>          loader.handleCorrupted(procIter);<a name="line.316"></a>
+<span class="sourceLineNo">317</span>        }<a name="line.317"></a>
+<span class="sourceLineNo">318</span><a name="line.318"></a>
+<span class="sourceLineNo">319</span>        @Override<a name="line.319"></a>
+<span class="sourceLineNo">320</span>        public void removeLog(ProcedureWALFile log) {<a name="line.320"></a>
+<span class="sourceLineNo">321</span>          toRemove.add(log);<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>        @Override<a name="line.324"></a>
+<span class="sourceLineNo">325</span>        public void markCorruptedWAL(ProcedureWALFile log, IOException e) {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>          if (corruptedLogs == null) {<a name="line.326"></a>
+<span class="sourceLineNo">327</span>            corruptedLogs = new HashSet&lt;ProcedureWALFile&gt;();<a name="line.327"></a>
+<span class="sourceLineNo">328</span>          }<a name="line.328"></a>
+<span class="sourceLineNo">329</span>          corruptedLogs.add(log);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>          // TODO: sideline corrupted log<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        }<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      });<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    } finally {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      if (!toRemove.isEmpty()) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>        for (ProcedureWALFile log: toRemove) {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>          removeLogFile(log);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>        }<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      }<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      loading.set(false);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    }<a name="line.340"></a>
+<span class="sourceLineNo">341</span>  }<a name="line.341"></a>
+<span class="sourceLineNo">342</span><a name="line.342"></a>
+<span class="sourceLineNo">343</span>  @Override<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  public void insert(final Procedure proc, final Procedure[] subprocs) {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    if (LOG.isTraceEnabled()) {<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      LOG.trace("Insert " + proc + ", subproc=" + Arrays.toString(subprocs));<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    }<a name="line.347"></a>
+<span class="sourceLineNo">348</span><a name="line.348"></a>
+<span class="sourceLineNo">349</span>    ByteSlot slot = acquireSlot();<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    try {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      // Serialize the insert<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      long[] subProcIds = null;<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      if (subprocs != null) {<a name="line.353"></a>
+<span class="sourceLineNo">354</span>        ProcedureWALFormat.writeInsert(slot, proc, subprocs);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>        subProcIds = new long[subprocs.length];<a name="line.355"></a>
+<span class="sourceLineNo">356</span>        for (int i = 0; i &lt; subprocs.length; ++i) {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>          subProcIds[i] = subprocs[i].getProcId();<a name="line.357"></a>
+<span class="sourceLineNo">358</span>        }<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      } else {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>        assert !proc.hasParent();<a name="line.360"></a>
+<span class="sourceLineNo">361</span>        ProcedureWALFormat.writeInsert(slot, proc);<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      }<a name="line.362"></a>
+<span class="sourceLineNo">363</span><a name="line.363"></a>
+<span class="sourceLineNo">364</span>      // Push the transaction data and wait until it is persisted<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      pushData(PushType.INSERT, slot, proc.getProcId(), subProcIds);<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    } catch (IOException e) {<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      // We are not able to serialize the procedure.<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      // this is a code error, and we are not able to go on.<a name="line.368"></a>
+<span class="sourceLineNo">369</span>      LOG.fatal("Unable to serialize one of the procedure: proc=" + proc +<a name="line.369"></a>
+<span class="sourceLineNo">370</span>                ", subprocs=" + Arrays.toString(subprocs), e);<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      throw new RuntimeException(e);<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    } finally {<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      releaseSlot(slot);<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    }<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  }<a name="line.375"></a>
+<span class="sourceLineNo">376</span><a name="line.376"></a>
+<span class="sourceLineNo">377</span>  @Override<a name="line.377"></a>
+<span class="sourceLineNo">378</span>  public void update(final Procedure proc) {<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    if (LOG.isTraceEnabled()) {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>      LOG.trace("Update " + proc);<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    }<a name="line.381"></a>
+<span class="sourceLineNo">382</span><a name="line.382"></a>
+<span class="sourceLineNo">383</span>    ByteSlot slot = acquireSlot();<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    try {<a name="line.384"></a>
+<span class="sourceLineNo">385</span>      // Serialize the update<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      ProcedureWALFormat.writeUpdate(slot, proc);<a name="line.386"></a>
+<span class="sourceLineNo">387</span><a name="line.387"></a>
+<span class="sourceLineNo">388</span>      // Push the transaction data and wait until it is persisted<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      pushData(PushType.UPDATE, slot, proc.getProcId(), null);<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    } catch (IOException e) {<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      // We are not able to serialize the procedure.<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      // this is a code error, and we are not able to go on.<a name="line.392"></a>
+<span class="sourceLineNo">393</span>      LOG.fatal("Unable to serialize the procedure: " + proc, e);<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      throw new RuntimeException(e);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    } finally {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      releaseSlot(slot);<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    }<a name="line.397"></a>
+<span class="sourceLineNo">398</span>  }<a name="line.398"></a>
+<span class="sourceLineNo">399</span><a name="line.399"></a>
+<span class="sourceLineNo">400</span>  @Override<a name="line.400"></a>
+<span class="sourceLineNo">401</span>  public void delete(final long procId) {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    if (LOG.isTraceEnabled()) {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      LOG.trace("Delete " + procId);<a name="line.403"></a>
 <span class="sourceLineNo">404</span>    }<a name="line.404"></a>
-<span class="sourceLineNo">405</span>  }<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>  @Override<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  public void delete(final long procId) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    if (LOG.isTraceEnabled()) {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      LOG.trace("Delete " + procId);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    }<a name="line.411"></a>
-<span class="sourceLineNo">412</span><a name="line.412"></a>
-<span class="sourceLineNo">413</span>    ByteSlot slot = acquireSlot();<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    long logId = -1;<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    try {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>      // Serialize the delete<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      ProcedureWALFormat.writeDelete(slot, procId);<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>      // Push the transaction data and wait until it is persisted<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      logId = pushData(slot);<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    } catch (IOException e) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      // We are not able to serialize the procedure.<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      // this is a code error, and we are not able to go on.<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      LOG.fatal("Unable to serialize the procedure: " + procId, e);<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      throw new RuntimeException(e);<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    } finally {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      releaseSlot(slot);<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
-<span class="sourceLineNo">429</span><a name="line.429"></a>
-<span class="sourceLineNo">430</span>    boolean removeOldLogs = false;<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    synchronized (storeTracker) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      storeTracker.delete(procId);<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      if (logId == flushLogId) {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>        if (storeTracker.isEmpty() || storeTracker.isUpdated()) {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>          removeOldLogs = checkAndTryRoll();<a name="line.435"></a>
-<span class="sourceLineNo">436</span>        } else {<a name="line.436"></a>
-<span class="sourceLineNo">437</span>          checkAndTryRoll();<a name="line.437"></a>
-<span class="sourceLineNo">438</span>        }<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      }<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>    if (removeOldLogs) {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      setInactiveLogsMaxId(logId);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    }<a name="line.444"></a>
-<span class="sourceLineNo">445</span>  }<a name="line.445"></a>
-<span class="sourceLineNo">446</span><a name="line.446"></a>
-<span class="sourceLineNo">447</span>  private ByteSlot acquireSlot() {<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    ByteSlot slot = slotsCache.poll();<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    return slot != null ? slot : new ByteSlot();<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 void releaseSlot(final ByteSlot slot) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    slot.reset();<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    slotsCache.offer(slot);<a name="line.454"></a>
-<span class="sourceLineNo">455</span>  }<a name="line.455"></a>
-<span class="sourceLineNo">456</span><a name="line.456"></a>
-<span class="sourceLineNo">457</span>  private long pushData(final ByteSlot slot) {<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    if (!isRunning()) {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      throw new RuntimeException("the store must be running before inserting data");<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    }<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    if (logs.isEmpty()) {<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      throw new RuntimeException("recoverLease() must be called before inserting data");<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    }<a name="line.463"></a>
-<span class="sourceLineNo">464</span><a name="line.464"></a>
-<span class="sourceLineNo">465</span>    long logId = -1;<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    lock.lock();<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    try {<a name="line.467"></a>
-<span class="sourceLineNo">468</span>      // Wait for the sync to be completed<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      while (true) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>        if (!isRunning()) {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>          throw new RuntimeException("store no longer running");<a name="line.471"></a>
-<span class="sourceLineNo">472</span>        } else if (isSyncAborted()) {<a name="line.472"></a>
-<span class="sourceLineNo">473</span>          throw new RuntimeException("sync aborted", syncException.get());<a name="line.473"></a>
-<span class="sourceLineNo">474</span>        } else if (inSync.get()) {<a name="line.474"></a>
-<span class="sourceLineNo">475</span>          syncCond.await();<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        } else if (slotIndex == slots.length) {<a name="line.476"></a>
-<span class="sourceLineNo">477</span>          slotCond.signal();<a name="line.477"></a>
-<span class="sourceLineNo">478</span>          syncCond.await();<a name="line.478"></a>
-<span class="sourceLineNo">479</span>        } else {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>          break;<a name="line.480"></a>
-<span class="sourceLineNo">481</span>        }<a name="line.481"></a>
-<span class="sourceLineNo">482</span>      }<a name="line.482"></a>
-<span class="sourceLineNo">483</span><a name="line.483"></a>
-<span class="sourceLineNo">484</span>      slots[slotIndex++] = slot;<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      logId = flushLogId;<a name="line.485"></a>
-<span class="sourceLineNo">486</span><a name="line.486"></a>
-<span class="sourceLineNo">487</span>      // Notify that there is new data<a name="line.487"></a>
-<span class="sourceLineNo">488</span>      if (slotIndex == 1) {<a name="line.488"></a>
-<span class="sourceLineNo">489</span>        waitCond.signal();<a name="line.489"></a>
-<span class="sourceLineNo">490</span>      }<a name="line.490"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>    ByteSlot slot = acquireSlot();<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    try {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      // Serialize the delete<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      ProcedureWALFormat.writeDelete(slot, procId);<a name="line.409"></a>
+<span class="sourceLineNo">410</span><a name="line.410"></a>
+<span class="sourceLineNo">411</span>      // Push the transaction data and wait until it is persisted<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      pushData(PushType.DELETE, slot, procId, null);<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    } catch (IOException e) {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      // We are not able to serialize the procedure.<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      // this is a code error, and we are not able to go on.<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      LOG.fatal("Unable to serialize the procedure: " + procId, e);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>      throw new RuntimeException(e);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    } finally {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      releaseSlot(slot);<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
+<span class="sourceLineNo">421</span>  }<a name="line.421"></a>
+<span class="sourceLineNo">422</span><a name="line.422"></a>
+<span class="sourceLineNo">423</span>  private ByteSlot acquireSlot() {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    ByteSlot slot = slotsCache.poll();<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    return slot != null ? slot : new ByteSlot();<a name="line.425"></a>
+<span class="sourceLineNo">426</span>  }<a name="line.426"></a>
+<span class="sourceLineNo">427</span><a name="line.427"></a>
+<span class="sourceLineNo">428</span>  private void releaseSlot(final ByteSlot slot) {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    slot.reset();<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    slotsCache.offer(slot);<a name="line.430"></a>
+<span class="sourceLineNo">431</span>  }<a name="line.431"></a>
+<span class="sourceLineNo">432</span><a name="line.432"></a>
+<span class="sourceLineNo">433</span>  private enum PushType { INSERT, UPDATE, DELETE };<a name="line.433"></a>
+<span class="sourceLineNo">434</span><a name="line.434"></a>
+<span class="sourceLineNo">435</span>  private long pushData(final PushType type, final ByteSlot slot,<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      final long procId, final long[] subProcIds) {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    if (!isRunning()) {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      throw new RuntimeException("the store must be running before inserting data");<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    }<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    if (logs.isEmpty()) {<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      throw new RuntimeException("recoverLease() must be called before inserting data");<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    }<a name="line.442"></a>
+<span class="sourceLineNo">443</span><a name="line.443"></a>
+<span class="sourceLineNo">444</span>    long logId = -1;<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    lock.lock();<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    try {<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      // Wait for the sync to be completed<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      while (true) {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>        if (!isRunning()) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>          throw new RuntimeException("store no longer running");<a name="line.450"></a>
+<span class="sourceLineNo">451</span>        } else if (isSyncAborted()) {<a name="line.451"></a>
+<span class="sourceLineNo">452</span>          throw new RuntimeException("sync aborted", syncException.get());<a name="line.452"></a>
+<span class="sourceLineNo">453</span>        } else if (inSync.get()) {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>          syncCond.await();<a name="line.454"></a>
+<span class="sourceLineNo">455</span>        } else if (slotIndex == slots.length) {<a name="line.455"></a>
+<span class="sourceLineNo">456</span>          slotCond.signal();<a name="line.456"></a>
+<span class="sourceLineNo">457</span>          syncCond.await();<a name="line.457"></a>
+<span class="sourceLineNo">458</span>        } else {<a name="line.458"></a>
+<span class="sourceLineNo">459</span>          break;<a name="line.459"></a>
+<span class="sourceLineNo">460</span>        }<a name="line.460"></a>
+<span class="sourceLineNo">461</span>      }<a name="line.461"></a>
+<span class="sourceLineNo">462</span><a name="line.462"></a>
+<span class="sourceLineNo">463</span>      updateStoreTracker(type, procId, subProcIds);<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      slots[slotIndex++] = slot;<a name="line.464"></a>
+<span class="sourceLineNo">465</span>      logId = flushLogId;<a name="line.465"></a>
+<span class="sourceLineNo">466</span><a name="line.466"></a>
+<span class="sourceLineNo">467</span>      // Notify that there is new data<a name="line.467"></a>
+<span class="sourceLineNo">468</span>      if (slotIndex == 1) {<a name="line.468"></a>
+<span class="sourceLineNo">469</span>        waitCond.signal();<a name="line.469"></a>
+<span class="sourceLineNo">470</span>      }<a name="line.470"></a>
+<span class="sourceLineNo">471</span><a name="line.471"></a>
+<span class="sourceLineNo">472</span>      // Notify that the slots are full<a name="line.472"></a>
+<span class="sourceLineNo">473</span>      if (slotIndex == slots.length) {<a name="line.473"></a>
+<span class="sourceLineNo">474</span>        waitCond.signal();<a name="line.474"></a>
+<span class="sourceLineNo">475</span>        slotCond.signal();<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>      syncCond.await();<a name="line.478"></a>
+<span class="sourceLineNo">479</span>    } catch (InterruptedException e) {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>      Thread.currentThread().interrupt();<a name="line.480"></a>
+<span class="sourceLineNo">481</span>      sendAbortProcessSignal();<a name="line.481"></a>
+<span class="sourceLineNo">482</span>      throw new RuntimeException(e);<a name="line.482"></a>
+<span class="sourceLineNo">483</span>    } finally {<a name="line.483"></a>
+<span class="sourceLineNo">484</span>      lock.unlock();<a name="line.484"></a>
+<span class="sourceLineNo">485</span>      if (isSyncAborted()) {<a name="line.485"></a>
+<span class="sourceLineNo">486</span>        throw new RuntimeException("sync aborted", syncException.get());<a name="line.486"></a>
+<span class="sourceLineNo">487</span>      }<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    }<a name="line.488"></a>
+<span class="sourceLineNo">489</span>    return logId;<a name="line.489"></a>
+<span class="sourceLineNo">490</span>  }<a name="line.490"></a>
 <span class="sourceLineNo">491</span><a name="line.491"></a>
-<span class="sourceLineNo">492</span>      // Notify that the slots are full<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      if (slotIndex == slots.length) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>        waitCond.signal();<a name="line.494"></a>
-<span class="sourceLineNo">495</span>        slotCond.signal();<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>      syncCond.await();<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    } catch (InterruptedException e) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      Thread.currentThread().interrupt();<a name="line.500"></a>
-<span class="sourceLineNo">501</span>      sendAbortProcessSignal();<a name="line.501"></a>
-<span class="sourceLineNo">502</span>      throw new RuntimeException(e);<a name="line.502"></a>
-<span class="sourceLineNo">503</span>    } finally {<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      lock.unlock();<a name="line.504"></a>
-<span class="sourceLineNo">505</span>      if (isSyncAborted()) {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>        throw new RuntimeException("sync aborted", syncException.get());<a name="line.506"></a>
-<span class="sourceLineNo">507</span>      }<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    }<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    return logId;<a name="line.509"></a>
-<span class="sourceLineNo">510</span>  }<a name="line.510"></a>
-<span class="sourceLineNo">511</span><a name="line.511"></a>
-<span class="sourceLineNo">512</span>  private boolean isSyncAborted() {<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    return syncException.get() != null;<a name="line.513"></a>
-<span class="sourceLineNo">514</span>  }<a name="line.514"></a>
-<span class="sourceLineNo">515</span><a name="line.515"></a>
-<span class="sourceLineNo">516</span>  protected void periodicRoll() throws IOException {<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    long logId;<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    boolean removeOldLogs;<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    synchronized (storeTracker) {<a name="line.519"></a>
-<span class="sourceLineNo">520</span>      logId = flushLogId;<a name="line.520"></a>
-<span class="sourceLineNo">521</span>      removeOldLogs = storeTracker.isEmpty();<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    }<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    if (checkAndTryRoll() &amp;&amp; removeOldLogs) {<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      setInactiveLogsMaxId(logId);<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    }<a name="line.525"></a>
-<span class="sourceLineNo">526</span>  }<a name="line.526"></a>
-<span class="sourceLineNo">527</span><a name="line.527"></a>
-<span class="sourceLineNo">528</span>  private void syncLoop() throws Throwable {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>    inSync.set(false);<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    lock.lock();<a name="line.530"></a>
-<span class="sourceLineNo">531</span>    try {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>      while (isRunning()) {<a name="line.532"></a>
-<span class="sourceLineNo">533</span>        try {<a name="line.533"></a>
-<span class="sourceLineNo">534</span>          // Wait until new data is available<a name="line.534"></a>
-<span class="sourceLineNo">535</span>          if (slotIndex == 0) {<a name="line.535"></a>
-<span class="sourceLineNo">536</span>            if (!loading.get()) {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>              removeInactiveLogs();<a name="line.537"></a>
-<span class="sourceLineNo">538</span>            }<a name="line.538"></a>
-<span class="sourceLineNo">539</span><a name="line.539"></a>
-<span class="sourceLineNo">540</span>            if (LOG.isTraceEnabled()) {<a name="line.540"></a>
-<span class="sourceLineNo">541</span>              float rollTsSec = getMillisFromLastRoll() / 1000.0f;<a name="line.541"></a>
-<span class="sourceLineNo">542</span>              LOG.trace(String.format("Waiting for data. flushed=%s (%s/sec)",<a name="line.542"></a>
-<span class="sourceLineNo">543</span>                        StringUtils.humanSize(totalSynced.get()),<a name="line.543"></a>
-<span class="sourceLineNo">544</span>                        StringUtils.humanSize(totalSynced.get() / rollTsSec)));<a name="line.544"></a>
-<span class="sourceLineNo">545</span>            }<a name="line.545"></a>
-<span class="sourceLineNo">546</span><a name="line.546"></a>
-<span class="sourceLineNo">547</span>            waitCond.await(getMillisToNextPeriodicRoll(), TimeUnit.MILLISECONDS);<a name="line.547"></a>
-<span class="sourceLineNo">548</span>            if (slotIndex == 0) {<a name="line.548"></a>
-<span class="sourceLineNo">549</span>              // no data.. probably a stop() or a periodic roll<a name="line.549"></a>
-<span class="sourceLineNo">550</span>              periodicRoll();<a name="line.550"></a>
-<span class="sourceLineNo">551</span>              continue;<a name="line.551"></a>
-<span class="sourceLineNo">552</span>            }<a name="line.552"></a>
-<span class="sourceLineNo">553</span>          }<a name="line.553"></a>
-<span class="sourceLineNo">554</span><a name="line.554"></a>
-<span class="sourceLineNo">555</span>          // Wait SYNC_WAIT_MSEC or the signal of "slots full" before flushing<a name="line.555"></a>
-<span class="sourceLineNo">556</span>          long syncWaitSt = System.currentTimeMillis();<a name="line.556"></a>
-<span class="sourceLineNo">557</span>          if (slotIndex != slots.length) {<a name="line.557"></a>
-<span class="sourceLineNo">558</span>            slotCond.await(syncWaitMsec, TimeUnit.MILLISECONDS);<a name="line.558"></a>
-<span class="sourceLineNo">559</span>          }<a name="line.559"></a>
-<span class="sourceLineNo">560</span>          long syncWaitMs = System.currentTimeMillis() - syncWaitSt;<a name="line.560"></a>
-<span class="sourceLineNo">561</span>          if (LOG.isTraceEnabled() &amp;&amp; (syncWaitMs &gt; 10 || slotIndex &lt; slots.length)) {<a name="line.561"></a>
-<span class="sourceLineNo">562</span>            float rollSec = getMillisFromLastRoll() / 1000.0f;<a name="line.562"></a>
-<span class="sourceLineNo">563</span>            LOG.trace(String.format("Sync wait %s, slotIndex=%s , totalSynced=%s/sec",<a name="line.563"></a>
-<span class="sourceLineNo">564</span>                      StringUtils.humanTimeDiff(syncWaitMs), slotIndex,<a name="line.564"></a>
-<span class="sourceLineNo">565</span>                      StringUtils.humanSize(totalSynced.get()),<a name="line.565"></a>
-<span class="sourceLineNo">566</span>                      StringUtils.humanSize(totalSynced.get() / rollSec)));<a name="line.566"></a>
-<span class="sourceLineNo">567</span>          }<a name="line.567"></a>
-<span class="sourceLineNo">568</span><a name="line.568"></a>
-<span class="sourceLineNo">569</span><a name="line.569"></a>
-<span class="sourceLineNo">570</span>          inSync.set(true);<a name="line.570"></a>
-<span class="sourceLineNo">571</span>          totalSynced.addAndGet(syncSlots());<a name="line.571"></a>
-<span class="sourceLineNo">572</span>          slotIndex = 0;<a name="line.572"></a>
-<span class="sourceLineNo">573</span>          inSync.set(false);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>        } catch (InterruptedException e) {<a name="line.574"></a>
-<span class="sourceLineNo">575</span>          Thread.currentThread().interrupt();<a name="line.575"></a>
-<span class="sourceLineNo">576</span>          sendAbortProcessSignal();<a name="line.576"></a>
-<span class="sourceLineNo">577</span>          syncException.compareAndSet(null, e);<a name="line.577"></a>
-<span class="sourceLineNo">578</span>          throw e;<a name="line.578"></a>
-<span class="sourceLineNo">579</span>        } catch (Throwable t) {<a name="line.579"></a>
-<span class="sourceLineNo">580</span>          syncException.compareAndSet(null, t);<a name="line.580"></a>
-<span class="sourceLineNo">581</span>          throw t;<a name="line.581"></a>
-<span class="sourceLineNo">582</span>        } finally {<a name="line.582"></a>
-<span class="sourceLineNo">583</span>          syncCond.signalAll();<a name="line.583"></a>
-<span class="sourceLineNo">584</span>        }<a name="line.584"></a>
-<span class="sourceLineNo">585</span>      }<a name="line.585"></a>
-<span class="sourceLineNo">586</span>    } finally {<a name="line.586"></a>
-<span class="sourceLineNo">587</span>      lock.unlock();<a name="line.587"></a>
-<span class="sourceLineNo">588</span>    }<a name="line.588"></a>
-<span class="sourceLineNo">589</span>  }<a name="line.589"></a>
-<span class="sourceLineNo">590</span><a name="line.590"></a>
-<span class="sourceLineNo">591</span>  private long syncSlots() throws Throwable {<a name="line.591"></a>
-<span class="sourceLineNo">592</span>    int retry = 0;<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    int logRolled = 0;<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    long totalSynced = 0;<a name="line.594"></a>
-<span class="sourceLineNo">595</span>    do {<a name="line.595"></a>
-<span class="sourceLineNo">596</span>      try {<a name="line.596"></a>
-<span class="sourceLineNo">597</span>        totalSynced = syncSlots(stream, slots, 0, slotIndex);<a name="line.597"></a>
-<span class="sourceLineNo">598</span>        break;<a name="line.598"></a>
-<span class="sourceLineNo">599</span>      } catch (Throwable e) {<a name="line.599"></a>
-<span class="sourceLineNo">600</span>        if (++retry &gt;= maxRetriesBeforeRoll) {<a name="line.600"></a>
-<span class="sourceLineNo">601</span>          if (logRolled &gt;= maxSyncFailureRoll) {<a name="line.601"></a>
-<span class="sourceLineNo">602</span>            LOG.error("Sync slots after log roll failed, abort.", e);<a name="line.602"></a>
-<span class="sourceLineNo">603</span>            sendAbortProcessSignal();<a name="line.603"></a>
-<span class="sourceLineNo">604</span>            throw e;<a name="line.604"></a>
-<span class="sourceLineNo">605</span>          }<a name="line.605"></a>
-<span class="sourceLineNo">606</span><a name="line.606"></a>
-<span class="sourceLineNo">607</span>          if (!rollWriterOrDie()) {<a name="line.607"></a>
-<span class="sourceLineNo">608</span>            throw e;<a name="line.608"></a>
-<span class="sourceLineNo">609</span>          }<a name="line.609"></a>
-<span class="sourceLineNo">610</span><a name="line.610"></a>
-<span class="sourceLineNo">611</span>          logRolled++;<a name="line.611"></a>
-<span class="sourceLineNo">612</span>          retry = 0;<a name="line.612"></a>
-<span class="sourceLineNo">613</span>        }<a name="line.613"></a>
-<span class="sourceLineNo">614</span>      }<a name="line.614"></a>
-<span class="sourceLineNo">615</span>    } while (isRunning());<a name="line.615"></a>
-<span class="sourceLineNo">616</span>    return totalSynced;<a name="line.616"></a>
-<span class="sourceLineNo">617</span>  }<a name="line.617"></a>
-<span class="sourceLineNo">618</span><a name="line.618"></a>
-<span class="sourceLineNo">619</span>  protected long syncSlots(FSDataOutputStream stream, ByteSlot[] slots, int offset, int count)<a name="line.619"></a>
-<span class="sourceLineNo">620</span>      throws IOException {<a name="line.620"></a>
-<span class="sourceLineNo">621</span>    long totalSynced = 0;<a name="line.621"></a>
-<span class="sourceLineNo">622</span>    for (int i = 0; i &lt; count; ++i) {<a name="line.622"></a>
-<span class="sourceLineNo">623</span>      ByteSlot data = slots[offset + i];<a name="line.623"></a>
-<span class="sourceLineNo">624</span>      data.writeTo(stream);<a name="line.624"></a>
-<span class="sourceLineNo">625</span>      totalSynced += data.size();<a name="line.625"></a>
-<span class="sourceLineNo">626</span>    }<a name="line.626"></a>
-<span class="sourceLineNo">627</span><a name="line.627"></a>
-<span class="sourceLineNo">628</span>    if (useHsync) {<a name="line.628"></a>
-<span class="sourceLineNo">629</span>      stream.hsync();<a name="line.629"></a>
-<span class="sourceLineNo">630</span>    } else {<a name="line.630"></a>
-<span class="sourceLineNo">631</span>      stream.hflush();<a name="line.631"></a>
-<span class="sourceLineNo">632</span>    }<a name="line.632"></a>
-<span class="sourceLineNo">633</span>    sendPostSyncSignal();<a name="line.633"></a>
-<span class="sourceLineNo">634</span><a name="line.634"></a>
-<span class="sourceLineNo">635</span>    if (LOG.isTraceEnabled()) {<a name="line.635"></a>
-<span class="sourceLineNo">636</span>      LOG.trace("Sync slots=" + count + '/' + slots.length +<a name="line.636"></a>
-<span class="sourceLineNo">637</span>                ", flushed=" + StringUtils.humanSize(totalSynced));<a name="line.637"></a>
-<span class="sourceLineNo">638</span>    }<a name="line.638"></a>
-<span class="sourceLineNo">639</span>    return totalSynced;<a name="line.639"></a>
-<span class="sourceLineNo">640</span>  }<a name="line.640"></a>
-<span class="sourceLineNo">641</span><a name="line.641"></a>
-<span class="sourceLineNo">642</span>  @VisibleForTesting<a name="line.642"></a>
-<span class="sourceLineNo">643</span>  public boolean rollWriterOrDie() {<a name="line.643"></a>
-<span class="sourceLineNo">644</span>    for (int i = 1; i &lt;= rollRetries; ++i) {<a name="line.644"></a>
-<span class="sourceLineNo">645</span>      try {<a name="line.645"></a>
-<span class="sourceLineNo">646</span>        if (rollWriter()) {<a name="line.646"></a>
-<span class="sourceLineNo">647</span>          return true;<a name="line.647"></a>
-<span class="sourceLineNo">648</span>        }<a name="line.648"></a>
-<span class="sourceLineNo">649</span>      } catch (IOException e) {<a name="line.649"></a>
-<span class="sourceLineNo">650</span>        LOG.warn("Unable to roll the log, attempt=" + i, e);<a name="line.650"></a>
-<span class="sourceLineNo">651</span>        Threads.sleepWithoutInterrupt(waitBeforeRoll);<a name="line.651"></a>
-<span class="sourceLineNo">652</span>      }<a name="line.652"></a>
-<span class="sourceLineNo">653</span>    }<a name="line.653"></a>
-<span class="sourceLineNo">654</span>    LOG.fatal("Unable to roll the log");<a name="line.654"></a>
-<span class="sourceLineNo">655</span>    sendAbortProcessSignal();<a name="line.655"></a>
-<span class="sourceLineNo">656</span>    throw new RuntimeException("unable to roll the log");<a name="line.656"></a>
-<span class="sourceLineNo">657</span>  }<a name="line.657"></a>
-<span class="sourceLineNo">658</span><a name="line.658"></a>
-<span class="sourceLineNo">659</span>  protected boolean checkAndTryRoll() {<a name="line.659"></a>
-<span class="sourceLineNo">660</span>    if (!isRunning()) return false;<a name="line.660"></a>
-<span class="sourceLineNo">661</span><a name="line.661"></a>
-<span class="sourceLineNo">662</span>    if (totalSynced.get() &gt; rollThreshold || getMillisToNextPeriodicRoll() &lt;= 0) {<a name="line.662"></a>
-<span class="sourceLineNo">663</span>      try {<a name="line.663"></a>
-<span class="sourceLineNo">664</span>        return rollWriter();<a name="line.664"></a>
-<span class="sourceLineNo">665</span>      } catch (IOException e) {<a name="line.665"></a>
-<span class="sourceLineNo">666</span>        LOG.warn("Unable to roll the log", e);<a name="line.666"></a>
-<span class="sourceLineNo">667</span>      }<a name="line.667"></a>
-<span class="sourceLineNo">668</span>    }<a name="line.668"></a>
-<span class="sourceLineNo">669</span>    return false;<a name="line.669"></a>
-<span class="sourceLineNo">670</span>  }<a name="line.670"></a>
-<span class="sourceLineNo">671</span><a name="line.671"></a>
-<span class="sourceLineNo">672</span>  private long getMillisToNextPeriodicRoll() {<a name="line.672"></a>
-<span class="sourceLineNo">673</span>    if (lastRollTs.get() &gt; 0 &amp;&amp; periodicRollMsec &gt; 0) {<a name="line.673"></a>
-<span class="sourceLineNo">674</span>      return periodicRollMsec - getMillisFromLastRoll();<a name="line.674"></a>
-<span class="sourceLineNo">675</span>    }<a name="line.675"></a>
-<span class="sourceLineNo">676</span>    return Long.MAX_VALUE;<a name="line.676"></a>
-<span class="sourceLineNo">677</span>  }<a name="line.677"></a>
-<span class="sourceLineNo">678</span><a name="line.678"></a>
-<span class="sourceLineNo">679</span>  private long getMillisFromLastRoll() {<a name="line.679"></a>
-<span class="sourceLineNo">680</span>    return (System.currentTimeMillis() - lastRollTs.get());<a name="line.680"></a>
-<span class="sourceLineNo">681</span>  }<a name="line.681"></a>
-<span class="sourceLineNo">682</span><a name="line.682"></a>
-<span class="sourceLineNo">683</span>  protected boolean rollWriter() throws IOException {<a name="line.683"></a>
-<span class="sourceLineNo">684</span>    // Create new state-log<a name="line.684"></a>
-<span class="sourceLineNo">685</span>    if (!rollWriter(flushLogId + 1)) {<a name="line.685"></a>
-<span class="sourceLineNo">686</span>      LOG.warn("someone else has already created log " + flushLogId);<a name="line.686"></a>
-<span class="sourceLineNo">687</span>      return false;<a name="line.687"></a>
-<span class="sourceLineNo">688</span>    }<a name="line.688"></a>
-<span class="sourceLineNo">689</span><a name="line.689"></a>
-<span class="sourceLineNo">690</span>    // We have the lease on the log,<a name="line.690"></a>
-<span class="sourceLineNo">691</span>    // but we should check if someone else has created new files<a name="line.691"></a>
-<span class="sourceLineNo">692</span>    if (getMaxLogId(getLogFiles()) &gt; flushLogId) {<a name="line.692"></a>
-<span class="sourceLineNo">693</span>      LOG.warn("Someone else created new logs. Expected maxLogId &lt; " + flushLogId);<a name="line.693"></a>
-<span class="sourceLineNo">694</span>      logs.getLast().removeFile();<a name="line.694"></a>
-<span class="sourceLineNo">695

<TRUNCATED>

[11/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.WALPutBenchmark.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.WALPutBenchmark.html b/testdevapidocs/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.WALPutBenchmark.html
index 16cd295..2b4e49d 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.WALPutBenchmark.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.WALPutBenchmark.html
@@ -103,7 +103,7 @@
 </dl>
 <hr>
 <br>
-<pre> class <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.122">WALPerformanceEvaluation.WALPutBenchmark</a>
+<pre> class <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.123">WALPerformanceEvaluation.WALPutBenchmark</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/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></pre>
 <div class="block">Perform WAL.append() of Put object, for the number of iterations requested.
@@ -224,7 +224,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>numIterations</h4>
-<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.WALPutBenchmark.html#line.123">numIterations</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.WALPutBenchmark.html#line.124">numIterations</a></pre>
 </li>
 </ul>
 <a name="numFamilies">
@@ -233,7 +233,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>numFamilies</h4>
-<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.WALPutBenchmark.html#line.124">numFamilies</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.WALPutBenchmark.html#line.125">numFamilies</a></pre>
 </li>
 </ul>
 <a name="noSync">
@@ -242,7 +242,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>noSync</h4>
-<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.WALPutBenchmark.html#line.125">noSync</a></pre>
+<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.WALPutBenchmark.html#line.126">noSync</a></pre>
 </li>
 </ul>
 <a name="region">
@@ -251,7 +251,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>region</h4>
-<pre>private final&nbsp;org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.WALPutBenchmark.html#line.126">region</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.WALPutBenchmark.html#line.127">region</a></pre>
 </li>
 </ul>
 <a name="syncInterval">
@@ -260,7 +260,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>syncInterval</h4>
-<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.WALPutBenchmark.html#line.127">syncInterval</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.WALPutBenchmark.html#line.128">syncInterval</a></pre>
 </li>
 </ul>
 <a name="htd">
@@ -269,7 +269,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>htd</h4>
-<pre>private final&nbsp;org.apache.hadoop.hbase.HTableDescriptor <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.WALPutBenchmark.html#line.128">htd</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.hbase.HTableDescriptor <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.WALPutBenchmark.html#line.129">htd</a></pre>
 </li>
 </ul>
 <a name="loopSampler">
@@ -278,7 +278,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>loopSampler</h4>
-<pre>private final&nbsp;org.apache.htrace.Sampler <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.WALPutBenchmark.html#line.129">loopSampler</a></pre>
+<pre>private final&nbsp;org.apache.htrace.Sampler <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.WALPutBenchmark.html#line.130">loopSampler</a></pre>
 </li>
 </ul>
 </li>
@@ -295,7 +295,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>WALPerformanceEvaluation.WALPutBenchmark</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.WALPutBenchmark.html#line.131">WALPerformanceEvaluation.WALPutBenchmark</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.WALPutBenchmark.html#line.132">WALPerformanceEvaluation.WALPutBenchmark</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
                                         org.apache.hadoop.hbase.HTableDescriptor&nbsp;htd,
                                         long&nbsp;numIterations,
                                         boolean&nbsp;noSync,
@@ -317,7 +317,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.WALPutBenchmark.html#line.161">run</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.WALPutBenchmark.html#line.162">run</a>()</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html?is-external=true#run()" title="class or interface in java.lang">run</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html b/testdevapidocs/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html
index 64c31de..16ef751 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html
@@ -105,7 +105,7 @@
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public final class <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.82">WALPerformanceEvaluation</a>
+public final class <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.85">WALPerformanceEvaluation</a>
 extends org.apache.hadoop.conf.Configured
 implements org.apache.hadoop.util.Tool</pre>
 <div class="block">This class runs performance benchmarks for <code>WAL</code>.
@@ -151,7 +151,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <th class="colLast" scope="col">Field and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>private com.yammer.metrics.core.Meter</code></td>
+<td class="colFirst"><code>private com.codahale.metrics.Meter</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#appendMeter">appendMeter</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
@@ -163,7 +163,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#keySize">keySize</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>private com.yammer.metrics.core.Histogram</code></td>
+<td class="colFirst"><code>private com.codahale.metrics.Histogram</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#latencyHistogram">latencyHistogram</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
@@ -171,7 +171,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#LOG">LOG</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>private com.yammer.metrics.core.MetricsRegistry</code></td>
+<td class="colFirst"><code>private com.codahale.metrics.MetricRegistry</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#metrics">metrics</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
@@ -187,15 +187,15 @@ implements org.apache.hadoop.util.Tool</pre>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#QUALIFIER_PREFIX">QUALIFIER_PREFIX</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>private com.yammer.metrics.core.Histogram</code></td>
+<td class="colFirst"><code>private com.codahale.metrics.Histogram</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#syncCountHistogram">syncCountHistogram</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>private com.yammer.metrics.core.Histogram</code></td>
+<td class="colFirst"><code>private com.codahale.metrics.Histogram</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#syncHistogram">syncHistogram</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>private com.yammer.metrics.core.Meter</code></td>
+<td class="colFirst"><code>private com.codahale.metrics.Meter</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#syncMeter">syncMeter</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
@@ -365,7 +365,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <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/wal/WALPerformanceEvaluation.html#line.83">LOG</a></pre>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.86">LOG</a></pre>
 </li>
 </ul>
 <a name="metrics">
@@ -374,7 +374,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>metrics</h4>
-<pre>private final&nbsp;com.yammer.metrics.core.MetricsRegistry <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.84">metrics</a></pre>
+<pre>private final&nbsp;com.codahale.metrics.MetricRegistry <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.87">metrics</a></pre>
 </li>
 </ul>
 <a name="syncMeter">
@@ -383,7 +383,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>syncMeter</h4>
-<pre>private final&nbsp;com.yammer.metrics.core.Meter <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.85">syncMeter</a></pre>
+<pre>private final&nbsp;com.codahale.metrics.Meter <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.88">syncMeter</a></pre>
 </li>
 </ul>
 <a name="syncHistogram">
@@ -392,7 +392,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>syncHistogram</h4>
-<pre>private final&nbsp;com.yammer.metrics.core.Histogram <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.87">syncHistogram</a></pre>
+<pre>private final&nbsp;com.codahale.metrics.Histogram <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.91">syncHistogram</a></pre>
 </li>
 </ul>
 <a name="syncCountHistogram">
@@ -401,7 +401,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>syncCountHistogram</h4>
-<pre>private final&nbsp;com.yammer.metrics.core.Histogram <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.90">syncCountHistogram</a></pre>
+<pre>private final&nbsp;com.codahale.metrics.Histogram <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.93">syncCountHistogram</a></pre>
 </li>
 </ul>
 <a name="appendMeter">
@@ -410,7 +410,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>appendMeter</h4>
-<pre>private final&nbsp;com.yammer.metrics.core.Meter <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.93">appendMeter</a></pre>
+<pre>private final&nbsp;com.codahale.metrics.Meter <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.95">appendMeter</a></pre>
 </li>
 </ul>
 <a name="latencyHistogram">
@@ -419,7 +419,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>latencyHistogram</h4>
-<pre>private final&nbsp;com.yammer.metrics.core.Histogram <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.96">latencyHistogram</a></pre>
+<pre>private final&nbsp;com.codahale.metrics.Histogram <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.97">latencyHistogram</a></pre>
 </li>
 </ul>
 <a name="mvcc">
@@ -428,7 +428,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>mvcc</h4>
-<pre>private final&nbsp;org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.99">mvcc</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.100">mvcc</a></pre>
 </li>
 </ul>
 <a name="TEST_UTIL">
@@ -437,7 +437,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>TEST_UTIL</h4>
-<pre>private&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/wal/WALPerformanceEvaluation.html#line.101">TEST_UTIL</a></pre>
+<pre>private&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/wal/WALPerformanceEvaluation.html#line.102">TEST_UTIL</a></pre>
 </li>
 </ul>
 <a name="TABLE_NAME">
@@ -446,7 +446,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>TABLE_NAME</h4>
-<pre>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/wal/WALPerformanceEvaluation.html#line.103">TABLE_NAME</a></pre>
+<pre>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/wal/WALPerformanceEvaluation.html#line.104">TABLE_NAME</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.wal.WALPerformanceEvaluation.TABLE_NAME">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -456,7 +456,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>QUALIFIER_PREFIX</h4>
-<pre>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/wal/WALPerformanceEvaluation.html#line.104">QUALIFIER_PREFIX</a></pre>
+<pre>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/wal/WALPerformanceEvaluation.html#line.105">QUALIFIER_PREFIX</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.wal.WALPerformanceEvaluation.QUALIFIER_PREFIX">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -466,7 +466,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>FAMILY_PREFIX</h4>
-<pre>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/wal/WALPerformanceEvaluation.html#line.105">FAMILY_PREFIX</a></pre>
+<pre>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/wal/WALPerformanceEvaluation.html#line.106">FAMILY_PREFIX</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.wal.WALPerformanceEvaluation.FAMILY_PREFIX">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -476,7 +476,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>numQualifiers</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.107">numQualifiers</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.108">numQualifiers</a></pre>
 </li>
 </ul>
 <a name="valueSize">
@@ -485,7 +485,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>valueSize</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.108">valueSize</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.109">valueSize</a></pre>
 </li>
 </ul>
 <a name="keySize">
@@ -494,7 +494,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>keySize</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.109">keySize</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.110">keySize</a></pre>
 </li>
 </ul>
 <a name="walsListenedTo">
@@ -503,7 +503,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>walsListenedTo</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;org.apache.hadoop.hbase.wal.WAL&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.481">walsListenedTo</a></pre>
+<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;org.apache.hadoop.hbase.wal.WAL&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.485">walsListenedTo</a></pre>
 </li>
 </ul>
 </li>
@@ -520,7 +520,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>WALPerformanceEvaluation</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.82">WALPerformanceEvaluation</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.85">WALPerformanceEvaluation</a>()</pre>
 </li>
 </ul>
 </li>
@@ -537,7 +537,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>setConf</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.112">setConf</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.113">setConf</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code>setConf</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.conf.Configurable</code></dd>
@@ -552,7 +552,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.206">run</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;args)
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.207">run</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;args)
         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><strong>Specified by:</strong></dt>
@@ -567,7 +567,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>createHTableDescriptor</h4>
-<pre>private static&nbsp;org.apache.hadoop.hbase.HTableDescriptor&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.389">createHTableDescriptor</a>(int&nbsp;regionNum,
+<pre>private static&nbsp;org.apache.hadoop.hbase.HTableDescriptor&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.393">createHTableDescriptor</a>(int&nbsp;regionNum,
                                                               int&nbsp;numFamilies)</pre>
 </li>
 </ul>
@@ -577,7 +577,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>verify</h4>
-<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.407">verify</a>(org.apache.hadoop.hbase.wal.WALFactory&nbsp;wals,
+<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.411">verify</a>(org.apache.hadoop.hbase.wal.WALFactory&nbsp;wals,
           org.apache.hadoop.fs.Path&nbsp;wal,
           boolean&nbsp;verbose)
              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>
@@ -595,7 +595,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>logBenchmarkResult</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.439">logBenchmarkResult</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;testName,
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.443">logBenchmarkResult</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;testName,
                       long&nbsp;numTests,
                       long&nbsp;totalTime)</pre>
 </li>
@@ -606,7 +606,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>printUsageAndExit</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.445">printUsageAndExit</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.449">printUsageAndExit</a>()</pre>
 </li>
 </ul>
 <a name="openRegion(org.apache.hadoop.fs.FileSystem, org.apache.hadoop.fs.Path, org.apache.hadoop.hbase.HTableDescriptor, org.apache.hadoop.hbase.wal.WALFactory, long, org.apache.hadoop.hbase.regionserver.LogRoller)">
@@ -615,7 +615,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>openRegion</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.483">openRegion</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
+<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.487">openRegion</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
                                                       org.apache.hadoop.fs.Path&nbsp;dir,
                                                       org.apache.hadoop.hbase.HTableDescriptor&nbsp;htd,
                                                       org.apache.hadoop.hbase.wal.WALFactory&nbsp;wals,
@@ -632,7 +632,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>closeRegion</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.526">closeRegion</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.530">closeRegion</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region)
                   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>
@@ -644,7 +644,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>cleanRegionRootDir</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.536">cleanRegionRootDir</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.540">cleanRegionRootDir</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
                       org.apache.hadoop.fs.Path&nbsp;dir)
                          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>
@@ -657,7 +657,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>setupPut</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.client.Put&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.542">setupPut</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a>&nbsp;rand,
+<pre>private&nbsp;org.apache.hadoop.hbase.client.Put&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.546">setupPut</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a>&nbsp;rand,
                                           byte[]&nbsp;key,
                                           byte[]&nbsp;value,
                                           int&nbsp;numFamilies)</pre>
@@ -669,7 +669,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>addFamilyMapToWALEdit</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.555">addFamilyMapToWALEdit</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;byte[],<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;org.apache.hadoop.hbase.Cell&gt;&gt;&nbsp;familyMap,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.559">addFamilyMapToWALEdit</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;byte[],<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;org.apache.hadoop.hbase.Cell&gt;&gt;&nbsp;familyMap,
                          org.apache.hadoop.hbase.regionserver.wal.WALEdit&nbsp;walEdit)</pre>
 </li>
 </ul>
@@ -679,7 +679,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>runBenchmark</h4>
-<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.564">runBenchmark</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a>[]&nbsp;runnable,
+<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.568">runBenchmark</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a>[]&nbsp;runnable,
                 int&nbsp;numThreads)
                    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>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -692,7 +692,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>innerMain</h4>
-<pre>static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.583">innerMain</a>(org.apache.hadoop.conf.Configuration&nbsp;c,
+<pre>static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.587">innerMain</a>(org.apache.hadoop.conf.Configuration&nbsp;c,
             <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;args)
               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">The guts of the <a href="../../../../../org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#main(java.lang.String[])"><code>main(java.lang.String[])</code></a> method.
@@ -709,7 +709,7 @@ implements org.apache.hadoop.util.Tool</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>main</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.587">main</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;args)
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#line.591">main</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;args)
                  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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/overview-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/overview-tree.html b/testdevapidocs/overview-tree.html
index 82b96c4..6b6bc41 100644
--- a/testdevapidocs/overview-tree.html
+++ b/testdevapidocs/overview-tree.html
@@ -1464,7 +1464,6 @@
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="org/apache/hadoop/hbase/procedure2/TestProcedureReplayOrder.TestTwoStepProcedure.html" title="class in org.apache.hadoop.hbase.procedure2"><span class="strong">TestProcedureReplayOrder.TestTwoStepProcedure</span></a></li>
 </ul>
 </li>
-<li type="circle">org.apache.hadoop.hbase.procedure2.store.<a href="org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html" title="class in org.apache.hadoop.hbase.procedure2.store"><span class="strong">TestProcedureStoreTracker.TestProcedure</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="org/apache/hadoop/hbase/procedure2/TestProcedureToString.BasicProcedure.html" title="class in org.apache.hadoop.hbase.procedure2"><span class="strong">TestProcedureToString.BasicProcedure</span></a>
 <ul>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="org/apache/hadoop/hbase/procedure2/TestProcedureToString.DoublingStateStringBasicProcedure.html" title="class in org.apache.hadoop.hbase.procedure2"><span class="strong">TestProcedureToString.DoublingStateStringBasicProcedure</span></a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.PerfEvalCallable.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.PerfEvalCallable.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.PerfEvalCallable.html
index 2ef94b9..913443d 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.PerfEvalCallable.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.PerfEvalCallable.html
@@ -28,7 +28,7 @@
 <span class="sourceLineNo">020</span><a name="line.20"></a>
 <span class="sourceLineNo">021</span>import com.google.common.base.Objects;<a name="line.21"></a>
 <span class="sourceLineNo">022</span>import com.google.common.collect.Sets;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import com.yammer.metrics.core.Histogram;<a name="line.23"></a>
+<span class="sourceLineNo">023</span>import com.codahale.metrics.Histogram;<a name="line.23"></a>
 <span class="sourceLineNo">024</span>import org.apache.commons.cli.CommandLine;<a name="line.24"></a>
 <span class="sourceLineNo">025</span>import org.apache.commons.logging.Log;<a name="line.25"></a>
 <span class="sourceLineNo">026</span>import org.apache.commons.logging.LogFactory;<a name="line.26"></a>
@@ -81,12 +81,12 @@
 <span class="sourceLineNo">073</span>  private static final String NUM_RS_KEY = "numRs";<a name="line.73"></a>
 <span class="sourceLineNo">074</span>  private static final String NUM_RS_DEFAULT = "" + 3;<a name="line.74"></a>
 <span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>  /** Extract a descriptive statistic from a {@link com.yammer.metrics.core.Histogram}. */<a name="line.76"></a>
+<span class="sourceLineNo">076</span>  /** Extract a descriptive statistic from a {@link com.codahale.metrics.Histogram}. */<a name="line.76"></a>
 <span class="sourceLineNo">077</span>  private enum Stat {<a name="line.77"></a>
 <span class="sourceLineNo">078</span>    STDEV {<a name="line.78"></a>
 <span class="sourceLineNo">079</span>      @Override<a name="line.79"></a>
 <span class="sourceLineNo">080</span>      double apply(Histogram hist) {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>        return hist.stdDev();<a name="line.81"></a>
+<span class="sourceLineNo">081</span>        return hist.getSnapshot().getStdDev();<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>    FOUR_9S {<a name="line.84"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html
index 2ef94b9..913443d 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html
@@ -28,7 +28,7 @@
 <span class="sourceLineNo">020</span><a name="line.20"></a>
 <span class="sourceLineNo">021</span>import com.google.common.base.Objects;<a name="line.21"></a>
 <span class="sourceLineNo">022</span>import com.google.common.collect.Sets;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import com.yammer.metrics.core.Histogram;<a name="line.23"></a>
+<span class="sourceLineNo">023</span>import com.codahale.metrics.Histogram;<a name="line.23"></a>
 <span class="sourceLineNo">024</span>import org.apache.commons.cli.CommandLine;<a name="line.24"></a>
 <span class="sourceLineNo">025</span>import org.apache.commons.logging.Log;<a name="line.25"></a>
 <span class="sourceLineNo">026</span>import org.apache.commons.logging.LogFactory;<a name="line.26"></a>
@@ -81,12 +81,12 @@
 <span class="sourceLineNo">073</span>  private static final String NUM_RS_KEY = "numRs";<a name="line.73"></a>
 <span class="sourceLineNo">074</span>  private static final String NUM_RS_DEFAULT = "" + 3;<a name="line.74"></a>
 <span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>  /** Extract a descriptive statistic from a {@link com.yammer.metrics.core.Histogram}. */<a name="line.76"></a>
+<span class="sourceLineNo">076</span>  /** Extract a descriptive statistic from a {@link com.codahale.metrics.Histogram}. */<a name="line.76"></a>
 <span class="sourceLineNo">077</span>  private enum Stat {<a name="line.77"></a>
 <span class="sourceLineNo">078</span>    STDEV {<a name="line.78"></a>
 <span class="sourceLineNo">079</span>      @Override<a name="line.79"></a>
 <span class="sourceLineNo">080</span>      double apply(Histogram hist) {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>        return hist.stdDev();<a name="line.81"></a>
+<span class="sourceLineNo">081</span>        return hist.getSnapshot().getStdDev();<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>    FOUR_9S {<a name="line.84"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.TimingResult.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.TimingResult.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.TimingResult.html
index 2ef94b9..913443d 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.TimingResult.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.TimingResult.html
@@ -28,7 +28,7 @@
 <span class="sourceLineNo">020</span><a name="line.20"></a>
 <span class="sourceLineNo">021</span>import com.google.common.base.Objects;<a name="line.21"></a>
 <span class="sourceLineNo">022</span>import com.google.common.collect.Sets;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import com.yammer.metrics.core.Histogram;<a name="line.23"></a>
+<span class="sourceLineNo">023</span>import com.codahale.metrics.Histogram;<a name="line.23"></a>
 <span class="sourceLineNo">024</span>import org.apache.commons.cli.CommandLine;<a name="line.24"></a>
 <span class="sourceLineNo">025</span>import org.apache.commons.logging.Log;<a name="line.25"></a>
 <span class="sourceLineNo">026</span>import org.apache.commons.logging.LogFactory;<a name="line.26"></a>
@@ -81,12 +81,12 @@
 <span class="sourceLineNo">073</span>  private static final String NUM_RS_KEY = "numRs";<a name="line.73"></a>
 <span class="sourceLineNo">074</span>  private static final String NUM_RS_DEFAULT = "" + 3;<a name="line.74"></a>
 <span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>  /** Extract a descriptive statistic from a {@link com.yammer.metrics.core.Histogram}. */<a name="line.76"></a>
+<span class="sourceLineNo">076</span>  /** Extract a descriptive statistic from a {@link com.codahale.metrics.Histogram}. */<a name="line.76"></a>
 <span class="sourceLineNo">077</span>  private enum Stat {<a name="line.77"></a>
 <span class="sourceLineNo">078</span>    STDEV {<a name="line.78"></a>
 <span class="sourceLineNo">079</span>      @Override<a name="line.79"></a>
 <span class="sourceLineNo">080</span>      double apply(Histogram hist) {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>        return hist.stdDev();<a name="line.81"></a>
+<span class="sourceLineNo">081</span>        return hist.getSnapshot().getStdDev();<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>    FOUR_9S {<a name="line.84"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html
index 2ef94b9..913443d 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html
@@ -28,7 +28,7 @@
 <span class="sourceLineNo">020</span><a name="line.20"></a>
 <span class="sourceLineNo">021</span>import com.google.common.base.Objects;<a name="line.21"></a>
 <span class="sourceLineNo">022</span>import com.google.common.collect.Sets;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import com.yammer.metrics.core.Histogram;<a name="line.23"></a>
+<span class="sourceLineNo">023</span>import com.codahale.metrics.Histogram;<a name="line.23"></a>
 <span class="sourceLineNo">024</span>import org.apache.commons.cli.CommandLine;<a name="line.24"></a>
 <span class="sourceLineNo">025</span>import org.apache.commons.logging.Log;<a name="line.25"></a>
 <span class="sourceLineNo">026</span>import org.apache.commons.logging.LogFactory;<a name="line.26"></a>
@@ -81,12 +81,12 @@
 <span class="sourceLineNo">073</span>  private static final String NUM_RS_KEY = "numRs";<a name="line.73"></a>
 <span class="sourceLineNo">074</span>  private static final String NUM_RS_DEFAULT = "" + 3;<a name="line.74"></a>
 <span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>  /** Extract a descriptive statistic from a {@link com.yammer.metrics.core.Histogram}. */<a name="line.76"></a>
+<span class="sourceLineNo">076</span>  /** Extract a descriptive statistic from a {@link com.codahale.metrics.Histogram}. */<a name="line.76"></a>
 <span class="sourceLineNo">077</span>  private enum Stat {<a name="line.77"></a>
 <span class="sourceLineNo">078</span>    STDEV {<a name="line.78"></a>
 <span class="sourceLineNo">079</span>      @Override<a name="line.79"></a>
 <span class="sourceLineNo">080</span>      double apply(Histogram hist) {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>        return hist.stdDev();<a name="line.81"></a>
+<span class="sourceLineNo">081</span>        return hist.getSnapshot().getStdDev();<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>    FOUR_9S {<a name="line.84"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.BufferedMutatorTest.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.BufferedMutatorTest.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.BufferedMutatorTest.html
index d15c216..bf5e0a0 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.BufferedMutatorTest.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.BufferedMutatorTest.html
@@ -101,9 +101,9 @@
 <span class="sourceLineNo">093</span><a name="line.93"></a>
 <span class="sourceLineNo">094</span>import com.google.common.base.Objects;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>import com.google.common.util.concurrent.ThreadFactoryBuilder;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import com.yammer.metrics.core.Histogram;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import com.yammer.metrics.stats.Snapshot;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import com.yammer.metrics.stats.UniformSample;<a name="line.98"></a>
+<span class="sourceLineNo">096</span>import com.codahale.metrics.Histogram;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import com.codahale.metrics.Snapshot;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import com.codahale.metrics.UniformReservoir;<a name="line.98"></a>
 <span class="sourceLineNo">099</span><a name="line.99"></a>
 <span class="sourceLineNo">100</span>/**<a name="line.100"></a>
 <span class="sourceLineNo">101</span> * Script used evaluating HBase performance and scalability.  Runs a HBase<a name="line.101"></a>
@@ -1062,8 +1062,8 @@
 <span class="sourceLineNo">1054</span>        this.connection = ConnectionFactory.createConnection(conf);<a name="line.1054"></a>
 <span class="sourceLineNo">1055</span>      }<a name="line.1055"></a>
 <span class="sourceLineNo">1056</span>      onStartup();<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1058"></a>
+<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1058"></a>
 <span class="sourceLineNo">1059</span>    }<a name="line.1059"></a>
 <span class="sourceLineNo">1060</span><a name="line.1060"></a>
 <span class="sourceLineNo">1061</span>    abstract void onStartup() throws IOException;<a name="line.1061"></a>
@@ -1129,21 +1129,21 @@
 <span class="sourceLineNo">1121</span>     */<a name="line.1121"></a>
 <span class="sourceLineNo">1122</span>    private void reportLatency() throws IOException {<a name="line.1122"></a>
 <span class="sourceLineNo">1123</span>      status.setStatus(testName + " latency log (microseconds), on " +<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>          latency.count() + " measures");<a name="line.1124"></a>
+<span class="sourceLineNo">1124</span>          latency.getCount() + " measures");<a name="line.1124"></a>
 <span class="sourceLineNo">1125</span>      reportHistogram(this.latency);<a name="line.1125"></a>
 <span class="sourceLineNo">1126</span>    }<a name="line.1126"></a>
 <span class="sourceLineNo">1127</span><a name="line.1127"></a>
 <span class="sourceLineNo">1128</span>    private void reportValueSize() throws IOException {<a name="line.1128"></a>
 <span class="sourceLineNo">1129</span>      status.setStatus(testName + " valueSize after " +<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>          valueSize.count() + " measures");<a name="line.1130"></a>
+<span class="sourceLineNo">1130</span>          valueSize.getCount() + " measures");<a name="line.1130"></a>
 <span class="sourceLineNo">1131</span>      reportHistogram(this.valueSize);<a name="line.1131"></a>
 <span class="sourceLineNo">1132</span>    }<a name="line.1132"></a>
 <span class="sourceLineNo">1133</span><a name="line.1133"></a>
 <span class="sourceLineNo">1134</span>    private void reportHistogram(final Histogram h) throws IOException {<a name="line.1134"></a>
 <span class="sourceLineNo">1135</span>      Snapshot sn = h.getSnapshot();<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + h.min());<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + h.mean());<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + h.stdDev());<a name="line.1138"></a>
+<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + sn.getMin());<a name="line.1136"></a>
+<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + sn.getMean());<a name="line.1137"></a>
+<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + sn.getStdDev());<a name="line.1138"></a>
 <span class="sourceLineNo">1139</span>      status.setStatus(testName + " 50th     = " + sn.getMedian());<a name="line.1139"></a>
 <span class="sourceLineNo">1140</span>      status.setStatus(testName + " 75th     = " + sn.get75thPercentile());<a name="line.1140"></a>
 <span class="sourceLineNo">1141</span>      status.setStatus(testName + " 95th     = " + sn.get95thPercentile());<a name="line.1141"></a>
@@ -1151,7 +1151,7 @@
 <span class="sourceLineNo">1143</span>      status.setStatus(testName + " 99.9th   = " + sn.get999thPercentile());<a name="line.1143"></a>
 <span class="sourceLineNo">1144</span>      status.setStatus(testName + " 99.99th  = " + sn.getValue(0.9999));<a name="line.1144"></a>
 <span class="sourceLineNo">1145</span>      status.setStatus(testName + " 99.999th = " + sn.getValue(0.99999));<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + h.max());<a name="line.1146"></a>
+<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + sn.getMax());<a name="line.1146"></a>
 <span class="sourceLineNo">1147</span>    }<a name="line.1147"></a>
 <span class="sourceLineNo">1148</span><a name="line.1148"></a>
 <span class="sourceLineNo">1149</span>    /**<a name="line.1149"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.CmdDescriptor.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.CmdDescriptor.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.CmdDescriptor.html
index d15c216..bf5e0a0 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.CmdDescriptor.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.CmdDescriptor.html
@@ -101,9 +101,9 @@
 <span class="sourceLineNo">093</span><a name="line.93"></a>
 <span class="sourceLineNo">094</span>import com.google.common.base.Objects;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>import com.google.common.util.concurrent.ThreadFactoryBuilder;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import com.yammer.metrics.core.Histogram;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import com.yammer.metrics.stats.Snapshot;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import com.yammer.metrics.stats.UniformSample;<a name="line.98"></a>
+<span class="sourceLineNo">096</span>import com.codahale.metrics.Histogram;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import com.codahale.metrics.Snapshot;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import com.codahale.metrics.UniformReservoir;<a name="line.98"></a>
 <span class="sourceLineNo">099</span><a name="line.99"></a>
 <span class="sourceLineNo">100</span>/**<a name="line.100"></a>
 <span class="sourceLineNo">101</span> * Script used evaluating HBase performance and scalability.  Runs a HBase<a name="line.101"></a>
@@ -1062,8 +1062,8 @@
 <span class="sourceLineNo">1054</span>        this.connection = ConnectionFactory.createConnection(conf);<a name="line.1054"></a>
 <span class="sourceLineNo">1055</span>      }<a name="line.1055"></a>
 <span class="sourceLineNo">1056</span>      onStartup();<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1058"></a>
+<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1058"></a>
 <span class="sourceLineNo">1059</span>    }<a name="line.1059"></a>
 <span class="sourceLineNo">1060</span><a name="line.1060"></a>
 <span class="sourceLineNo">1061</span>    abstract void onStartup() throws IOException;<a name="line.1061"></a>
@@ -1129,21 +1129,21 @@
 <span class="sourceLineNo">1121</span>     */<a name="line.1121"></a>
 <span class="sourceLineNo">1122</span>    private void reportLatency() throws IOException {<a name="line.1122"></a>
 <span class="sourceLineNo">1123</span>      status.setStatus(testName + " latency log (microseconds), on " +<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>          latency.count() + " measures");<a name="line.1124"></a>
+<span class="sourceLineNo">1124</span>          latency.getCount() + " measures");<a name="line.1124"></a>
 <span class="sourceLineNo">1125</span>      reportHistogram(this.latency);<a name="line.1125"></a>
 <span class="sourceLineNo">1126</span>    }<a name="line.1126"></a>
 <span class="sourceLineNo">1127</span><a name="line.1127"></a>
 <span class="sourceLineNo">1128</span>    private void reportValueSize() throws IOException {<a name="line.1128"></a>
 <span class="sourceLineNo">1129</span>      status.setStatus(testName + " valueSize after " +<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>          valueSize.count() + " measures");<a name="line.1130"></a>
+<span class="sourceLineNo">1130</span>          valueSize.getCount() + " measures");<a name="line.1130"></a>
 <span class="sourceLineNo">1131</span>      reportHistogram(this.valueSize);<a name="line.1131"></a>
 <span class="sourceLineNo">1132</span>    }<a name="line.1132"></a>
 <span class="sourceLineNo">1133</span><a name="line.1133"></a>
 <span class="sourceLineNo">1134</span>    private void reportHistogram(final Histogram h) throws IOException {<a name="line.1134"></a>
 <span class="sourceLineNo">1135</span>      Snapshot sn = h.getSnapshot();<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + h.min());<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + h.mean());<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + h.stdDev());<a name="line.1138"></a>
+<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + sn.getMin());<a name="line.1136"></a>
+<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + sn.getMean());<a name="line.1137"></a>
+<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + sn.getStdDev());<a name="line.1138"></a>
 <span class="sourceLineNo">1139</span>      status.setStatus(testName + " 50th     = " + sn.getMedian());<a name="line.1139"></a>
 <span class="sourceLineNo">1140</span>      status.setStatus(testName + " 75th     = " + sn.get75thPercentile());<a name="line.1140"></a>
 <span class="sourceLineNo">1141</span>      status.setStatus(testName + " 95th     = " + sn.get95thPercentile());<a name="line.1141"></a>
@@ -1151,7 +1151,7 @@
 <span class="sourceLineNo">1143</span>      status.setStatus(testName + " 99.9th   = " + sn.get999thPercentile());<a name="line.1143"></a>
 <span class="sourceLineNo">1144</span>      status.setStatus(testName + " 99.99th  = " + sn.getValue(0.9999));<a name="line.1144"></a>
 <span class="sourceLineNo">1145</span>      status.setStatus(testName + " 99.999th = " + sn.getValue(0.99999));<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + h.max());<a name="line.1146"></a>
+<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + sn.getMax());<a name="line.1146"></a>
 <span class="sourceLineNo">1147</span>    }<a name="line.1147"></a>
 <span class="sourceLineNo">1148</span><a name="line.1148"></a>
 <span class="sourceLineNo">1149</span>    /**<a name="line.1149"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.Counter.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.Counter.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.Counter.html
index d15c216..bf5e0a0 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.Counter.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.Counter.html
@@ -101,9 +101,9 @@
 <span class="sourceLineNo">093</span><a name="line.93"></a>
 <span class="sourceLineNo">094</span>import com.google.common.base.Objects;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>import com.google.common.util.concurrent.ThreadFactoryBuilder;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import com.yammer.metrics.core.Histogram;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import com.yammer.metrics.stats.Snapshot;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import com.yammer.metrics.stats.UniformSample;<a name="line.98"></a>
+<span class="sourceLineNo">096</span>import com.codahale.metrics.Histogram;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import com.codahale.metrics.Snapshot;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import com.codahale.metrics.UniformReservoir;<a name="line.98"></a>
 <span class="sourceLineNo">099</span><a name="line.99"></a>
 <span class="sourceLineNo">100</span>/**<a name="line.100"></a>
 <span class="sourceLineNo">101</span> * Script used evaluating HBase performance and scalability.  Runs a HBase<a name="line.101"></a>
@@ -1062,8 +1062,8 @@
 <span class="sourceLineNo">1054</span>        this.connection = ConnectionFactory.createConnection(conf);<a name="line.1054"></a>
 <span class="sourceLineNo">1055</span>      }<a name="line.1055"></a>
 <span class="sourceLineNo">1056</span>      onStartup();<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1058"></a>
+<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1058"></a>
 <span class="sourceLineNo">1059</span>    }<a name="line.1059"></a>
 <span class="sourceLineNo">1060</span><a name="line.1060"></a>
 <span class="sourceLineNo">1061</span>    abstract void onStartup() throws IOException;<a name="line.1061"></a>
@@ -1129,21 +1129,21 @@
 <span class="sourceLineNo">1121</span>     */<a name="line.1121"></a>
 <span class="sourceLineNo">1122</span>    private void reportLatency() throws IOException {<a name="line.1122"></a>
 <span class="sourceLineNo">1123</span>      status.setStatus(testName + " latency log (microseconds), on " +<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>          latency.count() + " measures");<a name="line.1124"></a>
+<span class="sourceLineNo">1124</span>          latency.getCount() + " measures");<a name="line.1124"></a>
 <span class="sourceLineNo">1125</span>      reportHistogram(this.latency);<a name="line.1125"></a>
 <span class="sourceLineNo">1126</span>    }<a name="line.1126"></a>
 <span class="sourceLineNo">1127</span><a name="line.1127"></a>
 <span class="sourceLineNo">1128</span>    private void reportValueSize() throws IOException {<a name="line.1128"></a>
 <span class="sourceLineNo">1129</span>      status.setStatus(testName + " valueSize after " +<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>          valueSize.count() + " measures");<a name="line.1130"></a>
+<span class="sourceLineNo">1130</span>          valueSize.getCount() + " measures");<a name="line.1130"></a>
 <span class="sourceLineNo">1131</span>      reportHistogram(this.valueSize);<a name="line.1131"></a>
 <span class="sourceLineNo">1132</span>    }<a name="line.1132"></a>
 <span class="sourceLineNo">1133</span><a name="line.1133"></a>
 <span class="sourceLineNo">1134</span>    private void reportHistogram(final Histogram h) throws IOException {<a name="line.1134"></a>
 <span class="sourceLineNo">1135</span>      Snapshot sn = h.getSnapshot();<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + h.min());<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + h.mean());<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + h.stdDev());<a name="line.1138"></a>
+<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + sn.getMin());<a name="line.1136"></a>
+<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + sn.getMean());<a name="line.1137"></a>
+<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + sn.getStdDev());<a name="line.1138"></a>
 <span class="sourceLineNo">1139</span>      status.setStatus(testName + " 50th     = " + sn.getMedian());<a name="line.1139"></a>
 <span class="sourceLineNo">1140</span>      status.setStatus(testName + " 75th     = " + sn.get75thPercentile());<a name="line.1140"></a>
 <span class="sourceLineNo">1141</span>      status.setStatus(testName + " 95th     = " + sn.get95thPercentile());<a name="line.1141"></a>
@@ -1151,7 +1151,7 @@
 <span class="sourceLineNo">1143</span>      status.setStatus(testName + " 99.9th   = " + sn.get999thPercentile());<a name="line.1143"></a>
 <span class="sourceLineNo">1144</span>      status.setStatus(testName + " 99.99th  = " + sn.getValue(0.9999));<a name="line.1144"></a>
 <span class="sourceLineNo">1145</span>      status.setStatus(testName + " 99.999th = " + sn.getValue(0.99999));<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + h.max());<a name="line.1146"></a>
+<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + sn.getMax());<a name="line.1146"></a>
 <span class="sourceLineNo">1147</span>    }<a name="line.1147"></a>
 <span class="sourceLineNo">1148</span><a name="line.1148"></a>
 <span class="sourceLineNo">1149</span>    /**<a name="line.1149"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.EvaluationMapTask.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.EvaluationMapTask.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.EvaluationMapTask.html
index d15c216..bf5e0a0 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.EvaluationMapTask.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.EvaluationMapTask.html
@@ -101,9 +101,9 @@
 <span class="sourceLineNo">093</span><a name="line.93"></a>
 <span class="sourceLineNo">094</span>import com.google.common.base.Objects;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>import com.google.common.util.concurrent.ThreadFactoryBuilder;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import com.yammer.metrics.core.Histogram;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import com.yammer.metrics.stats.Snapshot;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import com.yammer.metrics.stats.UniformSample;<a name="line.98"></a>
+<span class="sourceLineNo">096</span>import com.codahale.metrics.Histogram;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import com.codahale.metrics.Snapshot;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import com.codahale.metrics.UniformReservoir;<a name="line.98"></a>
 <span class="sourceLineNo">099</span><a name="line.99"></a>
 <span class="sourceLineNo">100</span>/**<a name="line.100"></a>
 <span class="sourceLineNo">101</span> * Script used evaluating HBase performance and scalability.  Runs a HBase<a name="line.101"></a>
@@ -1062,8 +1062,8 @@
 <span class="sourceLineNo">1054</span>        this.connection = ConnectionFactory.createConnection(conf);<a name="line.1054"></a>
 <span class="sourceLineNo">1055</span>      }<a name="line.1055"></a>
 <span class="sourceLineNo">1056</span>      onStartup();<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1058"></a>
+<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1058"></a>
 <span class="sourceLineNo">1059</span>    }<a name="line.1059"></a>
 <span class="sourceLineNo">1060</span><a name="line.1060"></a>
 <span class="sourceLineNo">1061</span>    abstract void onStartup() throws IOException;<a name="line.1061"></a>
@@ -1129,21 +1129,21 @@
 <span class="sourceLineNo">1121</span>     */<a name="line.1121"></a>
 <span class="sourceLineNo">1122</span>    private void reportLatency() throws IOException {<a name="line.1122"></a>
 <span class="sourceLineNo">1123</span>      status.setStatus(testName + " latency log (microseconds), on " +<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>          latency.count() + " measures");<a name="line.1124"></a>
+<span class="sourceLineNo">1124</span>          latency.getCount() + " measures");<a name="line.1124"></a>
 <span class="sourceLineNo">1125</span>      reportHistogram(this.latency);<a name="line.1125"></a>
 <span class="sourceLineNo">1126</span>    }<a name="line.1126"></a>
 <span class="sourceLineNo">1127</span><a name="line.1127"></a>
 <span class="sourceLineNo">1128</span>    private void reportValueSize() throws IOException {<a name="line.1128"></a>
 <span class="sourceLineNo">1129</span>      status.setStatus(testName + " valueSize after " +<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>          valueSize.count() + " measures");<a name="line.1130"></a>
+<span class="sourceLineNo">1130</span>          valueSize.getCount() + " measures");<a name="line.1130"></a>
 <span class="sourceLineNo">1131</span>      reportHistogram(this.valueSize);<a name="line.1131"></a>
 <span class="sourceLineNo">1132</span>    }<a name="line.1132"></a>
 <span class="sourceLineNo">1133</span><a name="line.1133"></a>
 <span class="sourceLineNo">1134</span>    private void reportHistogram(final Histogram h) throws IOException {<a name="line.1134"></a>
 <span class="sourceLineNo">1135</span>      Snapshot sn = h.getSnapshot();<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + h.min());<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + h.mean());<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + h.stdDev());<a name="line.1138"></a>
+<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + sn.getMin());<a name="line.1136"></a>
+<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + sn.getMean());<a name="line.1137"></a>
+<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + sn.getStdDev());<a name="line.1138"></a>
 <span class="sourceLineNo">1139</span>      status.setStatus(testName + " 50th     = " + sn.getMedian());<a name="line.1139"></a>
 <span class="sourceLineNo">1140</span>      status.setStatus(testName + " 75th     = " + sn.get75thPercentile());<a name="line.1140"></a>
 <span class="sourceLineNo">1141</span>      status.setStatus(testName + " 95th     = " + sn.get95thPercentile());<a name="line.1141"></a>
@@ -1151,7 +1151,7 @@
 <span class="sourceLineNo">1143</span>      status.setStatus(testName + " 99.9th   = " + sn.get999thPercentile());<a name="line.1143"></a>
 <span class="sourceLineNo">1144</span>      status.setStatus(testName + " 99.99th  = " + sn.getValue(0.9999));<a name="line.1144"></a>
 <span class="sourceLineNo">1145</span>      status.setStatus(testName + " 99.999th = " + sn.getValue(0.99999));<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + h.max());<a name="line.1146"></a>
+<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + sn.getMax());<a name="line.1146"></a>
 <span class="sourceLineNo">1147</span>    }<a name="line.1147"></a>
 <span class="sourceLineNo">1148</span><a name="line.1148"></a>
 <span class="sourceLineNo">1149</span>    /**<a name="line.1149"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.FilteredScanTest.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.FilteredScanTest.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.FilteredScanTest.html
index d15c216..bf5e0a0 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.FilteredScanTest.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.FilteredScanTest.html
@@ -101,9 +101,9 @@
 <span class="sourceLineNo">093</span><a name="line.93"></a>
 <span class="sourceLineNo">094</span>import com.google.common.base.Objects;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>import com.google.common.util.concurrent.ThreadFactoryBuilder;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import com.yammer.metrics.core.Histogram;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import com.yammer.metrics.stats.Snapshot;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import com.yammer.metrics.stats.UniformSample;<a name="line.98"></a>
+<span class="sourceLineNo">096</span>import com.codahale.metrics.Histogram;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import com.codahale.metrics.Snapshot;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import com.codahale.metrics.UniformReservoir;<a name="line.98"></a>
 <span class="sourceLineNo">099</span><a name="line.99"></a>
 <span class="sourceLineNo">100</span>/**<a name="line.100"></a>
 <span class="sourceLineNo">101</span> * Script used evaluating HBase performance and scalability.  Runs a HBase<a name="line.101"></a>
@@ -1062,8 +1062,8 @@
 <span class="sourceLineNo">1054</span>        this.connection = ConnectionFactory.createConnection(conf);<a name="line.1054"></a>
 <span class="sourceLineNo">1055</span>      }<a name="line.1055"></a>
 <span class="sourceLineNo">1056</span>      onStartup();<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1058"></a>
+<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1058"></a>
 <span class="sourceLineNo">1059</span>    }<a name="line.1059"></a>
 <span class="sourceLineNo">1060</span><a name="line.1060"></a>
 <span class="sourceLineNo">1061</span>    abstract void onStartup() throws IOException;<a name="line.1061"></a>
@@ -1129,21 +1129,21 @@
 <span class="sourceLineNo">1121</span>     */<a name="line.1121"></a>
 <span class="sourceLineNo">1122</span>    private void reportLatency() throws IOException {<a name="line.1122"></a>
 <span class="sourceLineNo">1123</span>      status.setStatus(testName + " latency log (microseconds), on " +<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>          latency.count() + " measures");<a name="line.1124"></a>
+<span class="sourceLineNo">1124</span>          latency.getCount() + " measures");<a name="line.1124"></a>
 <span class="sourceLineNo">1125</span>      reportHistogram(this.latency);<a name="line.1125"></a>
 <span class="sourceLineNo">1126</span>    }<a name="line.1126"></a>
 <span class="sourceLineNo">1127</span><a name="line.1127"></a>
 <span class="sourceLineNo">1128</span>    private void reportValueSize() throws IOException {<a name="line.1128"></a>
 <span class="sourceLineNo">1129</span>      status.setStatus(testName + " valueSize after " +<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>          valueSize.count() + " measures");<a name="line.1130"></a>
+<span class="sourceLineNo">1130</span>          valueSize.getCount() + " measures");<a name="line.1130"></a>
 <span class="sourceLineNo">1131</span>      reportHistogram(this.valueSize);<a name="line.1131"></a>
 <span class="sourceLineNo">1132</span>    }<a name="line.1132"></a>
 <span class="sourceLineNo">1133</span><a name="line.1133"></a>
 <span class="sourceLineNo">1134</span>    private void reportHistogram(final Histogram h) throws IOException {<a name="line.1134"></a>
 <span class="sourceLineNo">1135</span>      Snapshot sn = h.getSnapshot();<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + h.min());<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + h.mean());<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + h.stdDev());<a name="line.1138"></a>
+<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + sn.getMin());<a name="line.1136"></a>
+<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + sn.getMean());<a name="line.1137"></a>
+<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + sn.getStdDev());<a name="line.1138"></a>
 <span class="sourceLineNo">1139</span>      status.setStatus(testName + " 50th     = " + sn.getMedian());<a name="line.1139"></a>
 <span class="sourceLineNo">1140</span>      status.setStatus(testName + " 75th     = " + sn.get75thPercentile());<a name="line.1140"></a>
 <span class="sourceLineNo">1141</span>      status.setStatus(testName + " 95th     = " + sn.get95thPercentile());<a name="line.1141"></a>
@@ -1151,7 +1151,7 @@
 <span class="sourceLineNo">1143</span>      status.setStatus(testName + " 99.9th   = " + sn.get999thPercentile());<a name="line.1143"></a>
 <span class="sourceLineNo">1144</span>      status.setStatus(testName + " 99.99th  = " + sn.getValue(0.9999));<a name="line.1144"></a>
 <span class="sourceLineNo">1145</span>      status.setStatus(testName + " 99.999th = " + sn.getValue(0.99999));<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + h.max());<a name="line.1146"></a>
+<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + sn.getMax());<a name="line.1146"></a>
 <span class="sourceLineNo">1147</span>    }<a name="line.1147"></a>
 <span class="sourceLineNo">1148</span><a name="line.1148"></a>
 <span class="sourceLineNo">1149</span>    /**<a name="line.1149"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomReadTest.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomReadTest.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomReadTest.html
index d15c216..bf5e0a0 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomReadTest.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.RandomReadTest.html
@@ -101,9 +101,9 @@
 <span class="sourceLineNo">093</span><a name="line.93"></a>
 <span class="sourceLineNo">094</span>import com.google.common.base.Objects;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>import com.google.common.util.concurrent.ThreadFactoryBuilder;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import com.yammer.metrics.core.Histogram;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import com.yammer.metrics.stats.Snapshot;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import com.yammer.metrics.stats.UniformSample;<a name="line.98"></a>
+<span class="sourceLineNo">096</span>import com.codahale.metrics.Histogram;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import com.codahale.metrics.Snapshot;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import com.codahale.metrics.UniformReservoir;<a name="line.98"></a>
 <span class="sourceLineNo">099</span><a name="line.99"></a>
 <span class="sourceLineNo">100</span>/**<a name="line.100"></a>
 <span class="sourceLineNo">101</span> * Script used evaluating HBase performance and scalability.  Runs a HBase<a name="line.101"></a>
@@ -1062,8 +1062,8 @@
 <span class="sourceLineNo">1054</span>        this.connection = ConnectionFactory.createConnection(conf);<a name="line.1054"></a>
 <span class="sourceLineNo">1055</span>      }<a name="line.1055"></a>
 <span class="sourceLineNo">1056</span>      onStartup();<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1058"></a>
+<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1058"></a>
 <span class="sourceLineNo">1059</span>    }<a name="line.1059"></a>
 <span class="sourceLineNo">1060</span><a name="line.1060"></a>
 <span class="sourceLineNo">1061</span>    abstract void onStartup() throws IOException;<a name="line.1061"></a>
@@ -1129,21 +1129,21 @@
 <span class="sourceLineNo">1121</span>     */<a name="line.1121"></a>
 <span class="sourceLineNo">1122</span>    private void reportLatency() throws IOException {<a name="line.1122"></a>
 <span class="sourceLineNo">1123</span>      status.setStatus(testName + " latency log (microseconds), on " +<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>          latency.count() + " measures");<a name="line.1124"></a>
+<span class="sourceLineNo">1124</span>          latency.getCount() + " measures");<a name="line.1124"></a>
 <span class="sourceLineNo">1125</span>      reportHistogram(this.latency);<a name="line.1125"></a>
 <span class="sourceLineNo">1126</span>    }<a name="line.1126"></a>
 <span class="sourceLineNo">1127</span><a name="line.1127"></a>
 <span class="sourceLineNo">1128</span>    private void reportValueSize() throws IOException {<a name="line.1128"></a>
 <span class="sourceLineNo">1129</span>      status.setStatus(testName + " valueSize after " +<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>          valueSize.count() + " measures");<a name="line.1130"></a>
+<span class="sourceLineNo">1130</span>          valueSize.getCount() + " measures");<a name="line.1130"></a>
 <span class="sourceLineNo">1131</span>      reportHistogram(this.valueSize);<a name="line.1131"></a>
 <span class="sourceLineNo">1132</span>    }<a name="line.1132"></a>
 <span class="sourceLineNo">1133</span><a name="line.1133"></a>
 <span class="sourceLineNo">1134</span>    private void reportHistogram(final Histogram h) throws IOException {<a name="line.1134"></a>
 <span class="sourceLineNo">1135</span>      Snapshot sn = h.getSnapshot();<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + h.min());<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + h.mean());<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + h.stdDev());<a name="line.1138"></a>
+<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + sn.getMin());<a name="line.1136"></a>
+<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + sn.getMean());<a name="line.1137"></a>
+<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + sn.getStdDev());<a name="line.1138"></a>
 <span class="sourceLineNo">1139</span>      status.setStatus(testName + " 50th     = " + sn.getMedian());<a name="line.1139"></a>
 <span class="sourceLineNo">1140</span>      status.setStatus(testName + " 75th     = " + sn.get75thPercentile());<a name="line.1140"></a>
 <span class="sourceLineNo">1141</span>      status.setStatus(testName + " 95th     = " + sn.get95thPercentile());<a name="line.1141"></a>
@@ -1151,7 +1151,7 @@
 <span class="sourceLineNo">1143</span>      status.setStatus(testName + " 99.9th   = " + sn.get999thPercentile());<a name="line.1143"></a>
 <span class="sourceLineNo">1144</span>      status.setStatus(testName + " 99.99th  = " + sn.getValue(0.9999));<a name="line.1144"></a>
 <span class="sourceLineNo">1145</span>      status.setStatus(testName + " 99.999th = " + sn.getValue(0.99999));<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + h.max());<a name="line.1146"></a>
+<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + sn.getMax());<a name="line.1146"></a>
 <span class="sourceLineNo">1147</span>    }<a name="line.1147"></a>
 <span class="sourceLineNo">1148</span><a name="line.1148"></a>
 <span class="sourceLineNo">1149</span>    /**<a name="line.1149"></a>


[32/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html b/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html
index 174b98f..c847641 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html
@@ -111,543 +111,549 @@
 <span class="sourceLineNo">103</span>   */<a name="line.103"></a>
 <span class="sourceLineNo">104</span>  private static Set&lt;String&gt; coprocessorNames =<a name="line.104"></a>
 <span class="sourceLineNo">105</span>      Collections.synchronizedSet(new HashSet&lt;String&gt;());<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public static Set&lt;String&gt; getLoadedCoprocessors() {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      return coprocessorNames;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>  }<a name="line.108"></a>
-<span class="sourceLineNo">109</span><a name="line.109"></a>
-<span class="sourceLineNo">110</span>  /**<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   * Used to create a parameter to the HServerLoad constructor so that<a name="line.111"></a>
-<span class="sourceLineNo">112</span>   * HServerLoad can provide information about the coprocessors loaded by this<a name="line.112"></a>
-<span class="sourceLineNo">113</span>   * regionserver.<a name="line.113"></a>
-<span class="sourceLineNo">114</span>   * (HBASE-4070: Improve region server metrics to report loaded coprocessors<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   * to master).<a name="line.115"></a>
-<span class="sourceLineNo">116</span>   */<a name="line.116"></a>
-<span class="sourceLineNo">117</span>  public Set&lt;String&gt; getCoprocessors() {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    Set&lt;String&gt; returnValue = new TreeSet&lt;String&gt;();<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    for (CoprocessorEnvironment e: coprocessors) {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      returnValue.add(e.getInstance().getClass().getSimpleName());<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    return returnValue;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  }<a name="line.123"></a>
-<span class="sourceLineNo">124</span><a name="line.124"></a>
-<span class="sourceLineNo">125</span>  /**<a name="line.125"></a>
-<span class="sourceLineNo">126</span>   * Load system coprocessors once only. Read the class names from configuration.<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   * Called by constructor.<a name="line.127"></a>
-<span class="sourceLineNo">128</span>   */<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  protected void loadSystemCoprocessors(Configuration conf, String confKey) {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    boolean coprocessorsEnabled = conf.getBoolean(COPROCESSORS_ENABLED_CONF_KEY,<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      DEFAULT_COPROCESSORS_ENABLED);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    if (!coprocessorsEnabled) {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      return;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    }<a name="line.134"></a>
-<span class="sourceLineNo">135</span><a name="line.135"></a>
-<span class="sourceLineNo">136</span>    Class&lt;?&gt; implClass = null;<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>    // load default coprocessors from configure file<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    String[] defaultCPClasses = conf.getStrings(confKey);<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    if (defaultCPClasses == null || defaultCPClasses.length == 0)<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      return;<a name="line.141"></a>
-<span class="sourceLineNo">142</span><a name="line.142"></a>
-<span class="sourceLineNo">143</span>    int priority = Coprocessor.PRIORITY_SYSTEM;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    for (String className : defaultCPClasses) {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      className = className.trim();<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      if (findCoprocessor(className) != null) {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>        // If already loaded will just continue<a name="line.147"></a>
-<span class="sourceLineNo">148</span>        LOG.warn("Attempted duplicate loading of " + className + "; skipped");<a name="line.148"></a>
-<span class="sourceLineNo">149</span>        continue;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      }<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      ClassLoader cl = this.getClass().getClassLoader();<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      Thread.currentThread().setContextClassLoader(cl);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      try {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>        implClass = cl.loadClass(className);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>        // Add coprocessors as we go to guard against case where a coprocessor is specified twice<a name="line.155"></a>
-<span class="sourceLineNo">156</span>        // in the configuration<a name="line.156"></a>
-<span class="sourceLineNo">157</span>        this.coprocessors.add(loadInstance(implClass, Coprocessor.PRIORITY_SYSTEM, conf));<a name="line.157"></a>
-<span class="sourceLineNo">158</span>        LOG.info("System coprocessor " + className + " was loaded " +<a name="line.158"></a>
-<span class="sourceLineNo">159</span>            "successfully with priority (" + priority++ + ").");<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      } catch (Throwable t) {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        // We always abort if system coprocessors cannot be loaded<a name="line.161"></a>
-<span class="sourceLineNo">162</span>        abortServer(className, t);<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>  }<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>   * Load a coprocessor implementation into the host<a name="line.168"></a>
-<span class="sourceLineNo">169</span>   * @param path path to implementation jar<a name="line.169"></a>
-<span class="sourceLineNo">170</span>   * @param className the main class name<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   * @param priority chaining priority<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   * @param conf configuration for coprocessor<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   * @throws java.io.IOException Exception<a name="line.173"></a>
-<span class="sourceLineNo">174</span>   */<a name="line.174"></a>
-<span class="sourceLineNo">175</span>  public E load(Path path, String className, int priority,<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      Configuration conf) throws IOException {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    Class&lt;?&gt; implClass = null;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    LOG.debug("Loading coprocessor class " + className + " with path " +<a name="line.178"></a>
-<span class="sourceLineNo">179</span>        path + " and priority " + priority);<a name="line.179"></a>
-<span class="sourceLineNo">180</span><a name="line.180"></a>
-<span class="sourceLineNo">181</span>    ClassLoader cl = null;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    if (path == null) {<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      try {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>        implClass = getClass().getClassLoader().loadClass(className);<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      } catch (ClassNotFoundException e) {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>        throw new IOException("No jar path specified for " + className);<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      }<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    } else {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      cl = CoprocessorClassLoader.getClassLoader(<a name="line.189"></a>
-<span class="sourceLineNo">190</span>        path, getClass().getClassLoader(), pathPrefix, conf);<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      try {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>        implClass = cl.loadClass(className);<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      } catch (ClassNotFoundException e) {<a name="line.193"></a>
-<span class="sourceLineNo">194</span>        throw new IOException("Cannot load external coprocessor class " + className, e);<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      }<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    }<a name="line.196"></a>
-<span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>    //load custom code for coprocessor<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    Thread currentThread = Thread.currentThread();<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    ClassLoader hostClassLoader = currentThread.getContextClassLoader();<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    try{<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      // switch temporarily to the thread classloader for custom CP<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      currentThread.setContextClassLoader(cl);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      E cpInstance = loadInstance(implClass, priority, conf);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      return cpInstance;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    } finally {<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      // restore the fresh (host) classloader<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      currentThread.setContextClassLoader(hostClassLoader);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    }<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  }<a name="line.210"></a>
-<span class="sourceLineNo">211</span><a name="line.211"></a>
-<span class="sourceLineNo">212</span>  /**<a name="line.212"></a>
-<span class="sourceLineNo">213</span>   * @param implClass Implementation class<a name="line.213"></a>
-<span class="sourceLineNo">214</span>   * @param priority priority<a name="line.214"></a>
-<span class="sourceLineNo">215</span>   * @param conf configuration<a name="line.215"></a>
-<span class="sourceLineNo">216</span>   * @throws java.io.IOException Exception<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   */<a name="line.217"></a>
-<span class="sourceLineNo">218</span>  public void load(Class&lt;?&gt; implClass, int priority, Configuration conf)<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      throws IOException {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    E env = loadInstance(implClass, priority, conf);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    coprocessors.add(env);<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>  /**<a name="line.224"></a>
-<span class="sourceLineNo">225</span>   * @param implClass Implementation class<a name="line.225"></a>
-<span class="sourceLineNo">226</span>   * @param priority priority<a name="line.226"></a>
-<span class="sourceLineNo">227</span>   * @param conf configuration<a name="line.227"></a>
-<span class="sourceLineNo">228</span>   * @throws java.io.IOException Exception<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   */<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  public E loadInstance(Class&lt;?&gt; implClass, int priority, Configuration conf)<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      throws IOException {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    if (!Coprocessor.class.isAssignableFrom(implClass)) {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      throw new IOException("Configured class " + implClass.getName() + " must implement "<a name="line.233"></a>
-<span class="sourceLineNo">234</span>          + Coprocessor.class.getName() + " interface ");<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    }<a name="line.235"></a>
-<span class="sourceLineNo">236</span><a name="line.236"></a>
-<span class="sourceLineNo">237</span>    // create the instance<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    Coprocessor impl;<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    Object o = null;<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    try {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      o = implClass.newInstance();<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      impl = (Coprocessor)o;<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    } catch (InstantiationException e) {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      throw new IOException(e);<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    } catch (IllegalAccessException e) {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      throw new IOException(e);<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    }<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    // create the environment<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    E env = createEnvironment(implClass, impl, priority, loadSequence.incrementAndGet(), conf);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    if (env instanceof Environment) {<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      ((Environment)env).startup();<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    }<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    // HBASE-4014: maintain list of loaded coprocessors for later crash analysis<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    // if server (master or regionserver) aborts.<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    coprocessorNames.add(implClass.getName());<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    return env;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>  }<a name="line.257"></a>
-<span class="sourceLineNo">258</span><a name="line.258"></a>
-<span class="sourceLineNo">259</span>  /**<a name="line.259"></a>
-<span class="sourceLineNo">260</span>   * Called when a new Coprocessor class is loaded<a name="line.260"></a>
-<span class="sourceLineNo">261</span>   */<a name="line.261"></a>
-<span class="sourceLineNo">262</span>  public abstract E createEnvironment(Class&lt;?&gt; implClass, Coprocessor instance,<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      int priority, int sequence, Configuration conf);<a name="line.263"></a>
-<span class="sourceLineNo">264</span><a name="line.264"></a>
-<span class="sourceLineNo">265</span>  public void shutdown(CoprocessorEnvironment e) {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    if (e instanceof Environment) {<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      if (LOG.isDebugEnabled()) {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>        LOG.debug("Stop coprocessor " + e.getInstance().getClass().getName());<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      }<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      ((Environment)e).shutdown();<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    } else {<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      LOG.warn("Shutdown called on unknown environment: "+<a name="line.272"></a>
-<span class="sourceLineNo">273</span>          e.getClass().getName());<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    }<a name="line.274"></a>
-<span class="sourceLineNo">275</span>  }<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>  /**<a name="line.277"></a>
-<span class="sourceLineNo">278</span>   * Find a coprocessor implementation by class name<a name="line.278"></a>
-<span class="sourceLineNo">279</span>   * @param className the class name<a name="line.279"></a>
-<span class="sourceLineNo">280</span>   * @return the coprocessor, or null if not found<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   */<a name="line.281"></a>
-<span class="sourceLineNo">282</span>  public Coprocessor findCoprocessor(String className) {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    for (E env: coprocessors) {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      if (env.getInstance().getClass().getName().equals(className) ||<a name="line.284"></a>
-<span class="sourceLineNo">285</span>          env.getInstance().getClass().getSimpleName().equals(className)) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>        return env.getInstance();<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>    return null;<a name="line.289"></a>
-<span class="sourceLineNo">290</span>  }<a name="line.290"></a>
-<span class="sourceLineNo">291</span><a name="line.291"></a>
-<span class="sourceLineNo">292</span>  /**<a name="line.292"></a>
-<span class="sourceLineNo">293</span>   * Find list of coprocessors that extend/implement the given class/interface<a name="line.293"></a>
-<span class="sourceLineNo">294</span>   * @param cls the class/interface to look for<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   * @return the list of coprocessors, or null if not found<a name="line.295"></a>
-<span class="sourceLineNo">296</span>   */<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  public &lt;T extends Coprocessor&gt; List&lt;T&gt; findCoprocessors(Class&lt;T&gt; cls) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    ArrayList&lt;T&gt; ret = new ArrayList&lt;T&gt;();<a name="line.298"></a>
-<span class="sourceLineNo">299</span><a name="line.299"></a>
-<span class="sourceLineNo">300</span>    for (E env: coprocessors) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      Coprocessor cp = env.getInstance();<a name="line.301"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>  public static Set&lt;String&gt; getLoadedCoprocessors() {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    synchronized (coprocessorNames) {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      return new HashSet(coprocessorNames);<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    }<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  }<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>  /**<a name="line.113"></a>
+<span class="sourceLineNo">114</span>   * Used to create a parameter to the HServerLoad constructor so that<a name="line.114"></a>
+<span class="sourceLineNo">115</span>   * HServerLoad can provide information about the coprocessors loaded by this<a name="line.115"></a>
+<span class="sourceLineNo">116</span>   * regionserver.<a name="line.116"></a>
+<span class="sourceLineNo">117</span>   * (HBASE-4070: Improve region server metrics to report loaded coprocessors<a name="line.117"></a>
+<span class="sourceLineNo">118</span>   * to master).<a name="line.118"></a>
+<span class="sourceLineNo">119</span>   */<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  public Set&lt;String&gt; getCoprocessors() {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    Set&lt;String&gt; returnValue = new TreeSet&lt;String&gt;();<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    for (CoprocessorEnvironment e: coprocessors) {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      returnValue.add(e.getInstance().getClass().getSimpleName());<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    }<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    return returnValue;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>  }<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>  /**<a name="line.128"></a>
+<span class="sourceLineNo">129</span>   * Load system coprocessors once only. Read the class names from configuration.<a name="line.129"></a>
+<span class="sourceLineNo">130</span>   * Called by constructor.<a name="line.130"></a>
+<span class="sourceLineNo">131</span>   */<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  protected void loadSystemCoprocessors(Configuration conf, String confKey) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    boolean coprocessorsEnabled = conf.getBoolean(COPROCESSORS_ENABLED_CONF_KEY,<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      DEFAULT_COPROCESSORS_ENABLED);<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    if (!coprocessorsEnabled) {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      return;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    }<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>    Class&lt;?&gt; implClass = null;<a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>    // load default coprocessors from configure file<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    String[] defaultCPClasses = conf.getStrings(confKey);<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    if (defaultCPClasses == null || defaultCPClasses.length == 0)<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      return;<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>    int priority = Coprocessor.PRIORITY_SYSTEM;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    for (String className : defaultCPClasses) {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      className = className.trim();<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      if (findCoprocessor(className) != null) {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>        // If already loaded will just continue<a name="line.150"></a>
+<span class="sourceLineNo">151</span>        LOG.warn("Attempted duplicate loading of " + className + "; skipped");<a name="line.151"></a>
+<span class="sourceLineNo">152</span>        continue;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      }<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      ClassLoader cl = this.getClass().getClassLoader();<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      Thread.currentThread().setContextClassLoader(cl);<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      try {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>        implClass = cl.loadClass(className);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>        // Add coprocessors as we go to guard against case where a coprocessor is specified twice<a name="line.158"></a>
+<span class="sourceLineNo">159</span>        // in the configuration<a name="line.159"></a>
+<span class="sourceLineNo">160</span>        this.coprocessors.add(loadInstance(implClass, Coprocessor.PRIORITY_SYSTEM, conf));<a name="line.160"></a>
+<span class="sourceLineNo">161</span>        LOG.info("System coprocessor " + className + " was loaded " +<a name="line.161"></a>
+<span class="sourceLineNo">162</span>            "successfully with priority (" + priority++ + ").");<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      } catch (Throwable t) {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        // We always abort if system coprocessors cannot be loaded<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        abortServer(className, t);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      }<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    }<a name="line.167"></a>
+<span class="sourceLineNo">168</span>  }<a name="line.168"></a>
+<span class="sourceLineNo">169</span><a name="line.169"></a>
+<span class="sourceLineNo">170</span>  /**<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   * Load a coprocessor implementation into the host<a name="line.171"></a>
+<span class="sourceLineNo">172</span>   * @param path path to implementation jar<a name="line.172"></a>
+<span class="sourceLineNo">173</span>   * @param className the main class name<a name="line.173"></a>
+<span class="sourceLineNo">174</span>   * @param priority chaining priority<a name="line.174"></a>
+<span class="sourceLineNo">175</span>   * @param conf configuration for coprocessor<a name="line.175"></a>
+<span class="sourceLineNo">176</span>   * @throws java.io.IOException Exception<a name="line.176"></a>
+<span class="sourceLineNo">177</span>   */<a name="line.177"></a>
+<span class="sourceLineNo">178</span>  public E load(Path path, String className, int priority,<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      Configuration conf) throws IOException {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    Class&lt;?&gt; implClass = null;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    LOG.debug("Loading coprocessor class " + className + " with path " +<a name="line.181"></a>
+<span class="sourceLineNo">182</span>        path + " and priority " + priority);<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span>    ClassLoader cl = null;<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    if (path == null) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      try {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>        implClass = getClass().getClassLoader().loadClass(className);<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      } catch (ClassNotFoundException e) {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>        throw new IOException("No jar path specified for " + className);<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      }<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    } else {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      cl = CoprocessorClassLoader.getClassLoader(<a name="line.192"></a>
+<span class="sourceLineNo">193</span>        path, getClass().getClassLoader(), pathPrefix, conf);<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      try {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>        implClass = cl.loadClass(className);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      } catch (ClassNotFoundException e) {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>        throw new IOException("Cannot load external coprocessor class " + className, e);<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><a name="line.200"></a>
+<span class="sourceLineNo">201</span>    //load custom code for coprocessor<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    Thread currentThread = Thread.currentThread();<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    ClassLoader hostClassLoader = currentThread.getContextClassLoader();<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    try{<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      // switch temporarily to the thread classloader for custom CP<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      currentThread.setContextClassLoader(cl);<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      E cpInstance = loadInstance(implClass, priority, conf);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      return cpInstance;<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    } finally {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      // restore the fresh (host) classloader<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      currentThread.setContextClassLoader(hostClassLoader);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    }<a name="line.212"></a>
+<span class="sourceLineNo">213</span>  }<a name="line.213"></a>
+<span class="sourceLineNo">214</span><a name="line.214"></a>
+<span class="sourceLineNo">215</span>  /**<a name="line.215"></a>
+<span class="sourceLineNo">216</span>   * @param implClass Implementation class<a name="line.216"></a>
+<span class="sourceLineNo">217</span>   * @param priority priority<a name="line.217"></a>
+<span class="sourceLineNo">218</span>   * @param conf configuration<a name="line.218"></a>
+<span class="sourceLineNo">219</span>   * @throws java.io.IOException Exception<a name="line.219"></a>
+<span class="sourceLineNo">220</span>   */<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  public void load(Class&lt;?&gt; implClass, int priority, Configuration conf)<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      throws IOException {<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    E env = loadInstance(implClass, priority, conf);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    coprocessors.add(env);<a name="line.224"></a>
+<span class="sourceLineNo">225</span>  }<a name="line.225"></a>
+<span class="sourceLineNo">226</span><a name="line.226"></a>
+<span class="sourceLineNo">227</span>  /**<a name="line.227"></a>
+<span class="sourceLineNo">228</span>   * @param implClass Implementation class<a name="line.228"></a>
+<span class="sourceLineNo">229</span>   * @param priority priority<a name="line.229"></a>
+<span class="sourceLineNo">230</span>   * @param conf configuration<a name="line.230"></a>
+<span class="sourceLineNo">231</span>   * @throws java.io.IOException Exception<a name="line.231"></a>
+<span class="sourceLineNo">232</span>   */<a name="line.232"></a>
+<span class="sourceLineNo">233</span>  public E loadInstance(Class&lt;?&gt; implClass, int priority, Configuration conf)<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      throws IOException {<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    if (!Coprocessor.class.isAssignableFrom(implClass)) {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      throw new IOException("Configured class " + implClass.getName() + " must implement "<a name="line.236"></a>
+<span class="sourceLineNo">237</span>          + Coprocessor.class.getName() + " interface ");<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>    // create the instance<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    Coprocessor impl;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    Object o = null;<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    try {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      o = implClass.newInstance();<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      impl = (Coprocessor)o;<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    } catch (InstantiationException e) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      throw new IOException(e);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    } catch (IllegalAccessException e) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      throw new IOException(e);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    }<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    // create the environment<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    E env = createEnvironment(implClass, impl, priority, loadSequence.incrementAndGet(), conf);<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    if (env instanceof Environment) {<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      ((Environment)env).startup();<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    // HBASE-4014: maintain list of loaded coprocessors for later crash analysis<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    // if server (master or regionserver) aborts.<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    coprocessorNames.add(implClass.getName());<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    return env;<a name="line.259"></a>
+<span class="sourceLineNo">260</span>  }<a name="line.260"></a>
+<span class="sourceLineNo">261</span><a name="line.261"></a>
+<span class="sourceLineNo">262</span>  /**<a name="line.262"></a>
+<span class="sourceLineNo">263</span>   * Called when a new Coprocessor class is loaded<a name="line.263"></a>
+<span class="sourceLineNo">264</span>   */<a name="line.264"></a>
+<span class="sourceLineNo">265</span>  public abstract E createEnvironment(Class&lt;?&gt; implClass, Coprocessor instance,<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      int priority, int sequence, Configuration conf);<a name="line.266"></a>
+<span class="sourceLineNo">267</span><a name="line.267"></a>
+<span class="sourceLineNo">268</span>  public void shutdown(CoprocessorEnvironment e) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    if (e instanceof Environment) {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      if (LOG.isDebugEnabled()) {<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        LOG.debug("Stop coprocessor " + e.getInstance().getClass().getName());<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      }<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      ((Environment)e).shutdown();<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    } else {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      LOG.warn("Shutdown called on unknown environment: "+<a name="line.275"></a>
+<span class="sourceLineNo">276</span>          e.getClass().getName());<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    }<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  }<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>  /**<a name="line.280"></a>
+<span class="sourceLineNo">281</span>   * Find a coprocessor implementation by class name<a name="line.281"></a>
+<span class="sourceLineNo">282</span>   * @param className the class name<a name="line.282"></a>
+<span class="sourceLineNo">283</span>   * @return the coprocessor, or null if not found<a name="line.283"></a>
+<span class="sourceLineNo">284</span>   */<a name="line.284"></a>
+<span class="sourceLineNo">285</span>  public Coprocessor findCoprocessor(String className) {<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    for (E env: coprocessors) {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      if (env.getInstance().getClass().getName().equals(className) ||<a name="line.287"></a>
+<span class="sourceLineNo">288</span>          env.getInstance().getClass().getSimpleName().equals(className)) {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>        return env.getInstance();<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      }<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    }<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    return null;<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  }<a name="line.293"></a>
+<span class="sourceLineNo">294</span><a name="line.294"></a>
+<span class="sourceLineNo">295</span>  /**<a name="line.295"></a>
+<span class="sourceLineNo">296</span>   * Find list of coprocessors that extend/implement the given class/interface<a name="line.296"></a>
+<span class="sourceLineNo">297</span>   * @param cls the class/interface to look for<a name="line.297"></a>
+<span class="sourceLineNo">298</span>   * @return the list of coprocessors, or null if not found<a name="line.298"></a>
+<span class="sourceLineNo">299</span>   */<a name="line.299"></a>
+<span class="sourceLineNo">300</span>  public &lt;T extends Coprocessor&gt; List&lt;T&gt; findCoprocessors(Class&lt;T&gt; cls) {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    ArrayList&lt;T&gt; ret = new ArrayList&lt;T&gt;();<a name="line.301"></a>
 <span class="sourceLineNo">302</span><a name="line.302"></a>
-<span class="sourceLineNo">303</span>      if(cp != null) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        if (cls.isAssignableFrom(cp.getClass())) {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>          ret.add((T)cp);<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>    return ret;<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  }<a name="line.310"></a>
-<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span>  /**<a name="line.312"></a>
-<span class="sourceLineNo">313</span>   * Find a coprocessor environment by class name<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   * @param className the class name<a name="line.314"></a>
-<span class="sourceLineNo">315</span>   * @return the coprocessor, or null if not found<a name="line.315"></a>
-<span class="sourceLineNo">316</span>   */<a name="line.316"></a>
-<span class="sourceLineNo">317</span>  public CoprocessorEnvironment findCoprocessorEnvironment(String className) {<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    for (E env: coprocessors) {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      if (env.getInstance().getClass().getName().equals(className) ||<a name="line.319"></a>
-<span class="sourceLineNo">320</span>          env.getInstance().getClass().getSimpleName().equals(className)) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>        return env;<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      }<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    }<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    return null;<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  }<a name="line.325"></a>
-<span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>  /**<a name="line.327"></a>
-<span class="sourceLineNo">328</span>   * Retrieves the set of classloaders used to instantiate Coprocessor classes defined in external<a name="line.328"></a>
-<span class="sourceLineNo">329</span>   * jar files.<a name="line.329"></a>
-<span class="sourceLineNo">330</span>   * @return A set of ClassLoader instances<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   */<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  Set&lt;ClassLoader&gt; getExternalClassLoaders() {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    Set&lt;ClassLoader&gt; externalClassLoaders = new HashSet&lt;ClassLoader&gt;();<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    final ClassLoader systemClassLoader = this.getClass().getClassLoader();<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    for (E env : coprocessors) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>      ClassLoader cl = env.getInstance().getClass().getClassLoader();<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      if (cl != systemClassLoader){<a name="line.337"></a>
-<span class="sourceLineNo">338</span>        //do not include system classloader<a name="line.338"></a>
-<span class="sourceLineNo">339</span>        externalClassLoaders.add(cl);<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      }<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    }<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    return externalClassLoaders;<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  }<a name="line.343"></a>
-<span class="sourceLineNo">344</span><a name="line.344"></a>
-<span class="sourceLineNo">345</span>  /**<a name="line.345"></a>
-<span class="sourceLineNo">346</span>   * Environment priority comparator.<a name="line.346"></a>
-<span class="sourceLineNo">347</span>   * Coprocessors are chained in sorted order.<a name="line.347"></a>
-<span class="sourceLineNo">348</span>   */<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  static class EnvironmentPriorityComparator<a name="line.349"></a>
-<span class="sourceLineNo">350</span>      implements Comparator&lt;CoprocessorEnvironment&gt; {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    public int compare(final CoprocessorEnvironment env1,<a name="line.351"></a>
-<span class="sourceLineNo">352</span>        final CoprocessorEnvironment env2) {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      if (env1.getPriority() &lt; env2.getPriority()) {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>        return -1;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      } else if (env1.getPriority() &gt; env2.getPriority()) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>        return 1;<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      }<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      if (env1.getLoadSequence() &lt; env2.getLoadSequence()) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>        return -1;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      } else if (env1.getLoadSequence() &gt; env2.getLoadSequence()) {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>        return 1;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      }<a name="line.362"></a>
-<span class="sourceLineNo">363</span>      return 0;<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    }<a name="line.364"></a>
-<span class="sourceLineNo">365</span>  }<a name="line.365"></a>
-<span class="sourceLineNo">366</span><a name="line.366"></a>
-<span class="sourceLineNo">367</span>  /**<a name="line.367"></a>
-<span class="sourceLineNo">368</span>   * Encapsulation of the environment of each coprocessor<a name="line.368"></a>
-<span class="sourceLineNo">369</span>   */<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  public static class Environment implements CoprocessorEnvironment {<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span>    /** The coprocessor */<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    public Coprocessor impl;<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    /** Chaining priority */<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    protected int priority = Coprocessor.PRIORITY_USER;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    /** Current coprocessor state */<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    Coprocessor.State state = Coprocessor.State.UNINSTALLED;<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    /** Accounting for tables opened by the coprocessor */<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    protected List&lt;Table&gt; openTables =<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      Collections.synchronizedList(new ArrayList&lt;Table&gt;());<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    private int seq;<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    private Configuration conf;<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    private ClassLoader classLoader;<a name="line.383"></a>
-<span class="sourceLineNo">384</span><a name="line.384"></a>
-<span class="sourceLineNo">385</span>    /**<a name="line.385"></a>
-<span class="sourceLineNo">386</span>     * Constructor<a name="line.386"></a>
-<span class="sourceLineNo">387</span>     * @param impl the coprocessor instance<a name="line.387"></a>
-<span class="sourceLineNo">388</span>     * @param priority chaining priority<a name="line.388"></a>
-<span class="sourceLineNo">389</span>     */<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    public Environment(final Coprocessor impl, final int priority,<a name="line.390"></a>
-<span class="sourceLineNo">391</span>        final int seq, final Configuration conf) {<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      this.impl = impl;<a name="line.392"></a>
-<span class="sourceLineNo">393</span>      this.classLoader = impl.getClass().getClassLoader();<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      this.priority = priority;<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      this.state = Coprocessor.State.INSTALLED;<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      this.seq = seq;<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      this.conf = conf;<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    }<a name="line.398"></a>
-<span class="sourceLineNo">399</span><a name="line.399"></a>
-<span class="sourceLineNo">400</span>    /** Initialize the environment */<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    public void startup() throws IOException {<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      if (state == Coprocessor.State.INSTALLED ||<a name="line.402"></a>
-<span class="sourceLineNo">403</span>          state == Coprocessor.State.STOPPED) {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>        state = Coprocessor.State.STARTING;<a name="line.404"></a>
-<span class="sourceLineNo">405</span>        Thread currentThread = Thread.currentThread();<a name="line.405"></a>
-<span class="sourceLineNo">406</span>        ClassLoader hostClassLoader = currentThread.getContextClassLoader();<a name="line.406"></a>
-<span class="sourceLineNo">407</span>        try {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>          currentThread.setContextClassLoader(this.getClassLoader());<a name="line.408"></a>
-<span class="sourceLineNo">409</span>          impl.start(this);<a name="line.409"></a>
-<span class="sourceLineNo">410</span>          state = Coprocessor.State.ACTIVE;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>        } finally {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>          currentThread.setContextClassLoader(hostClassLoader);<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        }<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      } else {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>        LOG.warn("Not starting coprocessor "+impl.getClass().getName()+<a name="line.415"></a>
-<span class="sourceLineNo">416</span>            " because not inactive (state="+state.toString()+")");<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      }<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    }<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>    /** Clean up the environment */<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    protected void shutdown() {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      if (state == Coprocessor.State.ACTIVE) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>        state = Coprocessor.State.STOPPING;<a name="line.423"></a>
-<span class="sourceLineNo">424</span>        Thread currentThread = Thread.currentThread();<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        ClassLoader hostClassLoader = currentThread.getContextClassLoader();<a name="line.425"></a>
-<span class="sourceLineNo">426</span>        try {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>          currentThread.setContextClassLoader(this.getClassLoader());<a name="line.427"></a>
-<span class="sourceLineNo">428</span>          impl.stop(this);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>          state = Coprocessor.State.STOPPED;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        } catch (IOException ioe) {<a name="line.430"></a>
-<span class="sourceLineNo">431</span>          LOG.error("Error stopping coprocessor "+impl.getClass().getName(), ioe);<a name="line.431"></a>
-<span class="sourceLineNo">432</span>        } finally {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          currentThread.setContextClassLoader(hostClassLoader);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>        }<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      } else {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>        LOG.warn("Not stopping coprocessor "+impl.getClass().getName()+<a name="line.436"></a>
-<span class="sourceLineNo">437</span>            " because not active (state="+state.toString()+")");<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      }<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      // clean up any table references<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      for (Table table: openTables) {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>        try {<a name="line.441"></a>
-<span class="sourceLineNo">442</span>          ((HTableWrapper)table).internalClose();<a name="line.442"></a>
-<span class="sourceLineNo">443</span>        } catch (IOException e) {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>          // nothing can be done here<a name="line.444"></a>
-<span class="sourceLineNo">445</span>          LOG.warn("Failed to close " +<a name="line.445"></a>
-<span class="sourceLineNo">446</span>              table.getName(), e);<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        }<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      }<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    }<a name="line.449"></a>
-<span class="sourceLineNo">450</span><a name="line.450"></a>
-<span class="sourceLineNo">451</span>    @Override<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    public Coprocessor getInstance() {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      return impl;<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
-<span class="sourceLineNo">455</span><a name="line.455"></a>
-<span class="sourceLineNo">456</span>    @Override<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    public ClassLoader getClassLoader() {<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      return classLoader;<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    }<a name="line.459"></a>
-<span class="sourceLineNo">460</span><a name="line.460"></a>
-<span class="sourceLineNo">461</span>    @Override<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    public int getPriority() {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      return priority;<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    }<a name="line.464"></a>
-<span class="sourceLineNo">465</span><a name="line.465"></a>
-<span class="sourceLineNo">466</span>    @Override<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    public int getLoadSequence() {<a name="line.467"></a>
-<span class="sourceLineNo">468</span>      return seq;<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    }<a name="line.469"></a>
-<span class="sourceLineNo">470</span><a name="line.470"></a>
-<span class="sourceLineNo">471</span>    /** @return the coprocessor environment version */<a name="line.471"></a>
+<span class="sourceLineNo">303</span>    for (E env: coprocessors) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      Coprocessor cp = env.getInstance();<a name="line.304"></a>
+<span class="sourceLineNo">305</span><a name="line.305"></a>
+<span class="sourceLineNo">306</span>      if(cp != null) {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>        if (cls.isAssignableFrom(cp.getClass())) {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>          ret.add((T)cp);<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>    return ret;<a name="line.312"></a>
+<span class="sourceLineNo">313</span>  }<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>  /**<a name="line.315"></a>
+<span class="sourceLineNo">316</span>   * Find a coprocessor environment by class name<a name="line.316"></a>
+<span class="sourceLineNo">317</span>   * @param className the class name<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   * @return the coprocessor, or null if not found<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   */<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  public CoprocessorEnvironment findCoprocessorEnvironment(String className) {<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    for (E env: coprocessors) {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      if (env.getInstance().getClass().getName().equals(className) ||<a name="line.322"></a>
+<span class="sourceLineNo">323</span>          env.getInstance().getClass().getSimpleName().equals(className)) {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>        return env;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      }<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    }<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    return null;<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  }<a name="line.328"></a>
+<span class="sourceLineNo">329</span><a name="line.329"></a>
+<span class="sourceLineNo">330</span>  /**<a name="line.330"></a>
+<span class="sourceLineNo">331</span>   * Retrieves the set of classloaders used to instantiate Coprocessor classes defined in external<a name="line.331"></a>
+<span class="sourceLineNo">332</span>   * jar files.<a name="line.332"></a>
+<span class="sourceLineNo">333</span>   * @return A set of ClassLoader instances<a name="line.333"></a>
+<span class="sourceLineNo">334</span>   */<a name="line.334"></a>
+<span class="sourceLineNo">335</span>  Set&lt;ClassLoader&gt; getExternalClassLoaders() {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    Set&lt;ClassLoader&gt; externalClassLoaders = new HashSet&lt;ClassLoader&gt;();<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    final ClassLoader systemClassLoader = this.getClass().getClassLoader();<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    for (E env : coprocessors) {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      ClassLoader cl = env.getInstance().getClass().getClassLoader();<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      if (cl != systemClassLoader){<a name="line.340"></a>
+<span class="sourceLineNo">341</span>        //do not include system classloader<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        externalClassLoaders.add(cl);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>      }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    }<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    return externalClassLoaders;<a name="line.345"></a>
+<span class="sourceLineNo">346</span>  }<a name="line.346"></a>
+<span class="sourceLineNo">347</span><a name="line.347"></a>
+<span class="sourceLineNo">348</span>  /**<a name="line.348"></a>
+<span class="sourceLineNo">349</span>   * Environment priority comparator.<a name="line.349"></a>
+<span class="sourceLineNo">350</span>   * Coprocessors are chained in sorted order.<a name="line.350"></a>
+<span class="sourceLineNo">351</span>   */<a name="line.351"></a>
+<span class="sourceLineNo">352</span>  static class EnvironmentPriorityComparator<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      implements Comparator&lt;CoprocessorEnvironment&gt; {<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    @Override<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    public int compare(final CoprocessorEnvironment env1,<a name="line.355"></a>
+<span class="sourceLineNo">356</span>        final CoprocessorEnvironment env2) {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>      if (env1.getPriority() &lt; env2.getPriority()) {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>        return -1;<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      } else if (env1.getPriority() &gt; env2.getPriority()) {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>        return 1;<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      }<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      if (env1.getLoadSequence() &lt; env2.getLoadSequence()) {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>        return -1;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      } else if (env1.getLoadSequence() &gt; env2.getLoadSequence()) {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>        return 1;<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      }<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      return 0;<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    }<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  }<a name="line.369"></a>
+<span class="sourceLineNo">370</span><a name="line.370"></a>
+<span class="sourceLineNo">371</span>  /**<a name="line.371"></a>
+<span class="sourceLineNo">372</span>   * Encapsulation of the environment of each coprocessor<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   */<a name="line.373"></a>
+<span class="sourceLineNo">374</span>  public static class Environment implements CoprocessorEnvironment {<a name="line.374"></a>
+<span class="sourceLineNo">375</span><a name="line.375"></a>
+<span class="sourceLineNo">376</span>    /** The coprocessor */<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    public Coprocessor impl;<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    /** Chaining priority */<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    protected int priority = Coprocessor.PRIORITY_USER;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    /** Current coprocessor state */<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    Coprocessor.State state = Coprocessor.State.UNINSTALLED;<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    /** Accounting for tables opened by the coprocessor */<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    protected List&lt;Table&gt; openTables =<a name="line.383"></a>
+<span class="sourceLineNo">384</span>      Collections.synchronizedList(new ArrayList&lt;Table&gt;());<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    private int seq;<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    private Configuration conf;<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    private ClassLoader classLoader;<a name="line.387"></a>
+<span class="sourceLineNo">388</span><a name="line.388"></a>
+<span class="sourceLineNo">389</span>    /**<a name="line.389"></a>
+<span class="sourceLineNo">390</span>     * Constructor<a name="line.390"></a>
+<span class="sourceLineNo">391</span>     * @param impl the coprocessor instance<a name="line.391"></a>
+<span class="sourceLineNo">392</span>     * @param priority chaining priority<a name="line.392"></a>
+<span class="sourceLineNo">393</span>     */<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    public Environment(final Coprocessor impl, final int priority,<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        final int seq, final Configuration conf) {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      this.impl = impl;<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      this.classLoader = impl.getClass().getClassLoader();<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      this.priority = priority;<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      this.state = Coprocessor.State.INSTALLED;<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      this.seq = seq;<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      this.conf = conf;<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    }<a name="line.402"></a>
+<span class="sourceLineNo">403</span><a name="line.403"></a>
+<span class="sourceLineNo">404</span>    /** Initialize the environment */<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    public void startup() throws IOException {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      if (state == Coprocessor.State.INSTALLED ||<a name="line.406"></a>
+<span class="sourceLineNo">407</span>          state == Coprocessor.State.STOPPED) {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>        state = Coprocessor.State.STARTING;<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        Thread currentThread = Thread.currentThread();<a name="line.409"></a>
+<span class="sourceLineNo">410</span>        ClassLoader hostClassLoader = currentThread.getContextClassLoader();<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        try {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>          currentThread.setContextClassLoader(this.getClassLoader());<a name="line.412"></a>
+<span class="sourceLineNo">413</span>          impl.start(this);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>          state = Coprocessor.State.ACTIVE;<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        } finally {<a name="line.415"></a>
+<span class="sourceLineNo">416</span>          currentThread.setContextClassLoader(hostClassLoader);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        }<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      } else {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>        LOG.warn("Not starting coprocessor "+impl.getClass().getName()+<a name="line.419"></a>
+<span class="sourceLineNo">420</span>            " because not inactive (state="+state.toString()+")");<a name="line.420"></a>
+<span class="sourceLineNo">421</span>      }<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    }<a name="line.422"></a>
+<span class="sourceLineNo">423</span><a name="line.423"></a>
+<span class="sourceLineNo">424</span>    /** Clean up the environment */<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    protected void shutdown() {<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      if (state == Coprocessor.State.ACTIVE) {<a name="line.426"></a>
+<span class="sourceLineNo">427</span>        state = Coprocessor.State.STOPPING;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>        Thread currentThread = Thread.currentThread();<a name="line.428"></a>
+<span class="sourceLineNo">429</span>        ClassLoader hostClassLoader = currentThread.getContextClassLoader();<a name="line.429"></a>
+<span class="sourceLineNo">430</span>        try {<a name="line.430"></a>
+<span class="sourceLineNo">431</span>          currentThread.setContextClassLoader(this.getClassLoader());<a name="line.431"></a>
+<span class="sourceLineNo">432</span>          impl.stop(this);<a name="line.432"></a>
+<span class="sourceLineNo">433</span>          state = Coprocessor.State.STOPPED;<a name="line.433"></a>
+<span class="sourceLineNo">434</span>        } catch (IOException ioe) {<a name="line.434"></a>
+<span class="sourceLineNo">435</span>          LOG.error("Error stopping coprocessor "+impl.getClass().getName(), ioe);<a name="line.435"></a>
+<span class="sourceLineNo">436</span>        } finally {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>          currentThread.setContextClassLoader(hostClassLoader);<a name="line.437"></a>
+<span class="sourceLineNo">438</span>        }<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      } else {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>        LOG.warn("Not stopping coprocessor "+impl.getClass().getName()+<a name="line.440"></a>
+<span class="sourceLineNo">441</span>            " because not active (state="+state.toString()+")");<a name="line.441"></a>
+<span class="sourceLineNo">442</span>      }<a name="line.442"></a>
+<span class="sourceLineNo">443</span>      synchronized (openTables) {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>        // clean up any table references<a name="line.444"></a>
+<span class="sourceLineNo">445</span>        for (Table table: openTables) {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>          try {<a name="line.446"></a>
+<span class="sourceLineNo">447</span>            ((HTableWrapper)table).internalClose();<a name="line.447"></a>
+<span class="sourceLineNo">448</span>          } catch (IOException e) {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>            // nothing can be done here<a name="line.449"></a>
+<span class="sourceLineNo">450</span>            LOG.warn("Failed to close " +<a name="line.450"></a>
+<span class="sourceLineNo">451</span>                table.getName(), e);<a name="line.451"></a>
+<span class="sourceLineNo">452</span>          }<a name="line.452"></a>
+<span class="sourceLineNo">453</span>        }<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      }<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    }<a name="line.455"></a>
+<span class="sourceLineNo">456</span><a name="line.456"></a>
+<span class="sourceLineNo">457</span>    @Override<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    public Coprocessor getInstance() {<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      return impl;<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    }<a name="line.460"></a>
+<span class="sourceLineNo">461</span><a name="line.461"></a>
+<span class="sourceLineNo">462</span>    @Override<a name="line.462"></a>
+<span class="sourceLineNo">463</span>    public ClassLoader getClassLoader() {<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      return classLoader;<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    }<a name="line.465"></a>
+<span class="sourceLineNo">466</span><a name="line.466"></a>
+<span class="sourceLineNo">467</span>    @Override<a name="line.467"></a>
+<span class="sourceLineNo">468</span>    public int getPriority() {<a name="line.468"></a>
+<span class="sourceLineNo">469</span>      return priority;<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    }<a name="line.470"></a>
+<span class="sourceLineNo">471</span><a name="line.471"></a>
 <span class="sourceLineNo">472</span>    @Override<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    public int getVersion() {<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      return Coprocessor.VERSION;<a name="line.474"></a>
+<span class="sourceLineNo">473</span>    public int getLoadSequence() {<a name="line.473"></a>
+<span class="sourceLineNo">474</span>      return seq;<a name="line.474"></a>
 <span class="sourceLineNo">475</span>    }<a name="line.475"></a>
 <span class="sourceLineNo">476</span><a name="line.476"></a>
-<span class="sourceLineNo">477</span>    /** @return the HBase release */<a name="line.477"></a>
+<span class="sourceLineNo">477</span>    /** @return the coprocessor environment version */<a name="line.477"></a>
 <span class="sourceLineNo">478</span>    @Override<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    public String getHBaseVersion() {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>      return VersionInfo.getVersion();<a name="line.480"></a>
+<span class="sourceLineNo">479</span>    public int getVersion() {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>      return Coprocessor.VERSION;<a name="line.480"></a>
 <span class="sourceLineNo">481</span>    }<a name="line.481"></a>
 <span class="sourceLineNo">482</span><a name="line.482"></a>
-<span class="sourceLineNo">483</span>    @Override<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    public Configuration getConfiguration() {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      return conf;<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    }<a name="line.486"></a>
-<span class="sourceLineNo">487</span><a name="line.487"></a>
-<span class="sourceLineNo">488</span>    /**<a name="line.488"></a>
-<span class="sourceLineNo">489</span>     * Open a table from within the Coprocessor environment<a name="line.489"></a>
-<span class="sourceLineNo">490</span>     * @param tableName the table name<a name="line.490"></a>
-<span class="sourceLineNo">491</span>     * @return an interface for manipulating the table<a name="line.491"></a>
-<span class="sourceLineNo">492</span>     * @exception java.io.IOException Exception<a name="line.492"></a>
-<span class="sourceLineNo">493</span>     */<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    @Override<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    public Table getTable(TableName tableName) throws IOException {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>      return this.getTable(tableName, HTable.getDefaultExecutor(getConfiguration()));<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    }<a name="line.497"></a>
-<span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>    /**<a name="line.499"></a>
-<span class="sourceLineNo">500</span>     * Open a table from within the Coprocessor environment<a name="line.500"></a>
-<span class="sourceLineNo">501</span>     * @param tableName the table name<a name="line.501"></a>
-<span class="sourceLineNo">502</span>     * @return an interface for manipulating the table<a name="line.502"></a>
-<span class="sourceLineNo">503</span>     * @exception java.io.IOException Exception<a name="line.503"></a>
-<span class="sourceLineNo">504</span>     */<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    @Override<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    public Table getTable(TableName tableName, ExecutorService pool) throws IOException {<a name="line.506"></a>
-<span class="sourceLineNo">507</span>      return HTableWrapper.createWrapper(openTables, tableName, this, pool);<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    }<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  }<a name="line.509"></a>
-<span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>  protected void abortServer(final CoprocessorEnvironment environment, final Throwable e) {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    abortServer(environment.getInstance().getClass().getName(), e);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>  }<a name="line.513"></a>
-<span class="sourceLineNo">514</span><a name="line.514"></a>
-<span class="sourceLineNo">515</span>  protected void abortServer(final String coprocessorName, final Throwable e) {<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    String message = "The coprocessor " + coprocessorName + " threw " + e.toString();<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    LOG.error(message, e);<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    if (abortable != null) {<a name="line.518"></a>
-<span class="sourceLineNo">519</span>      abortable.abort(message, e);<a name="line.519"></a>
-<span class="sourceLineNo">520</span>    } else {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>      LOG.warn("No available Abortable, process was not aborted");<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    }<a name="line.522"></a>
-<span class="sourceLineNo">523</span>  }<a name="line.523"></a>
-<span class="sourceLineNo">524</span><a name="line.524"></a>
-<span class="sourceLineNo">525</span>  /**<a name="line.525"></a>
-<span class="sourceLineNo">526</span>   * This is used by coprocessor hooks which are declared to throw IOException<a name="line.526"></a>
-<span class="sourceLineNo">527</span>   * (or its subtypes). For such hooks, we should handle throwable objects<a name="line.527"></a>
-<span class="sourceLineNo">528</span>   * depending on the Throwable's type. Those which are instances of<a name="line.528"></a>
-<span class="sourceLineNo">529</span>   * IOException should be passed on to the client. This is in conformance with<a name="line.529"></a>
-<span class="sourceLineNo">530</span>   * the HBase idiom regarding IOException: that it represents a circumstance<a name="line.530"></a>
-<span class="sourceLineNo">531</span>   * that should be passed along to the client for its own handling. For<a name="line.531"></a>
-<span class="sourceLineNo">532</span>   * example, a coprocessor that implements access controls would throw a<a name="line.532"></a>
-<span class="sourceLineNo">533</span>   * subclass of IOException, such as AccessDeniedException, in its preGet()<a name="line.533"></a>
-<span class="sourceLineNo">534</span>   * method to prevent an unauthorized client's performing a Get on a particular<a name="line.534"></a>
-<span class="sourceLineNo">535</span>   * table.<a name="line.535"></a>
-<span class="sourceLineNo">536</span>   * @param env Coprocessor Environment<a name="line.536"></a>
-<span class="sourceLineNo">537</span>   * @param e Throwable object thrown by coprocessor.<a name="line.537"></a>
-<span class="sourceLineNo">538</span>   * @exception IOException Exception<a name="line.538"></a>
-<span class="sourceLineNo">539</span>   */<a name="line.539"></a>
-<span class="sourceLineNo">540</span>  protected void handleCoprocessorThrowable(final CoprocessorEnvironment env, final Throwable e)<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      throws IOException {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    if (e instanceof IOException) {<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      throw (IOException)e;<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    }<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    // If we got here, e is not an IOException. A loaded coprocessor has a<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    // fatal bug, and the server (master or regionserver) should remove the<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    // faulty coprocessor from its set of active coprocessors. Setting<a name="line.547"></a>
-<span class="sourceLineNo">548</span>    // 'hbase.coprocessor.abortonerror' to true will cause abortServer(),<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    // which may be useful in development and testing environments where<a name="line.549"></a>
-<span class="sourceLineNo">550</span>    // 'failing fast' for error analysis is desired.<a name="line.550"></a>
-<span class="sourceLineNo">551</span>    if (env.getConfiguration().getBoolean(ABORT_ON_ERROR_KEY, DEFAULT_ABORT_ON_ERROR)) {<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      // server is configured to abort.<a name="line.552"></a>
-<span class="sourceLineNo">553</span>      abortServer(env, e);<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    } else {<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      LOG.error("Removing coprocessor '" + env.toString() + "' from " +<a name="line.555"></a>
-<span class="sourceLineNo">556</span>          "environment because it threw:  " + e,e);<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      coprocessors.remove(env);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      try {<a name="line.558"></a>
-<span class="sourceLineNo">559</span>        shutdown(env);<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      } catch (Exception x) {<a name="line.560"></a>
-<span class="sourceLineNo">561</span>        LOG.error("Uncaught exception when shutting down coprocessor '"<a name="line.561"></a>
-<span class="sourceLineNo">562</span>            + env.toString() + "'", x);<a name="line.562"></a>
-<span class="sourceLineNo">563</span>      }<a name="line.563"></a>
-<span class="sourceLineNo">564</span>      throw new DoNotRetryIOException("Coprocessor: '" + env.toString() +<a name="line.564"></a>
-<span class="sourceLineNo">565</span>          "' threw: '" + e + "' and has been removed from the active " +<a name="line.565"></a>
-<span class="sourceLineNo">566</span>          "coprocessor set.", e);<a name="line.566"></a>
-<span class="sourceLineNo">567</span>    }<a name="line.567"></a>
-<span class="sourceLineNo">568</span>  }<a name="line.568"></a>
-<span class="sourceLineNo">569</span><a name="line.569"></a>
-<span class="sourceLineNo">570</span>  /**<a name="line.570"></a>
-<span class="sourceLineNo">571</span>   * Used to gracefully handle fallback to deprecated methods when we<a name="line.571"></a>
-<span class="sourceLineNo">572</span>   * evolve coprocessor APIs.<a name="line.572"></a>
-<span class="sourceLineNo">573</span>   *<a name="line.573"></a>
-<span class="sourceLineNo">574</span>   * When a particular Coprocessor API is updated to change methods, hosts can support fallback<a name="line.574"></a>
-<span class="sourceLineNo">575</span>   * to the deprecated API by using this method to determine if an instance implements the new API.<a name="line.575"></a>
-<span class="sourceLineNo">576</span>   * In the event that said support is partial, then in the face of a runtime issue that prevents<a name="line.576"></a>
-<span class="sourceLineNo">577</span>   * proper operation {@link #legacyWarning(Class, String)} should be used to let operators know.<a name="line.577"></a>
-<span class="sourceLineNo">578</span>   *<a name="line.578"></a>
-<span class="sourceLineNo">579</span>   * For examples of this in action, see the implementation of<a name="line.579"></a>
-<span class="sourceLineNo">580</span>   * &lt;ul&gt;<a name="line.580"></a>
-<span class="sourceLineNo">581</span>   *   &lt;li&gt;{@link org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost}<a name="line.581"></a>
-<span class="sourceLineNo">582</span>   *   &lt;li&gt;{@link org.apache.hadoop.hbase.regionserver.wal.WALCoprocessorHost}<a name="line.582"></a>
-<span class="sourceLineNo">583</span>   * &lt;/ul&gt;<a name="line.583"></a>
+<span class="sourceLineNo">483</span>    /** @return the HBase release */<a name="line.483"></a>
+<span class="sourceLineNo">484</span>    @Override<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    public String getHBaseVersion() {<a name="line.485"></a>
+<span class="sourceLineNo">486</span>      return VersionInfo.getVersion();<a name="line.486"></a>
+<span class="sourceLineNo">487</span>    }<a name="line.487"></a>
+<span class="sourceLineNo">488</span><a name="line.488"></a>
+<span class="sourceLineNo">489</span>    @Override<a name="line.489"></a>
+<span class="sourceLineNo">490</span>    public Configuration getConfiguration() {<a name="line.490"></a>
+<span class="sourceLineNo">491</span>      return conf;<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    }<a name="line.492"></a>
+<span class="sourceLineNo">493</span><a name="line.493"></a>
+<span class="sourceLineNo">494</span>    /**<a name="line.494"></a>
+<span class="sourceLineNo">495</span>     * Open a table from within the Coprocessor environment<a name="line.495"></a>
+<span class="sourceLineNo">496</span>     * @param tableName the table name<a name="line.496"></a>
+<span class="sourceLineNo">497</span>     * @return an interface for manipulating the table<a name="line.497"></a>
+<span class="sourceLineNo">498</span>     * @exception java.io.IOException Exception<a name="line.498"></a>
+<span class="sourceLineNo">499</span>     */<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    @Override<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    public Table getTable(TableName tableName) throws IOException {<a name="line.501"></a>
+<span class="sourceLineNo">502</span>      return this.getTable(tableName, HTable.getDefaultExecutor(getConfiguration()));<a name="line.502"></a>
+<span class="sourceLineNo">503</span>    }<a name="line.503"></a>
+<span class="sourceLineNo">504</span><a name="line.504"></a>
+<span class="sourceLineNo">505</span>    /**<a name="line.505"></a>
+<span class="sourceLineNo">506</span>     * Open a table from within the Coprocessor environment<a name="line.506"></a>
+<span class="sourceLineNo">507</span>     * @param tableName the table name<a name="line.507"></a>
+<span class="sourceLineNo">508</span>     * @return an interface for manipulating the table<a name="line.508"></a>
+<span class="sourceLineNo">509</span>     * @exception java.io.IOException Exception<a name="line.509"></a>
+<span class="sourceLineNo">510</span>     */<a name="line.510"></a>
+<span class="sourceLineNo">511</span>    @Override<a name="line.511"></a>
+<span class="sourceLineNo">512</span>    public Table getTable(TableName tableName, ExecutorService pool) throws IOException {<a name="line.512"></a>
+<span class="sourceLineNo">513</span>      return HTableWrapper.createWrapper(openTables, tableName, this, pool);<a name="line.513"></a>
+<span class="sourceLineNo">514</span>    }<a name="line.514"></a>
+<span class="sourceLineNo">515</span>  }<a name="line.515"></a>
+<span class="sourceLineNo">516</span><a name="line.516"></a>
+<span class="sourceLineNo">517</span>  protected void abortServer(final CoprocessorEnvironment environment, final Throwable e) {<a name="line.517"></a>
+<span class="sourceLineNo">518</span>    abortServer(environment.getInstance().getClass().getName(), e);<a name="line.518"></a>
+<span class="sourceLineNo">519</span>  }<a name="line.519"></a>
+<span class="sourceLineNo">520</span><a name="line.520"></a>
+<span class="sourceLineNo">521</span>  protected void abortServer(final String coprocessorName, final Throwable e) {<a name="line.521"></a>
+<span class="sourceLineNo">522</span>    String message = "The coprocessor " + coprocessorName + " threw " + e.toString();<a name="line.522"></a>
+<span class="sourceLineNo">523</span>    LOG.error(message, e);<a name="line.523"></a>
+<span class="sourceLineNo">524</span>    if (abortable != null) {<a name="line.524"></a>
+<span class="sourceLineNo">525</span>      abortable.abort(message, e);<a name="line.525"></a>
+<span class="sourceLineNo">526</span>    } else {<a name="line.526"></a>
+<span class="sourceLineNo">527</span>      LOG.warn("No available Abortable, process was not aborted");<a name="line.527"></a>
+<span class="sourceLineNo">528</span>    }<a name="line.528"></a>
+<span class="sourceLineNo">529</span>  }<a name="line.529"></a>
+<span class="sourceLineNo">530</span><a name="line.530"></a>
+<span class="sourceLineNo">531</span>  /**<a name="line.531"></a>
+<span class="sourceLineNo">532</span>   * This is used by coprocessor hooks which are declared to throw IOException<a name="line.532"></a>
+<span class="sourceLineNo">533</span>   * (or its subtypes). For such hooks, we should handle throwable objects<a name="line.533"></a>
+<span class="sourceLineNo">534</span>   * depending on the Throwable's type. Those which are instances of<a name="line.534"></a>
+<span class="sourceLineNo">535</span>   * IOException should be passed on to the client. This is in conformance with<a name="line.535"></a>
+<span class="sourceLineNo">536</span>   * the HBase idiom regarding IOException: that it represents a circumstance<a name="line.536"></a>
+<span class="sourceLineNo">537</span>   * that should be passed along to the client for its own handling. For<a name="line.537"></a>
+<span class="sourceLineNo">538</span>   * example, a coprocessor that implements access controls would throw a<a name="line.538"></a>
+<span class="sourceLineNo">539</span>   * subclass of IOException, such as AccessDeniedException, in its preGet()<a name="line.539"></a>
+<span class="sourceLineNo">540</span>   * method to prevent an unauthorized client's performing a Get on a particular<a name="line.540"></a>
+<span class="sourceLineNo">541</span>   * table.<a name="line.541"></a>
+<span class="sourceLineNo">542</span>   * @param env Coprocessor Environment<a name="line.542"></a>
+<span class="sourceLineNo">543</span>   * @param e Throwable object thrown by coprocessor.<a name="line.543"></a>
+<span class="sourceLineNo">544</span>   * @exception IOException Exception<a name="line.544"></a>
+<span class="sourceLineNo">545</span>   */<a name="line.545"></a>
+<span class="sourceLineNo">546</span>  protected void handleCoprocessorThrowable(final CoprocessorEnvironment env, final Throwable e)<a name="line.546"></a>
+<span class="sourceLineNo">547</span>      throws IOException {<a name="line.547"></a>
+<span class="sourceLineNo">548</span>    if (e instanceof IOException) {<a name="line.548"></a>
+<span class="sourceLineNo">549</span>      throw (IOException)e;<a name="line.549"></a>
+<span class="sourceLineNo">550</span>    }<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    // If we got here, e is not an IOException. A loaded coprocessor has a<a name="line.551"></a>
+<span class="sourceLineNo">552</span>    // fatal bug, and the server (master or regionserver) should remove the<a name="line.552"></a>
+<span class="sourceLineNo">553</span>    // faulty coprocessor from its set of active coprocessors. Setting<a name="line.553"></a>
+<span class="sourceLineNo">554</span>    // 'hbase.coprocessor.abortonerror' to true will cause abortServer(),<a name="line.554"></a>
+<span class="sourceLineNo">555</span>    // which may be useful in development and testing environments where<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    // 'failing fast' for error analysis is desired.<a name="line.556"></a>
+<span class="sourceLineNo">557</span>    if (env.getConfiguration().getBoolean(ABORT_ON_ERROR_KEY, DEFAULT_ABORT_ON_ERROR)) {<a name="line.557"></a>
+<span class="sourceLineNo">558</span>      // server is configured to abort.<a name="line.558">

<TRUNCATED>

[23/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html b/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html
index 9a2a5bc..f6c7b80 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html
@@ -35,574 +35,567 @@
 <span class="sourceLineNo">027</span><a name="line.27"></a>
 <span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.28"></a>
 <span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.classification.InterfaceStability;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.protobuf.generated.ProcedureProtos;<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> * Keeps track of live procedures.<a name="line.34"></a>
-<span class="sourceLineNo">035</span> *<a name="line.35"></a>
-<span class="sourceLineNo">036</span> * It can be used by the ProcedureStore to identify which procedures are already<a name="line.36"></a>
-<span class="sourceLineNo">037</span> * deleted/completed to avoid the deserialization step on restart.<a name="line.37"></a>
-<span class="sourceLineNo">038</span> */<a name="line.38"></a>
-<span class="sourceLineNo">039</span>@InterfaceAudience.Private<a name="line.39"></a>
-<span class="sourceLineNo">040</span>@InterfaceStability.Evolving<a name="line.40"></a>
-<span class="sourceLineNo">041</span>public class ProcedureStoreTracker {<a name="line.41"></a>
-<span class="sourceLineNo">042</span>  private final TreeMap&lt;Long, BitSetNode&gt; map = new TreeMap&lt;Long, BitSetNode&gt;();<a name="line.42"></a>
-<span class="sourceLineNo">043</span><a name="line.43"></a>
-<span class="sourceLineNo">044</span>  private boolean keepDeletes = false;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>  private boolean partial = false;<a name="line.45"></a>
-<span class="sourceLineNo">046</span><a name="line.46"></a>
-<span class="sourceLineNo">047</span>  private long minUpdatedProcId = Long.MAX_VALUE;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>  private long maxUpdatedProcId = Long.MIN_VALUE;<a name="line.48"></a>
-<span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>  public enum DeleteState { YES, NO, MAYBE }<a name="line.50"></a>
-<span class="sourceLineNo">051</span><a name="line.51"></a>
-<span class="sourceLineNo">052</span>  public static class BitSetNode {<a name="line.52"></a>
-<span class="sourceLineNo">053</span>    private final static long WORD_MASK = 0xffffffffffffffffL;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>    private final static int ADDRESS_BITS_PER_WORD = 6;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>    private final static int BITS_PER_WORD = 1 &lt;&lt; ADDRESS_BITS_PER_WORD;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>    private final static int MAX_NODE_SIZE = 1 &lt;&lt; ADDRESS_BITS_PER_WORD;<a name="line.56"></a>
-<span class="sourceLineNo">057</span><a name="line.57"></a>
-<span class="sourceLineNo">058</span>    private final boolean partial;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>    private long[] updated;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>    private long[] deleted;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>    private long start;<a name="line.61"></a>
-<span class="sourceLineNo">062</span><a name="line.62"></a>
-<span class="sourceLineNo">063</span>    public void dump() {<a name="line.63"></a>
-<span class="sourceLineNo">064</span>      System.out.printf("%06d:%06d min=%d max=%d%n", getStart(), getEnd(),<a name="line.64"></a>
-<span class="sourceLineNo">065</span>        getMinProcId(), getMaxProcId());<a name="line.65"></a>
-<span class="sourceLineNo">066</span>      System.out.println("Update:");<a name="line.66"></a>
-<span class="sourceLineNo">067</span>      for (int i = 0; i &lt; updated.length; ++i) {<a name="line.67"></a>
-<span class="sourceLineNo">068</span>        for (int j = 0; j &lt; BITS_PER_WORD; ++j) {<a name="line.68"></a>
-<span class="sourceLineNo">069</span>          System.out.print((updated[i] &amp; (1L &lt;&lt; j)) != 0 ? "1" : "0");<a name="line.69"></a>
-<span class="sourceLineNo">070</span>        }<a name="line.70"></a>
-<span class="sourceLineNo">071</span>        System.out.println(" " + i);<a name="line.71"></a>
-<span class="sourceLineNo">072</span>      }<a name="line.72"></a>
-<span class="sourceLineNo">073</span>      System.out.println();<a name="line.73"></a>
-<span class="sourceLineNo">074</span>      System.out.println("Delete:");<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      for (int i = 0; i &lt; deleted.length; ++i) {<a name="line.75"></a>
-<span class="sourceLineNo">076</span>        for (int j = 0; j &lt; BITS_PER_WORD; ++j) {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>          System.out.print((deleted[i] &amp; (1L &lt;&lt; j)) != 0 ? "1" : "0");<a name="line.77"></a>
-<span class="sourceLineNo">078</span>        }<a name="line.78"></a>
-<span class="sourceLineNo">079</span>        System.out.println(" " + i);<a name="line.79"></a>
-<span class="sourceLineNo">080</span>      }<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      System.out.println();<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 BitSetNode(final long procId, final boolean partial) {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      start = alignDown(procId);<a name="line.85"></a>
-<span class="sourceLineNo">086</span><a name="line.86"></a>
-<span class="sourceLineNo">087</span>      int count = 1;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>      updated = new long[count];<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      deleted = new long[count];<a name="line.89"></a>
-<span class="sourceLineNo">090</span>      for (int i = 0; i &lt; count; ++i) {<a name="line.90"></a>
-<span class="sourceLineNo">091</span>        updated[i] = 0;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>        deleted[i] = partial ? 0 : WORD_MASK;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      }<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>      this.partial = partial;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      updateState(procId, false);<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 BitSetNode(final long start, final long[] updated, final long[] deleted) {<a name="line.99"></a>
-<span class="sourceLineNo">100</span>      this.start = start;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      this.updated = updated;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      this.deleted = deleted;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      this.partial = false;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    }<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>    public void update(final long procId) {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      updateState(procId, false);<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    }<a name="line.108"></a>
-<span class="sourceLineNo">109</span><a name="line.109"></a>
-<span class="sourceLineNo">110</span>    public void delete(final long procId) {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      updateState(procId, true);<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    }<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>    public Long getStart() {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      return start;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    }<a name="line.116"></a>
-<span class="sourceLineNo">117</span><a name="line.117"></a>
-<span class="sourceLineNo">118</span>    public Long getEnd() {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      return start + (updated.length &lt;&lt; ADDRESS_BITS_PER_WORD) - 1;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    }<a name="line.120"></a>
-<span class="sourceLineNo">121</span><a name="line.121"></a>
-<span class="sourceLineNo">122</span>    public boolean contains(final long procId) {<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      return start &lt;= procId &amp;&amp; procId &lt;= getEnd();<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>    public DeleteState isDeleted(final long procId) {<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      int bitmapIndex = getBitmapIndex(procId);<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      int wordIndex = bitmapIndex &gt;&gt; ADDRESS_BITS_PER_WORD;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      if (wordIndex &gt;= deleted.length) {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>        return DeleteState.MAYBE;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      }<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      return (deleted[wordIndex] &amp; (1L &lt;&lt; bitmapIndex)) != 0 ? DeleteState.YES : DeleteState.NO;<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>    private boolean isUpdated(final long procId) {<a name="line.135"></a>
-<span class="sourceLineNo">136</span>      int bitmapIndex = getBitmapIndex(procId);<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      int wordIndex = bitmapIndex &gt;&gt; ADDRESS_BITS_PER_WORD;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      if (wordIndex &gt;= updated.length) {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>        return false;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      }<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      return (updated[wordIndex] &amp; (1L &lt;&lt; bitmapIndex)) != 0;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    }<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>    public boolean isUpdated() {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      // TODO: cache the value<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      for (int i = 0; i &lt; updated.length; ++i) {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>        if ((updated[i] | deleted[i]) != WORD_MASK) {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>          return false;<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>      return true;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    }<a name="line.152"></a>
-<span class="sourceLineNo">153</span><a name="line.153"></a>
-<span class="sourceLineNo">154</span>    public boolean isEmpty() {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      // TODO: cache the value<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      for (int i = 0; i &lt; deleted.length; ++i) {<a name="line.156"></a>
-<span class="sourceLineNo">157</span>        if (deleted[i] != WORD_MASK) {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>          return false;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>        }<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      }<a name="line.160"></a>
-<span class="sourceLineNo">161</span>      return true;<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>    public void resetUpdates() {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      for (int i = 0; i &lt; updated.length; ++i) {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>        updated[i] = 0;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      }<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    }<a name="line.168"></a>
-<span class="sourceLineNo">169</span><a name="line.169"></a>
-<span class="sourceLineNo">170</span>    public void undeleteAll() {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      for (int i = 0; i &lt; updated.length; ++i) {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>        deleted[i] = 0;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      }<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    }<a name="line.174"></a>
-<span class="sourceLineNo">175</span><a name="line.175"></a>
-<span class="sourceLineNo">176</span>    public void unsetPartialFlag() {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      for (int i = 0; i &lt; updated.length; ++i) {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>        for (int j = 0; j &lt; BITS_PER_WORD; ++j) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>          if ((updated[i] &amp; (1L &lt;&lt; j)) == 0) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>            deleted[i] |= (1L &lt;&lt; j);<a name="line.180"></a>
-<span class="sourceLineNo">181</span>          }<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        }<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      }<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>    public ProcedureProtos.ProcedureStoreTracker.TrackerNode convert() {<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      ProcedureProtos.ProcedureStoreTracker.TrackerNode.Builder builder =<a name="line.187"></a>
-<span class="sourceLineNo">188</span>        ProcedureProtos.ProcedureStoreTracker.TrackerNode.newBuilder();<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      builder.setStartId(start);<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      for (int i = 0; i &lt; updated.length; ++i) {<a name="line.190"></a>
-<span class="sourceLineNo">191</span>        builder.addUpdated(updated[i]);<a name="line.191"></a>
-<span class="sourceLineNo">192</span>        builder.addDeleted(deleted[i]);<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      }<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      return builder.build();<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    }<a name="line.195"></a>
-<span class="sourceLineNo">196</span><a name="line.196"></a>
-<span class="sourceLineNo">197</span>    public static BitSetNode convert(ProcedureProtos.ProcedureStoreTracker.TrackerNode data) {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      long start = data.getStartId();<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      int size = data.getUpdatedCount();<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      long[] updated = new long[size];<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      long[] deleted = new long[size];<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      for (int i = 0; i &lt; size; ++i) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>        updated[i] = data.getUpdated(i);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>        deleted[i] = data.getDeleted(i);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      }<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      return new BitSetNode(start, updated, deleted);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    }<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>    // ========================================================================<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    //  Grow/Merge Helpers<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    // ========================================================================<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    public boolean canGrow(final long procId) {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      return Math.abs(procId - start) &lt; MAX_NODE_SIZE;<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>    public boolean canMerge(final BitSetNode rightNode) {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      assert start &lt; rightNode.getEnd();<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      return (rightNode.getEnd() - start) &lt; MAX_NODE_SIZE;<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>    public void grow(final long procId) {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      int delta, offset;<a name="line.222"></a>
-<span class="sourceLineNo">223</span><a name="line.223"></a>
-<span class="sourceLineNo">224</span>      if (procId &lt; start) {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>        // add to head<a name="line.225"></a>
-<span class="sourceLineNo">226</span>        long newStart = alignDown(procId);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>        delta = (int)(start - newStart) &gt;&gt; ADDRESS_BITS_PER_WORD;<a name="line.227"></a>
-<span class="sourceLineNo">228</span>        offset = delta;<a name="line.228"></a>
-<span class="sourceLineNo">229</span>        start = newStart;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      } else {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>        // Add to tail<a name="line.231"></a>
-<span class="sourceLineNo">232</span>        long newEnd = alignUp(procId + 1);<a name="line.232"></a>
-<span class="sourceLineNo">233</span>        delta = (int)(newEnd - getEnd()) &gt;&gt; ADDRESS_BITS_PER_WORD;<a name="line.233"></a>
-<span class="sourceLineNo">234</span>        offset = 0;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      }<a name="line.235"></a>
-<span class="sourceLineNo">236</span><a name="line.236"></a>
-<span class="sourceLineNo">237</span>      long[] newBitmap;<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      int oldSize = updated.length;<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>      newBitmap = new long[oldSize + delta];<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      for (int i = 0; i &lt; newBitmap.length; ++i) {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>        newBitmap[i] = 0;<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      }<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      System.arraycopy(updated, 0, newBitmap, offset, oldSize);<a name="line.244"></a>
-<span class="sourceLineNo">245</span>      updated = newBitmap;<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>      newBitmap = new long[deleted.length + delta];<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      for (int i = 0; i &lt; newBitmap.length; ++i) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        newBitmap[i] = partial ? 0 : WORD_MASK;<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      }<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      System.arraycopy(deleted, 0, newBitmap, offset, oldSize);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      deleted = newBitmap;<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>    public void merge(final BitSetNode rightNode) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      int delta = (int)(rightNode.getEnd() - getEnd()) &gt;&gt; ADDRESS_BITS_PER_WORD;<a name="line.256"></a>
-<span class="sourceLineNo">257</span><a name="line.257"></a>
-<span class="sourceLineNo">258</span>      long[] newBitmap;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      int oldSize = updated.length;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      int newSize = (delta - rightNode.updated.length);<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      int offset = oldSize + newSize;<a name="line.261"></a>
-<span class="sourceLineNo">262</span><a name="line.262"></a>
-<span class="sourceLineNo">263</span>      newBitmap = new long[oldSize + delta];<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      System.arraycopy(updated, 0, newBitmap, 0, oldSize);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      System.arraycopy(rightNode.updated, 0, newBitmap, offset, rightNode.updated.length);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      updated = newBitmap;<a name="line.266"></a>
-<span class="sourceLineNo">267</span><a name="line.267"></a>
-<span class="sourceLineNo">268</span>      newBitmap = new long[oldSize + delta];<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      System.arraycopy(deleted, 0, newBitmap, 0, oldSize);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      System.arraycopy(rightNode.deleted, 0, newBitmap, offset, rightNode.deleted.length);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      deleted = newBitmap;<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>      for (int i = 0; i &lt; newSize; ++i) {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        updated[offset + i] = 0;<a name="line.274"></a>
-<span class="sourceLineNo">275</span>        deleted[offset + i] = partial ? 0 : WORD_MASK;<a name="line.275"></a>
-<span class="sourceLineNo">276</span>      }<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    }<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>    @Override<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    public String toString() {<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      return "BitSetNode(" + getStart() + "-" + getEnd() + ")";<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    }<a name="line.282"></a>
-<span class="sourceLineNo">283</span><a name="line.283"></a>
-<span class="sourceLineNo">284</span>    // ========================================================================<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    //  Min/Max Helpers<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    // ========================================================================<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    public long getMinProcId() {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      long minProcId = start;<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      for (int i = 0; i &lt; deleted.length; ++i) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        if (deleted[i] == 0) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>          return(minProcId);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>        }<a name="line.292"></a>
-<span class="sourceLineNo">293</span><a name="line.293"></a>
-<span class="sourceLineNo">294</span>        if (deleted[i] != WORD_MASK) {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>          for (int j = 0; j &lt; BITS_PER_WORD; ++j) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>            if ((deleted[i] &amp; (1L &lt;&lt; j)) != 0) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>              return minProcId + j;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>            }<a name="line.298"></a>
-<span class="sourceLineNo">299</span>          }<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        }<a name="line.300"></a>
-<span class="sourceLineNo">301</span><a name="line.301"></a>
-<span class="sourceLineNo">302</span>        minProcId += BITS_PER_WORD;<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      }<a name="line.303"></a>
-<span class="sourceLineNo">304</span>      return minProcId;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    }<a name="line.305"></a>
-<span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>    public long getMaxProcId() {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>      long maxProcId = getEnd();<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      for (int i = deleted.length - 1; i &gt;= 0; --i) {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>        if (deleted[i] == 0) {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>          return maxProcId;<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>        if (deleted[i] != WORD_MASK) {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>          for (int j = BITS_PER_WORD - 1; j &gt;= 0; --j) {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>            if ((deleted[i] &amp; (1L &lt;&lt; j)) == 0) {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>              return maxProcId - (BITS_PER_WORD - 1 - j);<a name="line.317"></a>
-<span class="sourceLineNo">318</span>            }<a name="line.318"></a>
-<span class="sourceLineNo">319</span>          }<a name="line.319"></a>
-<span class="sourceLineNo">320</span>        }<a name="line.320"></a>
-<span class="sourceLineNo">321</span>        maxProcId -= BITS_PER_WORD;<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      }<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      return maxProcId;<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    }<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>    // ========================================================================<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    //  Bitmap Helpers<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    // ========================================================================<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    private int getBitmapIndex(final long procId) {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>      return (int)(procId - start);<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    }<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>    private void updateState(final long procId, final boolean isDeleted) {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      int bitmapIndex = getBitmapIndex(procId);<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      int wordIndex = bitmapIndex &gt;&gt; ADDRESS_BITS_PER_WORD;<a name="line.335"></a>
-<span class="sourceLineNo">336</span>      long value = (1L &lt;&lt; bitmapIndex);<a name="line.336"></a>
-<span class="sourceLineNo">337</span><a name="line.337"></a>
-<span class="sourceLineNo">338</span>      if (isDeleted) {<a name="line.338"></a>
-<span class="sourceLineNo">339</span>        updated[wordIndex] |= value;<a name="line.339"></a>
-<span class="sourceLineNo">340</span>        deleted[wordIndex] |= value;<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      } else {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>        updated[wordIndex] |= value;<a name="line.342"></a>
-<span class="sourceLineNo">343</span>        deleted[wordIndex] &amp;= ~value;<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      }<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    }<a name="line.345"></a>
-<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span>    // ========================================================================<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    //  Helpers<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    // ========================================================================<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    private static long alignUp(final long x) {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      return (x + (BITS_PER_WORD - 1)) &amp; -BITS_PER_WORD;<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
-<span class="sourceLineNo">353</span><a name="line.353"></a>
-<span class="sourceLineNo">354</span>    private static long alignDown(final long x) {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      return x &amp; -BITS_PER_WORD;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    }<a name="line.356"></a>
-<span class="sourceLineNo">357</span>  }<a name="line.357"></a>
-<span class="sourceLineNo">358</span><a name="line.358"></a>
-<span class="sourceLineNo">359</span>  public void insert(final Procedure proc, final Procedure[] subprocs) {<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    insert(proc.getProcId());<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    if (subprocs != null) {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      for (int i = 0; i &lt; subprocs.length; ++i) {<a name="line.362"></a>
-<span class="sourceLineNo">363</span>        insert(subprocs[i].getProcId());<a name="line.363"></a>
-<span class="sourceLineNo">364</span>      }<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    }<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  }<a name="line.366"></a>
-<span class="sourceLineNo">367</span><a name="line.367"></a>
-<span class="sourceLineNo">368</span>  public void update(final Procedure proc) {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    update(proc.getProcId());<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span>  public void insert(long procId) {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    BitSetNode node = getOrCreateNode(procId);<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    node.update(procId);<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    trackProcIds(procId);<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  }<a name="line.376"></a>
-<span class="sourceLineNo">377</span><a name="line.377"></a>
-<span class="sourceLineNo">378</span>  public void update(long procId) {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    Map.Entry&lt;Long, BitSetNode&gt; entry = map.floorEntry(procId);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    assert entry != null : "expected node to update procId=" + procId;<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>    BitSetNode node = entry.getValue();<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    assert node.contains(procId);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    node.update(procId);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    trackProcIds(procId);<a name="line.385"></a>
-<span class="sourceLineNo">386</span>  }<a name="line.386"></a>
-<span class="sourceLineNo">387</span><a name="line.387"></a>
-<span class="sourceLineNo">388</span>  public void delete(long procId) {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    Map.Entry&lt;Long, BitSetNode&gt; entry = map.floorEntry(procId);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    assert entry != null : "expected node to delete procId=" + procId;<a name="line.390"></a>
-<span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span>    BitSetNode node = entry.getValue();<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    assert node.contains(procId) : "expected procId in the node";<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    node.delete(procId);<a name="line.394"></a>
-<span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>    if (!keepDeletes &amp;&amp; node.isEmpty()) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      // TODO: RESET if (map.size() == 1)<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      map.remove(entry.getKey());<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>    trackProcIds(procId);<a name="line.401"></a>
-<span class="sourceLineNo">402</span>  }<a name="line.402"></a>
-<span class="sourceLineNo">403</span><a name="line.403"></a>
-<span class="sourceLineNo">404</span>  private void trackProcIds(long procId) {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    minUpdatedProcId = Math.min(minUpdatedProcId, procId);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    maxUpdatedProcId = Math.max(maxUpdatedProcId, procId);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  }<a name="line.407"></a>
-<span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>  public long getUpdatedMinProcId() {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    return minUpdatedProcId;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>  }<a name="line.411"></a>
-<span class="sourceLineNo">412</span><a name="line.412"></a>
-<span class="sourceLineNo">413</span>  public long getUpdatedMaxProcId() {<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    return maxUpdatedProcId;<a name="line.414"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.protobuf.generated.ProcedureProtos;<a name="line.30"></a>
+<span class="sourceLineNo">031</span><a name="line.31"></a>
+<span class="sourceLineNo">032</span>/**<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * Keeps track of live procedures.<a name="line.33"></a>
+<span class="sourceLineNo">034</span> *<a name="line.34"></a>
+<span class="sourceLineNo">035</span> * It can be used by the ProcedureStore to identify which procedures are already<a name="line.35"></a>
+<span class="sourceLineNo">036</span> * deleted/completed to avoid the deserialization step on restart.<a name="line.36"></a>
+<span class="sourceLineNo">037</span> */<a name="line.37"></a>
+<span class="sourceLineNo">038</span>@InterfaceAudience.Private<a name="line.38"></a>
+<span class="sourceLineNo">039</span>@InterfaceStability.Evolving<a name="line.39"></a>
+<span class="sourceLineNo">040</span>public class ProcedureStoreTracker {<a name="line.40"></a>
+<span class="sourceLineNo">041</span>  private final TreeMap&lt;Long, BitSetNode&gt; map = new TreeMap&lt;Long, BitSetNode&gt;();<a name="line.41"></a>
+<span class="sourceLineNo">042</span><a name="line.42"></a>
+<span class="sourceLineNo">043</span>  private boolean keepDeletes = false;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>  private boolean partial = false;<a name="line.44"></a>
+<span class="sourceLineNo">045</span><a name="line.45"></a>
+<span class="sourceLineNo">046</span>  private long minUpdatedProcId = Long.MAX_VALUE;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>  private long maxUpdatedProcId = Long.MIN_VALUE;<a name="line.47"></a>
+<span class="sourceLineNo">048</span><a name="line.48"></a>
+<span class="sourceLineNo">049</span>  public enum DeleteState { YES, NO, MAYBE }<a name="line.49"></a>
+<span class="sourceLineNo">050</span><a name="line.50"></a>
+<span class="sourceLineNo">051</span>  public static class BitSetNode {<a name="line.51"></a>
+<span class="sourceLineNo">052</span>    private final static long WORD_MASK = 0xffffffffffffffffL;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>    private final static int ADDRESS_BITS_PER_WORD = 6;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>    private final static int BITS_PER_WORD = 1 &lt;&lt; ADDRESS_BITS_PER_WORD;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>    private final static int MAX_NODE_SIZE = 1 &lt;&lt; ADDRESS_BITS_PER_WORD;<a name="line.55"></a>
+<span class="sourceLineNo">056</span><a name="line.56"></a>
+<span class="sourceLineNo">057</span>    private final boolean partial;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    private long[] updated;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    private long[] deleted;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>    private long start;<a name="line.60"></a>
+<span class="sourceLineNo">061</span><a name="line.61"></a>
+<span class="sourceLineNo">062</span>    public void dump() {<a name="line.62"></a>
+<span class="sourceLineNo">063</span>      System.out.printf("%06d:%06d min=%d max=%d%n", getStart(), getEnd(),<a name="line.63"></a>
+<span class="sourceLineNo">064</span>        getMinProcId(), getMaxProcId());<a name="line.64"></a>
+<span class="sourceLineNo">065</span>      System.out.println("Update:");<a name="line.65"></a>
+<span class="sourceLineNo">066</span>      for (int i = 0; i &lt; updated.length; ++i) {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>        for (int j = 0; j &lt; BITS_PER_WORD; ++j) {<a name="line.67"></a>
+<span class="sourceLineNo">068</span>          System.out.print((updated[i] &amp; (1L &lt;&lt; j)) != 0 ? "1" : "0");<a name="line.68"></a>
+<span class="sourceLineNo">069</span>        }<a name="line.69"></a>
+<span class="sourceLineNo">070</span>        System.out.println(" " + i);<a name="line.70"></a>
+<span class="sourceLineNo">071</span>      }<a name="line.71"></a>
+<span class="sourceLineNo">072</span>      System.out.println();<a name="line.72"></a>
+<span class="sourceLineNo">073</span>      System.out.println("Delete:");<a name="line.73"></a>
+<span class="sourceLineNo">074</span>      for (int i = 0; i &lt; deleted.length; ++i) {<a name="line.74"></a>
+<span class="sourceLineNo">075</span>        for (int j = 0; j &lt; BITS_PER_WORD; ++j) {<a name="line.75"></a>
+<span class="sourceLineNo">076</span>          System.out.print((deleted[i] &amp; (1L &lt;&lt; j)) != 0 ? "1" : "0");<a name="line.76"></a>
+<span class="sourceLineNo">077</span>        }<a name="line.77"></a>
+<span class="sourceLineNo">078</span>        System.out.println(" " + i);<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      }<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      System.out.println();<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    }<a name="line.81"></a>
+<span class="sourceLineNo">082</span><a name="line.82"></a>
+<span class="sourceLineNo">083</span>    public BitSetNode(final long procId, final boolean partial) {<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      start = alignDown(procId);<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>      int count = 1;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>      updated = new long[count];<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      deleted = new long[count];<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      for (int i = 0; i &lt; count; ++i) {<a name="line.89"></a>
+<span class="sourceLineNo">090</span>        updated[i] = 0;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>        deleted[i] = partial ? 0 : WORD_MASK;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>      }<a name="line.92"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span>      this.partial = partial;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>      updateState(procId, false);<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>    protected BitSetNode(final long start, final long[] updated, final long[] deleted) {<a name="line.98"></a>
+<span class="sourceLineNo">099</span>      this.start = start;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      this.updated = updated;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      this.deleted = deleted;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>      this.partial = false;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    }<a name="line.103"></a>
+<span class="sourceLineNo">104</span><a name="line.104"></a>
+<span class="sourceLineNo">105</span>    public void update(final long procId) {<a name="line.105"></a>
+<span class="sourceLineNo">106</span>      updateState(procId, false);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    }<a name="line.107"></a>
+<span class="sourceLineNo">108</span><a name="line.108"></a>
+<span class="sourceLineNo">109</span>    public void delete(final long procId) {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      updateState(procId, true);<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    }<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>    public Long getStart() {<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      return start;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    }<a name="line.115"></a>
+<span class="sourceLineNo">116</span><a name="line.116"></a>
+<span class="sourceLineNo">117</span>    public Long getEnd() {<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      return start + (updated.length &lt;&lt; ADDRESS_BITS_PER_WORD) - 1;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    }<a name="line.119"></a>
+<span class="sourceLineNo">120</span><a name="line.120"></a>
+<span class="sourceLineNo">121</span>    public boolean contains(final long procId) {<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      return start &lt;= procId &amp;&amp; procId &lt;= getEnd();<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    }<a name="line.123"></a>
+<span class="sourceLineNo">124</span><a name="line.124"></a>
+<span class="sourceLineNo">125</span>    public DeleteState isDeleted(final long procId) {<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      int bitmapIndex = getBitmapIndex(procId);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      int wordIndex = bitmapIndex &gt;&gt; ADDRESS_BITS_PER_WORD;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      if (wordIndex &gt;= deleted.length) {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>        return DeleteState.MAYBE;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      }<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      return (deleted[wordIndex] &amp; (1L &lt;&lt; bitmapIndex)) != 0 ? DeleteState.YES : DeleteState.NO;<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>    private boolean isUpdated(final long procId) {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      int bitmapIndex = getBitmapIndex(procId);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      int wordIndex = bitmapIndex &gt;&gt; ADDRESS_BITS_PER_WORD;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      if (wordIndex &gt;= updated.length) {<a name="line.137"></a>
+<span class="sourceLineNo">138</span>        return false;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>      }<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      return (updated[wordIndex] &amp; (1L &lt;&lt; bitmapIndex)) != 0;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    }<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>    public boolean isUpdated() {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      // TODO: cache the value<a name="line.144"></a>
+<span class="sourceLineNo">145</span>      for (int i = 0; i &lt; updated.length; ++i) {<a name="line.145"></a>
+<span class="sourceLineNo">146</span>        if ((updated[i] | deleted[i]) != WORD_MASK) {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>          return false;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>        }<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      }<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      return true;<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>    public boolean isEmpty() {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      // TODO: cache the value<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      for (int i = 0; i &lt; deleted.length; ++i) {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>        if (deleted[i] != WORD_MASK) {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>          return false;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>        }<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      }<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      return true;<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>    public void resetUpdates() {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      for (int i = 0; i &lt; updated.length; ++i) {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        updated[i] = 0;<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>    public void undeleteAll() {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      for (int i = 0; i &lt; updated.length; ++i) {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>        deleted[i] = 0;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      }<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    }<a name="line.173"></a>
+<span class="sourceLineNo">174</span><a name="line.174"></a>
+<span class="sourceLineNo">175</span>    public void unsetPartialFlag() {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      for (int i = 0; i &lt; updated.length; ++i) {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>        for (int j = 0; j &lt; BITS_PER_WORD; ++j) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>          if ((updated[i] &amp; (1L &lt;&lt; j)) == 0) {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>            deleted[i] |= (1L &lt;&lt; j);<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>      }<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>    public ProcedureProtos.ProcedureStoreTracker.TrackerNode convert() {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      ProcedureProtos.ProcedureStoreTracker.TrackerNode.Builder builder =<a name="line.186"></a>
+<span class="sourceLineNo">187</span>        ProcedureProtos.ProcedureStoreTracker.TrackerNode.newBuilder();<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      builder.setStartId(start);<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      for (int i = 0; i &lt; updated.length; ++i) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>        builder.addUpdated(updated[i]);<a name="line.190"></a>
+<span class="sourceLineNo">191</span>        builder.addDeleted(deleted[i]);<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      }<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      return builder.build();<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    }<a name="line.194"></a>
+<span class="sourceLineNo">195</span><a name="line.195"></a>
+<span class="sourceLineNo">196</span>    public static BitSetNode convert(ProcedureProtos.ProcedureStoreTracker.TrackerNode data) {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>      long start = data.getStartId();<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      int size = data.getUpdatedCount();<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      long[] updated = new long[size];<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      long[] deleted = new long[size];<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      for (int i = 0; i &lt; size; ++i) {<a name="line.201"></a>
+<span class="sourceLineNo">202</span>        updated[i] = data.getUpdated(i);<a name="line.202"></a>
+<span class="sourceLineNo">203</span>        deleted[i] = data.getDeleted(i);<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      }<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      return new BitSetNode(start, updated, deleted);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    }<a name="line.206"></a>
+<span class="sourceLineNo">207</span><a name="line.207"></a>
+<span class="sourceLineNo">208</span>    // ========================================================================<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    //  Grow/Merge Helpers<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    // ========================================================================<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    public boolean canGrow(final long procId) {<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      return Math.abs(procId - start) &lt; MAX_NODE_SIZE;<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>    public boolean canMerge(final BitSetNode rightNode) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      assert start &lt; rightNode.getEnd();<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      return (rightNode.getEnd() - start) &lt; MAX_NODE_SIZE;<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>    public void grow(final long procId) {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      int delta, offset;<a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>      if (procId &lt; start) {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>        // add to head<a name="line.224"></a>
+<span class="sourceLineNo">225</span>        long newStart = alignDown(procId);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>        delta = (int)(start - newStart) &gt;&gt; ADDRESS_BITS_PER_WORD;<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        offset = delta;<a name="line.227"></a>
+<span class="sourceLineNo">228</span>        start = newStart;<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      } else {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>        // Add to tail<a name="line.230"></a>
+<span class="sourceLineNo">231</span>        long newEnd = alignUp(procId + 1);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>        delta = (int)(newEnd - getEnd()) &gt;&gt; ADDRESS_BITS_PER_WORD;<a name="line.232"></a>
+<span class="sourceLineNo">233</span>        offset = 0;<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>      long[] newBitmap;<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      int oldSize = updated.length;<a name="line.237"></a>
+<span class="sourceLineNo">238</span><a name="line.238"></a>
+<span class="sourceLineNo">239</span>      newBitmap = new long[oldSize + delta];<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      for (int i = 0; i &lt; newBitmap.length; ++i) {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>        newBitmap[i] = 0;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      }<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      System.arraycopy(updated, 0, newBitmap, offset, oldSize);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      updated = newBitmap;<a name="line.244"></a>
+<span class="sourceLineNo">245</span><a name="line.245"></a>
+<span class="sourceLineNo">246</span>      newBitmap = new long[deleted.length + delta];<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      for (int i = 0; i &lt; newBitmap.length; ++i) {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        newBitmap[i] = partial ? 0 : WORD_MASK;<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      }<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      System.arraycopy(deleted, 0, newBitmap, offset, oldSize);<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      deleted = newBitmap;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    }<a name="line.252"></a>
+<span class="sourceLineNo">253</span><a name="line.253"></a>
+<span class="sourceLineNo">254</span>    public void merge(final BitSetNode rightNode) {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      int delta = (int)(rightNode.getEnd() - getEnd()) &gt;&gt; ADDRESS_BITS_PER_WORD;<a name="line.255"></a>
+<span class="sourceLineNo">256</span><a name="line.256"></a>
+<span class="sourceLineNo">257</span>      long[] newBitmap;<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      int oldSize = updated.length;<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      int newSize = (delta - rightNode.updated.length);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      int offset = oldSize + newSize;<a name="line.260"></a>
+<span class="sourceLineNo">261</span><a name="line.261"></a>
+<span class="sourceLineNo">262</span>      newBitmap = new long[oldSize + delta];<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      System.arraycopy(updated, 0, newBitmap, 0, oldSize);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      System.arraycopy(rightNode.updated, 0, newBitmap, offset, rightNode.updated.length);<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      updated = newBitmap;<a name="line.265"></a>
+<span class="sourceLineNo">266</span><a name="line.266"></a>
+<span class="sourceLineNo">267</span>      newBitmap = new long[oldSize + delta];<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      System.arraycopy(deleted, 0, newBitmap, 0, oldSize);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      System.arraycopy(rightNode.deleted, 0, newBitmap, offset, rightNode.deleted.length);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      deleted = newBitmap;<a name="line.270"></a>
+<span class="sourceLineNo">271</span><a name="line.271"></a>
+<span class="sourceLineNo">272</span>      for (int i = 0; i &lt; newSize; ++i) {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        updated[offset + i] = 0;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        deleted[offset + i] = partial ? 0 : WORD_MASK;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      }<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    }<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>    @Override<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    public String toString() {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      return "BitSetNode(" + getStart() + "-" + getEnd() + ")";<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    }<a name="line.281"></a>
+<span class="sourceLineNo">282</span><a name="line.282"></a>
+<span class="sourceLineNo">283</span>    // ========================================================================<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    //  Min/Max Helpers<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    // ========================================================================<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    public long getMinProcId() {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      long minProcId = start;<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      for (int i = 0; i &lt; deleted.length; ++i) {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>        if (deleted[i] == 0) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>          return(minProcId);<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        }<a name="line.291"></a>
+<span class="sourceLineNo">292</span><a name="line.292"></a>
+<span class="sourceLineNo">293</span>        if (deleted[i] != WORD_MASK) {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>          for (int j = 0; j &lt; BITS_PER_WORD; ++j) {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>            if ((deleted[i] &amp; (1L &lt;&lt; j)) != 0) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>              return minProcId + j;<a name="line.296"></a>
+<span class="sourceLineNo">297</span>            }<a name="line.297"></a>
+<span class="sourceLineNo">298</span>          }<a name="line.298"></a>
+<span class="sourceLineNo">299</span>        }<a name="line.299"></a>
+<span class="sourceLineNo">300</span><a name="line.300"></a>
+<span class="sourceLineNo">301</span>        minProcId += BITS_PER_WORD;<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      }<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      return minProcId;<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    }<a name="line.304"></a>
+<span class="sourceLineNo">305</span><a name="line.305"></a>
+<span class="sourceLineNo">306</span>    public long getMaxProcId() {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      long maxProcId = getEnd();<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      for (int i = deleted.length - 1; i &gt;= 0; --i) {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>        if (deleted[i] == 0) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>          return maxProcId;<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>        if (deleted[i] != WORD_MASK) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>          for (int j = BITS_PER_WORD - 1; j &gt;= 0; --j) {<a name="line.314"></a>
+<span class="sourceLineNo">315</span>            if ((deleted[i] &amp; (1L &lt;&lt; j)) == 0) {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>              return maxProcId - (BITS_PER_WORD - 1 - j);<a name="line.316"></a>
+<span class="sourceLineNo">317</span>            }<a name="line.317"></a>
+<span class="sourceLineNo">318</span>          }<a name="line.318"></a>
+<span class="sourceLineNo">319</span>        }<a name="line.319"></a>
+<span class="sourceLineNo">320</span>        maxProcId -= BITS_PER_WORD;<a name="line.320"></a>
+<span class="sourceLineNo">321</span>      }<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      return maxProcId;<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    }<a name="line.323"></a>
+<span class="sourceLineNo">324</span><a name="line.324"></a>
+<span class="sourceLineNo">325</span>    // ========================================================================<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    //  Bitmap Helpers<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    // ========================================================================<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    private int getBitmapIndex(final long procId) {<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      return (int)(procId - start);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    }<a name="line.330"></a>
+<span class="sourceLineNo">331</span><a name="line.331"></a>
+<span class="sourceLineNo">332</span>    private void updateState(final long procId, final boolean isDeleted) {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      int bitmapIndex = getBitmapIndex(procId);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      int wordIndex = bitmapIndex &gt;&gt; ADDRESS_BITS_PER_WORD;<a name="line.334"></a>
+<span class="sourceLineNo">335</span>      long value = (1L &lt;&lt; bitmapIndex);<a name="line.335"></a>
+<span class="sourceLineNo">336</span><a name="line.336"></a>
+<span class="sourceLineNo">337</span>      if (isDeleted) {<a name="line.337"></a>
+<span class="sourceLineNo">338</span>        updated[wordIndex] |= value;<a name="line.338"></a>
+<span class="sourceLineNo">339</span>        deleted[wordIndex] |= value;<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      } else {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>        updated[wordIndex] |= value;<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        deleted[wordIndex] &amp;= ~value;<a name="line.342"></a>
+<span class="sourceLineNo">343</span>      }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    }<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>    // ========================================================================<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    //  Helpers<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    // ========================================================================<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    private static long alignUp(final long x) {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      return (x + (BITS_PER_WORD - 1)) &amp; -BITS_PER_WORD;<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    }<a name="line.351"></a>
+<span class="sourceLineNo">352</span><a name="line.352"></a>
+<span class="sourceLineNo">353</span>    private static long alignDown(final long x) {<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      return x &amp; -BITS_PER_WORD;<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    }<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  }<a name="line.356"></a>
+<span class="sourceLineNo">357</span><a name="line.357"></a>
+<span class="sourceLineNo">358</span>  public void insert(long procId) {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    BitSetNode node = getOrCreateNode(procId);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    node.update(procId);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    trackProcIds(procId);<a name="line.361"></a>
+<span class="sourceLineNo">362</span>  }<a name="line.362"></a>
+<span class="sourceLineNo">363</span><a name="line.363"></a>
+<span class="sourceLineNo">364</span>  public void insert(final long procId, final long[] subProcIds) {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    update(procId);<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    for (int i = 0; i &lt; subProcIds.length; ++i) {<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      insert(subProcIds[i]);<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    }<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  }<a name="line.369"></a>
+<span class="sourceLineNo">370</span><a name="line.370"></a>
+<span class="sourceLineNo">371</span>  public void update(long procId) {<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    Map.Entry&lt;Long, BitSetNode&gt; entry = map.floorEntry(procId);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    assert entry != null : "expected node to update procId=" + procId;<a name="line.373"></a>
+<span class="sourceLineNo">374</span><a name="line.374"></a>
+<span class="sourceLineNo">375</span>    BitSetNode node = entry.getValue();<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    assert node.contains(procId);<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    node.update(procId);<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    trackProcIds(procId);<a name="line.378"></a>
+<span class="sourceLineNo">379</span>  }<a name="line.379"></a>
+<span class="sourceLineNo">380</span><a name="line.380"></a>
+<span class="sourceLineNo">381</span>  public void delete(long procId) {<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    Map.Entry&lt;Long, BitSetNode&gt; entry = map.floorEntry(procId);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    assert entry != null : "expected node to delete procId=" + procId;<a name="line.383"></a>
+<span class="sourceLineNo">384</span><a name="line.384"></a>
+<span class="sourceLineNo">385</span>    BitSetNode node = entry.getValue();<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    assert node.contains(procId) : "expected procId in the node";<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    node.delete(procId);<a name="line.387"></a>
+<span class="sourceLineNo">388</span><a name="line.388"></a>
+<span class="sourceLineNo">389</span>    if (!keepDeletes &amp;&amp; node.isEmpty()) {<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      // TODO: RESET if (map.size() == 1)<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      map.remove(entry.getKey());<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    }<a name="line.392"></a>
+<span class="sourceLineNo">393</span><a name="line.393"></a>
+<span class="sourceLineNo">394</span>    trackProcIds(procId);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  }<a name="line.395"></a>
+<span class="sourceLineNo">396</span><a name="line.396"></a>
+<span class="sourceLineNo">397</span>  private void trackProcIds(long procId) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    minUpdatedProcId = Math.min(minUpdatedProcId, procId);<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    maxUpdatedProcId = Math.max(maxUpdatedProcId, procId);<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>  public long getUpdatedMinProcId() {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    return minUpdatedProcId;<a name="line.403"></a>
+<span class="sourceLineNo">404</span>  }<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>  public long getUpdatedMaxProcId() {<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    return maxUpdatedProcId;<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>  @InterfaceAudience.Private<a name="line.410"></a>
+<span class="sourceLineNo">411</span>  public void setDeleted(final long procId, final boolean isDeleted) {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    BitSetNode node = getOrCreateNode(procId);<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    assert node.contains(procId) : "expected procId=" + procId + " in the node=" + node;<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    node.updateState(procId, isDeleted);<a name="line.414"></a>
 <span class="sourceLineNo">415</span>  }<a name="line.415"></a>
 <span class="sourceLineNo">416</span><a name="line.416"></a>
-<span class="sourceLineNo">417</span>  @InterfaceAudience.Private<a name="line.417"></a>
-<span class="sourceLineNo">418</span>  public void setDeleted(final long procId, final boolean isDeleted) {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    BitSetNode node = getOrCreateNode(procId);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    assert node.contains(procId) : "expected procId=" + procId + " in the node=" + node;<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    node.updateState(procId, isDeleted);<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>  public void clear() {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    this.map.clear();<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    resetUpdates();<a name="line.426"></a>
-<span class="sourceLineNo">427</span>  }<a name="line.427"></a>
-<span class="sourceLineNo">428</span><a name="line.428"></a>
-<span class="sourceLineNo">429</span>  public DeleteState isDeleted(long procId) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    Map.Entry&lt;Long, BitSetNode&gt; entry = map.floorEntry(procId);<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    if (entry != null &amp;&amp; entry.getValue().contains(procId)) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      BitSetNode node = entry.getValue();<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      DeleteState state = node.isDeleted(procId);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      return partial &amp;&amp; !node.isUpdated(procId) ? DeleteState.MAYBE : state;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    }<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    return partial ? DeleteState.MAYBE : DeleteState.YES;<a name="line.436"></a>
-<span class="sourceLineNo">437</span>  }<a name="line.437"></a>
-<span class="sourceLineNo">438</span><a name="line.438"></a>
-<span class="sourceLineNo">439</span>  public long getMinProcId() {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    // TODO: Cache?<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    Map.Entry&lt;Long, BitSetNode&gt; entry = map.firstEntry();<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    return entry == null ? 0 : entry.getValue().getMinProcId();<a name="line.442"></a>
-<span class="sourceLineNo">443</span>  }<a name="line.443"></a>
-<span class="sourceLineNo">444</span><a name="line.444"></a>
-<span class="sourceLineNo">445</span>  public void setKeepDeletes(boolean keepDeletes) {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    this.keepDeletes = keepDeletes;<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    if (!keepDeletes) {<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      Iterator&lt;Map.Entry&lt;Long, BitSetNode&gt;&gt; it = map.entrySet().iterator();<a name="line.448"></a>
-<span class="sourceLineNo">449</span>      while (it.hasNext()) {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>        Map.Entry&lt;Long, BitSetNode&gt; entry = it.next();<a name="line.450"></a>
-<span class="sourceLineNo">451</span>        if (entry.getValue().isEmpty()) {<a name="line.451"></a>
-<span class="sourceLineNo">452</span>          it.remove();<a name="line.452"></a>
-<span class="sourceLineNo">453</span>        }<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      }<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    }<a name="line.455"></a>
-<span class="sourceLineNo">456</span>  }<a name="line.456"></a>
-<span class="sourceLineNo">457</span><a name="line.457"></a>
-<span class="sourceLineNo">458</span>  public void setPartialFlag(boolean isPartial) {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    if (this.partial &amp;&amp; !isPartial) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      for (Map.Entry&lt;Long, BitSetNode&gt; entry : map.entrySet()) {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>        entry.getValue().unsetPartialFlag();<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      }<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    }<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    this.partial = isPartial;<a name="line.464"></a>
-<span class="sourceLineNo">465</span>  }<a name="line.465"></a>
-<span class="sourceLineNo">466</span><a name="line.466"></a>
-<span class="sourceLineNo">467</span>  public boolean isEmpty() {<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    for (Map.Entry&lt;Long, BitSetNode&gt; entry : map.entrySet()) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      if (entry.getValue().isEmpty() == false) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>        return false;<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    return true;<a name="line.473"></a>
-<span class="sourceLineNo">474</span>  }<a name="line.474"></a>
-<span class="sourceLineNo">475</span><a name="line.475"></a>
-<span class="sourceLineNo">476</span>  public boolean isUpdated() {<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    for (Map.Entry&lt;Long, BitSetNode&gt; entry : map.entrySet()) {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      if (entry.getValue().isUpdated() == false) {<a name="line.478"></a>
-<span class="sourceLineNo">479</span>        return false;<a name="line.479"></a>
-<span class="sourceLineNo">480</span>      }<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    }<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    return true;<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>  public boolean isTracking(long minId, long maxId) {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    // TODO: we can make it more precise, instead of looking just at the block<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    return map.floorEntry(minId) != null || map.floorEntry(maxId) != null;<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>  public void resetUpdates() {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    for (Map.Entry&lt;Long, BitSetNode&gt; entry : map.entrySet()) {<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      entry.getValue().resetUpdates();<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    }<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    minUpdatedProcId = Long.MAX_VALUE;<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    maxUpdatedProcId = Long.MIN_VALUE;<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>  public void undeleteAll() {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    for (Map.Entry&lt;Long, BitSetNode&gt; entry : map.entrySet()) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      entry.getValue().undeleteAll();<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    }<a name="line.501"></a>
-<span class="sourceLineNo">502</span>  }<a name="line.502"></a>
-<span class="sourceLineNo">503</span><a name="line.503"></a>
-<span class="sourceLineNo">504</span>  private BitSetNode getOrCreateNode(final long procId) {<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    // can procId fit in the left node?<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    BitSetNode leftNode = null;<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    boolean leftCanGrow = false;<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    Map.Entry&lt;Long, BitSetNode&gt; leftEntry = map.floorEntry(procId);<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    if (leftEntry != null) {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>      leftNode = leftEntry.getValue();<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      if (leftNode.contains(procId)) {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>        return leftNode;<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      }<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      leftCanGrow = leftNode.canGrow(procId);<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    }<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>    BitSetNode rightNode = null;<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    boolean rightCanGrow = false;<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    Map.Entry&lt;Long, BitSetNode&gt; rightEntry = map.ceilingEntry(procId);<a name="line.519"></a>
-<span class="sourceLineNo">520</span>    if (rightEntry != null) {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>      rightNode = rightEntry.getValue();<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      rightCanGrow = rightNode.canGrow(procId);<a name="line.522"></a>
-<span class="sourceLineNo">523</span>      if (leftNode != null) {<a name="line.523"></a>
-<span class="sourceLineNo">524</span>        if (leftNode.canMerge(rightNode)) {<a name="line.524"></a>
-<span class="sourceLineNo">525</span>          // merge left and right node<a name="line.525"></a>
-<span class="sourceLineNo">526</span>          return mergeNodes(leftNode, rightNode);<a name="line.526"></a>
-<span class="sourceLineNo">527</span>        }<a name="line.527"></a>
-<span class="sourceLineNo">528</span><a name="line.528"></a>
-<span class="sourceLineNo">529</span>        if (leftCanGrow &amp;&amp; rightCanGrow) {<a name="line.529"></a>
-<span class="sourceLineNo">530</span>          if ((procId - leftNode.getEnd()) &lt;= (rightNode.getStart() - procId)) {<a name="line.530"></a>
-<span class="sourceLineNo">531</span>            // grow the left node<a name="line.531"></a>
-<span class="sourceLineNo">532</span>            return growNode(leftNode, procId);<a name="line.532"></a>
-<span class="sourceLineNo">533</span>          }<a name="line.533"></a>
-<span class="sourceLineNo">534</span>          // grow the right node<a name="line.534"></a>
-<span class="sourceLineNo">535</span>          return growNode(rightNode, procId);<a name="line.535"></a>
-<span class="sourceLineNo">536</span>        }<a name="line.536"></a>
-<span class="sourceLineNo">537</span>      }<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    }<a name="line.538"></a>
-<span class="sourceLineNo">539</span><a name="line.539"></a>
-<span class="sourceLineNo">540</span>    // grow the left node<a name="line.540"></a>
-<span class="sourceLineNo">541</span>    if (leftCanGrow) {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>      return growNode(leftNode, procId);<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    }<a name="line.543"></a>
-<span class="sourceLineNo">544</span><a name="line.544"></a>
-<span class="sourceLineNo">545</span>    // grow the right node<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    if (rightCanGrow) {<a name="line.546"></a>
-<span class="sourceLineNo">547</span>      return growNode(rightNode, procId);<a name="line.547"></a>
-<span class="sourceLineNo">548</span>    }<a name="line.548"></a>
-<span class="sourceLineNo">549</span><a name="line.549"></a>
-<span class="sourceLineNo">550</span>    // add new node<a name="line.550"></a>
-<span class="sourceLineNo">551</span>    BitSetNode node = new BitSetNode(procId, partial);<a name="line.551"></a>
+<span class="sourceLineNo">417</span>  public void clear() {<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    this.map.clear();<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    resetUpdates();<a name="line.419"></a>
+<span class="sourceLineNo">420</span>  }<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>  public DeleteState isDeleted(long procId) {<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    Map.Entry&lt;Long, BitSetNode&gt; entry = map.floorEntry(procId);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    if (entry != null &amp;&amp; entry.getValue().contains(procId)) {<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      BitSetNode node = entry.getValue();<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      DeleteState state = node.isDeleted(procId);<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      return partial &amp;&amp; !node.isUpdated(procId) ? DeleteState.MAYBE : state;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    return partial ? DeleteState.MAYBE : DeleteState.YES;<a name="line.429"></a>
+<span class="sourceLineNo">430</span>  }<a name="line.430"></a>
+<span class="sourceLineNo">431</span><a name="line.431"></a>
+<span class="sourceLineNo">432</span>  public long getMinProcId() {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    // TODO: Cache?<a name="line.433"></a>
+<span class="sourceLineNo">434</span>    Map.Entry&lt;Long, BitSetNode&gt; entry = map.firstEntry();<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    return entry == null ? 0 : entry.getValue().getMinProcId();<a name="line.435"></a>
+<span class="sourceLineNo">436</span>  }<a name="line.436"></a>
+<span class="sourceLineNo">437</span><a name="line.437"></a>
+<span class="sourceLineNo">438</span>  public void setKeepDeletes(boolean keepDeletes) {<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    this.keepDeletes = keepDeletes;<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    if (!keepDeletes) {<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      Iterator&lt;Map.Entry&lt;Long, BitSetNode&gt;&gt; it = map.entrySet().iterator();<a name="line.441"></a>
+<span class="sourceLineNo">442</span>      while (it.hasNext()) {<a name="line.442"></a>
+<span class="sourceLineNo">443</span>        Map.Entry&lt;Long, BitSetNode&gt; entry = it.next();<a name="line.443"></a>
+<span class="sourceLineNo">444</span>        if (entry.getValue().isEmpty()) {<a name="line.444"></a>
+<span class="sourceLineNo">445</span>          it.remove();<a name="line.445"></a>
+<span class="sourceLineNo">446</span>        }<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      }<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    }<a name="line.448"></a>
+<span class="sourceLineNo">449</span>  }<a name="line.449"></a>
+<span class="sourceLineNo">450</span><a name="line.450"></a>
+<span class="sourceLineNo">451</span>  public void setPartialFlag(boolean isPartial) {<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    if (this.partial &amp;&amp; !isPartial) {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      for (Map.Entry&lt;Long, BitSetNode&gt; entry : map.entrySet()) {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>        entry.getValue().unsetPartialFlag();<a name="line.454"></a>
+<span class="sourceLineNo">455</span>      }<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    }<a name="line.456"></a>
+<span class="sourceLineNo">457</span>    this.partial = isPartial;<a name="line.457"></a>
+<span class="sourceLineNo">458</span>  }<a name="line.458"></a>
+<span class="sourceLineNo">459</span><a name="line.459"></a>
+<span class="sourceLineNo">460</span>  public boolean isEmpty() {<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    for (Map.Entry&lt;Long, BitSetNode&gt; entry : map.entrySet()) {<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      if (entry.getValue().isEmpty() == false) {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>        return false;<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      }<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    }<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    return true;<a name="line.466"></a>
+<span class="sourceLineNo">467</span>  }<a name="line.467"></a>
+<span class="sourceLineNo">468</span><a name="line.468"></a>
+<span class="sourceLineNo">469</span>  public boolean isUpdated() {<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    for (Map.Entry&lt;Long, BitSetNode&gt; entry : map.entrySet()) {<a name="line.470"></a>
+<span class="sourceLineNo">471</span>      if (entry.getValue().isUpdated() == false) {<a name="line.471"></a>
+<span class="sourceLineNo">472</span>        return false;<a name="line.472"></a>
+<span class="sourceLineNo">473</span>      }<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    }<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    return true;<a name="line.475"></a>
+<span class="sourceLineNo">476</span>  }<a name="line.476"></a>
+<spa

<TRUNCATED>

[22/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html b/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html
index 9a2a5bc..f6c7b80 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html
@@ -35,574 +35,567 @@
 <span class="sourceLineNo">027</span><a name="line.27"></a>
 <span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.28"></a>
 <span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.classification.InterfaceStability;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.protobuf.generated.ProcedureProtos;<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> * Keeps track of live procedures.<a name="line.34"></a>
-<span class="sourceLineNo">035</span> *<a name="line.35"></a>
-<span class="sourceLineNo">036</span> * It can be used by the ProcedureStore to identify which procedures are already<a name="line.36"></a>
-<span class="sourceLineNo">037</span> * deleted/completed to avoid the deserialization step on restart.<a name="line.37"></a>
-<span class="sourceLineNo">038</span> */<a name="line.38"></a>
-<span class="sourceLineNo">039</span>@InterfaceAudience.Private<a name="line.39"></a>
-<span class="sourceLineNo">040</span>@InterfaceStability.Evolving<a name="line.40"></a>
-<span class="sourceLineNo">041</span>public class ProcedureStoreTracker {<a name="line.41"></a>
-<span class="sourceLineNo">042</span>  private final TreeMap&lt;Long, BitSetNode&gt; map = new TreeMap&lt;Long, BitSetNode&gt;();<a name="line.42"></a>
-<span class="sourceLineNo">043</span><a name="line.43"></a>
-<span class="sourceLineNo">044</span>  private boolean keepDeletes = false;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>  private boolean partial = false;<a name="line.45"></a>
-<span class="sourceLineNo">046</span><a name="line.46"></a>
-<span class="sourceLineNo">047</span>  private long minUpdatedProcId = Long.MAX_VALUE;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>  private long maxUpdatedProcId = Long.MIN_VALUE;<a name="line.48"></a>
-<span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>  public enum DeleteState { YES, NO, MAYBE }<a name="line.50"></a>
-<span class="sourceLineNo">051</span><a name="line.51"></a>
-<span class="sourceLineNo">052</span>  public static class BitSetNode {<a name="line.52"></a>
-<span class="sourceLineNo">053</span>    private final static long WORD_MASK = 0xffffffffffffffffL;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>    private final static int ADDRESS_BITS_PER_WORD = 6;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>    private final static int BITS_PER_WORD = 1 &lt;&lt; ADDRESS_BITS_PER_WORD;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>    private final static int MAX_NODE_SIZE = 1 &lt;&lt; ADDRESS_BITS_PER_WORD;<a name="line.56"></a>
-<span class="sourceLineNo">057</span><a name="line.57"></a>
-<span class="sourceLineNo">058</span>    private final boolean partial;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>    private long[] updated;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>    private long[] deleted;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>    private long start;<a name="line.61"></a>
-<span class="sourceLineNo">062</span><a name="line.62"></a>
-<span class="sourceLineNo">063</span>    public void dump() {<a name="line.63"></a>
-<span class="sourceLineNo">064</span>      System.out.printf("%06d:%06d min=%d max=%d%n", getStart(), getEnd(),<a name="line.64"></a>
-<span class="sourceLineNo">065</span>        getMinProcId(), getMaxProcId());<a name="line.65"></a>
-<span class="sourceLineNo">066</span>      System.out.println("Update:");<a name="line.66"></a>
-<span class="sourceLineNo">067</span>      for (int i = 0; i &lt; updated.length; ++i) {<a name="line.67"></a>
-<span class="sourceLineNo">068</span>        for (int j = 0; j &lt; BITS_PER_WORD; ++j) {<a name="line.68"></a>
-<span class="sourceLineNo">069</span>          System.out.print((updated[i] &amp; (1L &lt;&lt; j)) != 0 ? "1" : "0");<a name="line.69"></a>
-<span class="sourceLineNo">070</span>        }<a name="line.70"></a>
-<span class="sourceLineNo">071</span>        System.out.println(" " + i);<a name="line.71"></a>
-<span class="sourceLineNo">072</span>      }<a name="line.72"></a>
-<span class="sourceLineNo">073</span>      System.out.println();<a name="line.73"></a>
-<span class="sourceLineNo">074</span>      System.out.println("Delete:");<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      for (int i = 0; i &lt; deleted.length; ++i) {<a name="line.75"></a>
-<span class="sourceLineNo">076</span>        for (int j = 0; j &lt; BITS_PER_WORD; ++j) {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>          System.out.print((deleted[i] &amp; (1L &lt;&lt; j)) != 0 ? "1" : "0");<a name="line.77"></a>
-<span class="sourceLineNo">078</span>        }<a name="line.78"></a>
-<span class="sourceLineNo">079</span>        System.out.println(" " + i);<a name="line.79"></a>
-<span class="sourceLineNo">080</span>      }<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      System.out.println();<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 BitSetNode(final long procId, final boolean partial) {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      start = alignDown(procId);<a name="line.85"></a>
-<span class="sourceLineNo">086</span><a name="line.86"></a>
-<span class="sourceLineNo">087</span>      int count = 1;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>      updated = new long[count];<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      deleted = new long[count];<a name="line.89"></a>
-<span class="sourceLineNo">090</span>      for (int i = 0; i &lt; count; ++i) {<a name="line.90"></a>
-<span class="sourceLineNo">091</span>        updated[i] = 0;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>        deleted[i] = partial ? 0 : WORD_MASK;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      }<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>      this.partial = partial;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      updateState(procId, false);<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 BitSetNode(final long start, final long[] updated, final long[] deleted) {<a name="line.99"></a>
-<span class="sourceLineNo">100</span>      this.start = start;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      this.updated = updated;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      this.deleted = deleted;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      this.partial = false;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    }<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>    public void update(final long procId) {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      updateState(procId, false);<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    }<a name="line.108"></a>
-<span class="sourceLineNo">109</span><a name="line.109"></a>
-<span class="sourceLineNo">110</span>    public void delete(final long procId) {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      updateState(procId, true);<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    }<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>    public Long getStart() {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      return start;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    }<a name="line.116"></a>
-<span class="sourceLineNo">117</span><a name="line.117"></a>
-<span class="sourceLineNo">118</span>    public Long getEnd() {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      return start + (updated.length &lt;&lt; ADDRESS_BITS_PER_WORD) - 1;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    }<a name="line.120"></a>
-<span class="sourceLineNo">121</span><a name="line.121"></a>
-<span class="sourceLineNo">122</span>    public boolean contains(final long procId) {<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      return start &lt;= procId &amp;&amp; procId &lt;= getEnd();<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>    public DeleteState isDeleted(final long procId) {<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      int bitmapIndex = getBitmapIndex(procId);<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      int wordIndex = bitmapIndex &gt;&gt; ADDRESS_BITS_PER_WORD;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      if (wordIndex &gt;= deleted.length) {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>        return DeleteState.MAYBE;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      }<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      return (deleted[wordIndex] &amp; (1L &lt;&lt; bitmapIndex)) != 0 ? DeleteState.YES : DeleteState.NO;<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>    private boolean isUpdated(final long procId) {<a name="line.135"></a>
-<span class="sourceLineNo">136</span>      int bitmapIndex = getBitmapIndex(procId);<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      int wordIndex = bitmapIndex &gt;&gt; ADDRESS_BITS_PER_WORD;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      if (wordIndex &gt;= updated.length) {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>        return false;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      }<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      return (updated[wordIndex] &amp; (1L &lt;&lt; bitmapIndex)) != 0;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    }<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>    public boolean isUpdated() {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      // TODO: cache the value<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      for (int i = 0; i &lt; updated.length; ++i) {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>        if ((updated[i] | deleted[i]) != WORD_MASK) {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>          return false;<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>      return true;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    }<a name="line.152"></a>
-<span class="sourceLineNo">153</span><a name="line.153"></a>
-<span class="sourceLineNo">154</span>    public boolean isEmpty() {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      // TODO: cache the value<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      for (int i = 0; i &lt; deleted.length; ++i) {<a name="line.156"></a>
-<span class="sourceLineNo">157</span>        if (deleted[i] != WORD_MASK) {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>          return false;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>        }<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      }<a name="line.160"></a>
-<span class="sourceLineNo">161</span>      return true;<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>    public void resetUpdates() {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      for (int i = 0; i &lt; updated.length; ++i) {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>        updated[i] = 0;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      }<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    }<a name="line.168"></a>
-<span class="sourceLineNo">169</span><a name="line.169"></a>
-<span class="sourceLineNo">170</span>    public void undeleteAll() {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      for (int i = 0; i &lt; updated.length; ++i) {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>        deleted[i] = 0;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      }<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    }<a name="line.174"></a>
-<span class="sourceLineNo">175</span><a name="line.175"></a>
-<span class="sourceLineNo">176</span>    public void unsetPartialFlag() {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      for (int i = 0; i &lt; updated.length; ++i) {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>        for (int j = 0; j &lt; BITS_PER_WORD; ++j) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>          if ((updated[i] &amp; (1L &lt;&lt; j)) == 0) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>            deleted[i] |= (1L &lt;&lt; j);<a name="line.180"></a>
-<span class="sourceLineNo">181</span>          }<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        }<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      }<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>    public ProcedureProtos.ProcedureStoreTracker.TrackerNode convert() {<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      ProcedureProtos.ProcedureStoreTracker.TrackerNode.Builder builder =<a name="line.187"></a>
-<span class="sourceLineNo">188</span>        ProcedureProtos.ProcedureStoreTracker.TrackerNode.newBuilder();<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      builder.setStartId(start);<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      for (int i = 0; i &lt; updated.length; ++i) {<a name="line.190"></a>
-<span class="sourceLineNo">191</span>        builder.addUpdated(updated[i]);<a name="line.191"></a>
-<span class="sourceLineNo">192</span>        builder.addDeleted(deleted[i]);<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      }<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      return builder.build();<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    }<a name="line.195"></a>
-<span class="sourceLineNo">196</span><a name="line.196"></a>
-<span class="sourceLineNo">197</span>    public static BitSetNode convert(ProcedureProtos.ProcedureStoreTracker.TrackerNode data) {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      long start = data.getStartId();<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      int size = data.getUpdatedCount();<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      long[] updated = new long[size];<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      long[] deleted = new long[size];<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      for (int i = 0; i &lt; size; ++i) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>        updated[i] = data.getUpdated(i);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>        deleted[i] = data.getDeleted(i);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      }<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      return new BitSetNode(start, updated, deleted);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    }<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>    // ========================================================================<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    //  Grow/Merge Helpers<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    // ========================================================================<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    public boolean canGrow(final long procId) {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      return Math.abs(procId - start) &lt; MAX_NODE_SIZE;<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>    public boolean canMerge(final BitSetNode rightNode) {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      assert start &lt; rightNode.getEnd();<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      return (rightNode.getEnd() - start) &lt; MAX_NODE_SIZE;<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>    public void grow(final long procId) {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      int delta, offset;<a name="line.222"></a>
-<span class="sourceLineNo">223</span><a name="line.223"></a>
-<span class="sourceLineNo">224</span>      if (procId &lt; start) {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>        // add to head<a name="line.225"></a>
-<span class="sourceLineNo">226</span>        long newStart = alignDown(procId);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>        delta = (int)(start - newStart) &gt;&gt; ADDRESS_BITS_PER_WORD;<a name="line.227"></a>
-<span class="sourceLineNo">228</span>        offset = delta;<a name="line.228"></a>
-<span class="sourceLineNo">229</span>        start = newStart;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      } else {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>        // Add to tail<a name="line.231"></a>
-<span class="sourceLineNo">232</span>        long newEnd = alignUp(procId + 1);<a name="line.232"></a>
-<span class="sourceLineNo">233</span>        delta = (int)(newEnd - getEnd()) &gt;&gt; ADDRESS_BITS_PER_WORD;<a name="line.233"></a>
-<span class="sourceLineNo">234</span>        offset = 0;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      }<a name="line.235"></a>
-<span class="sourceLineNo">236</span><a name="line.236"></a>
-<span class="sourceLineNo">237</span>      long[] newBitmap;<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      int oldSize = updated.length;<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>      newBitmap = new long[oldSize + delta];<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      for (int i = 0; i &lt; newBitmap.length; ++i) {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>        newBitmap[i] = 0;<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      }<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      System.arraycopy(updated, 0, newBitmap, offset, oldSize);<a name="line.244"></a>
-<span class="sourceLineNo">245</span>      updated = newBitmap;<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>      newBitmap = new long[deleted.length + delta];<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      for (int i = 0; i &lt; newBitmap.length; ++i) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        newBitmap[i] = partial ? 0 : WORD_MASK;<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      }<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      System.arraycopy(deleted, 0, newBitmap, offset, oldSize);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      deleted = newBitmap;<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>    public void merge(final BitSetNode rightNode) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      int delta = (int)(rightNode.getEnd() - getEnd()) &gt;&gt; ADDRESS_BITS_PER_WORD;<a name="line.256"></a>
-<span class="sourceLineNo">257</span><a name="line.257"></a>
-<span class="sourceLineNo">258</span>      long[] newBitmap;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      int oldSize = updated.length;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      int newSize = (delta - rightNode.updated.length);<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      int offset = oldSize + newSize;<a name="line.261"></a>
-<span class="sourceLineNo">262</span><a name="line.262"></a>
-<span class="sourceLineNo">263</span>      newBitmap = new long[oldSize + delta];<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      System.arraycopy(updated, 0, newBitmap, 0, oldSize);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      System.arraycopy(rightNode.updated, 0, newBitmap, offset, rightNode.updated.length);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      updated = newBitmap;<a name="line.266"></a>
-<span class="sourceLineNo">267</span><a name="line.267"></a>
-<span class="sourceLineNo">268</span>      newBitmap = new long[oldSize + delta];<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      System.arraycopy(deleted, 0, newBitmap, 0, oldSize);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      System.arraycopy(rightNode.deleted, 0, newBitmap, offset, rightNode.deleted.length);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      deleted = newBitmap;<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>      for (int i = 0; i &lt; newSize; ++i) {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        updated[offset + i] = 0;<a name="line.274"></a>
-<span class="sourceLineNo">275</span>        deleted[offset + i] = partial ? 0 : WORD_MASK;<a name="line.275"></a>
-<span class="sourceLineNo">276</span>      }<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    }<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>    @Override<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    public String toString() {<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      return "BitSetNode(" + getStart() + "-" + getEnd() + ")";<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    }<a name="line.282"></a>
-<span class="sourceLineNo">283</span><a name="line.283"></a>
-<span class="sourceLineNo">284</span>    // ========================================================================<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    //  Min/Max Helpers<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    // ========================================================================<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    public long getMinProcId() {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      long minProcId = start;<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      for (int i = 0; i &lt; deleted.length; ++i) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        if (deleted[i] == 0) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>          return(minProcId);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>        }<a name="line.292"></a>
-<span class="sourceLineNo">293</span><a name="line.293"></a>
-<span class="sourceLineNo">294</span>        if (deleted[i] != WORD_MASK) {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>          for (int j = 0; j &lt; BITS_PER_WORD; ++j) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>            if ((deleted[i] &amp; (1L &lt;&lt; j)) != 0) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>              return minProcId + j;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>            }<a name="line.298"></a>
-<span class="sourceLineNo">299</span>          }<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        }<a name="line.300"></a>
-<span class="sourceLineNo">301</span><a name="line.301"></a>
-<span class="sourceLineNo">302</span>        minProcId += BITS_PER_WORD;<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      }<a name="line.303"></a>
-<span class="sourceLineNo">304</span>      return minProcId;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    }<a name="line.305"></a>
-<span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>    public long getMaxProcId() {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>      long maxProcId = getEnd();<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      for (int i = deleted.length - 1; i &gt;= 0; --i) {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>        if (deleted[i] == 0) {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>          return maxProcId;<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>        if (deleted[i] != WORD_MASK) {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>          for (int j = BITS_PER_WORD - 1; j &gt;= 0; --j) {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>            if ((deleted[i] &amp; (1L &lt;&lt; j)) == 0) {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>              return maxProcId - (BITS_PER_WORD - 1 - j);<a name="line.317"></a>
-<span class="sourceLineNo">318</span>            }<a name="line.318"></a>
-<span class="sourceLineNo">319</span>          }<a name="line.319"></a>
-<span class="sourceLineNo">320</span>        }<a name="line.320"></a>
-<span class="sourceLineNo">321</span>        maxProcId -= BITS_PER_WORD;<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      }<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      return maxProcId;<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    }<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>    // ========================================================================<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    //  Bitmap Helpers<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    // ========================================================================<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    private int getBitmapIndex(final long procId) {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>      return (int)(procId - start);<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    }<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>    private void updateState(final long procId, final boolean isDeleted) {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      int bitmapIndex = getBitmapIndex(procId);<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      int wordIndex = bitmapIndex &gt;&gt; ADDRESS_BITS_PER_WORD;<a name="line.335"></a>
-<span class="sourceLineNo">336</span>      long value = (1L &lt;&lt; bitmapIndex);<a name="line.336"></a>
-<span class="sourceLineNo">337</span><a name="line.337"></a>
-<span class="sourceLineNo">338</span>      if (isDeleted) {<a name="line.338"></a>
-<span class="sourceLineNo">339</span>        updated[wordIndex] |= value;<a name="line.339"></a>
-<span class="sourceLineNo">340</span>        deleted[wordIndex] |= value;<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      } else {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>        updated[wordIndex] |= value;<a name="line.342"></a>
-<span class="sourceLineNo">343</span>        deleted[wordIndex] &amp;= ~value;<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      }<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    }<a name="line.345"></a>
-<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span>    // ========================================================================<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    //  Helpers<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    // ========================================================================<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    private static long alignUp(final long x) {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      return (x + (BITS_PER_WORD - 1)) &amp; -BITS_PER_WORD;<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
-<span class="sourceLineNo">353</span><a name="line.353"></a>
-<span class="sourceLineNo">354</span>    private static long alignDown(final long x) {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      return x &amp; -BITS_PER_WORD;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    }<a name="line.356"></a>
-<span class="sourceLineNo">357</span>  }<a name="line.357"></a>
-<span class="sourceLineNo">358</span><a name="line.358"></a>
-<span class="sourceLineNo">359</span>  public void insert(final Procedure proc, final Procedure[] subprocs) {<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    insert(proc.getProcId());<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    if (subprocs != null) {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      for (int i = 0; i &lt; subprocs.length; ++i) {<a name="line.362"></a>
-<span class="sourceLineNo">363</span>        insert(subprocs[i].getProcId());<a name="line.363"></a>
-<span class="sourceLineNo">364</span>      }<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    }<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  }<a name="line.366"></a>
-<span class="sourceLineNo">367</span><a name="line.367"></a>
-<span class="sourceLineNo">368</span>  public void update(final Procedure proc) {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    update(proc.getProcId());<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span>  public void insert(long procId) {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    BitSetNode node = getOrCreateNode(procId);<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    node.update(procId);<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    trackProcIds(procId);<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  }<a name="line.376"></a>
-<span class="sourceLineNo">377</span><a name="line.377"></a>
-<span class="sourceLineNo">378</span>  public void update(long procId) {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    Map.Entry&lt;Long, BitSetNode&gt; entry = map.floorEntry(procId);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    assert entry != null : "expected node to update procId=" + procId;<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>    BitSetNode node = entry.getValue();<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    assert node.contains(procId);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    node.update(procId);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    trackProcIds(procId);<a name="line.385"></a>
-<span class="sourceLineNo">386</span>  }<a name="line.386"></a>
-<span class="sourceLineNo">387</span><a name="line.387"></a>
-<span class="sourceLineNo">388</span>  public void delete(long procId) {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    Map.Entry&lt;Long, BitSetNode&gt; entry = map.floorEntry(procId);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    assert entry != null : "expected node to delete procId=" + procId;<a name="line.390"></a>
-<span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span>    BitSetNode node = entry.getValue();<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    assert node.contains(procId) : "expected procId in the node";<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    node.delete(procId);<a name="line.394"></a>
-<span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>    if (!keepDeletes &amp;&amp; node.isEmpty()) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      // TODO: RESET if (map.size() == 1)<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      map.remove(entry.getKey());<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>    trackProcIds(procId);<a name="line.401"></a>
-<span class="sourceLineNo">402</span>  }<a name="line.402"></a>
-<span class="sourceLineNo">403</span><a name="line.403"></a>
-<span class="sourceLineNo">404</span>  private void trackProcIds(long procId) {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    minUpdatedProcId = Math.min(minUpdatedProcId, procId);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    maxUpdatedProcId = Math.max(maxUpdatedProcId, procId);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  }<a name="line.407"></a>
-<span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>  public long getUpdatedMinProcId() {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    return minUpdatedProcId;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>  }<a name="line.411"></a>
-<span class="sourceLineNo">412</span><a name="line.412"></a>
-<span class="sourceLineNo">413</span>  public long getUpdatedMaxProcId() {<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    return maxUpdatedProcId;<a name="line.414"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.protobuf.generated.ProcedureProtos;<a name="line.30"></a>
+<span class="sourceLineNo">031</span><a name="line.31"></a>
+<span class="sourceLineNo">032</span>/**<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * Keeps track of live procedures.<a name="line.33"></a>
+<span class="sourceLineNo">034</span> *<a name="line.34"></a>
+<span class="sourceLineNo">035</span> * It can be used by the ProcedureStore to identify which procedures are already<a name="line.35"></a>
+<span class="sourceLineNo">036</span> * deleted/completed to avoid the deserialization step on restart.<a name="line.36"></a>
+<span class="sourceLineNo">037</span> */<a name="line.37"></a>
+<span class="sourceLineNo">038</span>@InterfaceAudience.Private<a name="line.38"></a>
+<span class="sourceLineNo">039</span>@InterfaceStability.Evolving<a name="line.39"></a>
+<span class="sourceLineNo">040</span>public class ProcedureStoreTracker {<a name="line.40"></a>
+<span class="sourceLineNo">041</span>  private final TreeMap&lt;Long, BitSetNode&gt; map = new TreeMap&lt;Long, BitSetNode&gt;();<a name="line.41"></a>
+<span class="sourceLineNo">042</span><a name="line.42"></a>
+<span class="sourceLineNo">043</span>  private boolean keepDeletes = false;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>  private boolean partial = false;<a name="line.44"></a>
+<span class="sourceLineNo">045</span><a name="line.45"></a>
+<span class="sourceLineNo">046</span>  private long minUpdatedProcId = Long.MAX_VALUE;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>  private long maxUpdatedProcId = Long.MIN_VALUE;<a name="line.47"></a>
+<span class="sourceLineNo">048</span><a name="line.48"></a>
+<span class="sourceLineNo">049</span>  public enum DeleteState { YES, NO, MAYBE }<a name="line.49"></a>
+<span class="sourceLineNo">050</span><a name="line.50"></a>
+<span class="sourceLineNo">051</span>  public static class BitSetNode {<a name="line.51"></a>
+<span class="sourceLineNo">052</span>    private final static long WORD_MASK = 0xffffffffffffffffL;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>    private final static int ADDRESS_BITS_PER_WORD = 6;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>    private final static int BITS_PER_WORD = 1 &lt;&lt; ADDRESS_BITS_PER_WORD;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>    private final static int MAX_NODE_SIZE = 1 &lt;&lt; ADDRESS_BITS_PER_WORD;<a name="line.55"></a>
+<span class="sourceLineNo">056</span><a name="line.56"></a>
+<span class="sourceLineNo">057</span>    private final boolean partial;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    private long[] updated;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    private long[] deleted;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>    private long start;<a name="line.60"></a>
+<span class="sourceLineNo">061</span><a name="line.61"></a>
+<span class="sourceLineNo">062</span>    public void dump() {<a name="line.62"></a>
+<span class="sourceLineNo">063</span>      System.out.printf("%06d:%06d min=%d max=%d%n", getStart(), getEnd(),<a name="line.63"></a>
+<span class="sourceLineNo">064</span>        getMinProcId(), getMaxProcId());<a name="line.64"></a>
+<span class="sourceLineNo">065</span>      System.out.println("Update:");<a name="line.65"></a>
+<span class="sourceLineNo">066</span>      for (int i = 0; i &lt; updated.length; ++i) {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>        for (int j = 0; j &lt; BITS_PER_WORD; ++j) {<a name="line.67"></a>
+<span class="sourceLineNo">068</span>          System.out.print((updated[i] &amp; (1L &lt;&lt; j)) != 0 ? "1" : "0");<a name="line.68"></a>
+<span class="sourceLineNo">069</span>        }<a name="line.69"></a>
+<span class="sourceLineNo">070</span>        System.out.println(" " + i);<a name="line.70"></a>
+<span class="sourceLineNo">071</span>      }<a name="line.71"></a>
+<span class="sourceLineNo">072</span>      System.out.println();<a name="line.72"></a>
+<span class="sourceLineNo">073</span>      System.out.println("Delete:");<a name="line.73"></a>
+<span class="sourceLineNo">074</span>      for (int i = 0; i &lt; deleted.length; ++i) {<a name="line.74"></a>
+<span class="sourceLineNo">075</span>        for (int j = 0; j &lt; BITS_PER_WORD; ++j) {<a name="line.75"></a>
+<span class="sourceLineNo">076</span>          System.out.print((deleted[i] &amp; (1L &lt;&lt; j)) != 0 ? "1" : "0");<a name="line.76"></a>
+<span class="sourceLineNo">077</span>        }<a name="line.77"></a>
+<span class="sourceLineNo">078</span>        System.out.println(" " + i);<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      }<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      System.out.println();<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    }<a name="line.81"></a>
+<span class="sourceLineNo">082</span><a name="line.82"></a>
+<span class="sourceLineNo">083</span>    public BitSetNode(final long procId, final boolean partial) {<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      start = alignDown(procId);<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>      int count = 1;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>      updated = new long[count];<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      deleted = new long[count];<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      for (int i = 0; i &lt; count; ++i) {<a name="line.89"></a>
+<span class="sourceLineNo">090</span>        updated[i] = 0;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>        deleted[i] = partial ? 0 : WORD_MASK;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>      }<a name="line.92"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span>      this.partial = partial;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>      updateState(procId, false);<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>    protected BitSetNode(final long start, final long[] updated, final long[] deleted) {<a name="line.98"></a>
+<span class="sourceLineNo">099</span>      this.start = start;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      this.updated = updated;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      this.deleted = deleted;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>      this.partial = false;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    }<a name="line.103"></a>
+<span class="sourceLineNo">104</span><a name="line.104"></a>
+<span class="sourceLineNo">105</span>    public void update(final long procId) {<a name="line.105"></a>
+<span class="sourceLineNo">106</span>      updateState(procId, false);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    }<a name="line.107"></a>
+<span class="sourceLineNo">108</span><a name="line.108"></a>
+<span class="sourceLineNo">109</span>    public void delete(final long procId) {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      updateState(procId, true);<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    }<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>    public Long getStart() {<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      return start;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    }<a name="line.115"></a>
+<span class="sourceLineNo">116</span><a name="line.116"></a>
+<span class="sourceLineNo">117</span>    public Long getEnd() {<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      return start + (updated.length &lt;&lt; ADDRESS_BITS_PER_WORD) - 1;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    }<a name="line.119"></a>
+<span class="sourceLineNo">120</span><a name="line.120"></a>
+<span class="sourceLineNo">121</span>    public boolean contains(final long procId) {<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      return start &lt;= procId &amp;&amp; procId &lt;= getEnd();<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    }<a name="line.123"></a>
+<span class="sourceLineNo">124</span><a name="line.124"></a>
+<span class="sourceLineNo">125</span>    public DeleteState isDeleted(final long procId) {<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      int bitmapIndex = getBitmapIndex(procId);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      int wordIndex = bitmapIndex &gt;&gt; ADDRESS_BITS_PER_WORD;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      if (wordIndex &gt;= deleted.length) {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>        return DeleteState.MAYBE;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      }<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      return (deleted[wordIndex] &amp; (1L &lt;&lt; bitmapIndex)) != 0 ? DeleteState.YES : DeleteState.NO;<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>    private boolean isUpdated(final long procId) {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      int bitmapIndex = getBitmapIndex(procId);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      int wordIndex = bitmapIndex &gt;&gt; ADDRESS_BITS_PER_WORD;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      if (wordIndex &gt;= updated.length) {<a name="line.137"></a>
+<span class="sourceLineNo">138</span>        return false;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>      }<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      return (updated[wordIndex] &amp; (1L &lt;&lt; bitmapIndex)) != 0;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    }<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>    public boolean isUpdated() {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      // TODO: cache the value<a name="line.144"></a>
+<span class="sourceLineNo">145</span>      for (int i = 0; i &lt; updated.length; ++i) {<a name="line.145"></a>
+<span class="sourceLineNo">146</span>        if ((updated[i] | deleted[i]) != WORD_MASK) {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>          return false;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>        }<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      }<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      return true;<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>    public boolean isEmpty() {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      // TODO: cache the value<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      for (int i = 0; i &lt; deleted.length; ++i) {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>        if (deleted[i] != WORD_MASK) {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>          return false;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>        }<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      }<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      return true;<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>    public void resetUpdates() {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      for (int i = 0; i &lt; updated.length; ++i) {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        updated[i] = 0;<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>    public void undeleteAll() {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      for (int i = 0; i &lt; updated.length; ++i) {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>        deleted[i] = 0;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      }<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    }<a name="line.173"></a>
+<span class="sourceLineNo">174</span><a name="line.174"></a>
+<span class="sourceLineNo">175</span>    public void unsetPartialFlag() {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      for (int i = 0; i &lt; updated.length; ++i) {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>        for (int j = 0; j &lt; BITS_PER_WORD; ++j) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>          if ((updated[i] &amp; (1L &lt;&lt; j)) == 0) {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>            deleted[i] |= (1L &lt;&lt; j);<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>      }<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>    public ProcedureProtos.ProcedureStoreTracker.TrackerNode convert() {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      ProcedureProtos.ProcedureStoreTracker.TrackerNode.Builder builder =<a name="line.186"></a>
+<span class="sourceLineNo">187</span>        ProcedureProtos.ProcedureStoreTracker.TrackerNode.newBuilder();<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      builder.setStartId(start);<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      for (int i = 0; i &lt; updated.length; ++i) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>        builder.addUpdated(updated[i]);<a name="line.190"></a>
+<span class="sourceLineNo">191</span>        builder.addDeleted(deleted[i]);<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      }<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      return builder.build();<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    }<a name="line.194"></a>
+<span class="sourceLineNo">195</span><a name="line.195"></a>
+<span class="sourceLineNo">196</span>    public static BitSetNode convert(ProcedureProtos.ProcedureStoreTracker.TrackerNode data) {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>      long start = data.getStartId();<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      int size = data.getUpdatedCount();<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      long[] updated = new long[size];<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      long[] deleted = new long[size];<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      for (int i = 0; i &lt; size; ++i) {<a name="line.201"></a>
+<span class="sourceLineNo">202</span>        updated[i] = data.getUpdated(i);<a name="line.202"></a>
+<span class="sourceLineNo">203</span>        deleted[i] = data.getDeleted(i);<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      }<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      return new BitSetNode(start, updated, deleted);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    }<a name="line.206"></a>
+<span class="sourceLineNo">207</span><a name="line.207"></a>
+<span class="sourceLineNo">208</span>    // ========================================================================<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    //  Grow/Merge Helpers<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    // ========================================================================<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    public boolean canGrow(final long procId) {<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      return Math.abs(procId - start) &lt; MAX_NODE_SIZE;<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>    public boolean canMerge(final BitSetNode rightNode) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      assert start &lt; rightNode.getEnd();<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      return (rightNode.getEnd() - start) &lt; MAX_NODE_SIZE;<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>    public void grow(final long procId) {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      int delta, offset;<a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>      if (procId &lt; start) {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>        // add to head<a name="line.224"></a>
+<span class="sourceLineNo">225</span>        long newStart = alignDown(procId);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>        delta = (int)(start - newStart) &gt;&gt; ADDRESS_BITS_PER_WORD;<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        offset = delta;<a name="line.227"></a>
+<span class="sourceLineNo">228</span>        start = newStart;<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      } else {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>        // Add to tail<a name="line.230"></a>
+<span class="sourceLineNo">231</span>        long newEnd = alignUp(procId + 1);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>        delta = (int)(newEnd - getEnd()) &gt;&gt; ADDRESS_BITS_PER_WORD;<a name="line.232"></a>
+<span class="sourceLineNo">233</span>        offset = 0;<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>      long[] newBitmap;<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      int oldSize = updated.length;<a name="line.237"></a>
+<span class="sourceLineNo">238</span><a name="line.238"></a>
+<span class="sourceLineNo">239</span>      newBitmap = new long[oldSize + delta];<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      for (int i = 0; i &lt; newBitmap.length; ++i) {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>        newBitmap[i] = 0;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      }<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      System.arraycopy(updated, 0, newBitmap, offset, oldSize);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      updated = newBitmap;<a name="line.244"></a>
+<span class="sourceLineNo">245</span><a name="line.245"></a>
+<span class="sourceLineNo">246</span>      newBitmap = new long[deleted.length + delta];<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      for (int i = 0; i &lt; newBitmap.length; ++i) {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        newBitmap[i] = partial ? 0 : WORD_MASK;<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      }<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      System.arraycopy(deleted, 0, newBitmap, offset, oldSize);<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      deleted = newBitmap;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    }<a name="line.252"></a>
+<span class="sourceLineNo">253</span><a name="line.253"></a>
+<span class="sourceLineNo">254</span>    public void merge(final BitSetNode rightNode) {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      int delta = (int)(rightNode.getEnd() - getEnd()) &gt;&gt; ADDRESS_BITS_PER_WORD;<a name="line.255"></a>
+<span class="sourceLineNo">256</span><a name="line.256"></a>
+<span class="sourceLineNo">257</span>      long[] newBitmap;<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      int oldSize = updated.length;<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      int newSize = (delta - rightNode.updated.length);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      int offset = oldSize + newSize;<a name="line.260"></a>
+<span class="sourceLineNo">261</span><a name="line.261"></a>
+<span class="sourceLineNo">262</span>      newBitmap = new long[oldSize + delta];<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      System.arraycopy(updated, 0, newBitmap, 0, oldSize);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      System.arraycopy(rightNode.updated, 0, newBitmap, offset, rightNode.updated.length);<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      updated = newBitmap;<a name="line.265"></a>
+<span class="sourceLineNo">266</span><a name="line.266"></a>
+<span class="sourceLineNo">267</span>      newBitmap = new long[oldSize + delta];<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      System.arraycopy(deleted, 0, newBitmap, 0, oldSize);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      System.arraycopy(rightNode.deleted, 0, newBitmap, offset, rightNode.deleted.length);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      deleted = newBitmap;<a name="line.270"></a>
+<span class="sourceLineNo">271</span><a name="line.271"></a>
+<span class="sourceLineNo">272</span>      for (int i = 0; i &lt; newSize; ++i) {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        updated[offset + i] = 0;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        deleted[offset + i] = partial ? 0 : WORD_MASK;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      }<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    }<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>    @Override<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    public String toString() {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      return "BitSetNode(" + getStart() + "-" + getEnd() + ")";<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    }<a name="line.281"></a>
+<span class="sourceLineNo">282</span><a name="line.282"></a>
+<span class="sourceLineNo">283</span>    // ========================================================================<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    //  Min/Max Helpers<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    // ========================================================================<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    public long getMinProcId() {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      long minProcId = start;<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      for (int i = 0; i &lt; deleted.length; ++i) {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>        if (deleted[i] == 0) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>          return(minProcId);<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        }<a name="line.291"></a>
+<span class="sourceLineNo">292</span><a name="line.292"></a>
+<span class="sourceLineNo">293</span>        if (deleted[i] != WORD_MASK) {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>          for (int j = 0; j &lt; BITS_PER_WORD; ++j) {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>            if ((deleted[i] &amp; (1L &lt;&lt; j)) != 0) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>              return minProcId + j;<a name="line.296"></a>
+<span class="sourceLineNo">297</span>            }<a name="line.297"></a>
+<span class="sourceLineNo">298</span>          }<a name="line.298"></a>
+<span class="sourceLineNo">299</span>        }<a name="line.299"></a>
+<span class="sourceLineNo">300</span><a name="line.300"></a>
+<span class="sourceLineNo">301</span>        minProcId += BITS_PER_WORD;<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      }<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      return minProcId;<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    }<a name="line.304"></a>
+<span class="sourceLineNo">305</span><a name="line.305"></a>
+<span class="sourceLineNo">306</span>    public long getMaxProcId() {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      long maxProcId = getEnd();<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      for (int i = deleted.length - 1; i &gt;= 0; --i) {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>        if (deleted[i] == 0) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>          return maxProcId;<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>        if (deleted[i] != WORD_MASK) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>          for (int j = BITS_PER_WORD - 1; j &gt;= 0; --j) {<a name="line.314"></a>
+<span class="sourceLineNo">315</span>            if ((deleted[i] &amp; (1L &lt;&lt; j)) == 0) {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>              return maxProcId - (BITS_PER_WORD - 1 - j);<a name="line.316"></a>
+<span class="sourceLineNo">317</span>            }<a name="line.317"></a>
+<span class="sourceLineNo">318</span>          }<a name="line.318"></a>
+<span class="sourceLineNo">319</span>        }<a name="line.319"></a>
+<span class="sourceLineNo">320</span>        maxProcId -= BITS_PER_WORD;<a name="line.320"></a>
+<span class="sourceLineNo">321</span>      }<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      return maxProcId;<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    }<a name="line.323"></a>
+<span class="sourceLineNo">324</span><a name="line.324"></a>
+<span class="sourceLineNo">325</span>    // ========================================================================<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    //  Bitmap Helpers<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    // ========================================================================<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    private int getBitmapIndex(final long procId) {<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      return (int)(procId - start);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    }<a name="line.330"></a>
+<span class="sourceLineNo">331</span><a name="line.331"></a>
+<span class="sourceLineNo">332</span>    private void updateState(final long procId, final boolean isDeleted) {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      int bitmapIndex = getBitmapIndex(procId);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      int wordIndex = bitmapIndex &gt;&gt; ADDRESS_BITS_PER_WORD;<a name="line.334"></a>
+<span class="sourceLineNo">335</span>      long value = (1L &lt;&lt; bitmapIndex);<a name="line.335"></a>
+<span class="sourceLineNo">336</span><a name="line.336"></a>
+<span class="sourceLineNo">337</span>      if (isDeleted) {<a name="line.337"></a>
+<span class="sourceLineNo">338</span>        updated[wordIndex] |= value;<a name="line.338"></a>
+<span class="sourceLineNo">339</span>        deleted[wordIndex] |= value;<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      } else {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>        updated[wordIndex] |= value;<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        deleted[wordIndex] &amp;= ~value;<a name="line.342"></a>
+<span class="sourceLineNo">343</span>      }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    }<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>    // ========================================================================<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    //  Helpers<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    // ========================================================================<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    private static long alignUp(final long x) {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      return (x + (BITS_PER_WORD - 1)) &amp; -BITS_PER_WORD;<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    }<a name="line.351"></a>
+<span class="sourceLineNo">352</span><a name="line.352"></a>
+<span class="sourceLineNo">353</span>    private static long alignDown(final long x) {<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      return x &amp; -BITS_PER_WORD;<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    }<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  }<a name="line.356"></a>
+<span class="sourceLineNo">357</span><a name="line.357"></a>
+<span class="sourceLineNo">358</span>  public void insert(long procId) {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    BitSetNode node = getOrCreateNode(procId);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    node.update(procId);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    trackProcIds(procId);<a name="line.361"></a>
+<span class="sourceLineNo">362</span>  }<a name="line.362"></a>
+<span class="sourceLineNo">363</span><a name="line.363"></a>
+<span class="sourceLineNo">364</span>  public void insert(final long procId, final long[] subProcIds) {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    update(procId);<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    for (int i = 0; i &lt; subProcIds.length; ++i) {<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      insert(subProcIds[i]);<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    }<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  }<a name="line.369"></a>
+<span class="sourceLineNo">370</span><a name="line.370"></a>
+<span class="sourceLineNo">371</span>  public void update(long procId) {<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    Map.Entry&lt;Long, BitSetNode&gt; entry = map.floorEntry(procId);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    assert entry != null : "expected node to update procId=" + procId;<a name="line.373"></a>
+<span class="sourceLineNo">374</span><a name="line.374"></a>
+<span class="sourceLineNo">375</span>    BitSetNode node = entry.getValue();<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    assert node.contains(procId);<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    node.update(procId);<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    trackProcIds(procId);<a name="line.378"></a>
+<span class="sourceLineNo">379</span>  }<a name="line.379"></a>
+<span class="sourceLineNo">380</span><a name="line.380"></a>
+<span class="sourceLineNo">381</span>  public void delete(long procId) {<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    Map.Entry&lt;Long, BitSetNode&gt; entry = map.floorEntry(procId);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    assert entry != null : "expected node to delete procId=" + procId;<a name="line.383"></a>
+<span class="sourceLineNo">384</span><a name="line.384"></a>
+<span class="sourceLineNo">385</span>    BitSetNode node = entry.getValue();<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    assert node.contains(procId) : "expected procId in the node";<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    node.delete(procId);<a name="line.387"></a>
+<span class="sourceLineNo">388</span><a name="line.388"></a>
+<span class="sourceLineNo">389</span>    if (!keepDeletes &amp;&amp; node.isEmpty()) {<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      // TODO: RESET if (map.size() == 1)<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      map.remove(entry.getKey());<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    }<a name="line.392"></a>
+<span class="sourceLineNo">393</span><a name="line.393"></a>
+<span class="sourceLineNo">394</span>    trackProcIds(procId);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  }<a name="line.395"></a>
+<span class="sourceLineNo">396</span><a name="line.396"></a>
+<span class="sourceLineNo">397</span>  private void trackProcIds(long procId) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    minUpdatedProcId = Math.min(minUpdatedProcId, procId);<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    maxUpdatedProcId = Math.max(maxUpdatedProcId, procId);<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>  public long getUpdatedMinProcId() {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    return minUpdatedProcId;<a name="line.403"></a>
+<span class="sourceLineNo">404</span>  }<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>  public long getUpdatedMaxProcId() {<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    return maxUpdatedProcId;<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>  @InterfaceAudience.Private<a name="line.410"></a>
+<span class="sourceLineNo">411</span>  public void setDeleted(final long procId, final boolean isDeleted) {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    BitSetNode node = getOrCreateNode(procId);<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    assert node.contains(procId) : "expected procId=" + procId + " in the node=" + node;<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    node.updateState(procId, isDeleted);<a name="line.414"></a>
 <span class="sourceLineNo">415</span>  }<a name="line.415"></a>
 <span class="sourceLineNo">416</span><a name="line.416"></a>
-<span class="sourceLineNo">417</span>  @InterfaceAudience.Private<a name="line.417"></a>
-<span class="sourceLineNo">418</span>  public void setDeleted(final long procId, final boolean isDeleted) {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    BitSetNode node = getOrCreateNode(procId);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    assert node.contains(procId) : "expected procId=" + procId + " in the node=" + node;<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    node.updateState(procId, isDeleted);<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>  public void clear() {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    this.map.clear();<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    resetUpdates();<a name="line.426"></a>
-<span class="sourceLineNo">427</span>  }<a name="line.427"></a>
-<span class="sourceLineNo">428</span><a name="line.428"></a>
-<span class="sourceLineNo">429</span>  public DeleteState isDeleted(long procId) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    Map.Entry&lt;Long, BitSetNode&gt; entry = map.floorEntry(procId);<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    if (entry != null &amp;&amp; entry.getValue().contains(procId)) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      BitSetNode node = entry.getValue();<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      DeleteState state = node.isDeleted(procId);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      return partial &amp;&amp; !node.isUpdated(procId) ? DeleteState.MAYBE : state;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    }<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    return partial ? DeleteState.MAYBE : DeleteState.YES;<a name="line.436"></a>
-<span class="sourceLineNo">437</span>  }<a name="line.437"></a>
-<span class="sourceLineNo">438</span><a name="line.438"></a>
-<span class="sourceLineNo">439</span>  public long getMinProcId() {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    // TODO: Cache?<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    Map.Entry&lt;Long, BitSetNode&gt; entry = map.firstEntry();<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    return entry == null ? 0 : entry.getValue().getMinProcId();<a name="line.442"></a>
-<span class="sourceLineNo">443</span>  }<a name="line.443"></a>
-<span class="sourceLineNo">444</span><a name="line.444"></a>
-<span class="sourceLineNo">445</span>  public void setKeepDeletes(boolean keepDeletes) {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    this.keepDeletes = keepDeletes;<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    if (!keepDeletes) {<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      Iterator&lt;Map.Entry&lt;Long, BitSetNode&gt;&gt; it = map.entrySet().iterator();<a name="line.448"></a>
-<span class="sourceLineNo">449</span>      while (it.hasNext()) {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>        Map.Entry&lt;Long, BitSetNode&gt; entry = it.next();<a name="line.450"></a>
-<span class="sourceLineNo">451</span>        if (entry.getValue().isEmpty()) {<a name="line.451"></a>
-<span class="sourceLineNo">452</span>          it.remove();<a name="line.452"></a>
-<span class="sourceLineNo">453</span>        }<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      }<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    }<a name="line.455"></a>
-<span class="sourceLineNo">456</span>  }<a name="line.456"></a>
-<span class="sourceLineNo">457</span><a name="line.457"></a>
-<span class="sourceLineNo">458</span>  public void setPartialFlag(boolean isPartial) {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    if (this.partial &amp;&amp; !isPartial) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      for (Map.Entry&lt;Long, BitSetNode&gt; entry : map.entrySet()) {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>        entry.getValue().unsetPartialFlag();<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      }<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    }<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    this.partial = isPartial;<a name="line.464"></a>
-<span class="sourceLineNo">465</span>  }<a name="line.465"></a>
-<span class="sourceLineNo">466</span><a name="line.466"></a>
-<span class="sourceLineNo">467</span>  public boolean isEmpty() {<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    for (Map.Entry&lt;Long, BitSetNode&gt; entry : map.entrySet()) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      if (entry.getValue().isEmpty() == false) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>        return false;<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    return true;<a name="line.473"></a>
-<span class="sourceLineNo">474</span>  }<a name="line.474"></a>
-<span class="sourceLineNo">475</span><a name="line.475"></a>
-<span class="sourceLineNo">476</span>  public boolean isUpdated() {<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    for (Map.Entry&lt;Long, BitSetNode&gt; entry : map.entrySet()) {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      if (entry.getValue().isUpdated() == false) {<a name="line.478"></a>
-<span class="sourceLineNo">479</span>        return false;<a name="line.479"></a>
-<span class="sourceLineNo">480</span>      }<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    }<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    return true;<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>  public boolean isTracking(long minId, long maxId) {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    // TODO: we can make it more precise, instead of looking just at the block<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    return map.floorEntry(minId) != null || map.floorEntry(maxId) != null;<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>  public void resetUpdates() {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    for (Map.Entry&lt;Long, BitSetNode&gt; entry : map.entrySet()) {<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      entry.getValue().resetUpdates();<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    }<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    minUpdatedProcId = Long.MAX_VALUE;<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    maxUpdatedProcId = Long.MIN_VALUE;<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>  public void undeleteAll() {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    for (Map.Entry&lt;Long, BitSetNode&gt; entry : map.entrySet()) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      entry.getValue().undeleteAll();<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    }<a name="line.501"></a>
-<span class="sourceLineNo">502</span>  }<a name="line.502"></a>
-<span class="sourceLineNo">503</span><a name="line.503"></a>
-<span class="sourceLineNo">504</span>  private BitSetNode getOrCreateNode(final long procId) {<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    // can procId fit in the left node?<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    BitSetNode leftNode = null;<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    boolean leftCanGrow = false;<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    Map.Entry&lt;Long, BitSetNode&gt; leftEntry = map.floorEntry(procId);<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    if (leftEntry != null) {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>      leftNode = leftEntry.getValue();<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      if (leftNode.contains(procId)) {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>        return leftNode;<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      }<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      leftCanGrow = leftNode.canGrow(procId);<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    }<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>    BitSetNode rightNode = null;<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    boolean rightCanGrow = false;<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    Map.Entry&lt;Long, BitSetNode&gt; rightEntry = map.ceilingEntry(procId);<a name="line.519"></a>
-<span class="sourceLineNo">520</span>    if (rightEntry != null) {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>      rightNode = rightEntry.getValue();<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      rightCanGrow = rightNode.canGrow(procId);<a name="line.522"></a>
-<span class="sourceLineNo">523</span>      if (leftNode != null) {<a name="line.523"></a>
-<span class="sourceLineNo">524</span>        if (leftNode.canMerge(rightNode)) {<a name="line.524"></a>
-<span class="sourceLineNo">525</span>          // merge left and right node<a name="line.525"></a>
-<span class="sourceLineNo">526</span>          return mergeNodes(leftNode, rightNode);<a name="line.526"></a>
-<span class="sourceLineNo">527</span>        }<a name="line.527"></a>
-<span class="sourceLineNo">528</span><a name="line.528"></a>
-<span class="sourceLineNo">529</span>        if (leftCanGrow &amp;&amp; rightCanGrow) {<a name="line.529"></a>
-<span class="sourceLineNo">530</span>          if ((procId - leftNode.getEnd()) &lt;= (rightNode.getStart() - procId)) {<a name="line.530"></a>
-<span class="sourceLineNo">531</span>            // grow the left node<a name="line.531"></a>
-<span class="sourceLineNo">532</span>            return growNode(leftNode, procId);<a name="line.532"></a>
-<span class="sourceLineNo">533</span>          }<a name="line.533"></a>
-<span class="sourceLineNo">534</span>          // grow the right node<a name="line.534"></a>
-<span class="sourceLineNo">535</span>          return growNode(rightNode, procId);<a name="line.535"></a>
-<span class="sourceLineNo">536</span>        }<a name="line.536"></a>
-<span class="sourceLineNo">537</span>      }<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    }<a name="line.538"></a>
-<span class="sourceLineNo">539</span><a name="line.539"></a>
-<span class="sourceLineNo">540</span>    // grow the left node<a name="line.540"></a>
-<span class="sourceLineNo">541</span>    if (leftCanGrow) {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>      return growNode(leftNode, procId);<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    }<a name="line.543"></a>
-<span class="sourceLineNo">544</span><a name="line.544"></a>
-<span class="sourceLineNo">545</span>    // grow the right node<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    if (rightCanGrow) {<a name="line.546"></a>
-<span class="sourceLineNo">547</span>      return growNode(rightNode, procId);<a name="line.547"></a>
-<span class="sourceLineNo">548</span>    }<a name="line.548"></a>
-<span class="sourceLineNo">549</span><a name="line.549"></a>
-<span class="sourceLineNo">550</span>    // add new node<a name="line.550"></a>
-<span class="sourceLineNo">551</span>    BitSetNode node = new BitSetNode(procId, partial);<a name="line.551"></a>
+<span class="sourceLineNo">417</span>  public void clear() {<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    this.map.clear();<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    resetUpdates();<a name="line.419"></a>
+<span class="sourceLineNo">420</span>  }<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>  public DeleteState isDeleted(long procId) {<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    Map.Entry&lt;Long, BitSetNode&gt; entry = map.floorEntry(procId);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    if (entry != null &amp;&amp; entry.getValue().contains(procId)) {<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      BitSetNode node = entry.getValue();<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      DeleteState state = node.isDeleted(procId);<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      return partial &amp;&amp; !node.isUpdated(procId) ? DeleteState.MAYBE : state;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    return partial ? DeleteState.MAYBE : DeleteState.YES;<a name="line.429"></a>
+<span class="sourceLineNo">430</span>  }<a name="line.430"></a>
+<span class="sourceLineNo">431</span><a name="line.431"></a>
+<span class="sourceLineNo">432</span>  public long getMinProcId() {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    // TODO: Cache?<a name="line.433"></a>
+<span class="sourceLineNo">434</span>    Map.Entry&lt;Long, BitSetNode&gt; entry = map.firstEntry();<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    return entry == null ? 0 : entry.getValue().getMinProcId();<a name="line.435"></a>
+<span class="sourceLineNo">436</span>  }<a name="line.436"></a>
+<span class="sourceLineNo">437</span><a name="line.437"></a>
+<span class="sourceLineNo">438</span>  public void setKeepDeletes(boolean keepDeletes) {<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    this.keepDeletes = keepDeletes;<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    if (!keepDeletes) {<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      Iterator&lt;Map.Entry&lt;Long, BitSetNode&gt;&gt; it = map.entrySet().iterator();<a name="line.441"></a>
+<span class="sourceLineNo">442</span>      while (it.hasNext()) {<a name="line.442"></a>
+<span class="sourceLineNo">443</span>        Map.Entry&lt;Long, BitSetNode&gt; entry = it.next();<a name="line.443"></a>
+<span class="sourceLineNo">444</span>        if (entry.getValue().isEmpty()) {<a name="line.444"></a>
+<span class="sourceLineNo">445</span>          it.remove();<a name="line.445"></a>
+<span class="sourceLineNo">446</span>        }<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      }<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    }<a name="line.448"></a>
+<span class="sourceLineNo">449</span>  }<a name="line.449"></a>
+<span class="sourceLineNo">450</span><a name="line.450"></a>
+<span class="sourceLineNo">451</span>  public void setPartialFlag(boolean isPartial) {<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    if (this.partial &amp;&amp; !isPartial) {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      for (Map.Entry&lt;Long, BitSetNode&gt; entry : map.entrySet()) {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>        entry.getValue().unsetPartialFlag();<a name="line.454"></a>
+<span class="sourceLineNo">455</span>      }<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    }<a name="line.456"></a>
+<span class="sourceLineNo">457</span>    this.partial = isPartial;<a name="line.457"></a>
+<span class="sourceLineNo">458</span>  }<a name="line.458"></a>
+<span class="sourceLineNo">459</span><a name="line.459"></a>
+<span class="sourceLineNo">460</span>  public boolean isEmpty() {<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    for (Map.Entry&lt;Long, BitSetNode&gt; entry : map.entrySet()) {<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      if (entry.getValue().isEmpty() == false) {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>        return false;<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      }<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    }<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    return true;<a name="line.466"></a>
+<span class="sourceLineNo">467</span>  }<a name="line.467"></a>
+<span class="sourceLineNo">468</span><a name="line.468"></a>
+<span class="sourceLineNo">469</span>  public boolean isUpdated() {<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    for (Map.Entry&lt;Long, BitSetNode&gt; entry : map.entrySet()) {<a name="line.470"></a>
+<span class="sourceLineNo">471</span>      if (entry.getValue().isUpdated() == false) {<a name="line.471"></a>
+<span class="sourceLineNo">472</span>        return false;<a name="line.472"></a>
+<span class="sourceLineNo">473</span>      }<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    }<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    return true;<a name="line.475"></a>
+<span class="sourceLineNo">476</span>  }<a name="line.476"></a>


<TRUNCATED>

[02/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/xref-test/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html b/xref-test/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html
index 8e6d35d..4f5d313 100644
--- a/xref-test/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html
+++ b/xref-test/org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html
@@ -30,7 +30,7 @@
 <a class="jxr_linenumber" name="20" href="#20">20</a>  
 <a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Objects;
 <a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> com.google.common.collect.Sets;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> com.yammer.metrics.core.Histogram;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> com.codahale.metrics.Histogram;
 <a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.cli.CommandLine;
 <a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.logging.Log;
 <a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.logging.LogFactory;
@@ -83,12 +83,12 @@
 <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> String NUM_RS_KEY = <span class="jxr_string">"numRs"</span>;
 <a class="jxr_linenumber" name="74" href="#74">74</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String NUM_RS_DEFAULT = <span class="jxr_string">""</span> + 3;
 <a class="jxr_linenumber" name="75" href="#75">75</a>  
-<a class="jxr_linenumber" name="76" href="#76">76</a>    <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> Extract a descriptive statistic from a {@link com.yammer.metrics.core.Histogram}. */</em>
+<a class="jxr_linenumber" name="76" href="#76">76</a>    <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> Extract a descriptive statistic from a {@link com.codahale.metrics.Histogram}. */</em>
 <a class="jxr_linenumber" name="77" href="#77">77</a>    <strong class="jxr_keyword">private</strong> enum <a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html">Stat</a> {
 <a class="jxr_linenumber" name="78" href="#78">78</a>      STDEV {
 <a class="jxr_linenumber" name="79" href="#79">79</a>        @Override
 <a class="jxr_linenumber" name="80" href="#80">80</a>        <strong class="jxr_keyword">double</strong> apply(Histogram hist) {
-<a class="jxr_linenumber" name="81" href="#81">81</a>          <strong class="jxr_keyword">return</strong> hist.stdDev();
+<a class="jxr_linenumber" name="81" href="#81">81</a>          <strong class="jxr_keyword">return</strong> hist.getSnapshot().getStdDev();
 <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>      FOUR_9S {

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/xref-test/org/apache/hadoop/hbase/PerformanceEvaluation.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/hadoop/hbase/PerformanceEvaluation.html b/xref-test/org/apache/hadoop/hbase/PerformanceEvaluation.html
index 6d80001..27716c2 100644
--- a/xref-test/org/apache/hadoop/hbase/PerformanceEvaluation.html
+++ b/xref-test/org/apache/hadoop/hbase/PerformanceEvaluation.html
@@ -103,9 +103,9 @@
 <a class="jxr_linenumber" name="93" href="#93">93</a>  
 <a class="jxr_linenumber" name="94" href="#94">94</a>  <strong class="jxr_keyword">import</strong> com.google.common.base.Objects;
 <a class="jxr_linenumber" name="95" href="#95">95</a>  <strong class="jxr_keyword">import</strong> com.google.common.util.concurrent.ThreadFactoryBuilder;
-<a class="jxr_linenumber" name="96" href="#96">96</a>  <strong class="jxr_keyword">import</strong> com.yammer.metrics.core.Histogram;
-<a class="jxr_linenumber" name="97" href="#97">97</a>  <strong class="jxr_keyword">import</strong> com.yammer.metrics.stats.Snapshot;
-<a class="jxr_linenumber" name="98" href="#98">98</a>  <strong class="jxr_keyword">import</strong> com.yammer.metrics.stats.UniformSample;
+<a class="jxr_linenumber" name="96" href="#96">96</a>  <strong class="jxr_keyword">import</strong> com.codahale.metrics.Histogram;
+<a class="jxr_linenumber" name="97" href="#97">97</a>  <strong class="jxr_keyword">import</strong> com.codahale.metrics.Snapshot;
+<a class="jxr_linenumber" name="98" href="#98">98</a>  <strong class="jxr_keyword">import</strong> com.codahale.metrics.UniformReservoir;
 <a class="jxr_linenumber" name="99" href="#99">99</a>  
 <a class="jxr_linenumber" name="100" href="#100">100</a> <em class="jxr_javadoccomment">/**</em>
 <a class="jxr_linenumber" name="101" href="#101">101</a> <em class="jxr_javadoccomment"> * Script used evaluating HBase performance and scalability.  Runs a HBase</em>
@@ -1064,8 +1064,8 @@
 <a class="jxr_linenumber" name="1054" href="#1054">1054</a>         <strong class="jxr_keyword">this</strong>.connection = ConnectionFactory.createConnection(conf);
 <a class="jxr_linenumber" name="1055" href="#1055">1055</a>       }
 <a class="jxr_linenumber" name="1056" href="#1056">1056</a>       onStartup();
-<a class="jxr_linenumber" name="1057" href="#1057">1057</a>       latency = YammerHistogramUtils.newHistogram(<strong class="jxr_keyword">new</strong> UniformSample(1024 * 500));
-<a class="jxr_linenumber" name="1058" href="#1058">1058</a>       valueSize = YammerHistogramUtils.newHistogram(<strong class="jxr_keyword">new</strong> UniformSample(1024 * 500));
+<a class="jxr_linenumber" name="1057" href="#1057">1057</a>       latency = YammerHistogramUtils.newHistogram(<strong class="jxr_keyword">new</strong> UniformReservoir(1024 * 500));
+<a class="jxr_linenumber" name="1058" href="#1058">1058</a>       valueSize = YammerHistogramUtils.newHistogram(<strong class="jxr_keyword">new</strong> UniformReservoir(1024 * 500));
 <a class="jxr_linenumber" name="1059" href="#1059">1059</a>     }
 <a class="jxr_linenumber" name="1060" href="#1060">1060</a> 
 <a class="jxr_linenumber" name="1061" href="#1061">1061</a>     <strong class="jxr_keyword">abstract</strong> <strong class="jxr_keyword">void</strong> onStartup() <strong class="jxr_keyword">throws</strong> IOException;
@@ -1131,21 +1131,21 @@
 <a class="jxr_linenumber" name="1121" href="#1121">1121</a> <em class="jxr_javadoccomment">     */</em>
 <a class="jxr_linenumber" name="1122" href="#1122">1122</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> reportLatency() <strong class="jxr_keyword">throws</strong> IOException {
 <a class="jxr_linenumber" name="1123" href="#1123">1123</a>       status.setStatus(testName + <span class="jxr_string">" latency log (microseconds), on "</span> +
-<a class="jxr_linenumber" name="1124" href="#1124">1124</a>           latency.count() + <span class="jxr_string">" measures"</span>);
+<a class="jxr_linenumber" name="1124" href="#1124">1124</a>           latency.getCount() + <span class="jxr_string">" measures"</span>);
 <a class="jxr_linenumber" name="1125" href="#1125">1125</a>       reportHistogram(<strong class="jxr_keyword">this</strong>.latency);
 <a class="jxr_linenumber" name="1126" href="#1126">1126</a>     }
 <a class="jxr_linenumber" name="1127" href="#1127">1127</a> 
 <a class="jxr_linenumber" name="1128" href="#1128">1128</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> reportValueSize() <strong class="jxr_keyword">throws</strong> IOException {
 <a class="jxr_linenumber" name="1129" href="#1129">1129</a>       status.setStatus(testName + <span class="jxr_string">" valueSize after "</span> +
-<a class="jxr_linenumber" name="1130" href="#1130">1130</a>           valueSize.count() + <span class="jxr_string">" measures"</span>);
+<a class="jxr_linenumber" name="1130" href="#1130">1130</a>           valueSize.getCount() + <span class="jxr_string">" measures"</span>);
 <a class="jxr_linenumber" name="1131" href="#1131">1131</a>       reportHistogram(<strong class="jxr_keyword">this</strong>.valueSize);
 <a class="jxr_linenumber" name="1132" href="#1132">1132</a>     }
 <a class="jxr_linenumber" name="1133" href="#1133">1133</a> 
 <a class="jxr_linenumber" name="1134" href="#1134">1134</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> reportHistogram(<strong class="jxr_keyword">final</strong> Histogram h) <strong class="jxr_keyword">throws</strong> IOException {
 <a class="jxr_linenumber" name="1135" href="#1135">1135</a>       Snapshot sn = h.getSnapshot();
-<a class="jxr_linenumber" name="1136" href="#1136">1136</a>       status.setStatus(testName + <span class="jxr_string">" Min      = "</span> + h.min());
-<a class="jxr_linenumber" name="1137" href="#1137">1137</a>       status.setStatus(testName + <span class="jxr_string">" Avg      = "</span> + h.mean());
-<a class="jxr_linenumber" name="1138" href="#1138">1138</a>       status.setStatus(testName + <span class="jxr_string">" StdDev   = "</span> + h.stdDev());
+<a class="jxr_linenumber" name="1136" href="#1136">1136</a>       status.setStatus(testName + <span class="jxr_string">" Min      = "</span> + sn.getMin());
+<a class="jxr_linenumber" name="1137" href="#1137">1137</a>       status.setStatus(testName + <span class="jxr_string">" Avg      = "</span> + sn.getMean());
+<a class="jxr_linenumber" name="1138" href="#1138">1138</a>       status.setStatus(testName + <span class="jxr_string">" StdDev   = "</span> + sn.getStdDev());
 <a class="jxr_linenumber" name="1139" href="#1139">1139</a>       status.setStatus(testName + <span class="jxr_string">" 50th     = "</span> + sn.getMedian());
 <a class="jxr_linenumber" name="1140" href="#1140">1140</a>       status.setStatus(testName + <span class="jxr_string">" 75th     = "</span> + sn.get75thPercentile());
 <a class="jxr_linenumber" name="1141" href="#1141">1141</a>       status.setStatus(testName + <span class="jxr_string">" 95th     = "</span> + sn.get95thPercentile());
@@ -1153,7 +1153,7 @@
 <a class="jxr_linenumber" name="1143" href="#1143">1143</a>       status.setStatus(testName + <span class="jxr_string">" 99.9th   = "</span> + sn.get999thPercentile());
 <a class="jxr_linenumber" name="1144" href="#1144">1144</a>       status.setStatus(testName + <span class="jxr_string">" 99.99th  = "</span> + sn.getValue(0.9999));
 <a class="jxr_linenumber" name="1145" href="#1145">1145</a>       status.setStatus(testName + <span class="jxr_string">" 99.999th = "</span> + sn.getValue(0.99999));
-<a class="jxr_linenumber" name="1146" href="#1146">1146</a>       status.setStatus(testName + <span class="jxr_string">" Max      = "</span> + h.max());
+<a class="jxr_linenumber" name="1146" href="#1146">1146</a>       status.setStatus(testName + <span class="jxr_string">" Max      = "</span> + sn.getMax());
 <a class="jxr_linenumber" name="1147" href="#1147">1147</a>     }
 <a class="jxr_linenumber" name="1148" href="#1148">1148</a> 
 <a class="jxr_linenumber" name="1149" href="#1149">1149</a>     <em class="jxr_javadoccomment">/**</em>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/xref-test/org/apache/hadoop/hbase/TestPerformanceEvaluation.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/hadoop/hbase/TestPerformanceEvaluation.html b/xref-test/org/apache/hadoop/hbase/TestPerformanceEvaluation.html
index b39f846..e707a6b 100644
--- a/xref-test/org/apache/hadoop/hbase/TestPerformanceEvaluation.html
+++ b/xref-test/org/apache/hadoop/hbase/TestPerformanceEvaluation.html
@@ -50,9 +50,9 @@
 <a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> org.junit.Test;
 <a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> org.junit.experimental.categories.Category;
 <a class="jxr_linenumber" name="42" href="#42">42</a>  
-<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> com.yammer.metrics.core.Histogram;
-<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> com.yammer.metrics.stats.Snapshot;
-<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> com.yammer.metrics.stats.UniformSample;
+<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> com.codahale.metrics.Histogram;
+<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> com.codahale.metrics.Snapshot;
+<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> com.codahale.metrics.UniformReservoir;
 <a class="jxr_linenumber" name="46" href="#46">46</a>  
 <a class="jxr_linenumber" name="47" href="#47">47</a>  @Category({MiscTests.<strong class="jxr_keyword">class</strong>, SmallTests.<strong class="jxr_keyword">class</strong>})
 <a class="jxr_linenumber" name="48" href="#48">48</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/hadoop/hbase/TestPerformanceEvaluation.html">TestPerformanceEvaluation</a> {
@@ -135,16 +135,16 @@
 <a class="jxr_linenumber" name="125" href="#125">125</a>     opts.setValueSize(valueSize);
 <a class="jxr_linenumber" name="126" href="#126">126</a>     <a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.html">RandomReadTest</a> rrt = <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.html">RandomReadTest</a>(<strong class="jxr_keyword">null</strong>, opts, <strong class="jxr_keyword">null</strong>);
 <a class="jxr_linenumber" name="127" href="#127">127</a>     Constructor&lt;?&gt; ctor =
-<a class="jxr_linenumber" name="128" href="#128">128</a>       Histogram.<strong class="jxr_keyword">class</strong>.getDeclaredConstructor(com.yammer.metrics.stats.Sample.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="128" href="#128">128</a>       Histogram.<strong class="jxr_keyword">class</strong>.getDeclaredConstructor(com.codahale.metrics.Reservoir.<strong class="jxr_keyword">class</strong>);
 <a class="jxr_linenumber" name="129" href="#129">129</a>     ctor.setAccessible(<strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="130" href="#130">130</a>     Histogram histogram = (Histogram)ctor.newInstance(<strong class="jxr_keyword">new</strong> UniformSample(1024 * 500));
+<a class="jxr_linenumber" name="130" href="#130">130</a>     Histogram histogram = (Histogram)ctor.newInstance(<strong class="jxr_keyword">new</strong> UniformReservoir(1024 * 500));
 <a class="jxr_linenumber" name="131" href="#131">131</a>     <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; 100; i++) {
 <a class="jxr_linenumber" name="132" href="#132">132</a>       histogram.update(rrt.getValueLength(<strong class="jxr_keyword">null</strong>));
 <a class="jxr_linenumber" name="133" href="#133">133</a>     }
-<a class="jxr_linenumber" name="134" href="#134">134</a>     <strong class="jxr_keyword">double</strong> stddev = histogram.stdDev();
-<a class="jxr_linenumber" name="135" href="#135">135</a>     assertTrue(stddev != 0 &amp;&amp; stddev != 1.0);
-<a class="jxr_linenumber" name="136" href="#136">136</a>     assertTrue(histogram.stdDev() != 0);
-<a class="jxr_linenumber" name="137" href="#137">137</a>     Snapshot snapshot = histogram.getSnapshot();
+<a class="jxr_linenumber" name="134" href="#134">134</a>     Snapshot snapshot = histogram.getSnapshot();
+<a class="jxr_linenumber" name="135" href="#135">135</a>     <strong class="jxr_keyword">double</strong> stddev = snapshot.getStdDev();
+<a class="jxr_linenumber" name="136" href="#136">136</a>     assertTrue(stddev != 0 &amp;&amp; stddev != 1.0);
+<a class="jxr_linenumber" name="137" href="#137">137</a>     assertTrue(snapshot.getStdDev() != 0);
 <a class="jxr_linenumber" name="138" href="#138">138</a>     <strong class="jxr_keyword">double</strong> median = snapshot.getMedian();
 <a class="jxr_linenumber" name="139" href="#139">139</a>     assertTrue(median != 0 &amp;&amp; median != 1 &amp;&amp; median != valueSize);
 <a class="jxr_linenumber" name="140" href="#140">140</a>   }

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/xref-test/org/apache/hadoop/hbase/client/TestClientPushback.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/hadoop/hbase/client/TestClientPushback.html b/xref-test/org/apache/hadoop/hbase/client/TestClientPushback.html
index d79c62b..c76da07 100644
--- a/xref-test/org/apache/hadoop/hbase/client/TestClientPushback.html
+++ b/xref-test/org/apache/hadoop/hbase/client/TestClientPushback.html
@@ -160,22 +160,23 @@
 <a class="jxr_linenumber" name="150" href="#150">150</a>     MetricsConnection.RegionStats rsStats = conn.getConnectionMetrics().
 <a class="jxr_linenumber" name="151" href="#151">151</a>             serverStats.get(server).get(regionName);
 <a class="jxr_linenumber" name="152" href="#152">152</a>     assertEquals(name, rsStats.name);
-<a class="jxr_linenumber" name="153" href="#153">153</a>     assertEquals(rsStats.heapOccupancyHist.mean(),
+<a class="jxr_linenumber" name="153" href="#153">153</a>     assertEquals(rsStats.heapOccupancyHist.getSnapshot().getMean(),
 <a class="jxr_linenumber" name="154" href="#154">154</a>         (<strong class="jxr_keyword">double</strong>)regionStats.getHeapOccupancyPercent(), 0.1 );
-<a class="jxr_linenumber" name="155" href="#155">155</a>     assertEquals(rsStats.memstoreLoadHist.mean(),
+<a class="jxr_linenumber" name="155" href="#155">155</a>     assertEquals(rsStats.memstoreLoadHist.getSnapshot().getMean(),
 <a class="jxr_linenumber" name="156" href="#156">156</a>         (<strong class="jxr_keyword">double</strong>)regionStats.getMemstoreLoadPercent(), 0.1);
 <a class="jxr_linenumber" name="157" href="#157">157</a> 
 <a class="jxr_linenumber" name="158" href="#158">158</a>     MetricsConnection.RunnerStats runnerStats = conn.getConnectionMetrics().runnerStats;
 <a class="jxr_linenumber" name="159" href="#159">159</a> 
-<a class="jxr_linenumber" name="160" href="#160">160</a>     assertEquals(runnerStats.delayRunners.count(), 1);
-<a class="jxr_linenumber" name="161" href="#161">161</a>     assertEquals(runnerStats.normalRunners.count(), 1);
-<a class="jxr_linenumber" name="162" href="#162">162</a>     assertEquals(<span class="jxr_string">""</span>, runnerStats.delayIntevalHist.mean(), (<strong class="jxr_keyword">double</strong>)backoffTime, 0.1);
-<a class="jxr_linenumber" name="163" href="#163">163</a> 
-<a class="jxr_linenumber" name="164" href="#164">164</a>     latch.await(backoffTime * 2, TimeUnit.MILLISECONDS);
-<a class="jxr_linenumber" name="165" href="#165">165</a>     assertNotEquals(<span class="jxr_string">"AsyncProcess did not submit the work time"</span>, endTime.get(), 0);
-<a class="jxr_linenumber" name="166" href="#166">166</a>     assertTrue(<span class="jxr_string">"AsyncProcess did not delay long enough"</span>, endTime.get() - startTime &gt;= backoffTime);
-<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="160" href="#160">160</a>     assertEquals(runnerStats.delayRunners.getCount(), 1);
+<a class="jxr_linenumber" name="161" href="#161">161</a>     assertEquals(runnerStats.normalRunners.getCount(), 1);
+<a class="jxr_linenumber" name="162" href="#162">162</a>     assertEquals(<span class="jxr_string">""</span>, runnerStats.delayIntevalHist.getSnapshot().getMean(),
+<a class="jxr_linenumber" name="163" href="#163">163</a>       (<strong class="jxr_keyword">double</strong>)backoffTime, 0.1);
+<a class="jxr_linenumber" name="164" href="#164">164</a> 
+<a class="jxr_linenumber" name="165" href="#165">165</a>     latch.await(backoffTime * 2, TimeUnit.MILLISECONDS);
+<a class="jxr_linenumber" name="166" href="#166">166</a>     assertNotEquals(<span class="jxr_string">"AsyncProcess did not submit the work time"</span>, endTime.get(), 0);
+<a class="jxr_linenumber" name="167" href="#167">167</a>     assertTrue(<span class="jxr_string">"AsyncProcess did not delay long enough"</span>, endTime.get() - startTime &gt;= backoffTime);
+<a class="jxr_linenumber" name="168" href="#168">168</a>   }
+<a class="jxr_linenumber" name="169" href="#169">169</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/539ad177/xref-test/org/apache/hadoop/hbase/client/TestMetricsConnection.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/hadoop/hbase/client/TestMetricsConnection.html b/xref-test/org/apache/hadoop/hbase/client/TestMetricsConnection.html
index b5adf81..f47bc6b 100644
--- a/xref-test/org/apache/hadoop/hbase/client/TestMetricsConnection.html
+++ b/xref-test/org/apache/hadoop/hbase/client/TestMetricsConnection.html
@@ -122,9 +122,9 @@
 <a class="jxr_linenumber" name="112" href="#112">112</a>         METRICS.getTracker, METRICS.scanTracker, METRICS.multiTracker, METRICS.appendTracker,
 <a class="jxr_linenumber" name="113" href="#113">113</a>         METRICS.deleteTracker, METRICS.incrementTracker, METRICS.putTracker
 <a class="jxr_linenumber" name="114" href="#114">114</a>     }) {
-<a class="jxr_linenumber" name="115" href="#115">115</a>       Assert.assertEquals(<span class="jxr_string">"Failed to invoke callTimer on "</span> + t, loop, t.callTimer.count());
-<a class="jxr_linenumber" name="116" href="#116">116</a>       Assert.assertEquals(<span class="jxr_string">"Failed to invoke reqHist on "</span> + t, loop, t.reqHist.count());
-<a class="jxr_linenumber" name="117" href="#117">117</a>       Assert.assertEquals(<span class="jxr_string">"Failed to invoke respHist on "</span> + t, loop, t.respHist.count());
+<a class="jxr_linenumber" name="115" href="#115">115</a>       Assert.assertEquals(<span class="jxr_string">"Failed to invoke callTimer on "</span> + t, loop, t.callTimer.getCount());
+<a class="jxr_linenumber" name="116" href="#116">116</a>       Assert.assertEquals(<span class="jxr_string">"Failed to invoke reqHist on "</span> + t, loop, t.reqHist.getCount());
+<a class="jxr_linenumber" name="117" href="#117">117</a>       Assert.assertEquals(<span class="jxr_string">"Failed to invoke respHist on "</span> + t, loop, t.respHist.getCount());
 <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> }

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/xref-test/org/apache/hadoop/hbase/executor/TestExecutorService.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/hadoop/hbase/executor/TestExecutorService.html b/xref-test/org/apache/hadoop/hbase/executor/TestExecutorService.html
index d44014e..37aeaad 100644
--- a/xref-test/org/apache/hadoop/hbase/executor/TestExecutorService.html
+++ b/xref-test/org/apache/hadoop/hbase/executor/TestExecutorService.html
@@ -29,17 +29,17 @@
 <a class="jxr_linenumber" name="19" href="#19">19</a>  <strong class="jxr_keyword">package</strong> org.apache.hadoop.hbase.executor;
 <a class="jxr_linenumber" name="20" href="#20">20</a>  
 <a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.Assert.*;
-<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.Assert.assertEquals;
-<a class="jxr_linenumber" name="23" href="#23">23</a>  
-<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> java.io.StringWriter;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ThreadPoolExecutor;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.atomic.AtomicBoolean;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.atomic.AtomicInteger;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.logging.Log;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.logging.LogFactory;
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.*;
+<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> java.io.IOException;
+<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> java.io.StringWriter;
+<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ThreadPoolExecutor;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.atomic.AtomicBoolean;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.atomic.AtomicInteger;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.logging.Log;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.logging.LogFactory;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.conf.Configuration;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.*;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.Waiter.Predicate;
 <a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.executor.ExecutorService.Executor;
 <a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.executor.ExecutorService.ExecutorStatus;
 <a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.testclassification.MiscTests;
@@ -100,8 +100,8 @@
 <a class="jxr_linenumber" name="90" href="#90">90</a>      assertTrue(status.queuedEvents.isEmpty());
 <a class="jxr_linenumber" name="91" href="#91">91</a>      assertEquals(5, status.running.size());
 <a class="jxr_linenumber" name="92" href="#92">92</a>      checkStatusDump(status);
-<a class="jxr_linenumber" name="93" href="#93">93</a>      
-<a class="jxr_linenumber" name="94" href="#94">94</a>      
+<a class="jxr_linenumber" name="93" href="#93">93</a>  
+<a class="jxr_linenumber" name="94" href="#94">94</a>  
 <a class="jxr_linenumber" name="95" href="#95">95</a>      <em class="jxr_comment">// Now interrupt the running Executor</em>
 <a class="jxr_linenumber" name="96" href="#96">96</a>      <strong class="jxr_keyword">synchronized</strong> (lock) {
 <a class="jxr_linenumber" name="97" href="#97">97</a>        lock.set(false);
@@ -150,7 +150,7 @@
 <a class="jxr_linenumber" name="140" href="#140">140</a>     status.dumpTo(sw, <span class="jxr_string">""</span>);
 <a class="jxr_linenumber" name="141" href="#141">141</a>     String dump = sw.toString();
 <a class="jxr_linenumber" name="142" href="#142">142</a>     LOG.info(<span class="jxr_string">"Got status dump:\n"</span> + dump);
-<a class="jxr_linenumber" name="143" href="#143">143</a>     
+<a class="jxr_linenumber" name="143" href="#143">143</a> 
 <a class="jxr_linenumber" name="144" href="#144">144</a>     assertTrue(dump.contains(<span class="jxr_string">"Waiting on java.util.concurrent.atomic.AtomicBoolean"</span>));
 <a class="jxr_linenumber" name="145" href="#145">145</a>   }
 <a class="jxr_linenumber" name="146" href="#146">146</a> 
@@ -183,8 +183,41 @@
 <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> 
-<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="176" href="#176">176</a>   @Test
+<a class="jxr_linenumber" name="177" href="#177">177</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testAborting() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="178" href="#178">178</a>     <strong class="jxr_keyword">final</strong> Configuration conf = HBaseConfiguration.create();
+<a class="jxr_linenumber" name="179" href="#179">179</a>     <strong class="jxr_keyword">final</strong> Server server = mock(Server.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="180" href="#180">180</a>     when(server.getConfiguration()).thenReturn(conf);
+<a class="jxr_linenumber" name="181" href="#181">181</a> 
+<a class="jxr_linenumber" name="182" href="#182">182</a>     ExecutorService executorService = <strong class="jxr_keyword">new</strong> ExecutorService(<span class="jxr_string">"unit_test"</span>);
+<a class="jxr_linenumber" name="183" href="#183">183</a>     executorService.startExecutorService(
+<a class="jxr_linenumber" name="184" href="#184">184</a>       ExecutorType.MASTER_SERVER_OPERATIONS, 1);
+<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>     executorService.submit(<strong class="jxr_keyword">new</strong> EventHandler(server, EventType.M_SERVER_SHUTDOWN) {
+<a class="jxr_linenumber" name="188" href="#188">188</a>       @Override
+<a class="jxr_linenumber" name="189" href="#189">189</a>       <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> process() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="190" href="#190">190</a>         <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> RuntimeException(<span class="jxr_string">"Should cause abort"</span>);
+<a class="jxr_linenumber" name="191" href="#191">191</a>       }
+<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>     Waiter.waitFor(conf, 30000, <strong class="jxr_keyword">new</strong> Predicate&lt;Exception&gt;() {
+<a class="jxr_linenumber" name="195" href="#195">195</a>       @Override
+<a class="jxr_linenumber" name="196" href="#196">196</a>       <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> evaluate() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="197" href="#197">197</a>         <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="198" href="#198">198</a>           verify(server, times(1)).abort(anyString(), (Throwable) anyObject());
+<a class="jxr_linenumber" name="199" href="#199">199</a>           <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="200" href="#200">200</a>         } <strong class="jxr_keyword">catch</strong> (Throwable t) {
+<a class="jxr_linenumber" name="201" href="#201">201</a>           <strong class="jxr_keyword">return</strong> false;
+<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> 
+<a class="jxr_linenumber" name="206" href="#206">206</a>     executorService.shutdown();
+<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> }
+<a class="jxr_linenumber" name="210" href="#210">210</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/539ad177/xref-test/org/apache/hadoop/hbase/procedure2/ProcedureTestingUtility.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/hadoop/hbase/procedure2/ProcedureTestingUtility.html b/xref-test/org/apache/hadoop/hbase/procedure2/ProcedureTestingUtility.html
index 2540a30..43d38e4 100644
--- a/xref-test/org/apache/hadoop/hbase/procedure2/ProcedureTestingUtility.html
+++ b/xref-test/org/apache/hadoop/hbase/procedure2/ProcedureTestingUtility.html
@@ -217,14 +217,14 @@
 <a class="jxr_linenumber" name="207" href="#207">207</a>     <strong class="jxr_keyword">return</strong> RemoteProcedureException.fromProto(procInfo.getForeignExceptionMessage()).getCause();
 <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>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html">TestProcedure</a> <strong class="jxr_keyword">extends</strong> Procedure&lt;Void&gt; {
-<a class="jxr_linenumber" name="211" href="#211">211</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html">TestProcedure</a>() {}
+<a class="jxr_linenumber" name="210" href="#210">210</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/procedure2/TestProcedureReplayOrder.html">TestProcedure</a> <strong class="jxr_keyword">extends</strong> Procedure&lt;Void&gt; {
+<a class="jxr_linenumber" name="211" href="#211">211</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureReplayOrder.html">TestProcedure</a>() {}
 <a class="jxr_linenumber" name="212" href="#212">212</a> 
-<a class="jxr_linenumber" name="213" href="#213">213</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html">TestProcedure</a>(<strong class="jxr_keyword">long</strong> procId) {
+<a class="jxr_linenumber" name="213" href="#213">213</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureReplayOrder.html">TestProcedure</a>(<strong class="jxr_keyword">long</strong> procId) {
 <a class="jxr_linenumber" name="214" href="#214">214</a>       <strong class="jxr_keyword">this</strong>(procId, 0);
 <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>     <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html">TestProcedure</a>(<strong class="jxr_keyword">long</strong> procId, <strong class="jxr_keyword">long</strong> parentId) {
+<a class="jxr_linenumber" name="217" href="#217">217</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureReplayOrder.html">TestProcedure</a>(<strong class="jxr_keyword">long</strong> procId, <strong class="jxr_keyword">long</strong> parentId) {
 <a class="jxr_linenumber" name="218" href="#218">218</a>       setProcId(procId);
 <a class="jxr_linenumber" name="219" href="#219">219</a>       <strong class="jxr_keyword">if</strong> (parentId &gt; 0) {
 <a class="jxr_linenumber" name="220" href="#220">220</a>         setParentProcId(parentId);

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/xref-test/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.html b/xref-test/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.html
index b016980..01e5807 100644
--- a/xref-test/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.html
+++ b/xref-test/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.html
@@ -323,7 +323,7 @@
 <a class="jxr_linenumber" name="313" href="#313">313</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testRunningProcWithSameNonce() <strong class="jxr_keyword">throws</strong> Exception {
 <a class="jxr_linenumber" name="314" href="#314">314</a>     <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> nonceGroup = 456;
 <a class="jxr_linenumber" name="315" href="#315">315</a>     <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> nonce = 33333;
-<a class="jxr_linenumber" name="316" href="#316">316</a>     Procedure proc = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.html">TestMultiStepProcedure</a>();
+<a class="jxr_linenumber" name="316" href="#316">316</a>     Procedure proc = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureReplayOrder.html">TestSingleStepProcedure</a>();
 <a class="jxr_linenumber" name="317" href="#317">317</a>     <strong class="jxr_keyword">long</strong> procId = ProcedureTestingUtility.submitAndWait(procExecutor, proc, nonceGroup, nonce);
 <a class="jxr_linenumber" name="318" href="#318">318</a> 
 <a class="jxr_linenumber" name="319" href="#319">319</a>     <em class="jxr_comment">// Restart (use a latch to prevent the step execution until we submitted proc2)</em>
@@ -331,7 +331,7 @@
 <a class="jxr_linenumber" name="321" href="#321">321</a>     procEnv.setWaitLatch(latch);
 <a class="jxr_linenumber" name="322" href="#322">322</a>     restart();
 <a class="jxr_linenumber" name="323" href="#323">323</a>     <em class="jxr_comment">// Submit a procedure with the same nonce and expect the same procedure would return.</em>
-<a class="jxr_linenumber" name="324" href="#324">324</a>     Procedure proc2 = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.html">TestMultiStepProcedure</a>();
+<a class="jxr_linenumber" name="324" href="#324">324</a>     Procedure proc2 = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureReplayOrder.html">TestSingleStepProcedure</a>();
 <a class="jxr_linenumber" name="325" href="#325">325</a>     <strong class="jxr_keyword">long</strong> procId2 = procExecutor.submitProcedure(proc2, nonceGroup, nonce);
 <a class="jxr_linenumber" name="326" href="#326">326</a>     latch.countDown();
 <a class="jxr_linenumber" name="327" href="#327">327</a>     procEnv.setWaitLatch(<strong class="jxr_keyword">null</strong>);

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/xref-test/org/apache/hadoop/hbase/procedure2/TestProcedureReplayOrder.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/hadoop/hbase/procedure2/TestProcedureReplayOrder.html b/xref-test/org/apache/hadoop/hbase/procedure2/TestProcedureReplayOrder.html
index 373e430..35cd0bd 100644
--- a/xref-test/org/apache/hadoop/hbase/procedure2/TestProcedureReplayOrder.html
+++ b/xref-test/org/apache/hadoop/hbase/procedure2/TestProcedureReplayOrder.html
@@ -174,7 +174,7 @@
 <a class="jxr_linenumber" name="164" href="#164">164</a>       <strong class="jxr_keyword">return</strong> execTimestamp.incrementAndGet();
 <a class="jxr_linenumber" name="165" href="#165">165</a>     }
 <a class="jxr_linenumber" name="166" href="#166">166</a> 
-<a class="jxr_linenumber" name="167" href="#167">167</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addToExecList(<strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html">TestProcedure</a> proc) {
+<a class="jxr_linenumber" name="167" href="#167">167</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addToExecList(<strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureReplayOrder.html">TestProcedure</a> proc) {
 <a class="jxr_linenumber" name="168" href="#168">168</a>       execList.add(proc);
 <a class="jxr_linenumber" name="169" href="#169">169</a>     }
 <a class="jxr_linenumber" name="170" href="#170">170</a> 
@@ -182,14 +182,14 @@
 <a class="jxr_linenumber" name="172" href="#172">172</a>       assertEquals(numProcs, execList.size());
 <a class="jxr_linenumber" name="173" href="#173">173</a>       LOG.debug(<span class="jxr_string">"EXEC LIST: "</span> + execList);
 <a class="jxr_linenumber" name="174" href="#174">174</a>       <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; execList.size() - 1; ++i) {
-<a class="jxr_linenumber" name="175" href="#175">175</a>         <a href="../../../../../org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html">TestProcedure</a> a = execList.get(i);
-<a class="jxr_linenumber" name="176" href="#176">176</a>         <a href="../../../../../org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html">TestProcedure</a> b = execList.get(i + 1);
+<a class="jxr_linenumber" name="175" href="#175">175</a>         <a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureReplayOrder.html">TestProcedure</a> a = execList.get(i);
+<a class="jxr_linenumber" name="176" href="#176">176</a>         <a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureReplayOrder.html">TestProcedure</a> b = execList.get(i + 1);
 <a class="jxr_linenumber" name="177" href="#177">177</a>         assertTrue(<span class="jxr_string">"exec list not sorted: "</span> + a + <span class="jxr_string">" &lt; "</span> + b, a.getExecId() &gt; b.getExecId());
 <a class="jxr_linenumber" name="178" href="#178">178</a>       }
 <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> 
-<a class="jxr_linenumber" name="182" href="#182">182</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/procedure2/store/TestProcedureStoreTracker.html">TestProcedure</a> <strong class="jxr_keyword">extends</strong> Procedure&lt;TestProcedureEnv&gt; {
+<a class="jxr_linenumber" name="182" href="#182">182</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/procedure2/TestProcedureReplayOrder.html">TestProcedure</a> <strong class="jxr_keyword">extends</strong> Procedure&lt;TestProcedureEnv&gt; {
 <a class="jxr_linenumber" name="183" href="#183">183</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">long</strong> execId = 0;
 <a class="jxr_linenumber" name="184" href="#184">184</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">int</strong> step = 0;
 <a class="jxr_linenumber" name="185" href="#185">185</a> 
@@ -215,7 +215,7 @@
 <a class="jxr_linenumber" name="205" href="#205">205</a>     }
 <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>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureReplayOrder.html">TestSingleStepProcedure</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../../org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html">TestProcedure</a> {
+<a class="jxr_linenumber" name="208" href="#208">208</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/procedure2/TestProcedureReplayOrder.html">TestSingleStepProcedure</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureReplayOrder.html">TestProcedure</a> {
 <a class="jxr_linenumber" name="209" href="#209">209</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureReplayOrder.html">TestSingleStepProcedure</a>() { }
 <a class="jxr_linenumber" name="210" href="#210">210</a> 
 <a class="jxr_linenumber" name="211" href="#211">211</a>     @Override
@@ -238,7 +238,7 @@
 <a class="jxr_linenumber" name="228" href="#228">228</a>     }
 <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>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureReplayOrder.html">TestTwoStepProcedure</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../../org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html">TestProcedure</a> {
+<a class="jxr_linenumber" name="231" href="#231">231</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/procedure2/TestProcedureReplayOrder.html">TestTwoStepProcedure</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureReplayOrder.html">TestProcedure</a> {
 <a class="jxr_linenumber" name="232" href="#232">232</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureReplayOrder.html">TestTwoStepProcedure</a>() { }
 <a class="jxr_linenumber" name="233" href="#233">233</a> 
 <a class="jxr_linenumber" name="234" href="#234">234</a>     @Override


[12/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/org/apache/hadoop/hbase/PerformanceEvaluation.Test.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/PerformanceEvaluation.Test.html b/testdevapidocs/org/apache/hadoop/hbase/PerformanceEvaluation.Test.html
index de77652..892ec7b 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/PerformanceEvaluation.Test.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/PerformanceEvaluation.Test.html
@@ -136,7 +136,7 @@ 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/PerformanceEvaluation.Test.html#everyN">everyN</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>private com.yammer.metrics.core.Histogram</code></td>
+<td class="colFirst"><code>private com.codahale.metrics.Histogram</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.Test.html#latency">latency</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
@@ -168,7 +168,7 @@ 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/PerformanceEvaluation.Test.html#traceSampler">traceSampler</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>private com.yammer.metrics.core.Histogram</code></td>
+<td class="colFirst"><code>private com.codahale.metrics.Histogram</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.Test.html#valueSize">valueSize</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
@@ -219,7 +219,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
                             int&nbsp;lr)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>com.yammer.metrics.core.Histogram</code></td>
+<td class="colFirst"><code>com.codahale.metrics.Histogram</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.Test.html#getLatency()">getLatency</a></strong>()</code>
 <div class="block">Populated by testTakedown.</div>
 </td>
@@ -258,7 +258,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
-<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.Test.html#reportHistogram(com.yammer.metrics.core.Histogram)">reportHistogram</a></strong>(com.yammer.metrics.core.Histogram&nbsp;h)</code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.Test.html#reportHistogram(com.codahale.metrics.Histogram)">reportHistogram</a></strong>(com.codahale.metrics.Histogram&nbsp;h)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
@@ -422,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>latency</h4>
-<pre>private&nbsp;com.yammer.metrics.core.Histogram <a href="../../../../src-html/org/apache/hadoop/hbase/PerformanceEvaluation.Test.html#line.977">latency</a></pre>
+<pre>private&nbsp;com.codahale.metrics.Histogram <a href="../../../../src-html/org/apache/hadoop/hbase/PerformanceEvaluation.Test.html#line.977">latency</a></pre>
 </li>
 </ul>
 <a name="valueSize">
@@ -431,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>valueSize</h4>
-<pre>private&nbsp;com.yammer.metrics.core.Histogram <a href="../../../../src-html/org/apache/hadoop/hbase/PerformanceEvaluation.Test.html#line.978">valueSize</a></pre>
+<pre>private&nbsp;com.codahale.metrics.Histogram <a href="../../../../src-html/org/apache/hadoop/hbase/PerformanceEvaluation.Test.html#line.978">valueSize</a></pre>
 </li>
 </ul>
 <a name="zipf">
@@ -558,7 +558,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getLatency</h4>
-<pre>public&nbsp;com.yammer.metrics.core.Histogram&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/PerformanceEvaluation.Test.html#line.1048">getLatency</a>()</pre>
+<pre>public&nbsp;com.codahale.metrics.Histogram&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/PerformanceEvaluation.Test.html#line.1048">getLatency</a>()</pre>
 <div class="block">Populated by testTakedown. Only implemented by RandomReadTest at the moment.</div>
 </li>
 </ul>
@@ -664,13 +664,13 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <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>
 </li>
 </ul>
-<a name="reportHistogram(com.yammer.metrics.core.Histogram)">
+<a name="reportHistogram(com.codahale.metrics.Histogram)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>reportHistogram</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/PerformanceEvaluation.Test.html#line.1134">reportHistogram</a>(com.yammer.metrics.core.Histogram&nbsp;h)
+<pre>private&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/PerformanceEvaluation.Test.html#line.1134">reportHistogram</a>(com.codahale.metrics.Histogram&nbsp;h)
                       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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/org/apache/hadoop/hbase/executor/TestExecutorService.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/executor/TestExecutorService.html b/testdevapidocs/org/apache/hadoop/hbase/executor/TestExecutorService.html
index 959f392..2c237d9 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/executor/TestExecutorService.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/executor/TestExecutorService.html
@@ -176,6 +176,10 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/executor/TestExecutorService.html#testAborting()">testAborting</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/executor/TestExecutorService.html#testExecutorService()">testExecutorService</a></strong>()</code>&nbsp;</td>
 </tr>
 </table>
@@ -249,7 +253,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <a name="checkStatusDump(org.apache.hadoop.hbase.executor.ExecutorService.ExecutorStatus)">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>checkStatusDump</h4>
 <pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/executor/TestExecutorService.html#line.138">checkStatusDump</a>(org.apache.hadoop.hbase.executor.ExecutorService.ExecutorStatus&nbsp;status)
@@ -258,6 +262,18 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <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>
 </li>
 </ul>
+<a name="testAborting()">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>testAborting</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/executor/TestExecutorService.html#line.177">testAborting</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/539ad177/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 90f4298..e54bcb3 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -507,11 +507,11 @@
 <ul>
 <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/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/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/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/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/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/RESTApiClusterManager.Service.html" title="enum in org.apache.hadoop.hbase"><span class="strong">RESTApiClusterManager.Service</span></a></li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/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 afa4107..ebb5e7b 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
@@ -147,8 +147,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/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>
+<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>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html b/testdevapidocs/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html
deleted file mode 100644
index a20f94f..0000000
--- a/testdevapidocs/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html
+++ /dev/null
@@ -1,348 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- NewPage -->
-<html lang="en">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>TestProcedureStoreTracker.TestProcedure (Apache HBase 2.0.0-SNAPSHOT Test API)</title>
-<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
-</head>
-<body>
-<script type="text/javascript"><!--
-    if (location.href.indexOf('is-external=true') == -1) {
-        parent.document.title="TestProcedureStoreTracker.TestProcedure (Apache HBase 2.0.0-SNAPSHOT Test API)";
-    }
-//-->
-</script>
-<noscript>
-<div>JavaScript is disabled on your browser.</div>
-</noscript>
-<!-- ========= START OF TOP NAVBAR ======= -->
-<div class="topNav"><a name="navbar_top">
-<!--   -->
-</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../../overview-summary.html">Overview</a></li>
-<li><a href="package-summary.html">Package</a></li>
-<li class="navBarCell1Rev">Class</li>
-<li><a href="class-use/TestProcedureStoreTracker.TestProcedure.html">Use</a></li>
-<li><a href="package-tree.html">Tree</a></li>
-<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html" title="class in org.apache.hadoop.hbase.procedure2.store"><span class="strong">Prev Class</span></a></li>
-<li>Next Class</li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html" target="_top">Frames</a></li>
-<li><a href="TestProcedureStoreTracker.TestProcedure.html" target="_top">No Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_top");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<div>
-<ul class="subNavList">
-<li>Summary:&nbsp;</li>
-<li>Nested&nbsp;|&nbsp;</li>
-<li>Field&nbsp;|&nbsp;</li>
-<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method_summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail:&nbsp;</li>
-<li>Field&nbsp;|&nbsp;</li>
-<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method_detail">Method</a></li>
-</ul>
-</div>
-<a name="skip-navbar_top">
-<!--   -->
-</a></div>
-<!-- ========= END OF TOP NAVBAR ========= -->
-<!-- ======== START OF CLASS DATA ======== -->
-<div class="header">
-<div class="subTitle">org.apache.hadoop.hbase.procedure2.store</div>
-<h2 title="Class TestProcedureStoreTracker.TestProcedure" class="title">Class TestProcedureStoreTracker.TestProcedure</h2>
-</div>
-<div class="contentContainer">
-<ul class="inheritance">
-<li><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
-<li>
-<ul class="inheritance">
-<li>org.apache.hadoop.hbase.procedure2.Procedure&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;</li>
-<li>
-<ul class="inheritance">
-<li>org.apache.hadoop.hbase.procedure2.store.TestProcedureStoreTracker.TestProcedure</li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-<div class="description">
-<ul class="blockList">
-<li class="blockList">
-<dl>
-<dt>All Implemented Interfaces:</dt>
-<dd><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;org.apache.hadoop.hbase.procedure2.Procedure&gt;</dd>
-</dl>
-<dl>
-<dt>Enclosing class:</dt>
-<dd><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html" title="class in org.apache.hadoop.hbase.procedure2.store">TestProcedureStoreTracker</a></dd>
-</dl>
-<hr>
-<br>
-<pre>static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html#line.45">TestProcedureStoreTracker.TestProcedure</a>
-extends org.apache.hadoop.hbase.procedure2.Procedure&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;</pre>
-</li>
-</ul>
-</div>
-<div class="summary">
-<ul class="blockList">
-<li class="blockList">
-<!-- ======== CONSTRUCTOR SUMMARY ======== -->
-<ul class="blockList">
-<li class="blockList"><a name="constructor_summary">
-<!--   -->
-</a>
-<h3>Constructor Summary</h3>
-<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
-<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colOne" scope="col">Constructor and Description</th>
-</tr>
-<tr class="altColor">
-<td class="colOne"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html#TestProcedureStoreTracker.TestProcedure(long)">TestProcedureStoreTracker.TestProcedure</a></strong>(long&nbsp;procId)</code>&nbsp;</td>
-</tr>
-</table>
-</li>
-</ul>
-<!-- ========== METHOD SUMMARY =========== -->
-<ul class="blockList">
-<li class="blockList"><a name="method_summary">
-<!--   -->
-</a>
-<h3>Method Summary</h3>
-<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
-<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Method and Description</th>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>protected boolean</code></td>
-<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html#abort(java.lang.Void)">abort</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&nbsp;env)</code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html#deserializeStateData(java.io.InputStream)">deserializeStateData</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html?is-external=true" title="class or interface in java.io">InputStream</a>&nbsp;stream)</code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>protected org.apache.hadoop.hbase.procedure2.Procedure[]</code></td>
-<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html#execute(java.lang.Void)">execute</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&nbsp;env)</code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html#rollback(java.lang.Void)">rollback</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&nbsp;env)</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/procedure2/store/TestProcedureStoreTracker.TestProcedure.html#serializeStateData(java.io.OutputStream)">serializeStateData</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;stream)</code>&nbsp;</td>
-</tr>
-</table>
-<ul class="blockList">
-<li class="blockList"><a name="methods_inherited_from_class_org.apache.hadoop.hbase.procedure2.Procedure">
-<!--   -->
-</a>
-<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.procedure2.Procedure</h3>
-<code>acquireLock, addStackIndex, beforeReplay, childrenCountDown, compareTo, completionCleanup, convert, convert, createProcedureInfo, doExecute, doRollback, elapsedTime, getException, getLastUpdate, getNonceKey, getOwner, getParentProcId, getProcId, getProcIdHashCode, getResult, getRootProcedureId, getStackIndexes, getStartTime, getState, getTimeout, getTimeRemaining, hasException, hasOwner, hasParent, hasTimeout, incChildrenLatch, isFailed, isFinished, isSuccess, isWaiting, isYieldAfterExecutionStep, newInstance, releaseLock, removeStackIndex, setAbortFailure, setChildrenLatch, setFailure, setFailure, setNonceKey, setOwner, setParentProcId, setProcId, setResult, setStackIndexes, setStartTime, setState, setTimeout, setTimeoutFailure, toString, toStringClass, toStringClassDetails, toStringState, updateTimestamp, validateClass, wasExecuted</code></li>
-</ul>
-<ul class="blockList">
-<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
-<!--   -->
-</a>
-<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
-<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang
 /Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait(long,%20int)" title="class or interface in java.lang">wait</a></code></li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-</div>
-<div class="details">
-<ul class="blockList">
-<li class="blockList">
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<ul class="blockList">
-<li class="blockList"><a name="constructor_detail">
-<!--   -->
-</a>
-<h3>Constructor Detail</h3>
-<a name="TestProcedureStoreTracker.TestProcedure(long)">
-<!--   -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>TestProcedureStoreTracker.TestProcedure</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html#line.46">TestProcedureStoreTracker.TestProcedure</a>(long&nbsp;procId)</pre>
-</li>
-</ul>
-</li>
-</ul>
-<!-- ============ METHOD DETAIL ========== -->
-<ul class="blockList">
-<li class="blockList"><a name="method_detail">
-<!--   -->
-</a>
-<h3>Method Detail</h3>
-<a name="execute(java.lang.Void)">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>execute</h4>
-<pre>protected&nbsp;org.apache.hadoop.hbase.procedure2.Procedure[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html#line.51">execute</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&nbsp;env)</pre>
-<dl>
-<dt><strong>Specified by:</strong></dt>
-<dd><code>execute</code>&nbsp;in class&nbsp;<code>org.apache.hadoop.hbase.procedure2.Procedure&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;</code></dd>
-</dl>
-</li>
-</ul>
-<a name="rollback(java.lang.Void)">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>rollback</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html#line.54">rollback</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&nbsp;env)</pre>
-<dl>
-<dt><strong>Specified by:</strong></dt>
-<dd><code>rollback</code>&nbsp;in class&nbsp;<code>org.apache.hadoop.hbase.procedure2.Procedure&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;</code></dd>
-</dl>
-</li>
-</ul>
-<a name="abort(java.lang.Void)">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>abort</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html#line.57">abort</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&nbsp;env)</pre>
-<dl>
-<dt><strong>Specified by:</strong></dt>
-<dd><code>abort</code>&nbsp;in class&nbsp;<code>org.apache.hadoop.hbase.procedure2.Procedure&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;</code></dd>
-</dl>
-</li>
-</ul>
-<a name="serializeStateData(java.io.OutputStream)">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>serializeStateData</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html#line.60">serializeStateData</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;stream)</pre>
-<dl>
-<dt><strong>Specified by:</strong></dt>
-<dd><code>serializeStateData</code>&nbsp;in class&nbsp;<code>org.apache.hadoop.hbase.procedure2.Procedure&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;</code></dd>
-</dl>
-</li>
-</ul>
-<a name="deserializeStateData(java.io.InputStream)">
-<!--   -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>deserializeStateData</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html#line.63">deserializeStateData</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html?is-external=true" title="class or interface in java.io">InputStream</a>&nbsp;stream)</pre>
-<dl>
-<dt><strong>Specified by:</strong></dt>
-<dd><code>deserializeStateData</code>&nbsp;in class&nbsp;<code>org.apache.hadoop.hbase.procedure2.Procedure&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;</code></dd>
-</dl>
-</li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-</div>
-</div>
-<!-- ========= END OF CLASS DATA ========= -->
-<!-- ======= START OF BOTTOM NAVBAR ====== -->
-<div class="bottomNav"><a name="navbar_bottom">
-<!--   -->
-</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../../overview-summary.html">Overview</a></li>
-<li><a href="package-summary.html">Package</a></li>
-<li class="navBarCell1Rev">Class</li>
-<li><a href="class-use/TestProcedureStoreTracker.TestProcedure.html">Use</a></li>
-<li><a href="package-tree.html">Tree</a></li>
-<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html" title="class in org.apache.hadoop.hbase.procedure2.store"><span class="strong">Prev Class</span></a></li>
-<li>Next Class</li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html" target="_top">Frames</a></li>
-<li><a href="TestProcedureStoreTracker.TestProcedure.html" target="_top">No Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_bottom");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<div>
-<ul class="subNavList">
-<li>Summary:&nbsp;</li>
-<li>Nested&nbsp;|&nbsp;</li>
-<li>Field&nbsp;|&nbsp;</li>
-<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method_summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail:&nbsp;</li>
-<li>Field&nbsp;|&nbsp;</li>
-<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method_detail">Method</a></li>
-</ul>
-</div>
-<a name="skip-navbar_bottom">
-<!--   -->
-</a></div>
-<!-- ======== END OF BOTTOM NAVBAR ======= -->
-<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2015 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html b/testdevapidocs/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html
index ee2e165..4e52614 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html
@@ -36,7 +36,7 @@
 <div class="subNav">
 <ul class="navList">
 <li>Prev Class</li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html" title="class in org.apache.hadoop.hbase.procedure2.store"><span class="strong">Next Class</span></a></li>
+<li>Next Class</li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../../index.html?org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html" target="_top">Frames</a></li>
@@ -60,7 +60,7 @@
 <div>
 <ul class="subNavList">
 <li>Summary:&nbsp;</li>
-<li><a href="#nested_class_summary">Nested</a>&nbsp;|&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
 <li><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li>
 <li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method_summary">Method</a></li>
@@ -95,7 +95,7 @@
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html#line.42">TestProcedureStoreTracker</a>
+<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html#line.41">TestProcedureStoreTracker</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>
@@ -103,25 +103,6 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <div class="summary">
 <ul class="blockList">
 <li class="blockList">
-<!-- ======== NESTED CLASS SUMMARY ======== -->
-<ul class="blockList">
-<li class="blockList"><a name="nested_class_summary">
-<!--   -->
-</a>
-<h3>Nested Class Summary</h3>
-<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
-<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Class and Description</th>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>(package private) static class&nbsp;</code></td>
-<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html" title="class in org.apache.hadoop.hbase.procedure2.store">TestProcedureStoreTracker.TestProcedure</a></strong></code>&nbsp;</td>
-</tr>
-</table>
-</li>
-</ul>
 <!-- =========== FIELD SUMMARY =========== -->
 <ul class="blockList">
 <li class="blockList"><a name="field_summary">
@@ -226,7 +207,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html#line.43">LOG</a></pre>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html#line.42">LOG</a></pre>
 </li>
 </ul>
 </li>
@@ -243,7 +224,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestProcedureStoreTracker</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html#line.42">TestProcedureStoreTracker</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html#line.41">TestProcedureStoreTracker</a>()</pre>
 </li>
 </ul>
 </li>
@@ -260,7 +241,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testSeqInsertAndDelete</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html#line.67">testSeqInsertAndDelete</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html#line.45">testSeqInsertAndDelete</a>()</pre>
 </li>
 </ul>
 <a name="testPartialTracker()">
@@ -269,7 +250,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testPartialTracker</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html#line.105">testPartialTracker</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html#line.83">testPartialTracker</a>()</pre>
 </li>
 </ul>
 <a name="testIsTracking()">
@@ -278,7 +259,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testIsTracking</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html#line.135">testIsTracking</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html#line.113">testIsTracking</a>()</pre>
 </li>
 </ul>
 <a name="testBasicCRUD()">
@@ -287,7 +268,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testBasicCRUD</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html#line.161">testBasicCRUD</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html#line.139">testBasicCRUD</a>()</pre>
 </li>
 </ul>
 <a name="testRandLoad()">
@@ -296,7 +277,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testRandLoad</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html#line.202">testRandLoad</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html#line.177">testRandLoad</a>()</pre>
 </li>
 </ul>
 <a name="testLoad()">
@@ -305,7 +286,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testLoad</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html#line.226">testLoad</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html#line.201">testLoad</a>()</pre>
 </li>
 </ul>
 <a name="testDelete()">
@@ -314,7 +295,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>testDelete</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html#line.247">testDelete</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html#line.222">testDelete</a>()</pre>
 </li>
 </ul>
 </li>
@@ -344,7 +325,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <div class="subNav">
 <ul class="navList">
 <li>Prev Class</li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html" title="class in org.apache.hadoop.hbase.procedure2.store"><span class="strong">Next Class</span></a></li>
+<li>Next Class</li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../../index.html?org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html" target="_top">Frames</a></li>
@@ -368,7 +349,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <div>
 <ul class="subNavList">
 <li>Summary:&nbsp;</li>
-<li><a href="#nested_class_summary">Nested</a>&nbsp;|&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
 <li><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li>
 <li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method_summary">Method</a></li>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/org/apache/hadoop/hbase/procedure2/store/package-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/procedure2/store/package-frame.html b/testdevapidocs/org/apache/hadoop/hbase/procedure2/store/package-frame.html
index f5bb3b8..f898616 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/procedure2/store/package-frame.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/procedure2/store/package-frame.html
@@ -12,7 +12,6 @@
 <h2 title="Classes">Classes</h2>
 <ul title="Classes">
 <li><a href="TestProcedureStoreTracker.html" title="class in org.apache.hadoop.hbase.procedure2.store" target="classFrame">TestProcedureStoreTracker</a></li>
-<li><a href="TestProcedureStoreTracker.TestProcedure.html" title="class in org.apache.hadoop.hbase.procedure2.store" target="classFrame">TestProcedureStoreTracker.TestProcedure</a></li>
 </ul>
 </div>
 </body>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/org/apache/hadoop/hbase/procedure2/store/package-summary.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/procedure2/store/package-summary.html b/testdevapidocs/org/apache/hadoop/hbase/procedure2/store/package-summary.html
index fd4c43d..c25e851 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/procedure2/store/package-summary.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/procedure2/store/package-summary.html
@@ -78,10 +78,6 @@
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html" title="class in org.apache.hadoop.hbase.procedure2.store">TestProcedureStoreTracker</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
-<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html" title="class in org.apache.hadoop.hbase.procedure2.store">TestProcedureStoreTracker.TestProcedure</a></td>
-<td class="colLast">&nbsp;</td>
-</tr>
 </tbody>
 </table>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/org/apache/hadoop/hbase/procedure2/store/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/procedure2/store/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/procedure2/store/package-tree.html
index 6dce17f..1f09e44 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/procedure2/store/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/procedure2/store/package-tree.html
@@ -73,11 +73,6 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang"><span class="strong">Object</span></a>
 <ul>
-<li type="circle">org.apache.hadoop.hbase.procedure2.Procedure&lt;TEnvironment&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;)
-<ul>
-<li type="circle">org.apache.hadoop.hbase.procedure2.store.<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.TestProcedure.html" title="class in org.apache.hadoop.hbase.procedure2.store"><span class="strong">TestProcedureStoreTracker.TestProcedure</span></a></li>
-</ul>
-</li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.store.<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/TestProcedureStoreTracker.html" title="class in org.apache.hadoop.hbase.procedure2.store"><span class="strong">TestProcedureStoreTracker</span></a></li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html b/testdevapidocs/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html
index 60a8cd0..a0f0776 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html
@@ -103,7 +103,7 @@
 </dl>
 <hr>
 <br>
-<pre>private class <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.html#line.499">TestWALProcedureStore.LoadCounter</a>
+<pre>private class <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.html#line.528">TestWALProcedureStore.LoadCounter</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 org.apache.hadoop.hbase.procedure2.store.ProcedureStore.ProcedureLoader</pre>
 </li>
@@ -243,7 +243,7 @@ implements org.apache.hadoop.hbase.procedure2.store.ProcedureStore.ProcedureLoad
 <ul class="blockList">
 <li class="blockList">
 <h4>corrupted</h4>
-<pre>private final&nbsp;<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;org.apache.hadoop.hbase.procedure2.Procedure&gt; <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html#line.500">corrupted</a></pre>
+<pre>private final&nbsp;<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;org.apache.hadoop.hbase.procedure2.Procedure&gt; <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html#line.529">corrupted</a></pre>
 </li>
 </ul>
 <a name="loaded">
@@ -252,7 +252,7 @@ implements org.apache.hadoop.hbase.procedure2.store.ProcedureStore.ProcedureLoad
 <ul class="blockList">
 <li class="blockList">
 <h4>loaded</h4>
-<pre>private final&nbsp;<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;org.apache.hadoop.hbase.procedure2.Procedure&gt; <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html#line.501">loaded</a></pre>
+<pre>private final&nbsp;<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;org.apache.hadoop.hbase.procedure2.Procedure&gt; <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html#line.530">loaded</a></pre>
 </li>
 </ul>
 <a name="procIds">
@@ -261,7 +261,7 @@ implements org.apache.hadoop.hbase.procedure2.store.ProcedureStore.ProcedureLoad
 <ul class="blockList">
 <li class="blockList">
 <h4>procIds</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="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt; <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html#line.503">procIds</a></pre>
+<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="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt; <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html#line.532">procIds</a></pre>
 </li>
 </ul>
 <a name="maxProcId">
@@ -270,7 +270,7 @@ implements org.apache.hadoop.hbase.procedure2.store.ProcedureStore.ProcedureLoad
 <ul class="blockListLast">
 <li class="blockList">
 <h4>maxProcId</h4>
-<pre>private&nbsp;long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html#line.504">maxProcId</a></pre>
+<pre>private&nbsp;long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html#line.533">maxProcId</a></pre>
 </li>
 </ul>
 </li>
@@ -287,7 +287,7 @@ implements org.apache.hadoop.hbase.procedure2.store.ProcedureStore.ProcedureLoad
 <ul class="blockList">
 <li class="blockList">
 <h4>TestWALProcedureStore.LoadCounter</h4>
-<pre>public&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html#line.506">TestWALProcedureStore.LoadCounter</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html#line.535">TestWALProcedureStore.LoadCounter</a>()</pre>
 </li>
 </ul>
 <a name="TestWALProcedureStore.LoadCounter(java.util.Set)">
@@ -296,7 +296,7 @@ implements org.apache.hadoop.hbase.procedure2.store.ProcedureStore.ProcedureLoad
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestWALProcedureStore.LoadCounter</h4>
-<pre>public&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html#line.510">TestWALProcedureStore.LoadCounter</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="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&nbsp;procIds)</pre>
+<pre>public&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html#line.539">TestWALProcedureStore.LoadCounter</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="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&nbsp;procIds)</pre>
 </li>
 </ul>
 </li>
@@ -313,7 +313,7 @@ implements org.apache.hadoop.hbase.procedure2.store.ProcedureStore.ProcedureLoad
 <ul class="blockList">
 <li class="blockList">
 <h4>reset</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html#line.514">reset</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html#line.543">reset</a>()</pre>
 </li>
 </ul>
 <a name="reset(java.util.Set)">
@@ -322,7 +322,7 @@ implements org.apache.hadoop.hbase.procedure2.store.ProcedureStore.ProcedureLoad
 <ul class="blockList">
 <li class="blockList">
 <h4>reset</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html#line.518">reset</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="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&nbsp;procIds)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html#line.547">reset</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="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&nbsp;procIds)</pre>
 </li>
 </ul>
 <a name="getMaxProcId()">
@@ -331,7 +331,7 @@ implements org.apache.hadoop.hbase.procedure2.store.ProcedureStore.ProcedureLoad
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaxProcId</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html#line.525">getMaxProcId</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html#line.554">getMaxProcId</a>()</pre>
 </li>
 </ul>
 <a name="getLoaded()">
@@ -340,7 +340,7 @@ implements org.apache.hadoop.hbase.procedure2.store.ProcedureStore.ProcedureLoad
 <ul class="blockList">
 <li class="blockList">
 <h4>getLoaded</h4>
-<pre>public&nbsp;<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;org.apache.hadoop.hbase.procedure2.Procedure&gt;&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html#line.529">getLoaded</a>()</pre>
+<pre>public&nbsp;<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;org.apache.hadoop.hbase.procedure2.Procedure&gt;&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html#line.558">getLoaded</a>()</pre>
 </li>
 </ul>
 <a name="getLoadedCount()">
@@ -349,7 +349,7 @@ implements org.apache.hadoop.hbase.procedure2.store.ProcedureStore.ProcedureLoad
 <ul class="blockList">
 <li class="blockList">
 <h4>getLoadedCount</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html#line.533">getLoadedCount</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html#line.562">getLoadedCount</a>()</pre>
 </li>
 </ul>
 <a name="getCorrupted()">
@@ -358,7 +358,7 @@ implements org.apache.hadoop.hbase.procedure2.store.ProcedureStore.ProcedureLoad
 <ul class="blockList">
 <li class="blockList">
 <h4>getCorrupted</h4>
-<pre>public&nbsp;<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;org.apache.hadoop.hbase.procedure2.Procedure&gt;&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html#line.537">getCorrupted</a>()</pre>
+<pre>public&nbsp;<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;org.apache.hadoop.hbase.procedure2.Procedure&gt;&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html#line.566">getCorrupted</a>()</pre>
 </li>
 </ul>
 <a name="getCorruptedCount()">
@@ -367,7 +367,7 @@ implements org.apache.hadoop.hbase.procedure2.store.ProcedureStore.ProcedureLoad
 <ul class="blockList">
 <li class="blockList">
 <h4>getCorruptedCount</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html#line.541">getCorruptedCount</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html#line.570">getCorruptedCount</a>()</pre>
 </li>
 </ul>
 <a name="setMaxProcId(long)">
@@ -376,7 +376,7 @@ implements org.apache.hadoop.hbase.procedure2.store.ProcedureStore.ProcedureLoad
 <ul class="blockList">
 <li class="blockList">
 <h4>setMaxProcId</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html#line.546">setMaxProcId</a>(long&nbsp;maxProcId)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html#line.575">setMaxProcId</a>(long&nbsp;maxProcId)</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code>setMaxProcId</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.procedure2.store.ProcedureStore.ProcedureLoader</code></dd>
@@ -389,7 +389,7 @@ implements org.apache.hadoop.hbase.procedure2.store.ProcedureStore.ProcedureLoad
 <ul class="blockList">
 <li class="blockList">
 <h4>load</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html#line.551">load</a>(org.apache.hadoop.hbase.procedure2.store.ProcedureStore.ProcedureIterator&nbsp;procIter)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html#line.580">load</a>(org.apache.hadoop.hbase.procedure2.store.ProcedureStore.ProcedureIterator&nbsp;procIter)
           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>Specified by:</strong></dt>
@@ -404,7 +404,7 @@ implements org.apache.hadoop.hbase.procedure2.store.ProcedureStore.ProcedureLoad
 <ul class="blockListLast">
 <li class="blockList">
 <h4>handleCorrupted</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html#line.564">handleCorrupted</a>(org.apache.hadoop.hbase.procedure2.store.ProcedureStore.ProcedureIterator&nbsp;procIter)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.LoadCounter.html#line.593">handleCorrupted</a>(org.apache.hadoop.hbase.procedure2.store.ProcedureStore.ProcedureIterator&nbsp;procIter)
                      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>Specified by:</strong></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.TestSequentialProcedure.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.TestSequentialProcedure.html b/testdevapidocs/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.TestSequentialProcedure.html
index 97135a5..d84a4ec 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.TestSequentialProcedure.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.TestSequentialProcedure.html
@@ -113,7 +113,7 @@
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.html#line.462">TestWALProcedureStore.TestSequentialProcedure</a>
+<pre>public static class <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.html#line.491">TestWALProcedureStore.TestSequentialProcedure</a>
 extends org.apache.hadoop.hbase.procedure2.SequentialProcedure&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;</pre>
 </li>
 </ul>
@@ -231,7 +231,7 @@ extends org.apache.hadoop.hbase.procedure2.SequentialProcedure&lt;<a href="http:
 <ul class="blockListLast">
 <li class="blockList">
 <h4>seqid</h4>
-<pre>private static&nbsp;long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.TestSequentialProcedure.html#line.463">seqid</a></pre>
+<pre>private static&nbsp;long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.TestSequentialProcedure.html#line.492">seqid</a></pre>
 </li>
 </ul>
 </li>
@@ -248,7 +248,7 @@ extends org.apache.hadoop.hbase.procedure2.SequentialProcedure&lt;<a href="http:
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestWALProcedureStore.TestSequentialProcedure</h4>
-<pre>public&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.TestSequentialProcedure.html#line.465">TestWALProcedureStore.TestSequentialProcedure</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.TestSequentialProcedure.html#line.494">TestWALProcedureStore.TestSequentialProcedure</a>()</pre>
 </li>
 </ul>
 </li>
@@ -265,7 +265,7 @@ extends org.apache.hadoop.hbase.procedure2.SequentialProcedure&lt;<a href="http:
 <ul class="blockList">
 <li class="blockList">
 <h4>execute</h4>
-<pre>protected&nbsp;org.apache.hadoop.hbase.procedure2.Procedure[]&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.TestSequentialProcedure.html#line.470">execute</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&nbsp;env)</pre>
+<pre>protected&nbsp;org.apache.hadoop.hbase.procedure2.Procedure[]&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.TestSequentialProcedure.html#line.499">execute</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&nbsp;env)</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code>execute</code>&nbsp;in class&nbsp;<code>org.apache.hadoop.hbase.procedure2.Procedure&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;</code></dd>
@@ -278,7 +278,7 @@ extends org.apache.hadoop.hbase.procedure2.SequentialProcedure&lt;<a href="http:
 <ul class="blockList">
 <li class="blockList">
 <h4>rollback</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.TestSequentialProcedure.html#line.473">rollback</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&nbsp;env)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.TestSequentialProcedure.html#line.502">rollback</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&nbsp;env)</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code>rollback</code>&nbsp;in class&nbsp;<code>org.apache.hadoop.hbase.procedure2.Procedure&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;</code></dd>
@@ -291,7 +291,7 @@ extends org.apache.hadoop.hbase.procedure2.SequentialProcedure&lt;<a href="http:
 <ul class="blockList">
 <li class="blockList">
 <h4>abort</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.TestSequentialProcedure.html#line.476">abort</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&nbsp;env)</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.TestSequentialProcedure.html#line.505">abort</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&nbsp;env)</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code>abort</code>&nbsp;in class&nbsp;<code>org.apache.hadoop.hbase.procedure2.Procedure&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&gt;</code></dd>
@@ -304,7 +304,7 @@ extends org.apache.hadoop.hbase.procedure2.SequentialProcedure&lt;<a href="http:
 <ul class="blockList">
 <li class="blockList">
 <h4>serializeStateData</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.TestSequentialProcedure.html#line.479">serializeStateData</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;stream)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.TestSequentialProcedure.html#line.508">serializeStateData</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;stream)
                            throws <a href="http://docs.oracle.com/javase/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>
@@ -319,7 +319,7 @@ extends org.apache.hadoop.hbase.procedure2.SequentialProcedure&lt;<a href="http:
 <ul class="blockListLast">
 <li class="blockList">
 <h4>deserializeStateData</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.TestSequentialProcedure.html#line.487">deserializeStateData</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html?is-external=true" title="class or interface in java.io">InputStream</a>&nbsp;stream)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.TestSequentialProcedure.html#line.516">deserializeStateData</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html?is-external=true" title="class or interface in java.io">InputStream</a>&nbsp;stream)
                              throws <a href="http://docs.oracle.com/javase/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/539ad177/testdevapidocs/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.html b/testdevapidocs/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.html
index a25b7d0..0d47619 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.html
@@ -253,13 +253,17 @@ 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/procedure2/store/wal/TestWALProcedureStore.html#testWalReplayOrder_AB_A()">testWalReplayOrder_AB_A</a></strong>()</code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.html#testRollAndRemove()">testRollAndRemove</a></strong>()</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.html#testWalReplayOrder_ABC_BAD()">testWalReplayOrder_ABC_BAD</a></strong>()</code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.html#testWalReplayOrder_AB_A()">testWalReplayOrder_AB_A</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/procedure2/store/wal/TestWALProcedureStore.html#testWalReplayOrder_ABC_BAD()">testWalReplayOrder_ABC_BAD</a></strong>()</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.html#verifyProcIdsOnRestart(java.util.Set)">verifyProcIdsOnRestart</a></strong>(<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="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&nbsp;procIds)</code>&nbsp;</td>
 </tr>
@@ -497,7 +501,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testWalReplayOrder_AB_A</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.html#line.264">testWalReplayOrder_AB_A</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.html#line.263">testWalReplayOrder_AB_A</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>
@@ -509,7 +513,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testWalReplayOrder_ABC_BAD</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.html#line.307">testWalReplayOrder_ABC_BAD</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.html#line.306">testWalReplayOrder_ABC_BAD</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>
@@ -521,19 +525,31 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testInsertUpdateDelete</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.html#line.370">testInsertUpdateDelete</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.html#line.369">testInsertUpdateDelete</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>
+<a name="testRollAndRemove()">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testRollAndRemove</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.html#line.429">testRollAndRemove</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><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>
+</li>
+</ul>
 <a name="corruptLog(org.apache.hadoop.fs.FileStatus, long)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>corruptLog</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.html#line.429">corruptLog</a>(org.apache.hadoop.fs.FileStatus&nbsp;logFile,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.html#line.458">corruptLog</a>(org.apache.hadoop.fs.FileStatus&nbsp;logFile,
               long&nbsp;dropBytes)
                  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>
@@ -546,7 +562,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>verifyProcIdsOnRestart</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.html#line.443">verifyProcIdsOnRestart</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="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&nbsp;procIds)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.html#line.472">verifyProcIdsOnRestart</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="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&nbsp;procIds)
                              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>
@@ -558,7 +574,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>assertEmptyLogDir</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.html#line.451">assertEmptyLogDir</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.html#line.480">assertEmptyLogDir</a>()</pre>
 </li>
 </ul>
 </li>


[28/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html
index 09ac1a3..ac458a0 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/CacheStats.html
@@ -30,273 +30,275 @@
 <span class="sourceLineNo">022</span><a name="line.22"></a>
 <span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.23"></a>
 <span class="sourceLineNo">024</span><a name="line.24"></a>
-<span class="sourceLineNo">025</span>import com.yammer.metrics.core.Histogram;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import com.yammer.metrics.core.MetricsRegistry;<a name="line.26"></a>
+<span class="sourceLineNo">025</span>import com.codahale.metrics.Histogram;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import com.codahale.metrics.MetricRegistry;<a name="line.26"></a>
 <span class="sourceLineNo">027</span><a name="line.27"></a>
-<span class="sourceLineNo">028</span>/**<a name="line.28"></a>
-<span class="sourceLineNo">029</span> * Class that implements cache metrics.<a name="line.29"></a>
-<span class="sourceLineNo">030</span> */<a name="line.30"></a>
-<span class="sourceLineNo">031</span>@InterfaceAudience.Private<a name="line.31"></a>
-<span class="sourceLineNo">032</span>public class CacheStats {<a name="line.32"></a>
-<span class="sourceLineNo">033</span>  /**<a name="line.33"></a>
-<span class="sourceLineNo">034</span>   * Needed making histograms.<a name="line.34"></a>
-<span class="sourceLineNo">035</span>   */<a name="line.35"></a>
-<span class="sourceLineNo">036</span>  private static final MetricsRegistry METRICS = new MetricsRegistry();<a name="line.36"></a>
-<span class="sourceLineNo">037</span><a name="line.37"></a>
-<span class="sourceLineNo">038</span>  /** Sliding window statistics. The number of metric periods to include in<a name="line.38"></a>
-<span class="sourceLineNo">039</span>   * sliding window hit ratio calculations.<a name="line.39"></a>
-<span class="sourceLineNo">040</span>   */<a name="line.40"></a>
-<span class="sourceLineNo">041</span>  static final int DEFAULT_WINDOW_PERIODS = 5;<a name="line.41"></a>
-<span class="sourceLineNo">042</span><a name="line.42"></a>
-<span class="sourceLineNo">043</span>  /** The number of getBlock requests that were cache hits */<a name="line.43"></a>
-<span class="sourceLineNo">044</span>  private final AtomicLong hitCount = new AtomicLong(0);<a name="line.44"></a>
-<span class="sourceLineNo">045</span><a name="line.45"></a>
-<span class="sourceLineNo">046</span>  /** The number of getBlock requests that were cache hits from primary replica */<a name="line.46"></a>
-<span class="sourceLineNo">047</span>  private final AtomicLong primaryHitCount = new AtomicLong(0);<a name="line.47"></a>
-<span class="sourceLineNo">048</span>  <a name="line.48"></a>
-<span class="sourceLineNo">049</span>  /**<a name="line.49"></a>
-<span class="sourceLineNo">050</span>   * The number of getBlock requests that were cache hits, but only from<a name="line.50"></a>
-<span class="sourceLineNo">051</span>   * requests that were set to use the block cache.  This is because all reads<a name="line.51"></a>
-<span class="sourceLineNo">052</span>   * attempt to read from the block cache even if they will not put new blocks<a name="line.52"></a>
-<span class="sourceLineNo">053</span>   * into the block cache.  See HBASE-2253 for more information.<a name="line.53"></a>
-<span class="sourceLineNo">054</span>   */<a name="line.54"></a>
-<span class="sourceLineNo">055</span>  private final AtomicLong hitCachingCount = new AtomicLong(0);<a name="line.55"></a>
-<span class="sourceLineNo">056</span><a name="line.56"></a>
-<span class="sourceLineNo">057</span>  /** The number of getBlock requests that were cache misses */<a name="line.57"></a>
-<span class="sourceLineNo">058</span>  private final AtomicLong missCount = new AtomicLong(0);<a name="line.58"></a>
-<span class="sourceLineNo">059</span><a name="line.59"></a>
-<span class="sourceLineNo">060</span>  /** The number of getBlock requests for primary replica that were cache misses */<a name="line.60"></a>
-<span class="sourceLineNo">061</span>  private final AtomicLong primaryMissCount = new AtomicLong(0);<a name="line.61"></a>
-<span class="sourceLineNo">062</span>  /**<a name="line.62"></a>
-<span class="sourceLineNo">063</span>   * The number of getBlock requests that were cache misses, but only from<a name="line.63"></a>
-<span class="sourceLineNo">064</span>   * requests that were set to use the block cache.<a name="line.64"></a>
-<span class="sourceLineNo">065</span>   */<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  private final AtomicLong missCachingCount = new AtomicLong(0);<a name="line.66"></a>
-<span class="sourceLineNo">067</span><a name="line.67"></a>
-<span class="sourceLineNo">068</span>  /** The number of times an eviction has occurred */<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  private final AtomicLong evictionCount = new AtomicLong(0);<a name="line.69"></a>
-<span class="sourceLineNo">070</span><a name="line.70"></a>
-<span class="sourceLineNo">071</span>  /** The total number of blocks that have been evicted */<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  private final AtomicLong evictedBlockCount = new AtomicLong(0);<a name="line.72"></a>
-<span class="sourceLineNo">073</span><a name="line.73"></a>
-<span class="sourceLineNo">074</span>  /** The total number of blocks for primary replica that have been evicted */<a name="line.74"></a>
-<span class="sourceLineNo">075</span>  private final AtomicLong primaryEvictedBlockCount = new AtomicLong(0);<a name="line.75"></a>
-<span class="sourceLineNo">076</span><a name="line.76"></a>
-<span class="sourceLineNo">077</span>  /** The total number of blocks that were not inserted. */<a name="line.77"></a>
-<span class="sourceLineNo">078</span>  private final AtomicLong failedInserts = new AtomicLong(0);<a name="line.78"></a>
-<span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>  /** The number of metrics periods to include in window */<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  private final int numPeriodsInWindow;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>  /** Hit counts for each period in window */<a name="line.82"></a>
-<span class="sourceLineNo">083</span>  private final long [] hitCounts;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  /** Caching hit counts for each period in window */<a name="line.84"></a>
-<span class="sourceLineNo">085</span>  private final long [] hitCachingCounts;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  /** Access counts for each period in window */<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  private final long [] requestCounts;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>  /** Caching access counts for each period in window */<a name="line.88"></a>
-<span class="sourceLineNo">089</span>  private final long [] requestCachingCounts;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  /** Last hit count read */<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  private long lastHitCount = 0;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>  /** Last hit caching count read */<a name="line.92"></a>
-<span class="sourceLineNo">093</span>  private long lastHitCachingCount = 0;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>  /** Last request count read */<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  private long lastRequestCount = 0;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  /** Last request caching count read */<a name="line.96"></a>
-<span class="sourceLineNo">097</span>  private long lastRequestCachingCount = 0;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  /** Current window index (next to be updated) */<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  private int windowIndex = 0;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>  /**<a name="line.100"></a>
-<span class="sourceLineNo">101</span>   * Keep running age at eviction time<a name="line.101"></a>
-<span class="sourceLineNo">102</span>   */<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  private Histogram ageAtEviction;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>  private long startTime = System.nanoTime();<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public CacheStats(final String name) {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    this(name, DEFAULT_WINDOW_PERIODS);<a name="line.107"></a>
-<span class="sourceLineNo">108</span>  }<a name="line.108"></a>
-<span class="sourceLineNo">109</span><a name="line.109"></a>
-<span class="sourceLineNo">110</span>  public CacheStats(final String name, int numPeriodsInWindow) {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    this.numPeriodsInWindow = numPeriodsInWindow;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    this.hitCounts = initializeZeros(numPeriodsInWindow);<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    this.hitCachingCounts = initializeZeros(numPeriodsInWindow);<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    this.requestCounts = initializeZeros(numPeriodsInWindow);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    this.requestCachingCounts = initializeZeros(numPeriodsInWindow);<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    this.ageAtEviction = METRICS.newHistogram(CacheStats.class, name + ".ageAtEviction");<a name="line.116"></a>
-<span class="sourceLineNo">117</span>  }<a name="line.117"></a>
-<span class="sourceLineNo">118</span><a name="line.118"></a>
-<span class="sourceLineNo">119</span>  @Override<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  public String toString() {<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    AgeSnapshot snapshot = getAgeAtEvictionSnapshot();<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    return "hitCount=" + getHitCount() + ", hitCachingCount=" + getHitCachingCount() +<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      ", missCount=" + getMissCount() + ", missCachingCount=" + getMissCachingCount() +<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      ", evictionCount=" + getEvictionCount() +<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      ", evictedBlockCount=" + getEvictedCount() +<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      ", primaryMissCount=" + getPrimaryMissCount() +<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      ", primaryHitCount=" + getPrimaryHitCount() +<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      ", evictedAgeMean=" + snapshot.getMean() +<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      ", evictedAgeStdDev=" + snapshot.getStdDev();<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>  public void miss(boolean caching, boolean primary) {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    missCount.incrementAndGet();<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    if (primary) primaryMissCount.incrementAndGet();<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    if (caching) missCachingCount.incrementAndGet();<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  }<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>  public void hit(boolean caching) {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    hit(caching, true);<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  }<a name="line.140"></a>
-<span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>  public void hit(boolean caching, boolean primary) {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    hitCount.incrementAndGet();<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    if (primary) primaryHitCount.incrementAndGet();<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    if (caching) hitCachingCount.incrementAndGet();<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>  public void evict() {<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    evictionCount.incrementAndGet();<a name="line.149"></a>
-<span class="sourceLineNo">150</span>  }<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>  public void evicted(final long t, boolean primary) {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    if (t &gt; this.startTime) this.ageAtEviction.update(t - this.startTime);<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    this.evictedBlockCount.incrementAndGet();<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    if (primary) {<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      primaryEvictedBlockCount.incrementAndGet();<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    }<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  }<a name="line.158"></a>
-<span class="sourceLineNo">159</span><a name="line.159"></a>
-<span class="sourceLineNo">160</span>  public long failInsert() {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    return failedInserts.incrementAndGet();<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>  public long getRequestCount() {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    return getHitCount() + getMissCount();<a name="line.165"></a>
-<span class="sourceLineNo">166</span>  }<a name="line.166"></a>
-<span class="sourceLineNo">167</span><a name="line.167"></a>
-<span class="sourceLineNo">168</span>  public long getRequestCachingCount() {<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    return getHitCachingCount() + getMissCachingCount();<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 long getMissCount() {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    return missCount.get();<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  }<a name="line.174"></a>
-<span class="sourceLineNo">175</span><a name="line.175"></a>
-<span class="sourceLineNo">176</span>  public long getPrimaryMissCount() {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    return primaryMissCount.get();<a name="line.177"></a>
-<span class="sourceLineNo">178</span>  }<a name="line.178"></a>
-<span class="sourceLineNo">179</span><a name="line.179"></a>
-<span class="sourceLineNo">180</span>  public long getMissCachingCount() {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    return missCachingCount.get();<a name="line.181"></a>
-<span class="sourceLineNo">182</span>  }<a name="line.182"></a>
-<span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>  public long getHitCount() {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    return hitCount.get();<a name="line.185"></a>
-<span class="sourceLineNo">186</span>  }<a name="line.186"></a>
-<span class="sourceLineNo">187</span><a name="line.187"></a>
-<span class="sourceLineNo">188</span>  public long getPrimaryHitCount() {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    return primaryHitCount.get();<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>  public long getHitCachingCount() {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    return hitCachingCount.get();<a name="line.193"></a>
-<span class="sourceLineNo">194</span>  }<a name="line.194"></a>
-<span class="sourceLineNo">195</span><a name="line.195"></a>
-<span class="sourceLineNo">196</span>  public long getEvictionCount() {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    return evictionCount.get();<a name="line.197"></a>
-<span class="sourceLineNo">198</span>  }<a name="line.198"></a>
-<span class="sourceLineNo">199</span><a name="line.199"></a>
-<span class="sourceLineNo">200</span>  public long getEvictedCount() {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    return this.evictedBlockCount.get();<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>  public long getPrimaryEvictedCount() {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    return primaryEvictedBlockCount.get();<a name="line.205"></a>
-<span class="sourceLineNo">206</span>  }<a name="line.206"></a>
-<span class="sourceLineNo">207</span><a name="line.207"></a>
-<span class="sourceLineNo">208</span>  public double getHitRatio() {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    return ((float)getHitCount()/(float)getRequestCount());<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 double getHitCachingRatio() {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    return ((float)getHitCachingCount()/(float)getRequestCachingCount());<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>  public double getMissRatio() {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    return ((float)getMissCount()/(float)getRequestCount());<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>  public double getMissCachingRatio() {<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    return ((float)getMissCachingCount()/(float)getRequestCachingCount());<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  }<a name="line.222"></a>
-<span class="sourceLineNo">223</span><a name="line.223"></a>
-<span class="sourceLineNo">224</span>  public double evictedPerEviction() {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    return ((float)getEvictedCount()/(float)getEvictionCount());<a name="line.225"></a>
-<span class="sourceLineNo">226</span>  }<a name="line.226"></a>
-<span class="sourceLineNo">227</span><a name="line.227"></a>
-<span class="sourceLineNo">228</span>  public long getFailedInserts() {<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    return failedInserts.get();<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>  public void rollMetricsPeriod() {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    hitCounts[windowIndex] = getHitCount() - lastHitCount;<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    lastHitCount = getHitCount();<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    hitCachingCounts[windowIndex] =<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      getHitCachingCount() - lastHitCachingCount;<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    lastHitCachingCount = getHitCachingCount();<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    requestCounts[windowIndex] = getRequestCount() - lastRequestCount;<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    lastRequestCount = getRequestCount();<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    requestCachingCounts[windowIndex] =<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      getRequestCachingCount() - lastRequestCachingCount;<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    lastRequestCachingCount = getRequestCachingCount();<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    windowIndex = (windowIndex + 1) % numPeriodsInWindow;<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>  public long getSumHitCountsPastNPeriods() {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    return sum(hitCounts);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>  }<a name="line.248"></a>
-<span class="sourceLineNo">249</span><a name="line.249"></a>
-<span class="sourceLineNo">250</span>  public long getSumRequestCountsPastNPeriods() {<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    return sum(requestCounts);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>  }<a name="line.252"></a>
-<span class="sourceLineNo">253</span><a name="line.253"></a>
-<span class="sourceLineNo">254</span>  public long getSumHitCachingCountsPastNPeriods() {<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    return sum(hitCachingCounts);<a name="line.255"></a>
-<span class="sourceLineNo">256</span>  }<a name="line.256"></a>
-<span class="sourceLineNo">257</span><a name="line.257"></a>
-<span class="sourceLineNo">258</span>  public long getSumRequestCachingCountsPastNPeriods() {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    return sum(requestCachingCounts);<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  }<a name="line.260"></a>
-<span class="sourceLineNo">261</span><a name="line.261"></a>
-<span class="sourceLineNo">262</span>  public double getHitRatioPastNPeriods() {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    double ratio = ((double)getSumHitCountsPastNPeriods() /<a name="line.263"></a>
-<span class="sourceLineNo">264</span>        (double)getSumRequestCountsPastNPeriods());<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    return Double.isNaN(ratio) ? 0 : ratio;<a name="line.265"></a>
-<span class="sourceLineNo">266</span>  }<a name="line.266"></a>
-<span class="sourceLineNo">267</span><a name="line.267"></a>
-<span class="sourceLineNo">268</span>  public double getHitCachingRatioPastNPeriods() {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    double ratio = ((double)getSumHitCachingCountsPastNPeriods() /<a name="line.269"></a>
-<span class="sourceLineNo">270</span>        (double)getSumRequestCachingCountsPastNPeriods());<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    return Double.isNaN(ratio) ? 0 : ratio;<a name="line.271"></a>
-<span class="sourceLineNo">272</span>  }<a name="line.272"></a>
-<span class="sourceLineNo">273</span><a name="line.273"></a>
-<span class="sourceLineNo">274</span>  public AgeSnapshot getAgeAtEvictionSnapshot() {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    return new AgeSnapshot(this.ageAtEviction);<a name="line.275"></a>
-<span class="sourceLineNo">276</span>  }<a name="line.276"></a>
-<span class="sourceLineNo">277</span><a name="line.277"></a>
-<span class="sourceLineNo">278</span>  private static long sum(long [] counts) {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    long sum = 0;<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    for (long count : counts) sum += count;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    return sum;<a name="line.281"></a>
-<span class="sourceLineNo">282</span>  }<a name="line.282"></a>
-<span class="sourceLineNo">283</span><a name="line.283"></a>
-<span class="sourceLineNo">284</span>  private static long [] initializeZeros(int n) {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    long [] zeros = new long [n];<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    for (int i=0; i&lt;n; i++) {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      zeros[i] = 0L;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    }<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    return zeros;<a name="line.289"></a>
-<span class="sourceLineNo">290</span>  }<a name="line.290"></a>
-<span class="sourceLineNo">291</span>}<a name="line.291"></a>
+<span class="sourceLineNo">028</span>import static com.codahale.metrics.MetricRegistry.name;<a name="line.28"></a>
+<span class="sourceLineNo">029</span><a name="line.29"></a>
+<span class="sourceLineNo">030</span>/**<a name="line.30"></a>
+<span class="sourceLineNo">031</span> * Class that implements cache metrics.<a name="line.31"></a>
+<span class="sourceLineNo">032</span> */<a name="line.32"></a>
+<span class="sourceLineNo">033</span>@InterfaceAudience.Private<a name="line.33"></a>
+<span class="sourceLineNo">034</span>public class CacheStats {<a name="line.34"></a>
+<span class="sourceLineNo">035</span>  /**<a name="line.35"></a>
+<span class="sourceLineNo">036</span>   * Needed making histograms.<a name="line.36"></a>
+<span class="sourceLineNo">037</span>   */<a name="line.37"></a>
+<span class="sourceLineNo">038</span>  private static final MetricRegistry METRICS = new MetricRegistry();<a name="line.38"></a>
+<span class="sourceLineNo">039</span><a name="line.39"></a>
+<span class="sourceLineNo">040</span>  /** Sliding window statistics. The number of metric periods to include in<a name="line.40"></a>
+<span class="sourceLineNo">041</span>   * sliding window hit ratio calculations.<a name="line.41"></a>
+<span class="sourceLineNo">042</span>   */<a name="line.42"></a>
+<span class="sourceLineNo">043</span>  static final int DEFAULT_WINDOW_PERIODS = 5;<a name="line.43"></a>
+<span class="sourceLineNo">044</span><a name="line.44"></a>
+<span class="sourceLineNo">045</span>  /** The number of getBlock requests that were cache hits */<a name="line.45"></a>
+<span class="sourceLineNo">046</span>  private final AtomicLong hitCount = new AtomicLong(0);<a name="line.46"></a>
+<span class="sourceLineNo">047</span><a name="line.47"></a>
+<span class="sourceLineNo">048</span>  /** The number of getBlock requests that were cache hits from primary replica */<a name="line.48"></a>
+<span class="sourceLineNo">049</span>  private final AtomicLong primaryHitCount = new AtomicLong(0);<a name="line.49"></a>
+<span class="sourceLineNo">050</span>  <a name="line.50"></a>
+<span class="sourceLineNo">051</span>  /**<a name="line.51"></a>
+<span class="sourceLineNo">052</span>   * The number of getBlock requests that were cache hits, but only from<a name="line.52"></a>
+<span class="sourceLineNo">053</span>   * requests that were set to use the block cache.  This is because all reads<a name="line.53"></a>
+<span class="sourceLineNo">054</span>   * attempt to read from the block cache even if they will not put new blocks<a name="line.54"></a>
+<span class="sourceLineNo">055</span>   * into the block cache.  See HBASE-2253 for more information.<a name="line.55"></a>
+<span class="sourceLineNo">056</span>   */<a name="line.56"></a>
+<span class="sourceLineNo">057</span>  private final AtomicLong hitCachingCount = new AtomicLong(0);<a name="line.57"></a>
+<span class="sourceLineNo">058</span><a name="line.58"></a>
+<span class="sourceLineNo">059</span>  /** The number of getBlock requests that were cache misses */<a name="line.59"></a>
+<span class="sourceLineNo">060</span>  private final AtomicLong missCount = new AtomicLong(0);<a name="line.60"></a>
+<span class="sourceLineNo">061</span><a name="line.61"></a>
+<span class="sourceLineNo">062</span>  /** The number of getBlock requests for primary replica that were cache misses */<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  private final AtomicLong primaryMissCount = new AtomicLong(0);<a name="line.63"></a>
+<span class="sourceLineNo">064</span>  /**<a name="line.64"></a>
+<span class="sourceLineNo">065</span>   * The number of getBlock requests that were cache misses, but only from<a name="line.65"></a>
+<span class="sourceLineNo">066</span>   * requests that were set to use the block cache.<a name="line.66"></a>
+<span class="sourceLineNo">067</span>   */<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  private final AtomicLong missCachingCount = new AtomicLong(0);<a name="line.68"></a>
+<span class="sourceLineNo">069</span><a name="line.69"></a>
+<span class="sourceLineNo">070</span>  /** The number of times an eviction has occurred */<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  private final AtomicLong evictionCount = new AtomicLong(0);<a name="line.71"></a>
+<span class="sourceLineNo">072</span><a name="line.72"></a>
+<span class="sourceLineNo">073</span>  /** The total number of blocks that have been evicted */<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  private final AtomicLong evictedBlockCount = new AtomicLong(0);<a name="line.74"></a>
+<span class="sourceLineNo">075</span><a name="line.75"></a>
+<span class="sourceLineNo">076</span>  /** The total number of blocks for primary replica that have been evicted */<a name="line.76"></a>
+<span class="sourceLineNo">077</span>  private final AtomicLong primaryEvictedBlockCount = new AtomicLong(0);<a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78"></a>
+<span class="sourceLineNo">079</span>  /** The total number of blocks that were not inserted. */<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  private final AtomicLong failedInserts = new AtomicLong(0);<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>  /** The number of metrics periods to include in window */<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  private final int numPeriodsInWindow;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  /** Hit counts for each period in window */<a name="line.84"></a>
+<span class="sourceLineNo">085</span>  private final long [] hitCounts;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  /** Caching hit counts for each period in window */<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  private final long [] hitCachingCounts;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  /** Access counts for each period in window */<a name="line.88"></a>
+<span class="sourceLineNo">089</span>  private final long [] requestCounts;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>  /** Caching access counts for each period in window */<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  private final long [] requestCachingCounts;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  /** Last hit count read */<a name="line.92"></a>
+<span class="sourceLineNo">093</span>  private long lastHitCount = 0;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>  /** Last hit caching count read */<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  private long lastHitCachingCount = 0;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  /** Last request count read */<a name="line.96"></a>
+<span class="sourceLineNo">097</span>  private long lastRequestCount = 0;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>  /** Last request caching count read */<a name="line.98"></a>
+<span class="sourceLineNo">099</span>  private long lastRequestCachingCount = 0;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>  /** Current window index (next to be updated) */<a name="line.100"></a>
+<span class="sourceLineNo">101</span>  private int windowIndex = 0;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>  /**<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   * Keep running age at eviction time<a name="line.103"></a>
+<span class="sourceLineNo">104</span>   */<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  private Histogram ageAtEviction;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>  private long startTime = System.nanoTime();<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>  public CacheStats(final String name) {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    this(name, DEFAULT_WINDOW_PERIODS);<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  }<a name="line.110"></a>
+<span class="sourceLineNo">111</span><a name="line.111"></a>
+<span class="sourceLineNo">112</span>  public CacheStats(final String name, int numPeriodsInWindow) {<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    this.numPeriodsInWindow = numPeriodsInWindow;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    this.hitCounts = initializeZeros(numPeriodsInWindow);<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    this.hitCachingCounts = initializeZeros(numPeriodsInWindow);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    this.requestCounts = initializeZeros(numPeriodsInWindow);<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    this.requestCachingCounts = initializeZeros(numPeriodsInWindow);<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    this.ageAtEviction = METRICS.histogram(name(CacheStats.class, name + ".ageAtEviction"));<a name="line.118"></a>
+<span class="sourceLineNo">119</span>  }<a name="line.119"></a>
+<span class="sourceLineNo">120</span><a name="line.120"></a>
+<span class="sourceLineNo">121</span>  @Override<a name="line.121"></a>
+<span class="sourceLineNo">122</span>  public String toString() {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    AgeSnapshot snapshot = getAgeAtEvictionSnapshot();<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    return "hitCount=" + getHitCount() + ", hitCachingCount=" + getHitCachingCount() +<a name="line.124"></a>
+<span class="sourceLineNo">125</span>      ", missCount=" + getMissCount() + ", missCachingCount=" + getMissCachingCount() +<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      ", evictionCount=" + getEvictionCount() +<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      ", evictedBlockCount=" + getEvictedCount() +<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      ", primaryMissCount=" + getPrimaryMissCount() +<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      ", primaryHitCount=" + getPrimaryHitCount() +<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      ", evictedAgeMean=" + snapshot.getMean() +<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      ", evictedAgeStdDev=" + snapshot.getStdDev();<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  }<a name="line.132"></a>
+<span class="sourceLineNo">133</span><a name="line.133"></a>
+<span class="sourceLineNo">134</span>  public void miss(boolean caching, boolean primary) {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    missCount.incrementAndGet();<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    if (primary) primaryMissCount.incrementAndGet();<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    if (caching) missCachingCount.incrementAndGet();<a name="line.137"></a>
+<span class="sourceLineNo">138</span>  }<a name="line.138"></a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span>  public void hit(boolean caching) {<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    hit(caching, true);<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  }<a name="line.142"></a>
+<span class="sourceLineNo">143</span><a name="line.143"></a>
+<span class="sourceLineNo">144</span>  public void hit(boolean caching, boolean primary) {<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    hitCount.incrementAndGet();<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    if (primary) primaryHitCount.incrementAndGet();<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    if (caching) hitCachingCount.incrementAndGet();<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  }<a name="line.148"></a>
+<span class="sourceLineNo">149</span><a name="line.149"></a>
+<span class="sourceLineNo">150</span>  public void evict() {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    evictionCount.incrementAndGet();<a name="line.151"></a>
+<span class="sourceLineNo">152</span>  }<a name="line.152"></a>
+<span class="sourceLineNo">153</span><a name="line.153"></a>
+<span class="sourceLineNo">154</span>  public void evicted(final long t, boolean primary) {<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    if (t &gt; this.startTime) this.ageAtEviction.update(t - this.startTime);<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    this.evictedBlockCount.incrementAndGet();<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    if (primary) {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      primaryEvictedBlockCount.incrementAndGet();<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    }<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  }<a name="line.160"></a>
+<span class="sourceLineNo">161</span><a name="line.161"></a>
+<span class="sourceLineNo">162</span>  public long failInsert() {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    return failedInserts.incrementAndGet();<a name="line.163"></a>
+<span class="sourceLineNo">164</span>  }<a name="line.164"></a>
+<span class="sourceLineNo">165</span><a name="line.165"></a>
+<span class="sourceLineNo">166</span>  public long getRequestCount() {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    return getHitCount() + getMissCount();<a name="line.167"></a>
+<span class="sourceLineNo">168</span>  }<a name="line.168"></a>
+<span class="sourceLineNo">169</span><a name="line.169"></a>
+<span class="sourceLineNo">170</span>  public long getRequestCachingCount() {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    return getHitCachingCount() + getMissCachingCount();<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  }<a name="line.172"></a>
+<span class="sourceLineNo">173</span><a name="line.173"></a>
+<span class="sourceLineNo">174</span>  public long getMissCount() {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    return missCount.get();<a name="line.175"></a>
+<span class="sourceLineNo">176</span>  }<a name="line.176"></a>
+<span class="sourceLineNo">177</span><a name="line.177"></a>
+<span class="sourceLineNo">178</span>  public long getPrimaryMissCount() {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    return primaryMissCount.get();<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 long getMissCachingCount() {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    return missCachingCount.get();<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>  public long getHitCount() {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    return hitCount.get();<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>  public long getPrimaryHitCount() {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    return primaryHitCount.get();<a name="line.191"></a>
+<span class="sourceLineNo">192</span>  }<a name="line.192"></a>
+<span class="sourceLineNo">193</span><a name="line.193"></a>
+<span class="sourceLineNo">194</span>  public long getHitCachingCount() {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    return hitCachingCount.get();<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>  public long getEvictionCount() {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    return evictionCount.get();<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>  public long getEvictedCount() {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    return this.evictedBlockCount.get();<a name="line.203"></a>
+<span class="sourceLineNo">204</span>  }<a name="line.204"></a>
+<span class="sourceLineNo">205</span><a name="line.205"></a>
+<span class="sourceLineNo">206</span>  public long getPrimaryEvictedCount() {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    return primaryEvictedBlockCount.get();<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>  public double getHitRatio() {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    return ((float)getHitCount()/(float)getRequestCount());<a name="line.211"></a>
+<span class="sourceLineNo">212</span>  }<a name="line.212"></a>
+<span class="sourceLineNo">213</span><a name="line.213"></a>
+<span class="sourceLineNo">214</span>  public double getHitCachingRatio() {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    return ((float)getHitCachingCount()/(float)getRequestCachingCount());<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>  public double getMissRatio() {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    return ((float)getMissCount()/(float)getRequestCount());<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>  public double getMissCachingRatio() {<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    return ((float)getMissCachingCount()/(float)getRequestCachingCount());<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>  public double evictedPerEviction() {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    return ((float)getEvictedCount()/(float)getEvictionCount());<a name="line.227"></a>
+<span class="sourceLineNo">228</span>  }<a name="line.228"></a>
+<span class="sourceLineNo">229</span><a name="line.229"></a>
+<span class="sourceLineNo">230</span>  public long getFailedInserts() {<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    return failedInserts.get();<a name="line.231"></a>
+<span class="sourceLineNo">232</span>  }<a name="line.232"></a>
+<span class="sourceLineNo">233</span><a name="line.233"></a>
+<span class="sourceLineNo">234</span>  public void rollMetricsPeriod() {<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    hitCounts[windowIndex] = getHitCount() - lastHitCount;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    lastHitCount = getHitCount();<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    hitCachingCounts[windowIndex] =<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      getHitCachingCount() - lastHitCachingCount;<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    lastHitCachingCount = getHitCachingCount();<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    requestCounts[windowIndex] = getRequestCount() - lastRequestCount;<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    lastRequestCount = getRequestCount();<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    requestCachingCounts[windowIndex] =<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      getRequestCachingCount() - lastRequestCachingCount;<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    lastRequestCachingCount = getRequestCachingCount();<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    windowIndex = (windowIndex + 1) % numPeriodsInWindow;<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>  public long getSumHitCountsPastNPeriods() {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    return sum(hitCounts);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>  }<a name="line.250"></a>
+<span class="sourceLineNo">251</span><a name="line.251"></a>
+<span class="sourceLineNo">252</span>  public long getSumRequestCountsPastNPeriods() {<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    return sum(requestCounts);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>  }<a name="line.254"></a>
+<span class="sourceLineNo">255</span><a name="line.255"></a>
+<span class="sourceLineNo">256</span>  public long getSumHitCachingCountsPastNPeriods() {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    return sum(hitCachingCounts);<a name="line.257"></a>
+<span class="sourceLineNo">258</span>  }<a name="line.258"></a>
+<span class="sourceLineNo">259</span><a name="line.259"></a>
+<span class="sourceLineNo">260</span>  public long getSumRequestCachingCountsPastNPeriods() {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    return sum(requestCachingCounts);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>  }<a name="line.262"></a>
+<span class="sourceLineNo">263</span><a name="line.263"></a>
+<span class="sourceLineNo">264</span>  public double getHitRatioPastNPeriods() {<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    double ratio = ((double)getSumHitCountsPastNPeriods() /<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        (double)getSumRequestCountsPastNPeriods());<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    return Double.isNaN(ratio) ? 0 : ratio;<a name="line.267"></a>
+<span class="sourceLineNo">268</span>  }<a name="line.268"></a>
+<span class="sourceLineNo">269</span><a name="line.269"></a>
+<span class="sourceLineNo">270</span>  public double getHitCachingRatioPastNPeriods() {<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    double ratio = ((double)getSumHitCachingCountsPastNPeriods() /<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        (double)getSumRequestCachingCountsPastNPeriods());<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    return Double.isNaN(ratio) ? 0 : ratio;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>  }<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>  public AgeSnapshot getAgeAtEvictionSnapshot() {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    return new AgeSnapshot(this.ageAtEviction);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  }<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>  private static long sum(long [] counts) {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    long sum = 0;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    for (long count : counts) sum += count;<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    return sum;<a name="line.283"></a>
+<span class="sourceLineNo">284</span>  }<a name="line.284"></a>
+<span class="sourceLineNo">285</span><a name="line.285"></a>
+<span class="sourceLineNo">286</span>  private static long [] initializeZeros(int n) {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    long [] zeros = new long [n];<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    for (int i=0; i&lt;n; i++) {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      zeros[i] = 0L;<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    }<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    return zeros;<a name="line.291"></a>
+<span class="sourceLineNo">292</span>  }<a name="line.292"></a>
+<span class="sourceLineNo">293</span>}<a name="line.293"></a>
 
 
 


[43/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html b/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html
index d02224d..110f73f 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html
@@ -131,6 +131,10 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <td class="colFirst"><code>static interface&nbsp;</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.LeaseRecovery.html" title="interface in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore.LeaseRecovery</a></strong></code>&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static class&nbsp;</code></td>
+<td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.PushType.html" title="enum in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore.PushType</a></strong></code>&nbsp;</td>
+</tr>
 </table>
 <ul class="blockList">
 <li class="blockList"><a name="nested_classes_inherited_from_class_org.apache.hadoop.hbase.procedure2.store.ProcedureStore">
@@ -202,146 +206,142 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#fs">fs</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a></code></td>
-<td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#inactiveLogsMaxId">inactiveLogsMaxId</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/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#inSync">inSync</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#lastRollTs">lastRollTs</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.LeaseRecovery.html" title="interface in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore.LeaseRecovery</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#leaseRecovery">leaseRecovery</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <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></code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#loading">loading</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/ReentrantLock.html?is-external=true" title="class or interface in java.util.concurrent.locks">ReentrantLock</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#lock">lock</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static org.apache.commons.logging.Log</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#LOG">LOG</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private org.apache.hadoop.fs.Path</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#logDir">logDir</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.html?is-external=true" title="class or interface in java.util">LinkedList</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALFile.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">ProcedureWALFile</a>&gt;</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#logs">logs</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <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></code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#MAX_RETRIES_BEFORE_ROLL_CONF_KEY">MAX_RETRIES_BEFORE_ROLL_CONF_KEY</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <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></code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#MAX_SYNC_FAILURE_ROLL_CONF_KEY">MAX_SYNC_FAILURE_ROLL_CONF_KEY</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private int</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#maxRetriesBeforeRoll">maxRetriesBeforeRoll</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private int</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#maxSyncFailureRoll">maxSyncFailureRoll</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <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></code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#PERIODIC_ROLL_CONF_KEY">PERIODIC_ROLL_CONF_KEY</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private int</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#periodicRollMsec">periodicRollMsec</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <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></code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#ROLL_RETRIES_CONF_KEY">ROLL_RETRIES_CONF_KEY</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <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></code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#ROLL_THRESHOLD_CONF_KEY">ROLL_THRESHOLD_CONF_KEY</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private int</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#rollRetries">rollRetries</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private long</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#rollThreshold">rollThreshold</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/Condition.html?is-external=true" title="class or interface in java.util.concurrent.locks">Condition</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#slotCond">slotCond</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private int</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#slotIndex">slotIndex</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/util/ByteSlot.html" title="class in org.apache.hadoop.hbase.procedure2.util">ByteSlot</a>[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#slots">slots</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/LinkedTransferQueue.html?is-external=true" title="class or interface in java.util.concurrent">LinkedTransferQueue</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/util/ByteSlot.html" title="class in org.apache.hadoop.hbase.procedure2.util">ByteSlot</a>&gt;</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#slotsCache">slotsCache</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html" title="class in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#storeTracker">storeTracker</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private org.apache.hadoop.fs.FSDataOutputStream</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#stream">stream</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <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></code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#SYNC_WAIT_MSEC_CONF_KEY">SYNC_WAIT_MSEC_CONF_KEY</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/Condition.html?is-external=true" title="class or interface in java.util.concurrent.locks">Condition</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#syncCond">syncCond</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicReference.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicReference</a>&lt;<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>&gt;</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#syncException">syncException</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <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></code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#syncThread">syncThread</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private int</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#syncWaitMsec">syncWaitMsec</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#totalSynced">totalSynced</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <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></code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#USE_HSYNC_CONF_KEY">USE_HSYNC_CONF_KEY</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#useHsync">useHsync</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <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></code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#WAIT_BEFORE_ROLL_CONF_KEY">WAIT_BEFORE_ROLL_CONF_KEY</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private int</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#waitBeforeRoll">waitBeforeRoll</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/Condition.html?is-external=true" title="class or interface in java.util.concurrent.locks">Condition</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#waitCond">waitCond</a></strong></code>&nbsp;</td>
 </tr>
@@ -385,104 +385,107 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#acquireSlot()">acquireSlot</a></strong>()</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>protected boolean</code></td>
-<td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#checkAndTryRoll()">checkAndTryRoll</a></strong>()</code>&nbsp;</td>
-</tr>
-<tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#closeStream()">closeStream</a></strong>()</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/procedure2/store/wal/WALProcedureStore.html#delete(long)">delete</a></strong>(long&nbsp;procId)</code>
 <div class="block">The specified procId was removed from the executor,
  due to completion, abort or failure.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.html?is-external=true" title="class or interface in java.util">LinkedList</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALFile.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">ProcedureWALFile</a>&gt;</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#getActiveLogs()">getActiveLogs</a></strong>()</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><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/procedure2/store/wal/ProcedureWALFile.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">ProcedureWALFile</a>&gt;</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#getCorruptedLogs()">getCorruptedLogs</a></strong>()</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.fs.FileSystem</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#getFileSystem()">getFileSystem</a></strong>()</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.fs.Path</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#getLogDir()">getLogDir</a></strong>()</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected org.apache.hadoop.fs.Path</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#getLogFilePath(long)">getLogFilePath</a></strong>(long&nbsp;logId)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private org.apache.hadoop.fs.FileStatus[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#getLogFiles()">getLogFiles</a></strong>()</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static long</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#getLogIdFromName(java.lang.String)">getLogIdFromName</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;name)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private long</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#getMaxLogId(org.apache.hadoop.fs.FileStatus[])">getMaxLogId</a></strong>(org.apache.hadoop.fs.FileStatus[]&nbsp;logFiles)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private long</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#getMillisFromLastRoll()">getMillisFromLastRoll</a></strong>()</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private long</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#getMillisToNextPeriodicRoll()">getMillisToNextPeriodicRoll</a></strong>()</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#getNumThreads()">getNumThreads</a></strong>()</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html" title="class in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#getStoreTracker()">getStoreTracker</a></strong>()</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALFile.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">ProcedureWALFile</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#initOldLog(org.apache.hadoop.fs.FileStatus)">initOldLog</a></strong>(org.apache.hadoop.fs.FileStatus&nbsp;logFile)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private long</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#initOldLogs(org.apache.hadoop.fs.FileStatus[])">initOldLogs</a></strong>(org.apache.hadoop.fs.FileStatus[]&nbsp;logFiles)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#initTrackerFromOldLogs()">initTrackerFromOldLogs</a></strong>()</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/procedure2/store/wal/WALProcedureStore.html#insert(org.apache.hadoop.hbase.procedure2.Procedure,%20org.apache.hadoop.hbase.procedure2.Procedure[])">insert</a></strong>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;proc,
             <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>[]&nbsp;subprocs)</code>
 <div class="block">When a procedure is submitted to the executor insert(proc, null) will be called.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#isSyncAborted()">isSyncAborted</a></strong>()</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/procedure2/store/wal/WALProcedureStore.html#load(org.apache.hadoop.hbase.procedure2.store.ProcedureStore.ProcedureLoader)">load</a></strong>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStore.ProcedureLoader.html" title="interface in org.apache.hadoop.hbase.procedure2.store">ProcedureStore.ProcedureLoader</a>&nbsp;loader)</code>
 <div class="block">Load the Procedures in the store.</div>
 </td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#periodicRoll()">periodicRoll</a></strong>()</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/procedure2/store/wal/WALProcedureStore.html#periodicRoll()">periodicRoll</a></strong>()</code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#periodicRollForTesting()">periodicRollForTesting</a></strong>()</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private long</code></td>
-<td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#pushData(org.apache.hadoop.hbase.procedure2.util.ByteSlot)">pushData</a></strong>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/util/ByteSlot.html" title="class in org.apache.hadoop.hbase.procedure2.util">ByteSlot</a>&nbsp;slot)</code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#pushData(org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore.PushType,%20org.apache.hadoop.hbase.procedure2.util.ByteSlot,%20long,%20long[])">pushData</a></strong>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.PushType.html" title="enum in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore.PushType</a>&nbsp;type,
+                <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/util/ByteSlot.html" title="class in org.apache.hadoop.hbase.procedure2.util">ByteSlot</a>&nbsp;slot,
+                long&nbsp;procId,
+                long[]&nbsp;subProcIds)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>void</code></td>
@@ -507,7 +510,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#removeLogFile(org.apache.hadoop.hbase.procedure2.store.wal.ProcedureWALFile)">removeLogFile</a></strong>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALFile.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">ProcedureWALFile</a>&nbsp;log)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>protected boolean</code></td>
+<td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#rollWriter()">rollWriter</a></strong>()</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
@@ -515,40 +518,48 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#rollWriter(long)">rollWriter</a></strong>(long&nbsp;logId)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#rollWriterOrDie()">rollWriterOrDie</a></strong>()</code>&nbsp;</td>
+<td class="colFirst"><code>protected boolean</code></td>
+<td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#rollWriterForTesting()">rollWriterForTesting</a></strong>()</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>private void</code></td>
-<td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#setInactiveLogsMaxId(long)">setInactiveLogsMaxId</a></strong>(long&nbsp;logId)</code>&nbsp;</td>
+<td class="colFirst"><code>private boolean</code></td>
+<td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#rollWriterOrDie()">rollWriterOrDie</a></strong>()</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#sendStopSignal()">sendStopSignal</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/procedure2/store/wal/WALProcedureStore.html#start(int)">start</a></strong>(int&nbsp;numSlots)</code>
 <div class="block">Start/Open the procedure store</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#stop(boolean)">stop</a></strong>(boolean&nbsp;abort)</code>
 <div class="block">Stop/Close the procedure store</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#syncLoop()">syncLoop</a></strong>()</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private long</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#syncSlots()">syncSlots</a></strong>()</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected long</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#syncSlots(org.apache.hadoop.fs.FSDataOutputStream,%20org.apache.hadoop.hbase.procedure2.util.ByteSlot[],%20int,%20int)">syncSlots</a></strong>(org.apache.hadoop.fs.FSDataOutputStream&nbsp;stream,
                   <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/util/ByteSlot.html" title="class in org.apache.hadoop.hbase.procedure2.util">ByteSlot</a>[]&nbsp;slots,
                   int&nbsp;offset,
                   int&nbsp;count)</code>&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private boolean</code></td>
+<td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#tryRollWriter()">tryRollWriter</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/procedure2/store/wal/WALProcedureStore.html#update(org.apache.hadoop.hbase.procedure2.Procedure)">update</a></strong>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;proc)</code>
@@ -556,6 +567,12 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
  and the new state should be written to the store.</div>
 </td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#updateStoreTracker(org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore.PushType,%20long,%20long[])">updateStoreTracker</a></strong>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.PushType.html" title="enum in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore.PushType</a>&nbsp;type,
+                                    long&nbsp;procId,
+                                    long[]&nbsp;subProcIds)</code>&nbsp;</td>
+</tr>
 </table>
 <ul class="blockList">
 <li class="blockList"><a name="methods_inherited_from_class_org.apache.hadoop.hbase.procedure2.store.ProcedureStoreBase">
@@ -772,22 +789,13 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <pre>private final&nbsp;<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html" title="class in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker</a> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.102">storeTracker</a></pre>
 </li>
 </ul>
-<a name="inactiveLogsMaxId">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>inactiveLogsMaxId</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.103">inactiveLogsMaxId</a></pre>
-</li>
-</ul>
 <a name="lock">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>lock</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/ReentrantLock.html?is-external=true" title="class or interface in java.util.concurrent.locks">ReentrantLock</a> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.104">lock</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/ReentrantLock.html?is-external=true" title="class or interface in java.util.concurrent.locks">ReentrantLock</a> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.103">lock</a></pre>
 </li>
 </ul>
 <a name="waitCond">
@@ -796,7 +804,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>waitCond</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/Condition.html?is-external=true" title="class or interface in java.util.concurrent.locks">Condition</a> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.105">waitCond</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/Condition.html?is-external=true" title="class or interface in java.util.concurrent.locks">Condition</a> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.104">waitCond</a></pre>
 </li>
 </ul>
 <a name="slotCond">
@@ -805,7 +813,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>slotCond</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/Condition.html?is-external=true" title="class or interface in java.util.concurrent.locks">Condition</a> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.106">slotCond</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/Condition.html?is-external=true" title="class or interface in java.util.concurrent.locks">Condition</a> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.105">slotCond</a></pre>
 </li>
 </ul>
 <a name="syncCond">
@@ -814,7 +822,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>syncCond</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/Condition.html?is-external=true" title="class or interface in java.util.concurrent.locks">Condition</a> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.107">syncCond</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/Condition.html?is-external=true" title="class or interface in java.util.concurrent.locks">Condition</a> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.106">syncCond</a></pre>
 </li>
 </ul>
 <a name="leaseRecovery">
@@ -823,7 +831,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>leaseRecovery</h4>
-<pre>private final&nbsp;<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.LeaseRecovery.html" title="interface in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore.LeaseRecovery</a> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.109">leaseRecovery</a></pre>
+<pre>private final&nbsp;<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.LeaseRecovery.html" title="interface in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore.LeaseRecovery</a> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.108">leaseRecovery</a></pre>
 </li>
 </ul>
 <a name="conf">
@@ -832,7 +840,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>conf</h4>
-<pre>private final&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.110">conf</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.109">conf</a></pre>
 </li>
 </ul>
 <a name="fs">
@@ -841,7 +849,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>fs</h4>
-<pre>private final&nbsp;org.apache.hadoop.fs.FileSystem <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.111">fs</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.fs.FileSystem <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.110">fs</a></pre>
 </li>
 </ul>
 <a name="logDir">
@@ -850,7 +858,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>logDir</h4>
-<pre>private final&nbsp;org.apache.hadoop.fs.Path <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.112">logDir</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.fs.Path <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.111">logDir</a></pre>
 </li>
 </ul>
 <a name="syncException">
@@ -859,7 +867,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>syncException</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicReference.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicReference</a>&lt;<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>&gt; <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.114">syncException</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicReference.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicReference</a>&lt;<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>&gt; <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.113">syncException</a></pre>
 </li>
 </ul>
 <a name="loading">
@@ -868,7 +876,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>loading</h4>
-<pre>private final&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/procedure2/store/wal/WALProcedureStore.html#line.115">loading</a></pre>
+<pre>private final&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/procedure2/store/wal/WALProcedureStore.html#line.114">loading</a></pre>
 </li>
 </ul>
 <a name="inSync">
@@ -877,7 +885,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>inSync</h4>
-<pre>private final&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/procedure2/store/wal/WALProcedureStore.html#line.116">inSync</a></pre>
+<pre>private final&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/procedure2/store/wal/WALProcedureStore.html#line.115">inSync</a></pre>
 </li>
 </ul>
 <a name="totalSynced">
@@ -886,7 +894,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>totalSynced</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.117">totalSynced</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.116">totalSynced</a></pre>
 </li>
 </ul>
 <a name="lastRollTs">
@@ -895,7 +903,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>lastRollTs</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.118">lastRollTs</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.117">lastRollTs</a></pre>
 </li>
 </ul>
 <a name="slotsCache">
@@ -904,7 +912,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>slotsCache</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/LinkedTransferQueue.html?is-external=true" title="class or interface in java.util.concurrent">LinkedTransferQueue</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/util/ByteSlot.html" title="class in org.apache.hadoop.hbase.procedure2.util">ByteSlot</a>&gt; <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.120">slotsCache</a></pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/LinkedTransferQueue.html?is-external=true" title="class or interface in java.util.concurrent">LinkedTransferQueue</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/util/ByteSlot.html" title="class in org.apache.hadoop.hbase.procedure2.util">ByteSlot</a>&gt; <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.119">slotsCache</a></pre>
 </li>
 </ul>
 <a name="corruptedLogs">
@@ -913,7 +921,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>corruptedLogs</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/procedure2/store/wal/ProcedureWALFile.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">ProcedureWALFile</a>&gt; <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.121">corruptedLogs</a></pre>
+<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/procedure2/store/wal/ProcedureWALFile.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">ProcedureWALFile</a>&gt; <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.120">corruptedLogs</a></pre>
 </li>
 </ul>
 <a name="stream">
@@ -922,7 +930,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>stream</h4>
-<pre>private&nbsp;org.apache.hadoop.fs.FSDataOutputStream <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.122">stream</a></pre>
+<pre>private&nbsp;org.apache.hadoop.fs.FSDataOutputStream <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.121">stream</a></pre>
 </li>
 </ul>
 <a name="flushLogId">
@@ -931,7 +939,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>flushLogId</h4>
-<pre>private&nbsp;long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.123">flushLogId</a></pre>
+<pre>private&nbsp;long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.122">flushLogId</a></pre>
 </li>
 </ul>
 <a name="slotIndex">
@@ -940,7 +948,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>slotIndex</h4>
-<pre>private&nbsp;int <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.124">slotIndex</a></pre>
+<pre>private&nbsp;int <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.123">slotIndex</a></pre>
 </li>
 </ul>
 <a name="syncThread">
@@ -949,7 +957,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>syncThread</h4>
-<pre>private&nbsp;<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> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.125">syncThread</a></pre>
+<pre>private&nbsp;<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> <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.124">syncThread</a></pre>
 </li>
 </ul>
 <a name="slots">
@@ -958,7 +966,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>slots</h4>
-<pre>private&nbsp;<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/util/ByteSlot.html" title="class in org.apache.hadoop.hbase.procedure2.util">ByteSlot</a>[] <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.126">slots</a></pre>
+<pre>private&nbsp;<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/util/ByteSlot.html" title="class in org.apache.hadoop.hbase.procedure2.util">ByteSlot</a>[] <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.125">slots</a></pre>
 </li>
 </ul>
 <a name="maxRetriesBeforeRoll">
@@ -967,7 +975,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>maxRetriesBeforeRoll</h4>
-<pre>private&nbsp;int <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.128">maxRetriesBeforeRoll</a></pre>
+<pre>private&nbsp;int <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.127">maxRetriesBeforeRoll</a></pre>
 </li>
 </ul>
 <a name="maxSyncFailureRoll">
@@ -976,7 +984,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>maxSyncFailureRoll</h4>
-<pre>private&nbsp;int <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.129">maxSyncFailureRoll</a></pre>
+<pre>private&nbsp;int <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.128">maxSyncFailureRoll</a></pre>
 </li>
 </ul>
 <a name="waitBeforeRoll">
@@ -985,7 +993,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>waitBeforeRoll</h4>
-<pre>private&nbsp;int <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.130">waitBeforeRoll</a></pre>
+<pre>private&nbsp;int <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.129">waitBeforeRoll</a></pre>
 </li>
 </ul>
 <a name="rollRetries">
@@ -994,7 +1002,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>rollRetries</h4>
-<pre>private&nbsp;int <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.131">rollRetries</a></pre>
+<pre>private&nbsp;int <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.130">rollRetries</a></pre>
 </li>
 </ul>
 <a name="periodicRollMsec">
@@ -1003,7 +1011,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>periodicRollMsec</h4>
-<pre>private&nbsp;int <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.132">periodicRollMsec</a></pre>
+<pre>private&nbsp;int <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.131">periodicRollMsec</a></pre>
 </li>
 </ul>
 <a name="rollThreshold">
@@ -1012,7 +1020,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>rollThreshold</h4>
-<pre>private&nbsp;long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.133">rollThreshold</a></pre>
+<pre>private&nbsp;long <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.132">rollThreshold</a></pre>
 </li>
 </ul>
 <a name="useHsync">
@@ -1021,7 +1029,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>useHsync</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.134">useHsync</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.133">useHsync</a></pre>
 </li>
 </ul>
 <a name="syncWaitMsec">
@@ -1030,7 +1038,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockListLast">
 <li class="blockList">
 <h4>syncWaitMsec</h4>
-<pre>private&nbsp;int <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.135">syncWaitMsec</a></pre>
+<pre>private&nbsp;int <a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.134">syncWaitMsec</a></pre>
 </li>
 </ul>
 </li>
@@ -1047,7 +1055,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockListLast">
 <li class="blockList">
 <h4>WALProcedureStore</h4>
-<pre>public&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.137">WALProcedureStore</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.136">WALProcedureStore</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                  org.apache.hadoop.fs.FileSystem&nbsp;fs,
                  org.apache.hadoop.fs.Path&nbsp;logDir,
                  <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.LeaseRecovery.html" title="interface in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore.LeaseRecovery</a>&nbsp;leaseRecovery)</pre>
@@ -1067,7 +1075,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>start</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.146">start</a>(int&nbsp;numSlots)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.145">start</a>(int&nbsp;numSlots)
            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"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStore.html#start(int)">ProcedureStore</a></code></strong></div>
 <div class="block">Start/Open the procedure store</div>
@@ -1081,19 +1089,28 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>stop</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.188">stop</a>(boolean&nbsp;abort)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.187">stop</a>(boolean&nbsp;abort)</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStore.html#stop(boolean)">ProcedureStore</a></code></strong></div>
 <div class="block">Stop/Close the procedure store</div>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>abort</code> - true if the stop is an abort</dd></dl>
 </li>
 </ul>
+<a name="sendStopSignal()">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>sendStopSignal</h4>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.219">sendStopSignal</a>()</pre>
+</li>
+</ul>
 <a name="getNumThreads()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>getNumThreads</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.224">getNumThreads</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.231">getNumThreads</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>the number of threads/slots passed to start()</dd></dl>
 </li>
 </ul>
@@ -1103,7 +1120,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>getStoreTracker</h4>
-<pre>public&nbsp;<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html" title="class in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker</a>&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.228">getStoreTracker</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html" title="class in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker</a>&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.235">getStoreTracker</a>()</pre>
 </li>
 </ul>
 <a name="getActiveLogs()">
@@ -1112,7 +1129,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>getActiveLogs</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.html?is-external=true" title="class or interface in java.util">LinkedList</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALFile.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">ProcedureWALFile</a>&gt;&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.232">getActiveLogs</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.html?is-external=true" title="class or interface in java.util">LinkedList</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALFile.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">ProcedureWALFile</a>&gt;&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.239">getActiveLogs</a>()</pre>
 </li>
 </ul>
 <a name="getCorruptedLogs()">
@@ -1121,7 +1138,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>getCorruptedLogs</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/procedure2/store/wal/ProcedureWALFile.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">ProcedureWALFile</a>&gt;&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.236">getCorruptedLogs</a>()</pre>
+<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/procedure2/store/wal/ProcedureWALFile.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">ProcedureWALFile</a>&gt;&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.243">getCorruptedLogs</a>()</pre>
 </li>
 </ul>
 <a name="recoverLease()">
@@ -1130,7 +1147,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>recoverLease</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.241">recoverLease</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.248">recoverLease</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>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStore.html#recoverLease()">ProcedureStore</a></code></strong></div>
 <div class="block">Acquire the lease for the procedure store.</div>
@@ -1144,7 +1161,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>load</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.271">load</a>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStore.ProcedureLoader.html" title="interface in org.apache.hadoop.hbase.procedure2.store">ProcedureStore.ProcedureLoader</a>&nbsp;loader)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.283">load</a>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStore.ProcedureLoader.html" title="interface in org.apache.hadoop.hbase.procedure2.store">ProcedureStore.ProcedureLoader</a>&nbsp;loader)
           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"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStore.html#load(org.apache.hadoop.hbase.procedure2.store.ProcedureStore.ProcedureLoader)">ProcedureStore</a></code></strong></div>
 <div class="block">Load the Procedures in the store.</div>
@@ -1159,7 +1176,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>insert</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.332">insert</a>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;proc,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.344">insert</a>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;proc,
           <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>[]&nbsp;subprocs)</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStore.html#insert(org.apache.hadoop.hbase.procedure2.Procedure,%20org.apache.hadoop.hbase.procedure2.Procedure[])">ProcedureStore</a></code></strong></div>
 <div class="block">When a procedure is submitted to the executor insert(proc, null) will be called.
@@ -1177,7 +1194,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>update</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.370">update</a>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;proc)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.378">update</a>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;proc)</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStore.html#update(org.apache.hadoop.hbase.procedure2.Procedure)">ProcedureStore</a></code></strong></div>
 <div class="block">The specified procedure was executed,
  and the new state should be written to the store.</div>
@@ -1190,7 +1207,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>delete</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.408">delete</a>(long&nbsp;procId)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.401">delete</a>(long&nbsp;procId)</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStore.html#delete(long)">ProcedureStore</a></code></strong></div>
 <div class="block">The specified procId was removed from the executor,
  due to completion, abort or failure.
@@ -1204,7 +1221,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>acquireSlot</h4>
-<pre>private&nbsp;<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/util/ByteSlot.html" title="class in org.apache.hadoop.hbase.procedure2.util">ByteSlot</a>&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.447">acquireSlot</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/util/ByteSlot.html" title="class in org.apache.hadoop.hbase.procedure2.util">ByteSlot</a>&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.423">acquireSlot</a>()</pre>
 </li>
 </ul>
 <a name="releaseSlot(org.apache.hadoop.hbase.procedure2.util.ByteSlot)">
@@ -1213,37 +1230,39 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>releaseSlot</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.452">releaseSlot</a>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/util/ByteSlot.html" title="class in org.apache.hadoop.hbase.procedure2.util">ByteSlot</a>&nbsp;slot)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.428">releaseSlot</a>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/util/ByteSlot.html" title="class in org.apache.hadoop.hbase.procedure2.util">ByteSlot</a>&nbsp;slot)</pre>
 </li>
 </ul>
-<a name="pushData(org.apache.hadoop.hbase.procedure2.util.ByteSlot)">
+<a name="pushData(org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore.PushType, org.apache.hadoop.hbase.procedure2.util.ByteSlot, long, long[])">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>pushData</h4>
-<pre>private&nbsp;long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.457">pushData</a>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/util/ByteSlot.html" title="class in org.apache.hadoop.hbase.procedure2.util">ByteSlot</a>&nbsp;slot)</pre>
+<pre>private&nbsp;long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.435">pushData</a>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.PushType.html" title="enum in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore.PushType</a>&nbsp;type,
+            <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/util/ByteSlot.html" title="class in org.apache.hadoop.hbase.procedure2.util">ByteSlot</a>&nbsp;slot,
+            long&nbsp;procId,
+            long[]&nbsp;subProcIds)</pre>
 </li>
 </ul>
-<a name="isSyncAborted()">
+<a name="updateStoreTracker(org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore.PushType, long, long[])">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>isSyncAborted</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.512">isSyncAborted</a>()</pre>
+<h4>updateStoreTracker</h4>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.492">updateStoreTracker</a>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.PushType.html" title="enum in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore.PushType</a>&nbsp;type,
+                      long&nbsp;procId,
+                      long[]&nbsp;subProcIds)</pre>
 </li>
 </ul>
-<a name="periodicRoll()">
+<a name="isSyncAborted()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>periodicRoll</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.516">periodicRoll</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><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>
+<h4>isSyncAborted</h4>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.513">isSyncAborted</a>()</pre>
 </li>
 </ul>
 <a name="syncLoop()">
@@ -1252,7 +1271,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>syncLoop</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.528">syncLoop</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.517">syncLoop</a>()
                throws <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></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><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></code></dd></dl>
@@ -1264,7 +1283,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>syncSlots</h4>
-<pre>private&nbsp;long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.591">syncSlots</a>()
+<pre>private&nbsp;long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.578">syncSlots</a>()
                 throws <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></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><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></code></dd></dl>
@@ -1276,7 +1295,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>syncSlots</h4>
-<pre>protected&nbsp;long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.619">syncSlots</a>(org.apache.hadoop.fs.FSDataOutputStream&nbsp;stream,
+<pre>protected&nbsp;long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.606">syncSlots</a>(org.apache.hadoop.fs.FSDataOutputStream&nbsp;stream,
              <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/util/ByteSlot.html" title="class in org.apache.hadoop.hbase.procedure2.util">ByteSlot</a>[]&nbsp;slots,
              int&nbsp;offset,
              int&nbsp;count)
@@ -1291,16 +1310,16 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>rollWriterOrDie</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.643">rollWriterOrDie</a>()</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.629">rollWriterOrDie</a>()</pre>
 </li>
 </ul>
-<a name="checkAndTryRoll()">
+<a name="tryRollWriter()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>checkAndTryRoll</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.659">checkAndTryRoll</a>()</pre>
+<h4>tryRollWriter</h4>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.645">tryRollWriter</a>()</pre>
 </li>
 </ul>
 <a name="getMillisToNextPeriodicRoll()">
@@ -1309,7 +1328,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>getMillisToNextPeriodicRoll</h4>
-<pre>private&nbsp;long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.672">getMillisToNextPeriodicRoll</a>()</pre>
+<pre>private&nbsp;long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.654">getMillisToNextPeriodicRoll</a>()</pre>
 </li>
 </ul>
 <a name="getMillisFromLastRoll()">
@@ -1318,49 +1337,76 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>getMillisFromLastRoll</h4>
-<pre>private&nbsp;long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.679">getMillisFromLastRoll</a>()</pre>
+<pre>private&nbsp;long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.661">getMillisFromLastRoll</a>()</pre>
 </li>
 </ul>
-<a name="rollWriter()">
+<a name="periodicRollForTesting()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>rollWriter</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.683">rollWriter</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>
+<h4>periodicRollForTesting</h4>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.666">periodicRollForTesting</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><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>
 </li>
 </ul>
-<a name="rollWriter(long)">
+<a name="rollWriterForTesting()">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>rollWriterForTesting</h4>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.676">rollWriterForTesting</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><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>
+</li>
+</ul>
+<a name="periodicRoll()">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>periodicRoll</h4>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.685">periodicRoll</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><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>
+</li>
+</ul>
+<a name="rollWriter()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>rollWriter</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.702">rollWriter</a>(long&nbsp;logId)
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.710">rollWriter</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><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>
 </li>
 </ul>
-<a name="closeStream()">
+<a name="rollWriter(long)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>closeStream</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.753">closeStream</a>()</pre>
+<h4>rollWriter</h4>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.729">rollWriter</a>(long&nbsp;logId)
+                    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>
 </li>
 </ul>
-<a name="setInactiveLogsMaxId(long)">
+<a name="closeStream()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setInactiveLogsMaxId</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.777">setInactiveLogsMaxId</a>(long&nbsp;logId)</pre>
+<h4>closeStream</h4>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.777">closeStream</a>()</pre>
 </li>
 </ul>
 <a name="removeInactiveLogs()">
@@ -1369,7 +1415,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>removeInactiveLogs</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.787">removeInactiveLogs</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.799">removeInactiveLogs</a>()</pre>
 </li>
 </ul>
 <a name="removeAllLogs(long)">
@@ -1378,7 +1424,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>removeAllLogs</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.806">removeAllLogs</a>(long&nbsp;lastLogId)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.810">removeAllLogs</a>(long&nbsp;lastLogId)</pre>
 </li>
 </ul>
 <a name="removeLogFile(org.apache.hadoop.hbase.procedure2.store.wal.ProcedureWALFile)">
@@ -1387,7 +1433,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>removeLogFile</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.821">removeLogFile</a>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALFile.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">ProcedureWALFile</a>&nbsp;log)</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.825">removeLogFile</a>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALFile.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">ProcedureWALFile</a>&nbsp;log)</pre>
 </li>
 </ul>
 <a name="getLogDir()">
@@ -1396,7 +1442,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>getLogDir</h4>
-<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.842">getLogDir</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.846">getLogDir</a>()</pre>
 </li>
 </ul>
 <a name="getFileSystem()">
@@ -1405,7 +1451,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>getFileSystem</h4>
-<pre>public&nbsp;org.apache.hadoop.fs.FileSystem&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.846">getFileSystem</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.fs.FileSystem&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.850">getFileSystem</a>()</pre>
 </li>
 </ul>
 <a name="getLogFilePath(long)">
@@ -1414,7 +1460,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>getLogFilePath</h4>
-<pre>protected&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.850">getLogFilePath</a>(long&nbsp;logId)
+<pre>protected&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.854">getLogFilePath</a>(long&nbsp;logId)
                                             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>
@@ -1426,7 +1472,7 @@ extends <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/P
 <ul class="blockList">
 <li class="blockList">
 <h4>getLogIdFromName</h4>
-<pre>private static&nbsp;long&nbsp;<a href="../../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#line.854">getLogIdFromName</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>
+<pre>private stati

<TRUNCATED>

[24/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html b/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html
index d6cf161..271fd72 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html
@@ -27,7 +27,7 @@
 <span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.mapreduce;<a name="line.19"></a>
 <span class="sourceLineNo">020</span><a name="line.20"></a>
 <span class="sourceLineNo">021</span>import com.google.protobuf.InvalidProtocolBufferException;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import com.yammer.metrics.core.MetricsRegistry;<a name="line.22"></a>
+<span class="sourceLineNo">022</span>import com.codahale.metrics.MetricRegistry;<a name="line.22"></a>
 <span class="sourceLineNo">023</span>import org.apache.commons.logging.Log;<a name="line.23"></a>
 <span class="sourceLineNo">024</span>import org.apache.commons.logging.LogFactory;<a name="line.24"></a>
 <span class="sourceLineNo">025</span>import org.apache.hadoop.conf.Configuration;<a name="line.25"></a>
@@ -347,7 +347,7 @@
 <span class="sourceLineNo">339</span><a name="line.339"></a>
 <span class="sourceLineNo">340</span>    if (addDependencyJars) {<a name="line.340"></a>
 <span class="sourceLineNo">341</span>      addDependencyJars(job);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      addDependencyJars(job.getConfiguration(), MetricsRegistry.class);<a name="line.342"></a>
+<span class="sourceLineNo">342</span>      addDependencyJars(job.getConfiguration(), MetricRegistry.class);<a name="line.342"></a>
 <span class="sourceLineNo">343</span>    }<a name="line.343"></a>
 <span class="sourceLineNo">344</span><a name="line.344"></a>
 <span class="sourceLineNo">345</span>    resetCacheConfig(job.getConfiguration());<a name="line.345"></a>
@@ -793,7 +793,7 @@
 <span class="sourceLineNo">785</span>      com.google.protobuf.Message.class,<a name="line.785"></a>
 <span class="sourceLineNo">786</span>      com.google.common.collect.Lists.class,<a name="line.786"></a>
 <span class="sourceLineNo">787</span>      org.apache.htrace.Trace.class,<a name="line.787"></a>
-<span class="sourceLineNo">788</span>      com.yammer.metrics.core.MetricsRegistry.class);<a name="line.788"></a>
+<span class="sourceLineNo">788</span>      com.codahale.metrics.MetricRegistry.class);<a name="line.788"></a>
 <span class="sourceLineNo">789</span>  }<a name="line.789"></a>
 <span class="sourceLineNo">790</span><a name="line.790"></a>
 <span class="sourceLineNo">791</span>  /**<a name="line.791"></a>


[14/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/hbase-spark/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-spark/dependencies.html b/hbase-spark/dependencies.html
index 07c018a..e0e3dea 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 2015-12-15 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2015-12-16 -->
 <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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2015-12-15</span>
+        <span id="publishDate">Last Published: 2015-12-16</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>
@@ -241,25 +241,25 @@
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
 <tr class="b">
 <td>org.apache.hbase</td>
-<td><a class="externalLink" href="http://hbase.apache.org/hbase-hadoop2-compat">hbase-hadoop2-compat</a></td>
+<td>hbase-hadoop2-compat</td>
 <td>2.0.0-20151019.221203-4</td>
 <td>tests</td>
 <td>test-jar</td>
-<td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
+<td>-</td></tr>
 <tr class="a">
 <td>org.apache.hbase</td>
-<td><a class="externalLink" href="http://hbase.apache.org/hbase-it">hbase-it</a></td>
+<td>hbase-it</td>
 <td>2.0.0-20151019.221952-4</td>
 <td>tests</td>
 <td>test-jar</td>
-<td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
+<td>-</td></tr>
 <tr class="b">
 <td>org.apache.hbase</td>
-<td><a class="externalLink" href="http://hbase.apache.org/hbase-server">hbase-server</a></td>
+<td>hbase-server</td>
 <td>2.0.0-20151019.221329-4</td>
 <td>tests</td>
 <td>test-jar</td>
-<td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
+<td>-</td></tr>
 <tr class="a">
 <td>org.apache.spark</td>
 <td><a class="externalLink" href="http://spark.apache.org/">spark-streaming_2.10</a></td>
@@ -402,77 +402,77 @@
 <td>jar</td>
 <td>LICENSE.txt</td></tr>
 <tr class="b">
-<td>com.yammer.metrics</td>
-<td><a class="externalLink" href="http://metrics.codahale.com/metrics-core/">metrics-core</a></td>
-<td>2.2.0</td>
-<td>jar</td>
-<td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License 2.0</a></td></tr>
-<tr class="a">
 <td>commons-beanutils</td>
 <td>commons-beanutils</td>
 <td>1.7.0</td>
 <td>jar</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>commons-beanutils</td>
 <td><a class="externalLink" href="http://commons.apache.org/beanutils/">commons-beanutils-core</a></td>
 <td>1.8.0</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td>commons-cli</td>
 <td><a class="externalLink" href="http://commons.apache.org/cli/">commons-cli</a></td>
 <td>1.2</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td>commons-codec</td>
 <td><a class="externalLink" href="http://commons.apache.org/proper/commons-codec/">commons-codec</a></td>
 <td>1.9</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td>commons-collections</td>
 <td><a class="externalLink" href="http://commons.apache.org/collections/">commons-collections</a></td>
 <td>3.2.2</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td>commons-configuration</td>
 <td>commons-configuration</td>
 <td>1.6</td>
 <td>jar</td>
 <td>/LICENSE.txt</td></tr>
-<tr class="a">
+<tr class="b">
 <td>commons-digester</td>
 <td><a class="externalLink" href="http://jakarta.apache.org/commons/digester/">commons-digester</a></td>
 <td>1.8</td>
 <td>jar</td>
 <td>/LICENSE.txt</td></tr>
-<tr class="b">
+<tr class="a">
 <td>commons-httpclient</td>
 <td><a class="externalLink" href="http://jakarta.apache.org/httpcomponents/httpclient-3.x/">commons-httpclient</a></td>
 <td>3.1</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache License</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td>commons-io</td>
 <td><a class="externalLink" href="http://commons.apache.org/io/">commons-io</a></td>
 <td>2.4</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td>commons-lang</td>
 <td><a class="externalLink" href="http://commons.apache.org/lang/">commons-lang</a></td>
 <td>2.6</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td>commons-net</td>
 <td><a class="externalLink" href="http://commons.apache.org/net/">commons-net</a></td>
 <td>3.1</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
+<tr class="a">
+<td>io.dropwizard.metrics</td>
+<td><a class="externalLink" href="http://metrics.codahale.com/metrics-core/">metrics-core</a></td>
+<td>3.1.2</td>
+<td>jar</td>
+<td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License 2.0</a></td></tr>
 <tr class="b">
 <td>io.netty</td>
 <td><a class="externalLink" href="http://netty.io/netty-all/">netty-all</a></td>
@@ -1060,236 +1060,229 @@
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a></td></tr>
 <tr class="a">
 <td>io.dropwizard.metrics</td>
-<td><a class="externalLink" href="http://metrics.codahale.com/metrics-core/">metrics-core</a></td>
-<td>3.1.0</td>
-<td>-</td>
-<td>jar</td>
-<td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License 2.0</a></td></tr>
-<tr class="b">
-<td>io.dropwizard.metrics</td>
 <td><a class="externalLink" href="http://metrics.codahale.com/metrics-graphite/">metrics-graphite</a></td>
 <td>3.1.0</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License 2.0</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td>io.dropwizard.metrics</td>
 <td><a class="externalLink" href="http://metrics.codahale.com/metrics-json/">metrics-json</a></td>
 <td>3.1.0</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License 2.0</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td>io.dropwizard.metrics</td>
 <td><a class="externalLink" href="http://metrics.codahale.com/metrics-jvm/">metrics-jvm</a></td>
 <td>3.1.0</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License 2.0</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td>io.netty</td>
 <td><a class="externalLink" href="http://netty.io/">netty</a></td>
 <td>3.8.0.Final</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td>net.jpountz.lz4</td>
 <td><a class="externalLink" href="https://github.com/jpountz/lz4-java">lz4</a></td>
 <td>1.2.0</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td>net.sf.py4j</td>
 <td><a class="externalLink" href="http://py4j.sourceforge.net/">py4j</a></td>
 <td>0.8.2.1</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.opensource.org/licenses/bsd-license.html">The New BSD License</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td>org.apache.commons</td>
 <td><a class="externalLink" href="http://commons.apache.org/proper/commons-lang/">commons-lang3</a></td>
 <td>3.3.2</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td>org.apache.ivy</td>
 <td><a class="externalLink" href="http://ant.apache.org/ivy/">ivy</a></td>
 <td>2.4.0</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td>org.apache.mesos</td>
 <td><a class="externalLink" href="http://mesos.apache.org">mesos</a></td>
 <td>0.21.0</td>
 <td>shaded-protobuf</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td>org.apache.spark</td>
 <td><a class="externalLink" href="http://spark.apache.org/">spark-catalyst_2.10</a></td>
 <td>1.3.0</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache 2.0 License</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td>org.apache.spark</td>
 <td><a class="externalLink" href="http://spark.apache.org/">spark-network-common_2.10</a></td>
 <td>1.3.0</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache 2.0 License</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td>org.apache.spark</td>
 <td><a class="externalLink" href="http://spark.apache.org/">spark-network-shuffle_2.10</a></td>
 <td>1.3.0</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache 2.0 License</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td>org.eclipse.jetty.orbit</td>
 <td><a class="externalLink" href="http://www.eclipse.org/jetty/jetty-orbit/javax.servlet">javax.servlet</a></td>
 <td>3.0.0.v201112011016</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache Software License - Version 2.0</a>-<a class="externalLink" href="http://www.eclipse.org/org/documents/epl-v10.php">Eclipse Public License - Version 1.0</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td>org.jodd</td>
 <td><a class="externalLink" href="http://jodd.org">jodd-core</a></td>
 <td>3.6.3</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://jodd.org/license.html">The New BSD License</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td>org.json4s</td>
 <td><a class="externalLink" href="https://github.com/json4s/json4s">json4s-ast_2.10</a></td>
 <td>3.2.10</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://github.com/json4s/json4s/raw/HEAD/LICENSE">ASL</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td>org.json4s</td>
 <td><a class="externalLink" href="https://github.com/json4s/json4s">json4s-core_2.10</a></td>
 <td>3.2.10</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://github.com/json4s/json4s/raw/HEAD/LICENSE">ASL</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td>org.json4s</td>
 <td><a class="externalLink" href="https://github.com/json4s/json4s">json4s-jackson_2.10</a></td>
 <td>3.2.10</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://github.com/json4s/json4s/raw/HEAD/LICENSE">ASL</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td>org.objenesis</td>
 <td><a class="externalLink" href="http://objenesis.googlecode.com/svn/docs/index.html">objenesis</a></td>
 <td>1.2</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache 2</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td>org.roaringbitmap</td>
 <td><a class="externalLink" href="https://github.com/lemire/RoaringBitmap">RoaringBitmap</a></td>
 <td>0.4.5</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache 2</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td>org.scala-lang</td>
 <td><a class="externalLink" href="http://www.scala-lang.org/">scala-compiler</a></td>
 <td>2.10.4</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.scala-lang.org/downloads/license.html">BSD-like</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td>org.scala-lang</td>
 <td><a class="externalLink" href="http://www.scala-lang.org/">scala-reflect</a></td>
 <td>2.10.4</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.scala-lang.org/downloads/license.html">BSD-like</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td>org.scalamacros</td>
 <td><a class="externalLink" href="https://github.com/scalamacros/paradise">quasiquotes_2.10</a></td>
 <td>2.0.1</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.scala-lang.org/downloads/license.html">BSD-like</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td>org.slf4j</td>
 <td><a class="externalLink" href="http://www.slf4j.org">jcl-over-slf4j</a></td>
 <td>1.7.10</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.opensource.org/licenses/mit-license.php">MIT License</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td>org.slf4j</td>
 <td><a class="externalLink" href="http://www.slf4j.org">jul-to-slf4j</a></td>
 <td>1.7.10</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.opensource.org/licenses/mit-license.php">MIT License</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td>org.spark-project</td>
 <td><a class="externalLink" href="http://pythonhosted.org/Pyro4/">pyrolite</a></td>
 <td>2.0.1</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.opensource.org/licenses/mit-license.php">MIT License</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td>org.spark-project.akka</td>
 <td><a class="externalLink" href="http://akka.io/">akka-actor_2.10</a></td>
 <td>2.3.4-spark</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td>org.spark-project.akka</td>
 <td><a class="externalLink" href="http://akka.io/">akka-remote_2.10</a></td>
 <td>2.3.4-spark</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td>org.spark-project.akka</td>
 <td><a class="externalLink" href="http://akka.io/">akka-slf4j_2.10</a></td>
 <td>2.3.4-spark</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td>org.spark-project.protobuf</td>
 <td><a class="externalLink" href="http://code.google.com/p/protobuf">protobuf-java</a></td>
 <td>2.5.0-spark</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.opensource.org/licenses/bsd-license.php">New BSD license</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td>org.tachyonproject</td>
 <td><a class="externalLink" href="http://tachyonproject.org/tachyon/">tachyon</a></td>
 <td>0.5.0</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" href="https://github.com/amplab/tachyon/blob/master/LICENSE">Apache License</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td>org.tachyonproject</td>
 <td><a class="externalLink" href="http://tachyonproject.org/tachyon-client/">tachyon-client</a></td>
 <td>0.5.0</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" href="https://github.com/amplab/tachyon/blob/master/LICENSE">Apache License</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td>org.uncommons.maths</td>
 <td><a class="externalLink" href="http://maths.uncommons.org/">uncommons-maths</a></td>
 <td>1.2.2a</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License, Version 2.0</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td>oro</td>
 <td>oro</td>
 <td>2.0.8</td>
@@ -1743,7 +1736,7 @@ Supported protocols include: Echo, Finger, FTP, NNTP, NTP, POP3(S), SMTP(S), Tel
 <p><b>Description: </b>A library for summarizing data in streams for which it is infeasible to store all events</p>
 <p><b>URL: </b><a class="externalLink" href="https://github.com/addthis/stream-lib">https://github.com/addthis/stream-lib</a></p>
 <p><b>Project License: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>io.dropwizard.metrics:metrics-core:jar:3.1.0 (provided) <img id="_img83" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep82', '_img83' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep82" style="display:none">
+<li>io.dropwizard.metrics:metrics-core:jar:3.1.2 (compile) <img id="_img83" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep82', '_img83' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep82" style="display:none">
 <table border="0" class="bodyTable">
 <tr class="a">
 <th>Metrics Core</th></tr>
@@ -2712,17 +2705,8 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <p><b>Description: </b>Java port of Oniguruma: http://www.geocities.jp/kosako3/oniguruma
     that uses byte arrays directly instead of java Strings and chars</p>
 <p><b>URL: </b><a class="externalLink" href="http://nexus.sonatype.org/oss-repository-hosting.html/joni">http://nexus.sonatype.org/oss-repository-hosting.html/joni</a></p>
-<p><b>Project License: </b><a class="externalLink" href="http://www.opensource.org/licenses/mit-license.php">MIT License</a></p></td></tr></table></div></li>
-<li>com.yammer.metrics:metrics-core:jar:2.2.0 (compile) <img id="_img283" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep282', '_img283' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep282" style="display:none">
-<table border="0" class="bodyTable">
-<tr class="a">
-<th>Metrics Core Library</th></tr>
-<tr class="b">
-<td>
-<p><b>Description: </b>Yammer's Metrics library.</p>
-<p><b>URL: </b><a class="externalLink" href="http://metrics.codahale.com/metrics-core/">http://metrics.codahale.com/metrics-core/</a></p>
-<p><b>Project License: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License 2.0</a></p></td></tr></table></div></li></ul></li>
-<li>org.apache.hbase:hbase-protocol:jar:2.0.0-SNAPSHOT (compile) <img id="_img285" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep284', '_img285' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep284" style="display:none">
+<p><b>Project License: </b><a class="externalLink" href="http://www.opensource.org/licenses/mit-license.php">MIT License</a></p></td></tr></table></div></li></ul></li>
+<li>org.apache.hbase:hbase-protocol:jar:2.0.0-SNAPSHOT (compile) <img id="_img283" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep282', '_img283' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep282" style="display:none">
 <table border="0" class="bodyTable">
 <tr class="a">
 <th>Apache HBase - Protocol</th></tr>
@@ -2731,7 +2715,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <p><b>Description: </b>Protobuf protocol classes used by HBase to communicate.</p>
 <p><b>URL: </b><a class="externalLink" href="http://hbase.apache.org/hbase-protocol">http://hbase.apache.org/hbase-protocol</a></p>
 <p><b>Project License: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.hbase:hbase-annotations:test-jar:tests:2.0.0-SNAPSHOT (test) <img id="_img287" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep286', '_img287' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep286" style="display:none">
+<li>org.apache.hbase:hbase-annotations:test-jar:tests:2.0.0-SNAPSHOT (test) <img id="_img285" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep284', '_img285' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep284" style="display:none">
 <table border="0" class="bodyTable">
 <tr class="a">
 <th>Apache HBase - Annotations</th></tr>
@@ -2741,14 +2725,14 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <p><b>URL: </b><a class="externalLink" href="http://hbase.apache.org/hbase-annotations">http://hbase.apache.org/hbase-annotations</a></p>
 <p><b>Project License: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>jdk.tools:jdk.tools:jar:1.7 (system) <img id="_img289" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep288', '_img289' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep288" style="display:none">
+<li>jdk.tools:jdk.tools:jar:1.7 (system) <img id="_img287" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep286', '_img287' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep286" style="display:none">
 <table border="0" class="bodyTable">
 <tr class="a">
 <th>jdk.tools:jdk.tools:jar:1.7</th></tr>
 <tr class="b">
 <td>
 <p><b>Description: </b>There is currently no description associated with this project.</p></td></tr></table></div></li></ul></li>
-<li>org.apache.hbase:hbase-hadoop-compat:test-jar:tests:2.0.0-SNAPSHOT (test) <img id="_img291" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep290', '_img291' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep290" style="display:none">
+<li>org.apache.hbase:hbase-hadoop-compat:test-jar:tests:2.0.0-SNAPSHOT (test) <img id="_img289" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep288', '_img289' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep288" style="display:none">
 <table border="0" class="bodyTable">
 <tr class="a">
 <th>Apache HBase - Hadoop Compatibility</th></tr>
@@ -2759,7 +2743,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <p><b>URL: </b><a class="externalLink" href="http://hbase.apache.org/hbase-hadoop-compat">http://hbase.apache.org/hbase-hadoop-compat</a></p>
 <p><b>Project License: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>org.apache.commons:commons-math:jar:2.2 (compile) <img id="_img293" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep292', '_img293' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep292" style="display:none">
+<li>org.apache.commons:commons-math:jar:2.2 (compile) <img id="_img291" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep290', '_img291' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep290" style="display:none">
 <table border="0" class="bodyTable">
 <tr class="a">
 <th>Commons Math</th></tr>
@@ -2768,18 +2752,9 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <p><b>Description: </b>The Math project is a library of lightweight, self-contained mathematics and statistics components addressing the most common practical problems not immediately available in the Java programming language or commons-lang.</p>
 <p><b>URL: </b><a class="externalLink" href="http://commons.apache.org/math/">http://commons.apache.org/math/</a></p>
 <p><b>Project License: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li></ul></li>
-<li>org.apache.hbase:hbase-hadoop2-compat:test-jar:tests:2.0.0-SNAPSHOT (test) <img id="_img295" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep294', '_img295' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep294" style="display:none">
-<table border="0" class="bodyTable">
-<tr class="a">
-<th>Apache HBase - Hadoop Two Compatibility</th></tr>
-<tr class="b">
-<td>
-<p><b>Description: </b>Interfaces to be implemented in order to smooth
-        over hadoop version differences</p>
-<p><b>URL: </b><a class="externalLink" href="http://hbase.apache.org/hbase-hadoop2-compat">http://hbase.apache.org/hbase-hadoop2-compat</a></p>
-<p><b>Project License: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div>
+<li>org.apache.hbase:hbase-hadoop2-compat:test-jar:tests:2.0.0-SNAPSHOT (test) <img id="_img293" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep292', '_img293' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep292" style="display:none"></td></tr></table></div>
 <ul>
-<li>org.apache.hbase:hbase-hadoop-compat:jar:2.0.0-SNAPSHOT (compile) <img id="_img297" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep296', '_img297' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep296" style="display:none">
+<li>org.apache.hbase:hbase-hadoop-compat:jar:2.0.0-SNAPSHOT (compile) <img id="_img295" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep294', '_img295' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep294" style="display:none">
 <table border="0" class="bodyTable">
 <tr class="a">
 <th>Apache HBase - Hadoop Compatibility</th></tr>
@@ -2789,7 +2764,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
         over hadoop version differences</p>
 <p><b>URL: </b><a class="externalLink" href="http://hbase.apache.org/hbase-hadoop-compat">http://hbase.apache.org/hbase-hadoop-compat</a></p>
 <p><b>Project License: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li></ul></li>
-<li>org.apache.hbase:hbase-server:jar:2.0.0-SNAPSHOT (compile) <img id="_img299" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep298', '_img299' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep298" style="display:none">
+<li>org.apache.hbase:hbase-server:jar:2.0.0-SNAPSHOT (compile) <img id="_img297" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep296', '_img297' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep296" style="display:none">
 <table border="0" class="bodyTable">
 <tr class="a">
 <th>Apache HBase - Server</th></tr>
@@ -2799,7 +2774,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <p><b>URL: </b><a class="externalLink" href="http://hbase.apache.org/hbase-server">http://hbase.apache.org/hbase-server</a></p>
 <p><b>Project License: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>org.apache.hbase:hbase-procedure:jar:2.0.0-SNAPSHOT (compile) <img id="_img301" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep300', '_img301' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep300" style="display:none">
+<li>org.apache.hbase:hbase-procedure:jar:2.0.0-SNAPSHOT (compile) <img id="_img299" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep298', '_img299' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep298" style="display:none">
 <table border="0" class="bodyTable">
 <tr class="a">
 <th>Apache HBase - Procedure</th></tr>
@@ -2809,7 +2784,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <p><b>URL: </b><a class="externalLink" href="http://hbase.apache.org/hbase-procedure">http://hbase.apache.org/hbase-procedure</a></p>
 <p><b>Project License: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>org.apache.hbase:hbase-common:jar:tests:2.0.0-SNAPSHOT (test) <img id="_img303" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep302', '_img303' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep302" style="display:none">
+<li>org.apache.hbase:hbase-common:jar:tests:2.0.0-SNAPSHOT (test) <img id="_img301" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep300', '_img301' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep300" style="display:none">
 <table border="0" class="bodyTable">
 <tr class="a">
 <th>Apache HBase - Common</th></tr>
@@ -2818,7 +2793,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <p><b>Description: </b>Common functionality for HBase</p>
 <p><b>URL: </b><a class="externalLink" href="http://hbase.apache.org/hbase-common">http://hbase.apache.org/hbase-common</a></p>
 <p><b>Project License: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li></ul></li>
-<li>org.apache.hbase:hbase-prefix-tree:jar:2.0.0-SNAPSHOT (runtime) <img id="_img305" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep304', '_img305' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep304" style="display:none">
+<li>org.apache.hbase:hbase-prefix-tree:jar:2.0.0-SNAPSHOT (runtime) <img id="_img303" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep302', '_img303' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep302" style="display:none">
 <table border="0" class="bodyTable">
 <tr class="a">
 <th>Apache HBase - Prefix Tree</th></tr>
@@ -2827,7 +2802,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <p><b>Description: </b>Prefix Tree Data Block Encoder</p>
 <p><b>URL: </b><a class="externalLink" href="http://hbase.apache.org/hbase-prefix-tree">http://hbase.apache.org/hbase-prefix-tree</a></p>
 <p><b>Project License: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.hbase:hbase-hadoop2-compat:jar:2.0.0-SNAPSHOT (compile) <img id="_img307" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep306', '_img307' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep306" style="display:none">
+<li>org.apache.hbase:hbase-hadoop2-compat:jar:2.0.0-SNAPSHOT (compile) <img id="_img305" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep304', '_img305' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep304" style="display:none">
 <table border="0" class="bodyTable">
 <tr class="a">
 <th>Apache HBase - Hadoop Two Compatibility</th></tr>
@@ -2837,7 +2812,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
         over hadoop version differences</p>
 <p><b>URL: </b><a class="externalLink" href="http://hbase.apache.org/hbase-hadoop2-compat">http://hbase.apache.org/hbase-hadoop2-compat</a></p>
 <p><b>Project License: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.mortbay.jetty:jetty-sslengine:jar:6.1.26 (compile) <img id="_img309" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep308', '_img309' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep308" style="display:none">
+<li>org.mortbay.jetty:jetty-sslengine:jar:6.1.26 (compile) <img id="_img307" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep306', '_img307' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep306" style="display:none">
 <table border="0" class="bodyTable">
 <tr class="a">
 <th>Jetty SSLEngine</th></tr>
@@ -2846,7 +2821,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <p><b>Description: </b>Parent pom for Jetty at Codehaus</p>
 <p><b>URL: </b><a class="externalLink" href="http://jetty.mortbay.org">http://jetty.mortbay.org</a></p>
 <p><b>Project License: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache License Version 2</a></p></td></tr></table></div></li>
-<li>org.mortbay.jetty:jsp-2.1:jar:6.1.14 (compile) <img id="_img311" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep310', '_img311' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep310" style="display:none">
+<li>org.mortbay.jetty:jsp-2.1:jar:6.1.14 (compile) <img id="_img309" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep308', '_img309' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep308" style="display:none">
 <table border="0" class="bodyTable">
 <tr class="a">
 <th>Glassfish Jasper</th></tr>
@@ -2855,7 +2830,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <p><b>Description: </b>JSP2.1 Jasper implementation from Glassfish</p>
 <p><b>URL: </b><a class="externalLink" href="http://jetty.mortbay.org/project/modules/jsp-2.1">http://jetty.mortbay.org/project/modules/jsp-2.1</a></p>
 <p><b>Project License: </b><a class="externalLink" href="https://glassfish.dev.java.net/public/CDDLv1.0.html">CDDL 1.0</a></p></td></tr></table></div></li>
-<li>org.mortbay.jetty:jsp-api-2.1:jar:6.1.14 (compile) <img id="_img313" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep312', '_img313' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep312" style="display:none">
+<li>org.mortbay.jetty:jsp-api-2.1:jar:6.1.14 (compile) <img id="_img311" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep310', '_img311' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep310" style="display:none">
 <table border="0" class="bodyTable">
 <tr class="a">
 <th>Glassfish Jasper API</th></tr>
@@ -2864,7 +2839,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <p><b>Description: </b>JSP2.1 API</p>
 <p><b>URL: </b><a class="externalLink" href="http://jetty.mortbay.org/project/modules/jsp-api-2.1">http://jetty.mortbay.org/project/modules/jsp-api-2.1</a></p>
 <p><b>Project License: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache License Version 2.0</a></p></td></tr></table></div></li>
-<li>org.mortbay.jetty:servlet-api-2.5:jar:6.1.14 (compile) <img id="_img315" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep314', '_img315' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep314" style="display:none">
+<li>org.mortbay.jetty:servlet-api-2.5:jar:6.1.14 (compile) <img id="_img313" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep312', '_img313' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep312" style="display:none">
 <table border="0" class="bodyTable">
 <tr class="a">
 <th>Servlet Specification 2.5 API</th></tr>
@@ -2873,7 +2848,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <p><b>Description: </b>Servlet Specification 2.5 API</p>
 <p><b>URL: </b><a class="externalLink" href="http://jetty.mortbay.org/project/modules/servlet-api-2.5">http://jetty.mortbay.org/project/modules/servlet-api-2.5</a></p>
 <p><b>Project License: </b><a class="externalLink" href="https://glassfish.dev.java.net/public/CDDLv1.0.html">CDDL 1.0</a></p></td></tr></table></div></li>
-<li>org.codehaus.jackson:jackson-jaxrs:jar:1.9.13 (compile) <img id="_img317" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep316', '_img317' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep316" style="display:none">
+<li>org.codehaus.jackson:jackson-jaxrs:jar:1.9.13 (compile) <img id="_img315" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep314', '_img315' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep314" style="display:none">
 <table border="0" class="bodyTable">
 <tr class="a">
 <th>JAX-RS provider for JSON content type</th></tr>
@@ -2883,7 +2858,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 Jackson JSON processor's data binding functionality.</p>
 <p><b>URL: </b><a class="externalLink" href="http://jackson.codehaus.org">http://jackson.codehaus.org</a></p>
 <p><b>Project License: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a><a class="externalLink" href="http://www.fsf.org/licensing/licenses/lgpl.txt">GNU Lesser General Public License (LGPL), Version 2.1</a></p></td></tr></table></div></li>
-<li>tomcat:jasper-compiler:jar:5.5.23 (runtime) <img id="_img319" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep318', '_img319' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep318" style="display:none">
+<li>tomcat:jasper-compiler:jar:5.5.23 (runtime) <img id="_img317" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep316', '_img317' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep316" style="display:none">
 <table border="0" class="bodyTable">
 <tr class="a">
 <th>jasper-compiler</th></tr>
@@ -2896,7 +2871,7 @@ Jackson JSON processor's data binding functionality.</p>
     and users.</p>
 <p><b>URL: </b><a class="externalLink" href="http://tomcat.apache.org/jasper-compiler">http://tomcat.apache.org/jasper-compiler</a></p>
 <p><b>Project License: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>tomcat:jasper-runtime:jar:5.5.23 (runtime) <img id="_img321" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep320', '_img321' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep320" style="display:none">
+<li>tomcat:jasper-runtime:jar:5.5.23 (runtime) <img id="_img319" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep318', '_img319' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep318" style="display:none">
 <table border="0" class="bodyTable">
 <tr class="a">
 <th>jasper-runtime</th></tr>
@@ -2910,7 +2885,7 @@ Jackson JSON processor's data binding functionality.</p>
 <p><b>URL: </b><a class="externalLink" href="http://tomcat.apache.org/jasper-runtime">http://tomcat.apache.org/jasper-runtime</a></p>
 <p><b>Project License: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>commons-el:commons-el:jar:1.0 (runtime) <img id="_img323" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep322', '_img323' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep322" style="display:none">
+<li>commons-el:commons-el:jar:1.0 (runtime) <img id="_img321" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep320', '_img321' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep320" style="display:none">
 <table border="0" class="bodyTable">
 <tr class="a">
 <th>EL</th></tr>
@@ -2919,7 +2894,7 @@ Jackson JSON processor's data binding functionality.</p>
 <p><b>Description: </b>JSP 2.0 Expression Language Interpreter Implementation</p>
 <p><b>URL: </b><a class="externalLink" href="http://jakarta.apache.org/commons/el/">http://jakarta.apache.org/commons/el/</a></p>
 <p><b>Project License: </b><a href="/LICENSE.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li></ul></li>
-<li>org.jamon:jamon-runtime:jar:2.4.1 (compile) <img id="_img325" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep324', '_img325' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep324" style="display:none">
+<li>org.jamon:jamon-runtime:jar:2.4.1 (compile) <img id="_img323" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep322', '_img323' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep322" style="display:none">
 <table border="0" class="bodyTable">
 <tr class="a">
 <th>jamon-runtime</th></tr>
@@ -2928,7 +2903,7 @@ Jackson JSON processor's data binding functionality.</p>
 <p><b>Description: </b>Jamon runtime support classes</p>
 <p><b>URL: </b><a class="externalLink" href="http://www.jamon.org/jamon-java-parent/jamon-runtime/">http://www.jamon.org/jamon-java-parent/jamon-runtime/</a></p>
 <p><b>Project License: </b><a class="externalLink" href="http://www.mozilla.org/MPL/2.0">Mozilla Public License Version 2.0</a></p></td></tr></table></div></li>
-<li>com.lmax:disruptor:jar:3.3.0 (compile) <img id="_img327" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep326', '_img327' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep326" style="display:none">
+<li>com.lmax:disruptor:jar:3.3.0 (compile) <img id="_img325" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep324', '_img325' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep324" style="display:none">
 <table border="0" class="bodyTable">
 <tr class="a">
 <th>Disruptor Framework</th></tr>
@@ -2937,26 +2912,10 @@ Jackson JSON processor's data binding functionality.</p>
 <p><b>Description: </b>Disruptor - Concurrent Programming Framework</p>
 <p><b>URL: </b><a class="externalLink" href="http://lmax-exchange.github.com/disruptor">http://lmax-exchange.github.com/disruptor</a></p>
 <p><b>Project License: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li></ul></li>
-<li>org.apache.hbase:hbase-server:test-jar:tests:2.0.0-SNAPSHOT (test) <img id="_img329" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep328', '_img329' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep328" style="display:none">
-<table border="0" class="bodyTable">
-<tr class="a">
-<th>Apache HBase - Server</th></tr>
-<tr class="b">
-<td>
-<p><b>Description: </b>Main functionality for HBase</p>
-<p><b>URL: </b><a class="externalLink" href="http://hbase.apache.org/hbase-server">http://hbase.apache.org/hbase-server</a></p>
-<p><b>Project License: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.hbase:hbase-it:test-jar:tests:2.0.0-SNAPSHOT (test) <img id="_img331" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep330', '_img331' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep330" style="display:none">
-<table border="0" class="bodyTable">
-<tr class="a">
-<th>Apache HBase - Integration Tests</th></tr>
-<tr class="b">
-<td>
-<p><b>Description: </b>Integration and System tests for HBase</p>
-<p><b>URL: </b><a class="externalLink" href="http://hbase.apache.org/hbase-it">http://hbase.apache.org/hbase-it</a></p>
-<p><b>Project License: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div>
+<li>org.apache.hbase:hbase-server:test-jar:tests:2.0.0-SNAPSHOT (test) <img id="_img327" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep326', '_img327' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep326" style="display:none"></td></tr></table></div></li>
+<li>org.apache.hbase:hbase-it:test-jar:tests:2.0.0-SNAPSHOT (test) <img id="_img329" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep328', '_img329' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep328" style="display:none"></td></tr></table></div>
 <ul>
-<li>org.apache.hbase:hbase-shell:jar:2.0.0-SNAPSHOT (test) <img id="_img333" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep332', '_img333' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep332" style="display:none">
+<li>org.apache.hbase:hbase-shell:jar:2.0.0-SNAPSHOT (test) <img id="_img331" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep330', '_img331' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep330" style="display:none">
 <table border="0" class="bodyTable">
 <tr class="a">
 <th>Apache HBase - Shell</th></tr>
@@ -2966,7 +2925,7 @@ Jackson JSON processor's data binding functionality.</p>
 <p><b>URL: </b><a class="externalLink" href="http://hbase.apache.org/hbase-shell">http://hbase.apache.org/hbase-shell</a></p>
 <p><b>Project License: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>org.jruby:jruby-complete:jar:1.6.8 (test) <img id="_img335" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep334', '_img335' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep334" style="display:none">
+<li>org.jruby:jruby-complete:jar:1.6.8 (test) <img id="_img333" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep332', '_img333' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep332" style="display:none">
 <table border="0" class="bodyTable">
 <tr class="a">
 <th>JRuby Complete</th></tr>
@@ -2975,7 +2934,7 @@ Jackson JSON processor's data binding functionality.</p>
 <p><b>Description: </b>A 1.8.7 compatible Ruby interpreter written in 100% pure Java</p>
 <p><b>URL: </b><a class="externalLink" href="http://www.jruby.org/jruby-common/jruby-complete/">http://www.jruby.org/jruby-common/jruby-complete/</a></p>
 <p><b>Project License: </b><a class="externalLink" href="http://www-128.ibm.com/developerworks/library/os-cpl.html">Common Public License - v 1.0</a><a class="externalLink" href="http://www.gnu.org/copyleft/gpl.html">GNU General Public License Version 2</a><a class="externalLink" href="http://www.gnu.org/licenses/lgpl.html">GNU Lesser General Public License Version 2.1</a></p></td></tr></table></div></li></ul></li>
-<li>com.sun.jersey:jersey-client:jar:1.9 (compile) <img id="_img337" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep336', '_img337' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep336" style="display:none">
+<li>com.sun.jersey:jersey-client:jar:1.9 (compile) <img id="_img335" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep334', '_img335' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep334" style="display:none">
 <table border="0" class="bodyTable">
 <tr class="a">
 <th>jersey-client</th></tr>
@@ -2986,7 +2945,7 @@ Jackson JSON processor's data binding functionality.</p>
         RESTful Web services.</p>
 <p><b>URL: </b><a class="externalLink" href="https://jersey.java.net/jersey-client/">https://jersey.java.net/jersey-client/</a></p>
 <p><b>Project License: </b><a class="externalLink" href="http://glassfish.java.net/public/CDDL+GPL_1_1.html">CDDL 1.1</a><a class="externalLink" href="http://glassfish.java.net/public/CDDL+GPL_1_1.html">GPL2 w/ CPE</a></p></td></tr></table></div></li></ul></li>
-<li>com.google.protobuf:protobuf-java:jar:2.5.0 (compile) <img id="_img339" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep338', '_img339' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep338" style="display:none">
+<li>com.google.protobuf:protobuf-java:jar:2.5.0 (compile) <img id="_img337" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep336', '_img337' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep336" style="display:none">
 <table border="0" class="bodyTable">
 <tr class="a">
 <th>Protocol Buffer Java API</th></tr>
@@ -2996,7 +2955,7 @@ Jackson JSON processor's data binding functionality.</p>
     extensible format.</p>
 <p><b>URL: </b><a class="externalLink" href="http://code.google.com/p/protobuf">http://code.google.com/p/protobuf</a></p>
 <p><b>Project License: </b><a class="externalLink" href="http://www.opensource.org/licenses/bsd-license.php">New BSD license</a></p></td></tr></table></div></li>
-<li>commons-logging:commons-logging:jar:1.2 (compile) <img id="_img341" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep340', '_img341' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep340" style="display:none">
+<li>commons-logging:commons-logging:jar:1.2 (compile) <img id="_img339" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep338', '_img339' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep338" style="display:none">
 <table border="0" class="bodyTable">
 <tr class="a">
 <th>Apache Commons Logging</th></tr>
@@ -3006,7 +2965,7 @@ Jackson JSON processor's data binding functionality.</p>
     well known logging systems.</p>
 <p><b>URL: </b><a class="externalLink" href="http://commons.apache.org/proper/commons-logging/">http://commons.apache.org/proper/commons-logging/</a></p>
 <p><b>Project License: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>com.github.stephenc.findbugs:findbugs-annotations:jar:1.3.9-1 (compile) <img id="_img343" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep342', '_img343' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep342" style="display:none">
+<li>com.github.stephenc.findbugs:findbugs-annotations:jar:1.3.9-1 (compile) <img id="_img341" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep340', '_img341' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep340" style="display:none">
 <table border="0" class="bodyTable">
 <tr class="a">
 <th>Findbugs Annotations under Apache License</th></tr>
@@ -3016,7 +2975,7 @@ Jackson JSON processor's data binding functionality.</p>
     by the javadocs and at http://findbugs.sourceforge.net/manual/annotations.html.</p>
 <p><b>URL: </b><a class="externalLink" href="http://stephenc.github.com/findbugs-annotations">http://stephenc.github.com/findbugs-annotations</a></p>
 <p><b>Project License: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>log4j:log4j:jar:1.2.17 (compile) <img id="_img345" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep344', '_img345' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep344" style="display:none">
+<li>log4j:log4j:jar:1.2.17 (compile) <img id="_img343" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep342', '_img343' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep342" style="display:none">
 <table border="0" class="bodyTable">
 <tr class="a">
 <th>Apache Log4j</th></tr>
@@ -3025,7 +2984,7 @@ Jackson JSON processor's data binding functionality.</p>
 <p><b>Description: </b>Apache Log4j 1.2</p>
 <p><b>URL: </b><a class="externalLink" href="http://logging.apache.org/log4j/1.2/">http://logging.apache.org/log4j/1.2/</a></p>
 <p><b>Project License: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.mockito:mockito-all:jar:1.10.8 (test) <img id="_img347" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep346', '_img347' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep346" style="display:none">
+<li>org.mockito:mockito-all:jar:1.10.8 (test) <img id="_img345" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_dep344', '_img345' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_dep344" style="display:none">
 <table border="0" class="bodyTable">
 <tr class="a">
 <th>Mockito</th></tr>
@@ -3061,11 +3020,11 @@ Jackson JSON processor's data binding functionality.</p>
 <p><b>Apache License, Version 2.0: </b>An open source Java toolkit for Amazon S3, Apache Commons Collections, Apache Hadoop Annotations, Apache Hadoop Auth, Apache Hadoop Client, Apache Hadoop Common, Apache Hadoop HDFS, Findbugs Annotations under Apache License, Jettison, Netty/All-in-One, The Netty Project, Uncommons Maths, akka-actor, akka-remote, akka-slf4j, config, hadoop-mapreduce-client-app, hadoop-mapreduce-client-common, hadoop-mapreduce-client-core, hadoop-mapreduce-client-jobclient, hadoop-mapreduce-client-shuffle, hadoop-yarn-api, hadoop-yarn-client, hadoop-yarn-common, hadoop-yarn-server-common, stream-lib</p>
 <p><b>Eclipse Public License 1.0: </b>JUnit</p>
 <p><b>GNU Lesser General Public License Version 2.1: </b>JRuby Complete</p>
-<p><b>The Apache Software License, Version 2.0: </b>Apache Avro, Apache Commons Codec, Apache Commons Lang, Apache Commons Logging, Apache Directory API ASN.1 API, Apache Directory LDAP API Utilities, Apache HBase - Annotations, Apache HBase - Client, Apache HBase - Common, Apache HBase - Hadoop Compatibility, Apache HBase - Hadoop Two Compatibility, Apache HBase - Integration Tests, Apache HBase - Prefix Tree, Apache HBase - Procedure, Apache HBase - Protocol, Apache HBase - Server, Apache HBase - Shell, Apache HBase - Spark, Apache Ivy, Apache Log4j, Apache Parquet Format (Incubating), ApacheDS I18n, ApacheDS Protocol Kerberos Codec, Commons BeanUtils Core, Commons CLI, Commons Compress, Commons Configuration, Commons Daemon, Commons IO, Commons Lang, Commons Math, Commons Net, Curator Client, Curator Framework, Curator Recipes, Data Mapper for Jackson, Digester, Disruptor Framework, EL, FindBugs-jsr305, Gson, Guava: Google Core Libraries for Java, JAX-RS provider for JSON content
  type, Jackson, Jackson-annotations, Jackson-core, LZ4 and xxHash, Parquet Column, Parquet Common, Parquet Encodings, Parquet Generator, Parquet Hadoop, Parquet Jackson, XML Commons External Components XML APIs, Xerces2 Java Parser, Xml Compatibility extensions for Jackson, htrace-core, jackson-databind, jackson-module-scala, jasper-compiler, jasper-runtime, mesos, snappy-java</p>
+<p><b>The Apache Software License, Version 2.0: </b>Apache Avro, Apache Commons Codec, Apache Commons Lang, Apache Commons Logging, Apache Directory API ASN.1 API, Apache Directory LDAP API Utilities, Apache HBase - Annotations, Apache HBase - Client, Apache HBase - Common, Apache HBase - Hadoop Compatibility, Apache HBase - Hadoop Two Compatibility, Apache HBase - Prefix Tree, Apache HBase - Procedure, Apache HBase - Protocol, Apache HBase - Server, Apache HBase - Shell, Apache HBase - Spark, Apache Ivy, Apache Log4j, Apache Parquet Format (Incubating), ApacheDS I18n, ApacheDS Protocol Kerberos Codec, Commons BeanUtils Core, Commons CLI, Commons Compress, Commons Configuration, Commons Daemon, Commons IO, Commons Lang, Commons Math, Commons Net, Curator Client, Curator Framework, Curator Recipes, Data Mapper for Jackson, Digester, Disruptor Framework, EL, FindBugs-jsr305, Gson, Guava: Google Core Libraries for Java, JAX-RS provider for JSON content type, Jackson, Jackson-annotation
 s, Jackson-core, LZ4 and xxHash, Parquet Column, Parquet Common, Parquet Encodings, Parquet Generator, Parquet Hadoop, Parquet Jackson, XML Commons External Components XML APIs, Xerces2 Java Parser, Xml Compatibility extensions for Jackson, htrace-core, jackson-databind, jackson-module-scala, jasper-compiler, jasper-runtime, mesos, snappy-java</p>
 <p><b>GPL2 w/ CPE: </b>JAXB API bundle for GlassFish V3, JAXB RI, jersey-client, jersey-core, jersey-json, jersey-server</p>
 <p><b>Mozilla Public License Version 2.0: </b>jamon-runtime</p>
 <p><b>Apache Software License - Version 2.0: </b>Jetty Orbit :: Servlet API, Jetty Server, Jetty Utilities</p>
-<p><b>Apache License 2.0: </b>Graphite Integration for Metrics, JVM Integration for Metrics, Jackson Integration for Metrics, Metrics Core, Metrics Core Library, Ning-compress-LZF</p>
+<p><b>Apache License 2.0: </b>Graphite Integration for Metrics, JVM Integration for Metrics, Jackson Integration for Metrics, Metrics Core, Ning-compress-LZF</p>
 <p><b>MIT License: </b>JCL 1.1.1 implemented over SLF4J, JCodings, JUL to SLF4J bridge, Joni, SLF4J API Module, SLF4J LOG4J-12 Binding, pyrolite</p>
 <p><b>GNU Lesser General Public License (LGPL), Version 2.1: </b>JAX-RS provider for JSON content type, Xml Compatibility extensions for Jackson</p>
 <p><b>Apache 2.0 License: </b>Spark Project Catalyst, Spark Project Core, Spark Project Networking, Spark Project SQL, Spark Project Shuffle Streaming Service, Spark Project Streaming</p>
@@ -3382,15 +3341,6 @@ Jackson JSON processor's data binding functionality.</p>
 <td>debug</td>
 <td>-</td></tr>
 <tr class="a">
-<td>metrics-core-2.2.0.jar</td>
-<td>80.20 kB</td>
-<td>86</td>
-<td>72</td>
-<td>5</td>
-<td>1.6</td>
-<td>debug</td>
-<td>-</td></tr>
-<tr class="b">
 <td>commons-beanutils-1.7.0.jar</td>
 <td>184.25 kB</td>
 <td>129</td>
@@ -3399,7 +3349,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.2</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>commons-beanutils-core-1.8.0.jar</td>
 <td>201.21 kB</td>
 <td>131</td>
@@ -3408,7 +3358,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.3</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>commons-cli-1.2.jar</td>
 <td>40.16 kB</td>
 <td>35</td>
@@ -3417,7 +3367,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.4</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>commons-codec-1.9.jar</td>
 <td>257.78 kB</td>
 <td>227</td>
@@ -3426,7 +3376,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>commons-collections-3.2.2.jar</td>
 <td>574.55 kB</td>
 <td>484</td>
@@ -3435,7 +3385,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.3</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>commons-configuration-1.6.jar</td>
 <td>291.83 kB</td>
 <td>189</td>
@@ -3444,7 +3394,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.3</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>commons-daemon-1.0.13.jar</td>
 <td>23.67 kB</td>
 <td>28</td>
@@ -3453,7 +3403,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.3</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>commons-digester-1.8.jar</td>
 <td>140.24 kB</td>
 <td>114</td>
@@ -3462,7 +3412,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.2</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>commons-el-1.0.jar</td>
 <td>109.71 kB</td>
 <td>79</td>
@@ -3471,7 +3421,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.2</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>commons-httpclient-3.1.jar</td>
 <td>297.85 kB</td>
 <td>183</td>
@@ -3480,7 +3430,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.2</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>commons-io-2.4.jar</td>
 <td>180.80 kB</td>
 <td>128</td>
@@ -3489,7 +3439,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>commons-lang-2.6.jar</td>
 <td>277.56 kB</td>
 <td>155</td>
@@ -3498,7 +3448,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.3</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>commons-logging-1.2.jar</td>
 <td>60.38 kB</td>
 <td>42</td>
@@ -3507,7 +3457,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.2</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>commons-net-3.1.jar</td>
 <td>266.96 kB</td>
 <td>204</td>
@@ -3516,16 +3466,16 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.5</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
-<td>metrics-core-3.1.0.jar</td>
-<td>109.29 kB</td>
+<tr class="a">
+<td>metrics-core-3.1.2.jar</td>
+<td>109.92 kB</td>
 <td>112</td>
 <td>102</td>
 <td>1</td>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>metrics-graphite-3.1.0.jar</td>
 <td>20.15 kB</td>
 <td>21</td>
@@ -3534,7 +3484,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>metrics-json-3.1.0.jar</td>
 <td>15.45 kB</td>
 <td>22</td>
@@ -3543,7 +3493,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>metrics-jvm-3.1.0.jar</td>
 <td>35.07 kB</td>
 <td>45</td>
@@ -3552,7 +3502,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>netty-3.8.0.Final.jar</td>
 <td>1.17 MB</td>
 <td>898</td>
@@ -3561,7 +3511,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.5</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>netty-all-4.0.30.Final.jar</td>
 <td>1.96 MB</td>
 <td>1,372</td>
@@ -3570,7 +3520,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>activation-1.1.jar</td>
 <td>61.51 kB</td>
 <td>50</td>
@@ -3579,7 +3529,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.4</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>javax.servlet-api-3.0.1.jar</td>
 <td>83.35 kB</td>
 <td>94</td>
@@ -3588,7 +3538,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.5</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>jaxb-api-2.2.2.jar</td>
 <td>102.67 kB</td>
 <td>115</td>
@@ -3597,7 +3547,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.5</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>junit-4.12.jar</td>
 <td>307.55 kB</td>
 <td>323</td>
@@ -3606,7 +3556,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.5</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>log4j-1.2.17.jar</td>
 <td>478.40 kB</td>
 <td>353</td>
@@ -3615,7 +3565,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.4</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>jets3t-0.7.1.jar</td>
 <td>368.93 kB</td>
 <td>212</td>
@@ -3624,7 +3574,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.4</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>lz4-1.2.0.jar</td>
 <td>161.63 kB</td>
 <td>67</td>
@@ -3633,7 +3583,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>py4j-0.8.2.1.jar</td>
 <td>78.96 kB</td>
 <td>55</td>
@@ -3642,7 +3592,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.5</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>avro-1.7.4.jar</td>
 <td>296.03 kB</td>
 <td>230</td>
@@ -3651,7 +3601,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>commons-compress-1.4.1.jar</td>
 <td>235.71 kB</td>
 <td>156</td>
@@ -3660,7 +3610,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.5</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>commons-lang3-3.3.2.jar</td>
 <td>403.07 kB</td>
 <td>241</td>
@@ -3669,7 +3619,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>commons-math-2.2.jar</td>
 <td>965.35 kB</td>
 <td>684</td>
@@ -3678,7 +3628,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.5</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>commons-math3-3.1.1.jar</td>
 <td>1.53 MB</td>
 <td>1,034</td>
@@ -3687,7 +3637,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.5</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>curator-client-2.7.1.jar</td>
 <td>67.87 kB</td>
 <td>75</td>
@@ -3696,7 +3646,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>curator-framework-2.4.0.jar</td>
 <td>175.51 kB</td>
 <td>180</td>
@@ -3705,7 +3655,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>curator-recipes-2.4.0.jar</td>
 <td>235.67 kB</td>
 <td>209</td>
@@ -3714,7 +3664,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>api-asn1-api-1.0.0-M20.jar</td>
 <td>16.17 kB</td>
 <td>20</td>
@@ -3723,7 +3673,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>api-util-1.0.0-M20.jar</td>
 <td>78.04 kB</td>
 <td>58</td>
@@ -3732,7 +3682,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>apacheds-i18n-2.0.0-M15.jar</td>
 <td>43.87 kB</td>
 <td>17</td>
@@ -3741,7 +3691,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>apacheds-kerberos-codec-2.0.0-M15.jar</td>
 <td>675.27 kB</td>
 <td>604</td>
@@ -3750,7 +3700,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>hadoop-annotations-2.7.1.jar</td>
 <td>16.98 kB</td>
 <td>27</td>
@@ -3759,7 +3709,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>hadoop-auth-2.7.1.jar</td>
 <td>69.03 kB</td>
 <td>53</td>
@@ -3768,7 +3718,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>hadoop-client-2.7.1.jar</td>
 <td>2.49 kB</td>
 <td>7</td>
@@ -3777,7 +3727,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>-</td>
 <td>release</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>hadoop-common-2.7.1.jar</td>
 <td>3.27 MB</td>
 <td>2,090</td>
@@ -3786,7 +3736,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>hadoop-common-2.7.1-tests.jar</td>
 <td>1.78 MB</td>
 <td>-</td>
@@ -3795,7 +3745,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>-</td>
 <td>-</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>hadoop-hdfs-2.7.1.jar</td>
 <td>7.88 MB</td>
 <td>3,394</td>
@@ -3804,7 +3754,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>hadoop-hdfs-2.7.1-tests.jar</td>
 <td>3.12 MB</td>
 <td>-</td>
@@ -3813,7 +3763,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>-</td>
 <td>-</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>hadoop-mapreduce-client-app-2.7.1.jar</td>
 <td>504.03 kB</td>
 <td>316</td>
@@ -3822,7 +3772,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>hadoop-mapreduce-client-common-2.7.1.jar</td>
 <td>735.36 kB</td>
 <td>397</td>
@@ -3831,7 +3781,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>hadoop-mapreduce-client-core-2.7.1.jar</td>
 <td>1.47 MB</td>
 <td>932</td>
@@ -3840,7 +3790,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>hadoop-mapreduce-client-jobclient-2.7.1.jar</td>
 <td>37.24 kB</td>
 <td>22</td>
@@ -3849,7 +3799,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>hadoop-mapreduce-client-shuffle-2.7.1.jar</td>
 <td>43.96 kB</td>
 <td>28</td>
@@ -3858,7 +3808,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>hadoop-yarn-api-2.7.1.jar</td>
 <td>1.92 MB</td>
 <td>898</td>
@@ -3867,7 +3817,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>hadoop-yarn-client-2.7.1.jar</td>
 <td>139.29 kB</td>
 <td>75</td>
@@ -3876,7 +3826,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>hadoop-yarn-common-2.7.1.jar</td>
 <td>1.58 MB</td>
 <td>846</td>
@@ -3885,7 +3835,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>hadoop-yarn-server-common-2.7.1.jar</td>
 <td>355.38 kB</td>
 <td>215</td>
@@ -3894,7 +3844,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>hbase-annotations/target/classes</td>
 <td>-</td>
 <td>0</td>
@@ -3903,7 +3853,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>-</td>
 <td>release</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>hbase-annotations-2.0.0-SNAPSHOT-tests.jar</td>
 <td>13.92 kB</td>
 <td>-</td>
@@ -3912,7 +3862,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>-</td>
 <td>-</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>hbase-client/target/classes</td>
 <td>-</td>
 <td>0</td>
@@ -3921,7 +3871,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>-</td>
 <td>release</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>hbase-common/target/classes</td>
 <td>-</td>
 <td>0</td>
@@ -3930,7 +3880,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>-</td>
 <td>release</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>hbase-common-2.0.0-SNAPSHOT-tests.jar</td>
 <td>225.91 kB</td>
 <td>150</td>
@@ -3939,7 +3889,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>hbase-hadoop-compat/target/classes</td>
 <td>-</td>
 <td>0</td>
@@ -3948,7 +3898,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>-</td>
 <td>release</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>hbase-hadoop-compat-2.0.0-SNAPSHOT-tests.jar</td>
 <td>19.08 kB</td>
 <td>-</td>
@@ -3957,7 +3907,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>-</td>
 <td>-</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>hbase-hadoop2-compat/target/classes</td>
 <td>-</td>
 <td>0</td>
@@ -3966,7 +3916,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>-</td>
 <td>release</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>hbase-hadoop2-compat-2.0.0-SNAPSHOT-tests.jar</td>
 <td>29.42 kB</td>
 <td>-</td>
@@ -3975,7 +3925,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>-</td>
 <td>-</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>hbase-it-2.0.0-SNAPSHOT-tests.jar</td>
 <td>2.70 MB</td>
 <td>-</td>
@@ -3984,7 +3934,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>-</td>
 <td>-</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>hbase-prefix-tree/target/classes</td>
 <td>-</td>
 <td>0</td>
@@ -3993,7 +3943,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>-</td>
 <td>release</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>hbase-procedure/target/classes</td>
 <td>-</td>
 <td>0</td>
@@ -4002,7 +3952,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>-</td>
 <td>release</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>hbase-protocol/target/classes</td>
 <td>-</td>
 <td>0</td>
@@ -4011,7 +3961,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>-</td>
 <td>release</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>hbase-server/target/classes</td>
 <td>-</td>
 <td>0</td>
@@ -4020,7 +3970,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>-</td>
 <td>release</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>hbase-server-2.0.0-SNAPSHOT-tests.jar</td>
 <td>7.24 MB</td>
 <td>-</td>
@@ -4029,7 +3979,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>-</td>
 <td>-</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>hbase-shell/target/classes</td>
 <td>-</td>
 <td>0</td>
@@ -4038,7 +3988,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>-</td>
 <td>release</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>htrace-core-3.1.0-incubating.jar</td>
 <td>1.41 MB</td>
 <td>822</td>
@@ -4047,7 +3997,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>httpclient-4.2.5.jar</td>
 <td>423.21 kB</td>
 <td>359</td>
@@ -4056,7 +4006,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.5</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>httpcore-4.2.4.jar</td>
 <td>221.95 kB</td>
 <td>216</td>
@@ -4065,7 +4015,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.5</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>ivy-2.4.0.jar</td>
 <td>1.22 MB</td>
 <td>857</td>
@@ -4074,7 +4024,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.5</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>mesos-0.21.0-shaded-protobuf.jar</td>
 <td>1.22 MB</td>
 <td>540</td>
@@ -4083,7 +4033,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>spark-catalyst_2.10-1.3.0.jar</td>
 <td>2.68 MB</td>
 <td>1,953</td>
@@ -4092,7 +4042,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>spark-core_2.10-1.3.0.jar</td>
 <td>8.45 MB</td>
 <td>5,952</td>
@@ -4101,7 +4051,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>spark-network-common_2.10-1.3.0.jar</td>
 <td>2.19 MB</td>
 <td>1,700</td>
@@ -4110,7 +4060,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>spark-network-shuffle_2.10-1.3.0.jar</td>
 <td>56.24 kB</td>
 <td>57</td>
@@ -4119,7 +4069,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>spark-sql_2.10-1.3.0.jar</td>
 <td>2.18 MB</td>
 <td>1,494</td>
@@ -4128,7 +4078,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>spark-streaming_2.10-1.3.0.jar</td>
 <td>1.25 MB</td>
 <td>952</td>
@@ -4137,7 +4087,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>spark-streaming_2.10-1.3.0-tests.jar</td>
 <td>1.11 MB</td>
 <td>-</td>
@@ -4146,7 +4096,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>-</td>
 <td>-</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>zookeeper-3.4.7.jar</td>
 <td>785.21 kB</td>
 <td>471</td>
@@ -4155,7 +4105,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.5</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>jackson-core-asl-1.9.13.jar</td>
 <td>226.80 kB</td>
 <td>137</td>
@@ -4164,7 +4114,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.5</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>jackson-jaxrs-1.9.13.jar</td>
 <td>17.91 kB</td>
 <td>17</td>
@@ -4173,7 +4123,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.5</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>jackson-mapper-asl-1.9.13.jar</td>
 <td>762.37 kB</td>
 <td>529</td>
@@ -4182,7 +4132,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.5</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>jackson-xc-1.9.13.jar</td>
 <td>26.45 kB</td>
 <td>19</td>
@@ -4191,7 +4141,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.5</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>jettison-1.3.3.jar</td>
 <td>77.96 kB</td>
 <td>62</td>
@@ -4200,7 +4150,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.5</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>javax.servlet-3.0.0.v201112011016.jar</td>
 <td>195.69 kB</td>
 <td>115</td>
@@ -4209,7 +4159,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.5</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>leveldbjni-all-1.8.jar</td>
 <td>1,021.23 kB</td>
 <td>102</td>
@@ -4218,7 +4168,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>hamcrest-core-1.3.jar</td>
 <td>43.97 kB</td>
 <td>52</td>
@@ -4227,7 +4177,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.5</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>jamon-runtime-2.4.1.jar</td>
 <td>23.97 kB</td>
 <td>47</td>
@@ -4236,7 +4186,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>jodd-core-3.6.3.jar</td>
 <td>369.51 kB</td>
 <td>228</td>
@@ -4245,7 +4195,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.5</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>jruby-complete-1.6.8.jar</td>
 <td>13.19 MB</td>
 <td>10,451</td>
@@ -4254,7 +4204,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.5</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>jcodings-1.0.8.jar</td>
 <td>1.23 MB</td>
 <td>413</td>
@@ -4263,7 +4213,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.5</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>joni-2.1.2.jar</td>
 <td>182.90 kB</td>
 <td>112</td>
@@ -4272,7 +4222,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.5</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>json4s-ast_2.10-3.2.10.jar</td>
 <td>81.83 kB</td>
 <td>71</td>
@@ -4281,7 +4231,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>json4s-core_2.10-3.2.10.jar</td>
 <td>570.99 kB</td>
 <td>403</td>
@@ -4290,7 +4240,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>json4s-jackson_2.10-3.2.10.jar</td>
 <td>39.02 kB</td>
 <td>31</td>
@@ -4299,7 +4249,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>mockito-all-1.10.8.jar</td>
 <td>1.16 MB</td>
 <td>1,183</td>
@@ -4308,7 +4258,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.5</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>jetty-6.1.26.jar</td>
 <td>527.26 kB</td>
 <td>267</td>
@@ -4317,7 +4267,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.4</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>jetty-sslengine-6.1.26.jar</td>
 <td>18.45 kB</td>
 <td>16</td>
@@ -4326,7 +4276,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.5</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>jetty-util-6.1.26.jar</td>
 <td>172.98 kB</td>
 <td>120</td>
@@ -4335,7 +4285,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.4</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>jsp-2.1-6.1.14.jar</td>
 <td>1,000.66 kB</td>
 <td>679</td>
@@ -4344,7 +4294,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.5</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>jsp-api-2.1-6.1.14.jar</td>
 <td>131.75 kB</td>
 <td>134</td>
@@ -4353,7 +4303,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.5</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>servlet-api-2.5-6.1.14.jar</td>
 <td>129.27 kB</td>
 <td>78</td>
@@ -4362,7 +4312,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.4</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>objenesis-1.2.jar</td>
 <td>35.20 kB</td>
 <td>46</td>
@@ -4371,7 +4321,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.3</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>RoaringBitmap-0.4.5.jar</td>
 <td>106.82 kB</td>
 <td>57</td>
@@ -4380,7 +4330,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>scala-compiler-2.10.4.jar</td>
 <td>13.78 MB</td>
 <td>8,740</td>
@@ -4389,7 +4339,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>scala-library-2.10.4.jar</td>
 <td>6.80 MB</td>
 <td>4,963</td>
@@ -4398,7 +4348,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>scala-reflect-2.10.4.jar</td>
 <td>3.06 MB</td>
 <td>2,049</td>
@@ -4407,7 +4357,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>quasiquotes_2.10-2.0.1.jar</td>
 <td>703.81 kB</td>
 <td>410</td>
@@ -4416,7 +4366,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>scalamock-core_2.10-3.1.4.jar</td>
 <td>384.78 kB</td>
 <td>239</td>
@@ -4425,7 +4375,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>scalamock-scalatest-support_2.10-3.1.4.jar</td>
 <td>7.61 kB</td>
 <td>12</td>
@@ -4434,7 +4384,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>scalatest_2.10-2.2.4.jar</td>
 <td>7.18 MB</td>
 <td>4,162</td>
@@ -4443,7 +4393,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>jcl-over-slf4j-1.7.10.jar</td>
 <td>16.23 kB</td>
 <td>23</td>
@@ -4452,7 +4402,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.5</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>jul-to-slf4j-1.7.10.jar</td>
 <td>4.61 kB</td>
 <td>11</td>
@@ -4461,7 +4411,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.5</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>slf4j-api-1.7.7.jar</td>
 <td>28.57 kB</td>
 <td>35</td>
@@ -4470,7 +4420,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.5</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>slf4j-log4j12-1.7.10.jar</td>
 <td>8.66 kB</td>
 <td>16</td>
@@ -4479,7 +4429,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.5</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>pyrolite-2.0.1.jar</td>
 <td>66.64 kB</td>
 <td>55</td>
@@ -4488,7 +4438,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>akka-actor_2.10-2.3.4-spark.jar</td>
 <td>2.44 MB</td>
 <td>1,679</td>
@@ -4497,7 +4447,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>akka-remote_2.10-2.3.4-spark.jar</td>
 <td>1.29 MB</td>
 <td>807</td>
@@ -4506,7 +4456,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>akka-slf4j_2.10-2.3.4-spark.jar</td>
 <td>15.18 kB</td>
 <td>16</td>
@@ -4515,7 +4465,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.6</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>protobuf-java-2.5.0-spark.jar</td>
 <td>525.35 kB</td>
 <td>256</td>
@@ -4524,7 +4474,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.5</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="b">
+<tr class="a">
 <td>unused-1.0.0.jar</td>
 <td>2.71 kB</td>
 <td>12</td>
@@ -4533,7 +4483,7 @@ Jackson JSON processor's data binding functionality.</p>
 <td>1.5</td>
 <td>debug</td>
 <td>-</td></tr>
-<tr class="a">
+<tr class="b">
 <td>tachyon-0.5.0.jar</td>
 <td>2.01 MB</td>
 <td>1,197</td>
@@ -4542,

<TRUNCATED>

[49/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/checkstyle.rss
----------------------------------------------------------------------
diff --git a/checkstyle.rss b/checkstyle.rss
index 47acb91..554e49c 100644
--- a/checkstyle.rss
+++ b/checkstyle.rss
@@ -9127,7 +9127,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  4
+                  3
                 </td>
               </tr>
                           <tr>
@@ -11941,7 +11941,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  53
+                  54
                 </td>
               </tr>
                           <tr>
@@ -14839,7 +14839,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  8
+                  7
                 </td>
               </tr>
                           <tr>
@@ -16911,7 +16911,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  45
+                  47
                 </td>
               </tr>
                           <tr>
@@ -21923,7 +21923,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  12
+                  11
                 </td>
               </tr>
                           <tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/coc.html
----------------------------------------------------------------------
diff --git a/coc.html b/coc.html
index f658606..0168c70 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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <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: 2015-12-15</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-12-16</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/cygwin.html
----------------------------------------------------------------------
diff --git a/cygwin.html b/cygwin.html
index 8a14f03..b2666b9 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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <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: 2015-12-15</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-12-16</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/dependencies.html
----------------------------------------------------------------------
diff --git a/dependencies.html b/dependencies.html
index ec198dd..762512d 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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <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: 2015-12-15</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-12-16</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/dependency-convergence.html b/dependency-convergence.html
index 330263a..3da30cd 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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <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" />
@@ -452,22 +452,6 @@
 <li><a class="externalLink" href="http://hbase.apache.org/hbase-rest">org.apache.hbase:hbase-rest</a></li>
 <li><a class="externalLink" href="http://hbase.apache.org/hbase-server">org.apache.hbase:hbase-server</a></li></ol></td></tr></table></td></tr></table></div>
 <div class="section">
-<h4><a name="com.yammer.metrics:metrics-core"></a>com.yammer.metrics:metrics-core</h4>
-<table border="0" class="table table-striped">
-<tr class="a">
-<td><img alt="success" src="images/icon_success_sml.gif" /></td>
-<td>
-<table border="0" class="table table-striped">
-<tr class="b">
-<td width="25%">2.2.0</td>
-<td>
-<ol style="list-style-type: lower-alpha">
-<li><a class="externalLink" href="http://hbase.apache.org/hbase-client">org.apache.hbase:hbase-client</a></li>
-<li><a class="externalLink" href="http://hbase.apache.org/hbase-hadoop2-compat">org.apache.hbase:hbase-hadoop2-compat</a></li>
-<li><a class="externalLink" href="http://hbase.apache.org/hbase-it">org.apache.hbase:hbase-it</a></li>
-<li><a class="externalLink" href="http://hbase.apache.org/hbase-server">org.apache.hbase:hbase-server</a></li>
-<li><a class="externalLink" href="http://hbase.apache.org/hbase-shell">org.apache.hbase:hbase-shell</a></li></ol></td></tr></table></td></tr></table></div>
-<div class="section">
 <h4><a name="commons-cli:commons-cli"></a>commons-cli:commons-cli</h4>
 <table border="0" class="table table-striped">
 <tr class="a">
@@ -592,6 +576,22 @@
 <ol style="list-style-type: lower-alpha">
 <li><a class="externalLink" href="http://hbase.apache.org/hbase-thrift">org.apache.hbase:hbase-thrift</a></li></ol></td></tr></table></td></tr></table></div>
 <div class="section">
+<h4><a name="io.dropwizard.metrics:metrics-core"></a>io.dropwizard.metrics:metrics-core</h4>
+<table border="0" class="table table-striped">
+<tr class="a">
+<td><img alt="success" src="images/icon_success_sml.gif" /></td>
+<td>
+<table border="0" class="table table-striped">
+<tr class="b">
+<td width="25%">3.1.2</td>
+<td>
+<ol style="list-style-type: lower-alpha">
+<li><a class="externalLink" href="http://hbase.apache.org/hbase-client">org.apache.hbase:hbase-client</a></li>
+<li><a class="externalLink" href="http://hbase.apache.org/hbase-hadoop2-compat">org.apache.hbase:hbase-hadoop2-compat</a></li>
+<li><a class="externalLink" href="http://hbase.apache.org/hbase-it">org.apache.hbase:hbase-it</a></li>
+<li><a class="externalLink" href="http://hbase.apache.org/hbase-server">org.apache.hbase:hbase-server</a></li>
+<li><a class="externalLink" href="http://hbase.apache.org/hbase-shell">org.apache.hbase:hbase-shell</a></li></ol></td></tr></table></td></tr></table></div>
+<div class="section">
 <h4><a name="io.netty:netty"></a>io.netty:netty</h4>
 <table border="0" class="table table-striped">
 <tr class="a">
@@ -1592,7 +1592,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2015-12-15</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-12-16</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/dependency-info.html
----------------------------------------------------------------------
diff --git a/dependency-info.html b/dependency-info.html
index 28505a8..4366c69 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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <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: 2015-12-15</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-12-16</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/dependency-management.html
----------------------------------------------------------------------
diff --git a/dependency-management.html b/dependency-management.html
index a737037..3029147 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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <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" />
@@ -323,59 +323,59 @@
 <td>jar</td>
 <td><a class="externalLink" href="http://glassfish.java.net/public/CDDL+GPL_1_1.html">CDDL 1.1</a>, <a class="externalLink" href="http://glassfish.java.net/public/CDDL+GPL_1_1.html">GPL2 w/ CPE</a></td></tr>
 <tr class="a">
-<td>com.yammer.metrics</td>
-<td><a class="externalLink" href="http://metrics.codahale.com/metrics-core/">metrics-core</a></td>
-<td>2.2.0</td>
-<td>jar</td>
-<td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License 2.0</a></td></tr>
-<tr class="b">
 <td>commons-cli</td>
 <td><a class="externalLink" href="http://commons.apache.org/cli/">commons-cli</a></td>
 <td>1.2</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td>commons-codec</td>
 <td><a class="externalLink" href="http://commons.apache.org/proper/commons-codec/">commons-codec</a></td>
 <td>1.9</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td>commons-collections</td>
 <td><a class="externalLink" href="http://commons.apache.org/collections/">commons-collections</a></td>
 <td>3.2.2</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td>commons-httpclient</td>
 <td><a class="externalLink" href="http://jakarta.apache.org/httpcomponents/httpclient-3.x/">commons-httpclient</a></td>
 <td>3.1</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache License</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td>commons-io</td>
 <td><a class="externalLink" href="http://commons.apache.org/io/">commons-io</a></td>
 <td>2.4</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td>commons-lang</td>
 <td><a class="externalLink" href="http://commons.apache.org/lang/">commons-lang</a></td>
 <td>2.6</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td>commons-logging</td>
 <td><a class="externalLink" href="http://commons.apache.org/proper/commons-logging/">commons-logging</a></td>
 <td>1.2</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td>commons-net</td>
 <td><a class="externalLink" href="http://commons.apache.org/net/">commons-net</a></td>
 <td>3.1</td>
 <td>jar</td>
 <td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
+<tr class="a">
+<td>io.dropwizard.metrics</td>
+<td><a class="externalLink" href="http://metrics.codahale.com/metrics-core/">metrics-core</a></td>
+<td>3.1.2</td>
+<td>jar</td>
+<td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License 2.0</a></td></tr>
 <tr class="b">
 <td>io.netty</td>
 <td><a class="externalLink" href="http://netty.io/netty-all/">netty-all</a></td>
@@ -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: 2015-12-15</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-12-16</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/allclasses-frame.html
----------------------------------------------------------------------
diff --git a/devapidocs/allclasses-frame.html b/devapidocs/allclasses-frame.html
index 03ed97b..8d25544 100644
--- a/devapidocs/allclasses-frame.html
+++ b/devapidocs/allclasses-frame.html
@@ -787,6 +787,7 @@
 <li><a href="org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html" title="class in org.apache.hadoop.hbase.io.hfile" target="classFrame">HFilePrettyPrinter</a></li>
 <li><a href="org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html" title="class in org.apache.hadoop.hbase.io.hfile" target="classFrame">HFilePrettyPrinter.KeyValueStatsCollector</a></li>
 <li><a href="org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html" title="class in org.apache.hadoop.hbase.io.hfile" target="classFrame">HFilePrettyPrinter.SimpleReporter</a></li>
+<li><a href="org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html" title="class in org.apache.hadoop.hbase.io.hfile" target="classFrame">HFilePrettyPrinter.SimpleReporter.Builder</a></li>
 <li><a href="org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html" title="class in org.apache.hadoop.hbase.io.hfile" target="classFrame">HFileReaderImpl</a></li>
 <li><a href="org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.BlockIndexNotLoadedException.html" title="class in org.apache.hadoop.hbase.io.hfile" target="classFrame">HFileReaderImpl.BlockIndexNotLoadedException</a></li>
 <li><a href="org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.EncodedScanner.html" title="class in org.apache.hadoop.hbase.io.hfile" target="classFrame">HFileReaderImpl.EncodedScanner</a></li>
@@ -2221,6 +2222,7 @@
 <li><a href="org/apache/hadoop/hbase/wal/WALPrettyPrinter.html" title="class in org.apache.hadoop.hbase.wal" target="classFrame">WALPrettyPrinter</a></li>
 <li><a href="org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal" target="classFrame">WALProcedureStore</a></li>
 <li><a href="org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.LeaseRecovery.html" title="interface in org.apache.hadoop.hbase.procedure2.store.wal" target="classFrame"><i>WALProcedureStore.LeaseRecovery</i></a></li>
+<li><a href="org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.PushType.html" title="enum in org.apache.hadoop.hbase.procedure2.store.wal" target="classFrame">WALProcedureStore.PushType</a></li>
 <li><a href="org/apache/hadoop/hbase/wal/WALProvider.html" title="interface in org.apache.hadoop.hbase.wal" target="classFrame"><i>WALProvider</i></a></li>
 <li><a href="org/apache/hadoop/hbase/wal/WALProvider.Writer.html" title="interface in org.apache.hadoop.hbase.wal" target="classFrame"><i>WALProvider.Writer</i></a></li>
 <li><a href="org/apache/hadoop/hbase/wal/WALSplitter.html" title="class in org.apache.hadoop.hbase.wal" target="classFrame">WALSplitter</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/allclasses-noframe.html
----------------------------------------------------------------------
diff --git a/devapidocs/allclasses-noframe.html b/devapidocs/allclasses-noframe.html
index d321673..4cdd705 100644
--- a/devapidocs/allclasses-noframe.html
+++ b/devapidocs/allclasses-noframe.html
@@ -787,6 +787,7 @@
 <li><a href="org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter</a></li>
 <li><a href="org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.KeyValueStatsCollector</a></li>
 <li><a href="org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.SimpleReporter</a></li>
+<li><a href="org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.SimpleReporter.Builder</a></li>
 <li><a href="org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileReaderImpl</a></li>
 <li><a href="org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.BlockIndexNotLoadedException.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileReaderImpl.BlockIndexNotLoadedException</a></li>
 <li><a href="org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.EncodedScanner.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileReaderImpl.EncodedScanner</a></li>
@@ -2221,6 +2222,7 @@
 <li><a href="org/apache/hadoop/hbase/wal/WALPrettyPrinter.html" title="class in org.apache.hadoop.hbase.wal">WALPrettyPrinter</a></li>
 <li><a href="org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore</a></li>
 <li><a href="org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.LeaseRecovery.html" title="interface in org.apache.hadoop.hbase.procedure2.store.wal"><i>WALProcedureStore.LeaseRecovery</i></a></li>
+<li><a href="org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.PushType.html" title="enum in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore.PushType</a></li>
 <li><a href="org/apache/hadoop/hbase/wal/WALProvider.html" title="interface in org.apache.hadoop.hbase.wal"><i>WALProvider</i></a></li>
 <li><a href="org/apache/hadoop/hbase/wal/WALProvider.Writer.html" title="interface in org.apache.hadoop.hbase.wal"><i>WALProvider.Writer</i></a></li>
 <li><a href="org/apache/hadoop/hbase/wal/WALSplitter.html" title="class in org.apache.hadoop.hbase.wal">WALSplitter</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index ac06c56..c41f50b 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -2136,8 +2136,6 @@
 </dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSinkSourceImpl.html#ageGauge">ageGauge</a></span> - Variable in class org.apache.hadoop.hbase.replication.regionserver.<a href="./org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSinkSourceImpl.html" title="class in org.apache.hadoop.hbase.replication.regionserver">MetricsReplicationSinkSourceImpl</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html#ageHistogram">ageHistogram</a></span> - Variable in class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html" title="class in org.apache.hadoop.hbase.io.hfile">AgeSnapshot</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/replication/ReplicationLoadSink.html#ageOfLastAppliedOp">ageOfLastAppliedOp</a></span> - Variable in class org.apache.hadoop.hbase.replication.<a href="./org/apache/hadoop/hbase/replication/ReplicationLoadSink.html" title="class in org.apache.hadoop.hbase.replication">ReplicationLoadSink</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/replication/ReplicationLoadSource.html#ageOfLastShippedOp">ageOfLastShippedOp</a></span> - Variable in class org.apache.hadoop.hbase.replication.<a href="./org/apache/hadoop/hbase/replication/ReplicationLoadSource.html" title="class in org.apache.hadoop.hbase.replication">ReplicationLoadSource</a></dt>
@@ -2152,7 +2150,7 @@
 <dd>
 <div class="block">Snapshot of block cache age in cache.</div>
 </dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html#AgeSnapshot(com.yammer.metrics.core.Histogram)">AgeSnapshot(Histogram)</a></span> - Constructor for class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html" title="class in org.apache.hadoop.hbase.io.hfile">AgeSnapshot</a></dt>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html#AgeSnapshot(com.codahale.metrics.Histogram)">AgeSnapshot(Histogram)</a></span> - Constructor for class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html" title="class in org.apache.hadoop.hbase.io.hfile">AgeSnapshot</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/MetricsRegionSourceImpl.html#agg">agg</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/MetricsRegionSourceImpl.html" title="class in org.apache.hadoop.hbase.regionserver">MetricsRegionSourceImpl</a></dt>
 <dd>&nbsp;</dd>
@@ -5118,6 +5116,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/HFileContextBuilder.html#build()">build()</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/HFileContextBuilder.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileContextBuilder</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html#build()">build()</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.SimpleReporter.Builder</a></dt>
+<dd>
+<div class="block">Builds a <code>ConsoleReporter</code> with the given properties.</div>
+</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/HFileLink.html#build(org.apache.hadoop.conf.Configuration,%20org.apache.hadoop.hbase.TableName,%20java.lang.String,%20java.lang.String,%20java.lang.String)">build(Configuration, TableName, String, String, String)</a></span> - Static method in class org.apache.hadoop.hbase.io.<a href="./org/apache/hadoop/hbase/io/HFileLink.html" title="class in org.apache.hadoop.hbase.io">HFileLink</a></dt>
 <dd>
 <div class="block">Create an HFileLink instance from table/region/family/hfile location</div>
@@ -7430,8 +7432,6 @@
  Throw exception if the table exists on peer cluster but descriptors are not same.
  </div>
 </dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#checkAndTryRoll()">checkAndTryRoll()</a></span> - Method in class org.apache.hadoop.hbase.procedure2.store.wal.<a href="./org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/master/snapshot/SnapshotManager.html#checkAndUpdateNamespaceQuota(org.apache.hadoop.hbase.snapshot.SnapshotManifest,%20org.apache.hadoop.hbase.TableName)">checkAndUpdateNamespaceQuota(SnapshotManifest, TableName)</a></span> - Method in class org.apache.hadoop.hbase.master.snapshot.<a href="./org/apache/hadoop/hbase/master/snapshot/SnapshotManager.html" title="class in org.apache.hadoop.hbase.master.snapshot">SnapshotManager</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/namespace/NamespaceStateManager.html#checkAndUpdateNamespaceRegionCount(org.apache.hadoop.hbase.TableName,%20byte[],%20int)">checkAndUpdateNamespaceRegionCount(TableName, byte[], int)</a></span> - Method in class org.apache.hadoop.hbase.namespace.<a href="./org/apache/hadoop/hbase/namespace/NamespaceStateManager.html" title="class in org.apache.hadoop.hbase.namespace">NamespaceStateManager</a></dt>
@@ -15945,6 +15945,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/mob/MobFileName.html#date">date</a></span> - Variable in class org.apache.hadoop.hbase.mob.<a href="./org/apache/hadoop/hbase/mob/MobFileName.html" title="class in org.apache.hadoop.hbase.mob">MobFileName</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html#dateFormat">dateFormat</a></span> - Variable in class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.SimpleReporter</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/HConstants.html#DAY_IN_SECONDS">DAY_IN_SECONDS</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/HConstants.html" title="class in org.apache.hadoop.hbase">HConstants</a></dt>
 <dd>
 <div class="block">Seconds in a day, hour and minute</div>
@@ -19444,6 +19446,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/thrift2/ThriftUtilities.html#durabilityFromThrift(org.apache.hadoop.hbase.thrift2.generated.TDurability)">durabilityFromThrift(TDurability)</a></span> - Static method in class org.apache.hadoop.hbase.thrift2.<a href="./org/apache/hadoop/hbase/thrift2/ThriftUtilities.html" title="class in org.apache.hadoop.hbase.thrift2">ThriftUtilities</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html#durationUnit">durationUnit</a></span> - Variable in class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.SimpleReporter.Builder</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/util/DynamicClassLoader.html#DYNAMIC_JARS_DIR">DYNAMIC_JARS_DIR</a></span> - Static variable in class org.apache.hadoop.hbase.util.<a href="./org/apache/hadoop/hbase/util/DynamicClassLoader.html" title="class in org.apache.hadoop.hbase.util">DynamicClassLoader</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/util/DynamicClassLoader.html#DYNAMIC_JARS_DIR_KEY">DYNAMIC_JARS_DIR_KEY</a></span> - Static variable in class org.apache.hadoop.hbase.util.<a href="./org/apache/hadoop/hbase/util/DynamicClassLoader.html" title="class in org.apache.hadoop.hbase.util">DynamicClassLoader</a></dt>
@@ -22580,6 +22584,12 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/filter/WhileMatchFilter.html#filter">filter</a></span> - Variable in class org.apache.hadoop.hbase.filter.<a href="./org/apache/hadoop/hbase/filter/WhileMatchFilter.html" title="class in org.apache.hadoop.hbase.filter">WhileMatchFilter</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html#filter">filter</a></span> - Variable in class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.SimpleReporter.Builder</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html#filter(com.codahale.metrics.MetricFilter)">filter(MetricFilter)</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.SimpleReporter.Builder</a></dt>
+<dd>
+<div class="block">Only report metrics which match the given filter.</div>
+</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/mapreduce/Import.Importer.html#filter">filter</a></span> - Variable in class org.apache.hadoop.hbase.mapreduce.<a href="./org/apache/hadoop/hbase/mapreduce/Import.Importer.html" title="class in org.apache.hadoop.hbase.mapreduce">Import.Importer</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/mapreduce/Import.KeyValueImporter.html#filter">filter</a></span> - Variable in class org.apache.hadoop.hbase.mapreduce.<a href="./org/apache/hadoop/hbase/mapreduce/Import.KeyValueImporter.html" title="class in org.apache.hadoop.hbase.mapreduce">Import.KeyValueImporter</a></dt>
@@ -23976,6 +23986,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/http/log/LogLevel.Servlet.html#FORMS">FORMS</a></span> - Static variable in class org.apache.hadoop.hbase.http.log.<a href="./org/apache/hadoop/hbase/http/log/LogLevel.Servlet.html" title="class in org.apache.hadoop.hbase.http.log">LogLevel.Servlet</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html#forRegistry(com.codahale.metrics.MetricRegistry)">forRegistry(MetricRegistry)</a></span> - Static method in class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.SimpleReporter</a></dt>
+<dd>
+<div class="block">Returns a new <a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html" title="class in org.apache.hadoop.hbase.io.hfile"><code>HFilePrettyPrinter.SimpleReporter.Builder</code></a> for <code>ConsoleReporter</code>.</div>
+</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#FOUND_MOB_FILES_CACHE_CAPACITY">FOUND_MOB_FILES_CACHE_CAPACITY</a></span> - Static variable in class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/filter/SingleColumnValueFilter.html#foundColumn">foundColumn</a></span> - Variable in class org.apache.hadoop.hbase.filter.<a href="./org/apache/hadoop/hbase/filter/SingleColumnValueFilter.html" title="class in org.apache.hadoop.hbase.filter">SingleColumnValueFilter</a></dt>
@@ -29061,7 +29075,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/metrics2/lib/DynamicMetricsRegistry.html#getHistogram(java.lang.String)">getHistogram(String)</a></span> - Method in class org.apache.hadoop.metrics2.lib.<a href="./org/apache/hadoop/metrics2/lib/DynamicMetricsRegistry.html" title="class in org.apache.hadoop.metrics2.lib">DynamicMetricsRegistry</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/util/YammerHistogramUtils.html#getHistogramReport(com.yammer.metrics.core.Histogram)">getHistogramReport(Histogram)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="./org/apache/hadoop/hbase/util/YammerHistogramUtils.html" title="class in org.apache.hadoop.hbase.util">YammerHistogramUtils</a></dt>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/util/YammerHistogramUtils.html#getHistogramReport(com.codahale.metrics.Histogram)">getHistogramReport(Histogram)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="./org/apache/hadoop/hbase/util/YammerHistogramUtils.html" title="class in org.apache.hadoop.hbase.util">YammerHistogramUtils</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/CacheStats.html#getHitCachingCount()">getHitCachingCount()</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/CacheStats.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheStats</a></dt>
 <dd>&nbsp;</dd>
@@ -35385,7 +35399,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/nio/SingleByteBuff.html#getShortAfterPosition(int)">getShortAfterPosition(int)</a></span> - Method in class org.apache.hadoop.hbase.nio.<a href="./org/apache/hadoop/hbase/nio/SingleByteBuff.html" title="class in org.apache.hadoop.hbase.nio">SingleByteBuff</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/util/YammerHistogramUtils.html#getShortHistogramReport(com.yammer.metrics.core.Histogram)">getShortHistogramReport(Histogram)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="./org/apache/hadoop/hbase/util/YammerHistogramUtils.html" title="class in org.apache.hadoop.hbase.util">YammerHistogramUtils</a></dt>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/util/YammerHistogramUtils.html#getShortHistogramReport(com.codahale.metrics.Histogram)">getShortHistogramReport(Histogram)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="./org/apache/hadoop/hbase/util/YammerHistogramUtils.html" title="class in org.apache.hadoop.hbase.util">YammerHistogramUtils</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/KeyValue.KVComparator.html#getShortMidpointKey(byte[],%20byte[])">getShortMidpointKey(byte[], byte[])</a></span> - Method in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/KeyValue.KVComparator.html" title="class in org.apache.hadoop.hbase">KeyValue.KVComparator</a></dt>
 <dd>
@@ -41310,8 +41324,17 @@
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html#HFilePrettyPrinter.KeyValueStatsCollector()">HFilePrettyPrinter.KeyValueStatsCollector()</a></span> - Constructor for class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.KeyValueStatsCollector</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="strong">HFilePrettyPrinter.SimpleReporter</span></a> - Class in <a href="./org/apache/hadoop/hbase/io/hfile/package-summary.html">org.apache.hadoop.hbase.io.hfile</a></dt>
+<dd>
+<div class="block">Almost identical to ConsoleReporter, but extending ScheduledReporter,
+ as extending ConsoleReporter in this version of dropwizard is now too much trouble.</div>
+</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html#HFilePrettyPrinter.SimpleReporter(com.codahale.metrics.MetricRegistry,%20java.io.PrintStream,%20java.util.Locale,%20java.util.TimeZone,%20java.util.concurrent.TimeUnit,%20java.util.concurrent.TimeUnit,%20com.codahale.metrics.MetricFilter)">HFilePrettyPrinter.SimpleReporter(MetricRegistry, PrintStream, Locale, TimeZone, TimeUnit, TimeUnit, MetricFilter)</a></span> - Constructor for class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.SimpleReporter</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html#HFilePrettyPrinter.SimpleReporter(com.yammer.metrics.core.MetricsRegistry,%20java.io.PrintStream)">HFilePrettyPrinter.SimpleReporter(MetricsRegistry, PrintStream)</a></span> - Constructor for class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.SimpleReporter</a></dt>
+<dt><a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="strong">HFilePrettyPrinter.SimpleReporter.Builder</span></a> - Class in <a href="./org/apache/hadoop/hbase/io/hfile/package-summary.html">org.apache.hadoop.hbase.io.hfile</a></dt>
+<dd>
+<div class="block">A builder for <a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html" title="class in org.apache.hadoop.hbase.io.hfile"><code>HFilePrettyPrinter.SimpleReporter</code></a> instances.</div>
+</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html#HFilePrettyPrinter.SimpleReporter.Builder(com.codahale.metrics.MetricRegistry)">HFilePrettyPrinter.SimpleReporter.Builder(MetricRegistry)</a></span> - Constructor for class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.SimpleReporter.Builder</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="./org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="strong">HFileReaderImpl</span></a> - Class in <a href="./org/apache/hadoop/hbase/io/hfile/package-summary.html">org.apache.hadoop.hbase.io.hfile</a></dt>
 <dd>
@@ -42536,8 +42559,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/rest/model/ColumnSchemaModel.html#IN_MEMORY">IN_MEMORY</a></span> - Static variable in class org.apache.hadoop.hbase.rest.model.<a href="./org/apache/hadoop/hbase/rest/model/ColumnSchemaModel.html" title="class in org.apache.hadoop.hbase.rest.model">ColumnSchemaModel</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#inactiveLogsMaxId">inactiveLogsMaxId</a></span> - Variable in class org.apache.hadoop.hbase.procedure2.store.wal.<a href="./org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/snapshot/SnapshotInfo.SnapshotStats.FileInfo.html#inArchive">inArchive</a></span> - Variable in class org.apache.hadoop.hbase.snapshot.<a href="./org/apache/hadoop/hbase/snapshot/SnapshotInfo.SnapshotStats.FileInfo.html" title="class in org.apache.hadoop.hbase.snapshot">SnapshotInfo.SnapshotStats.FileInfo</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/snapshot/SnapshotInfo.SnapshotStats.FileInfo.html#inArchive()">inArchive()</a></span> - Method in class org.apache.hadoop.hbase.snapshot.<a href="./org/apache/hadoop/hbase/snapshot/SnapshotInfo.SnapshotStats.FileInfo.html" title="class in org.apache.hadoop.hbase.snapshot">SnapshotInfo.SnapshotStats.FileInfo</a></dt>
@@ -44139,10 +44160,10 @@
 <dd>
 <div class="block">When a procedure is submitted to the executor insert(proc, null) will be called.</div>
 </dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#insert(org.apache.hadoop.hbase.procedure2.Procedure,%20org.apache.hadoop.hbase.procedure2.Procedure[])">insert(Procedure, Procedure[])</a></span> - Method in class org.apache.hadoop.hbase.procedure2.store.<a href="./org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html" title="class in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#insert(long)">insert(long)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.store.<a href="./org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html" title="class in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#insert(long,%20long[])">insert(long, long[])</a></span> - Method in class org.apache.hadoop.hbase.procedure2.store.<a href="./org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html" title="class in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#insert(org.apache.hadoop.hbase.procedure2.Procedure,%20org.apache.hadoop.hbase.procedure2.Procedure[])">insert(Procedure, Procedure[])</a></span> - Method in class org.apache.hadoop.hbase.procedure2.store.wal.<a href="./org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/types/CopyOnWriteArrayMap.ArrayHolder.html#insert(int,%20org.apache.hadoop.hbase.types.CopyOnWriteArrayMap.COWEntry)">insert(int, CopyOnWriteArrayMap.COWEntry&lt;K, V&gt;)</a></span> - Method in class org.apache.hadoop.hbase.types.<a href="./org/apache/hadoop/hbase/types/CopyOnWriteArrayMap.ArrayHolder.html" title="class in org.apache.hadoop.hbase.types">CopyOnWriteArrayMap.ArrayHolder</a></dt>
@@ -49394,6 +49415,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/util/DynamicClassLoader.html#localDir">localDir</a></span> - Variable in class org.apache.hadoop.hbase.util.<a href="./org/apache/hadoop/hbase/util/DynamicClassLoader.html" title="class in org.apache.hadoop.hbase.util">DynamicClassLoader</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html#locale">locale</a></span> - Variable in class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.SimpleReporter.Builder</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html#locale">locale</a></span> - Variable in class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.SimpleReporter</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="./org/apache/hadoop/hbase/LocalHBaseCluster.html" title="class in org.apache.hadoop.hbase"><span class="strong">LocalHBaseCluster</span></a> - Class in <a href="./org/apache/hadoop/hbase/package-summary.html">org.apache.hadoop.hbase</a></dt>
 <dd>
 <div class="block">This class creates a single process HBase cluster.</div>
@@ -54056,9 +54081,9 @@
 <dd>&nbsp;</dd>
 <dt><a href="./org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html" title="class in org.apache.hadoop.hbase.client"><span class="strong">MetricsConnection.CallTracker</span></a> - Class in <a href="./org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html#MetricsConnection.CallTracker(com.yammer.metrics.core.MetricsRegistry,%20java.lang.String,%20java.lang.String,%20java.lang.String)">MetricsConnection.CallTracker(MetricsRegistry, String, String, String)</a></span> - Constructor for class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html" title="class in org.apache.hadoop.hbase.client">MetricsConnection.CallTracker</a></dt>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html#MetricsConnection.CallTracker(com.codahale.metrics.MetricRegistry,%20java.lang.String,%20java.lang.String,%20java.lang.String)">MetricsConnection.CallTracker(MetricRegistry, String, String, String)</a></span> - Constructor for class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html" title="class in org.apache.hadoop.hbase.client">MetricsConnection.CallTracker</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html#MetricsConnection.CallTracker(com.yammer.metrics.core.MetricsRegistry,%20java.lang.String,%20java.lang.String)">MetricsConnection.CallTracker(MetricsRegistry, String, String)</a></span> - Constructor for class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html" title="class in org.apache.hadoop.hbase.client">MetricsConnection.CallTracker</a></dt>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html#MetricsConnection.CallTracker(com.codahale.metrics.MetricRegistry,%20java.lang.String,%20java.lang.String)">MetricsConnection.CallTracker(MetricRegistry, String, String)</a></span> - Constructor for class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/MetricsConnection.CallTracker.html" title="class in org.apache.hadoop.hbase.client">MetricsConnection.CallTracker</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="./org/apache/hadoop/hbase/client/MetricsConnection.NewMetric.html" title="interface in org.apache.hadoop.hbase.client"><span class="strong">MetricsConnection.NewMetric</span></a>&lt;<a href="./org/apache/hadoop/hbase/client/MetricsConnection.NewMetric.html" title="type parameter in MetricsConnection.NewMetric">T</a>&gt; - Interface in <a href="./org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a></dt>
 <dd>
@@ -54066,11 +54091,11 @@
 </dd>
 <dt><a href="./org/apache/hadoop/hbase/client/MetricsConnection.RegionStats.html" title="class in org.apache.hadoop.hbase.client"><span class="strong">MetricsConnection.RegionStats</span></a> - Class in <a href="./org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/MetricsConnection.RegionStats.html#MetricsConnection.RegionStats(com.yammer.metrics.core.MetricsRegistry,%20java.lang.String)">MetricsConnection.RegionStats(MetricsRegistry, String)</a></span> - Constructor for class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/MetricsConnection.RegionStats.html" title="class in org.apache.hadoop.hbase.client">MetricsConnection.RegionStats</a></dt>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/MetricsConnection.RegionStats.html#MetricsConnection.RegionStats(com.codahale.metrics.MetricRegistry,%20java.lang.String)">MetricsConnection.RegionStats(MetricRegistry, String)</a></span> - Constructor for class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/MetricsConnection.RegionStats.html" title="class in org.apache.hadoop.hbase.client">MetricsConnection.RegionStats</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="./org/apache/hadoop/hbase/client/MetricsConnection.RunnerStats.html" title="class in org.apache.hadoop.hbase.client"><span class="strong">MetricsConnection.RunnerStats</span></a> - Class in <a href="./org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/MetricsConnection.RunnerStats.html#MetricsConnection.RunnerStats(com.yammer.metrics.core.MetricsRegistry)">MetricsConnection.RunnerStats(MetricsRegistry)</a></span> - Constructor for class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/MetricsConnection.RunnerStats.html" title="class in org.apache.hadoop.hbase.client">MetricsConnection.RunnerStats</a></dt>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/MetricsConnection.RunnerStats.html#MetricsConnection.RunnerStats(com.codahale.metrics.MetricRegistry)">MetricsConnection.RunnerStats(MetricRegistry)</a></span> - Constructor for class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/MetricsConnection.RunnerStats.html" title="class in org.apache.hadoop.hbase.client">MetricsConnection.RunnerStats</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/metrics/BaseSourceImpl.html#metricsContext">metricsContext</a></span> - Variable in class org.apache.hadoop.hbase.metrics.<a href="./org/apache/hadoop/hbase/metrics/BaseSourceImpl.html" title="class in org.apache.hadoop.hbase.metrics">BaseSourceImpl</a></dt>
 <dd>&nbsp;</dd>
@@ -56331,7 +56356,7 @@
 <dd>
 <div class="block">Create a mutable long integer gauge</div>
 </dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/util/YammerHistogramUtils.html#newHistogram(com.yammer.metrics.stats.Sample)">newHistogram(Sample)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="./org/apache/hadoop/hbase/util/YammerHistogramUtils.html" title="class in org.apache.hadoop.hbase.util">YammerHistogramUtils</a></dt>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/util/YammerHistogramUtils.html#newHistogram(com.codahale.metrics.Reservoir)">newHistogram(Reservoir)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="./org/apache/hadoop/hbase/util/YammerHistogramUtils.html" title="class in org.apache.hadoop.hbase.util">YammerHistogramUtils</a></dt>
 <dd>
 <div class="block">Create a new <code>Histogram</code> instance.</div>
 </dd>
@@ -58888,8 +58913,6 @@ service.</div>
 </dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/codec/BaseEncoder.html#out">out</a></span> - Variable in class org.apache.hadoop.hbase.codec.<a href="./org/apache/hadoop/hbase/codec/BaseEncoder.html" title="class in org.apache.hadoop.hbase.codec">BaseEncoder</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html#out">out</a></span> - Variable in class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.SimpleReporter</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/ipc/RpcClientImpl.Connection.html#out">out</a></span> - Variable in class org.apache.hadoop.hbase.ipc.<a href="./org/apache/hadoop/hbase/ipc/RpcClientImpl.Connection.html" title="class in org.apache.hadoop.hbase.ipc">RpcClientImpl.Connection</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/mapreduce/MutationSerialization.MutationSerializer.html#out">out</a></span> - Variable in class org.apache.hadoop.hbase.mapreduce.<a href="./org/apache/hadoop/hbase/mapreduce/MutationSerialization.MutationSerializer.html" title="class in org.apache.hadoop.hbase.mapreduce">MutationSerialization.MutationSerializer</a></dt>
@@ -58918,6 +58941,10 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/exceptions/OutOfOrderScannerNextException.html#OutOfOrderScannerNextException(java.lang.String)">OutOfOrderScannerNextException(String)</a></span> - Constructor for exception org.apache.hadoop.hbase.exceptions.<a href="./org/apache/hadoop/hbase/exceptions/OutOfOrderScannerNextException.html" title="class in org.apache.hadoop.hbase.exceptions">OutOfOrderScannerNextException</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html#output">output</a></span> - Variable in class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.SimpleReporter.Builder</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html#output">output</a></span> - Variable in class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.SimpleReporter</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/wal/ProtobufLogWriter.html#output">output</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.wal.<a href="./org/apache/hadoop/hbase/regionserver/wal/ProtobufLogWriter.html" title="class in org.apache.hadoop.hbase.regionserver.wal">ProtobufLogWriter</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html#OUTPUT_CONF_PREFIX">OUTPUT_CONF_PREFIX</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="./org/apache/hadoop/hbase/mapreduce/TableOutputFormat.html" title="class in org.apache.hadoop.hbase.mapreduce">TableOutputFormat</a></dt>
@@ -58966,6 +58993,10 @@ service.</div>
 <dd>
 <div class="block">Create a <code>CodedOutputStream</code> from a <a href="./org/apache/hadoop/hbase/util/PositionedByteRange.html" title="interface in org.apache.hadoop.hbase.util"><code>PositionedByteRange</code></a>.</div>
 </dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html#outputTo(java.io.PrintStream)">outputTo(PrintStream)</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.SimpleReporter.Builder</a></dt>
+<dd>
+<div class="block">Write to the given <a href="http://docs.oracle.com/javase/7/docs/api/java/io/PrintStream.html?is-external=true" title="class or interface in java.io"><code>PrintStream</code></a>.</div>
+</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/wal/WALPrettyPrinter.html#outputValues">outputValues</a></span> - Variable in class org.apache.hadoop.hbase.wal.<a href="./org/apache/hadoop/hbase/wal/WALPrettyPrinter.html" title="class in org.apache.hadoop.hbase.wal">WALPrettyPrinter</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/ScannerCallableWithReplicas.html#outstandingCallables">outstandingCallables</a></span> - Variable in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/ScannerCallableWithReplicas.html" title="class in org.apache.hadoop.hbase.client">ScannerCallableWithReplicas</a></dt>
@@ -59828,6 +59859,8 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#periodicRoll()">periodicRoll()</a></span> - Method in class org.apache.hadoop.hbase.procedure2.store.wal.<a href="./org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#periodicRollForTesting()">periodicRollForTesting()</a></span> - Method in class org.apache.hadoop.hbase.procedure2.store.wal.<a href="./org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#periodicRollMsec">periodicRollMsec</a></span> - Variable in class org.apache.hadoop.hbase.procedure2.store.wal.<a href="./org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/replication/regionserver/HFileReplicator.html#PERM_ALL_ACCESS">PERM_ALL_ACCESS</a></span> - Static variable in class org.apache.hadoop.hbase.replication.regionserver.<a href="./org/apache/hadoop/hbase/replication/regionserver/HFileReplicator.html" title="class in org.apache.hadoop.hbase.replication.regionserver">HFileReplicator</a></dt>
@@ -63475,6 +63508,8 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/wal/Compressor.html#printHelp()">printHelp()</a></span> - Static method in class org.apache.hadoop.hbase.regionserver.wal.<a href="./org/apache/hadoop/hbase/regionserver/wal/Compressor.html" title="class in org.apache.hadoop.hbase.regionserver.wal">Compressor</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html#printHistogram(com.codahale.metrics.Histogram)">printHistogram(Histogram)</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.SimpleReporter</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/master/AssignmentVerificationReport.html#printHServerAddressSet(java.util.Set)">printHServerAddressSet(Set&lt;ServerName&gt;)</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="./org/apache/hadoop/hbase/master/AssignmentVerificationReport.html" title="class in org.apache.hadoop.hbase.master">AssignmentVerificationReport</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/snapshot/SnapshotInfo.html#printInfo()">printInfo()</a></span> - Method in class org.apache.hadoop.hbase.snapshot.<a href="./org/apache/hadoop/hbase/snapshot/SnapshotInfo.html" title="class in org.apache.hadoop.hbase.snapshot">SnapshotInfo</a></dt>
@@ -64093,8 +64128,6 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.HFileScannerImpl.html#processFirstDataBlock()">processFirstDataBlock()</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.HFileScannerImpl.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileReaderImpl.HFileScannerImpl</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html#processHistogram(com.yammer.metrics.core.MetricName,%20com.yammer.metrics.core.Histogram,%20java.io.PrintStream)">processHistogram(MetricName, Histogram, PrintStream)</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.SimpleReporter</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/master/DeadServer.html#processing">processing</a></span> - Variable in class org.apache.hadoop.hbase.master.<a href="./org/apache/hadoop/hbase/master/DeadServer.html" title="class in org.apache.hadoop.hbase.master">DeadServer</a></dt>
 <dd>
 <div class="block">Whether a dead server is being processed currently.</div>
@@ -64373,7 +64406,7 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/master/TableLockManager.ZKTableLockManager.TableLockImpl.html#purpose">purpose</a></span> - Variable in class org.apache.hadoop.hbase.master.<a href="./org/apache/hadoop/hbase/master/TableLockManager.ZKTableLockManager.TableLockImpl.html" title="class in org.apache.hadoop.hbase.master">TableLockManager.ZKTableLockManager.TableLockImpl</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#pushData(org.apache.hadoop.hbase.procedure2.util.ByteSlot)">pushData(ByteSlot)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.store.wal.<a href="./org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore</a></dt>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#pushData(org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore.PushType,%20org.apache.hadoop.hbase.procedure2.util.ByteSlot,%20long,%20long[])">pushData(WALProcedureStore.PushType, ByteSlot, long, long[])</a></span> - Method in class org.apache.hadoop.hbase.procedure2.store.wal.<a href="./org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/HTable.html#put(org.apache.hadoop.hbase.client.Put)">put(Put)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/HTable.html" title="class in org.apache.hadoop.hbase.client">HTable</a></dt>
 <dd>
@@ -65556,6 +65589,8 @@ service.</div>
 </dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/quotas/RateLimiter.html#RateLimiter()">RateLimiter()</a></span> - Constructor for class org.apache.hadoop.hbase.quotas.<a href="./org/apache/hadoop/hbase/quotas/RateLimiter.html" title="class in org.apache.hadoop.hbase.quotas">RateLimiter</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html#rateUnit">rateUnit</a></span> - Variable in class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.SimpleReporter.Builder</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/replication/regionserver/ReplicationSinkManager.html#ratio">ratio</a></span> - Variable in class org.apache.hadoop.hbase.replication.regionserver.<a href="./org/apache/hadoop/hbase/replication/regionserver/ReplicationSinkManager.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSinkManager</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="./org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.html" title="class in org.apache.hadoop.hbase.regionserver.compactions"><span class="strong">RatioBasedCompactionPolicy</span></a> - Class in <a href="./org/apache/hadoop/hbase/regionserver/compactions/package-summary.html">org.apache.hadoop.hbase.regionserver.compactions</a></dt>
@@ -68362,6 +68397,8 @@ service.</div>
 <dd>
 <div class="block">Cluster registry.</div>
 </dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html#registry">registry</a></span> - Variable in class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.SimpleReporter.Builder</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/MetricsRegionSourceImpl.html#registry">registry</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/MetricsRegionSourceImpl.html" title="class in org.apache.hadoop.hbase.regionserver">MetricsRegionSourceImpl</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/RegistryFactory.html#REGISTRY_IMPL_CONF_KEY">REGISTRY_IMPL_CONF_KEY</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/RegistryFactory.html" title="class in org.apache.hadoop.hbase.client">RegistryFactory</a></dt>
@@ -69996,6 +70033,8 @@ service.</div>
 </dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.ReplicationSourceWorkerThread.html#repLogReader">repLogReader</a></span> - Variable in class org.apache.hadoop.hbase.replication.regionserver.<a href="./org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.ReplicationSourceWorkerThread.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSource.ReplicationSourceWorkerThread</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html#report(java.util.SortedMap,%20java.util.SortedMap,%20java.util.SortedMap,%20java.util.SortedMap,%20java.util.SortedMap)">report(SortedMap&lt;String, Gauge&gt;, SortedMap&lt;String, Counter&gt;, SortedMap&lt;String, Histogram&gt;, SortedMap&lt;String, Meter&gt;, SortedMap&lt;String, Timer&gt;)</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.SimpleReporter</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/util/HBaseFsck.ErrorReporter.html#report(java.lang.String)">report(String)</a></span> - Method in interface org.apache.hadoop.hbase.util.<a href="./org/apache/hadoop/hbase/util/HBaseFsck.ErrorReporter.html" title="interface in org.apache.hadoop.hbase.util">HBaseFsck.ErrorReporter</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/util/HBaseFsck.PrintingErrorReporter.html#report(java.lang.String)">report(String)</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="./org/apache/hadoop/hbase/util/HBaseFsck.PrintingErrorReporter.html" title="class in org.apache.hadoop.hbase.util">HBaseFsck.PrintingErrorReporter</a></dt>
@@ -70387,6 +70426,8 @@ service.</div>
 </dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/ipc/RpcServer.html#reservoir">reservoir</a></span> - Variable in class org.apache.hadoop.hbase.ipc.<a href="./org/apache/hadoop/hbase/ipc/RpcServer.html" title="class in org.apache.hadoop.hbase.ipc">RpcServer</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/metrics2/lib/MutableHistogram.html#reservoir">reservoir</a></span> - Variable in class org.apache.hadoop.metrics2.lib.<a href="./org/apache/hadoop/metrics2/lib/MutableHistogram.html" title="class in org.apache.hadoop.metrics2.lib">MutableHistogram</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/HTableMultiplexer.AtomicAverageCounter.html#reset()">reset()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/HTableMultiplexer.AtomicAverageCounter.html" title="class in org.apache.hadoop.hbase.client">HTableMultiplexer.AtomicAverageCounter</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/codec/prefixtree/encode/column/ColumnSectionWriter.html#reset()">reset()</a></span> - Method in class org.apache.hadoop.hbase.codec.prefixtree.encode.column.<a href="./org/apache/hadoop/hbase/codec/prefixtree/encode/column/ColumnSectionWriter.html" title="class in org.apache.hadoop.hbase.codec.prefixtree.encode.column">ColumnSectionWriter</a></dt>
@@ -71778,6 +71819,8 @@ service.</div>
 <dd>
 <div class="block">Roll the log writer.</div>
 </dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#rollWriterForTesting()">rollWriterForTesting()</a></span> - Method in class org.apache.hadoop.hbase.procedure2.store.wal.<a href="./org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#rollWriterLock">rollWriterLock</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.wal.<a href="./org/apache/hadoop/hbase/regionserver/wal/FSHLog.html" title="class in org.apache.hadoop.hbase.regionserver.wal">FSHLog</a></dt>
 <dd>
 <div class="block">This lock makes sure only one log roll runs at a time.</div>
@@ -72703,8 +72746,6 @@ service.</div>
 <div class="block">Runs the command-line pretty-printer, and returns the desired command
  exit code (zero for success, non-zero for failure).</div>
 </dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html#run()">run()</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.SimpleReporter</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/LruBlockCache.EvictionThread.html#run()">run()</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/LruBlockCache.EvictionThread.html" title="class in org.apache.hadoop.hbase.io.hfile">LruBlockCache.EvictionThread</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/LruBlockCache.StatisticsThread.html#run()">run()</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/LruBlockCache.StatisticsThread.html" title="class in org.apache.hadoop.hbase.io.hfile">LruBlockCache.StatisticsThread</a></dt>
@@ -73081,8 +73122,6 @@ service.</div>
 <div class="block">Check if the two files are equal by looking at the file length,
  and at the checksum (if user has specified the verifyChecksum flag).</div>
 </dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/metrics2/lib/MutableHistogram.html#sample">sample</a></span> - Variable in class org.apache.hadoop.metrics2.lib.<a href="./org/apache/hadoop/metrics2/lib/MutableHistogram.html" title="class in org.apache.hadoop.metrics2.lib">MutableHistogram</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/metrics2/util/MetricSampleQuantiles.html#samples">samples</a></span> - Variable in class org.apache.hadoop.metrics2.util.<a href="./org/apache/hadoop/metrics2/util/MetricSampleQuantiles.html" title="class in org.apache.hadoop.metrics2.util">MetricSampleQuantiles</a></dt>
 <dd>
 <div class="block">Current list of sampled items, maintained in sorted order with error bounds</div>
@@ -74269,6 +74308,8 @@ service.</div>
 <dd>
 <div class="block">Called on stop/abort before closing the cluster connection and meta locator.</div>
 </dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#sendStopSignal()">sendStopSignal()</a></span> - Method in class org.apache.hadoop.hbase.procedure2.store.wal.<a href="./org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#SENT_BYTES_DESC">SENT_BYTES_DESC</a></span> - Static variable in interface org.apache.hadoop.hbase.ipc.<a href="./org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html" title="interface in org.apache.hadoop.hbase.ipc">MetricsHBaseServerSource</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html#SENT_BYTES_NAME">SENT_BYTES_NAME</a></span> - Static variable in interface org.apache.hadoop.hbase.ipc.<a href="./org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.html" title="interface in org.apache.hadoop.hbase.ipc">MetricsHBaseServerSource</a></dt>
@@ -76333,8 +76374,6 @@ service.</div>
 </dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/util/HBaseFsck.html#setIgnorePreCheckPermission(boolean)">setIgnorePreCheckPermission(boolean)</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="./org/apache/hadoop/hbase/util/HBaseFsck.html" title="class in org.apache.hadoop.hbase.util">HBaseFsck</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#setInactiveLogsMaxId(long)">setInactiveLogsMaxId(long)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.store.wal.<a href="./org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReader.html#setIncludesMemstoreTS(boolean)">setIncludesMemstoreTS(boolean)</a></span> - Method in interface org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReader.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileBlock.FSReader</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#setIncludesMemstoreTS(boolean)">setIncludesMemstoreTS(boolean)</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileBlock.FSReaderImpl</a></dt>
@@ -85276,6 +85315,8 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html#timeUnit">timeUnit</a></span> - Variable in class org.apache.hadoop.hbase.util.<a href="./org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.RetryConfig</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html#timeZone">timeZone</a></span> - Variable in class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html" title="class in org.apache.hadoop.hbase.io.hfile">HFilePrettyPrinter.SimpleReporter.Builder</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/ipc/RpcServer.Call.html#tinfo">tinfo</a></span> - Variable in class org.apache.hadoop.hbase.ipc.<a href="./org/apache/hadoop/hbase/ipc/RpcServer.Call.html" title="class in org.apache.hadoop.hbase.ipc">RpcServer.Call</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/util/FSTableDescriptors.html#TMP_DIR">TMP_DIR</a></span> - Static variable in class org.apache.hadoop.hbase.util.<a href="./org/apache/hadoop/hbase/util/FSTableDescriptors.html" title="class in org.apache.hadoop.hbase.util">FSTableDescriptors</a></dt>
@@ -87191,6 +87232,8 @@ service.</div>
 <div class="block">Try to retire the current chunk if it is still
  <code>c</code>.</div>
 </dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#tryRollWriter()">tryRollWriter()</a></span> - Method in class org.apache.hadoop.hbase.procedure2.store.wal.<a href="./org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/AsyncProcess.AsyncRequestFutureImpl.html#trySetResultSimple(int,%20org.apache.hadoop.hbase.client.Row,%20boolean,%20java.lang.Object,%20org.apache.hadoop.hbase.ServerName,%20boolean)">trySetResultSimple(int, Row, boolean, Object, ServerName, boolean)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/AsyncProcess.AsyncRequestFutureImpl.html" title="class in org.apache.hadoop.hbase.client">AsyncProcess.AsyncRequestFutureImpl</a></dt>
 <dd>
 <div class="block">Tries to set the result or error for a particular action as if there were no replica calls.</div>
@@ -87862,8 +87905,6 @@ service.</div>
 </dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#update(long)">update(long)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.store.<a href="./org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker.BitSetNode</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#update(org.apache.hadoop.hbase.procedure2.Procedure)">update(Procedure)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.store.<a href="./org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html" title="class in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#update(long)">update(long)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.store.<a href="./org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html" title="class in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#update(org.apache.hadoop.hbase.procedure2.Procedure)">update(Procedure)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.store.wal.<a href="./org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore</a></dt>
@@ -88544,6 +88585,8 @@ service.</div>
 </dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/HStore.html#updateStorefiles(java.util.List,%20long)">updateStorefiles(List&lt;StoreFile&gt;, long)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#updateStoreTracker(org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore.PushType,%20long,%20long[])">updateStoreTracker(WALProcedureStore.PushType, long, long[])</a></span> - Method in class org.apache.hadoop.hbase.procedure2.store.wal.<a href="./org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/security/access/TableAuthManager.html#updateTableCache(org.apache.hadoop.hbase.TableName,%20com.google.common.collect.ListMultimap)">updateTableCache(TableName, ListMultimap&lt;String, TablePermission&gt;)</a></span> - Method in class org.apache.hadoop.hbase.security.access.<a href="./org/apache/hadoop/hbase/security/access/TableAuthManager.html" title="class in org.apache.hadoop.hbase.security.access">TableAuthManager</a></dt>
 <dd>
 <div class="block">Updates the internal permissions cache for a single table, splitting
@@ -89499,6 +89542,10 @@ service.</div>
 <dd>
 <div class="block">Returns the enum constant of this type with the specified name.</div>
 </dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.PushType.html#valueOf(java.lang.String)">valueOf(String)</a></span> - Static method in enum org.apache.hadoop.hbase.procedure2.store.wal.<a href="./org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.PushType.html" title="enum in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore.PushType</a></dt>
+<dd>
+<div class="block">Returns the enum constant of this type with the specified name.</div>
+</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/quotas/OperationQuota.OperationType.html#valueOf(java.lang.String)">valueOf(String)</a></span> - Static method in enum org.apache.hadoop.hbase.quotas.<a href="./org/apache/hadoop/hbase/quotas/OperationQuota.OperationType.html" title="enum in org.apache.hadoop.hbase.quotas">OperationQuota.OperationType</a></dt>
 <dd>
 <div class="block">Returns the enum constant of this type with the specified name.</div>
@@ -90080,6 +90127,11 @@ the order they are declared.</div>
 <div class="block">Returns an array containing the constants of this enum type, in
 the order they are declared.</div>
 </dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.PushType.html#values()">values()</a></span> - Static method in enum org.apache.hadoop.hbase.procedure2.store.wal.<a href="./org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.PushType.html" title="enum in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore.PushType</a></dt>
+<dd>
+<div class="block">Returns an array containing the constants of this enum type, in
+the order they are declared.</div>
+</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/quotas/OperationQuota.OperationType.html#values()">values()</a></span> - Static method in enum org.apache.hadoop.hbase.quotas.<a href="./org/apache/hadoop/hbase/quotas/OperationQuota.OperationType.html" title="enum in org.apache.hadoop.hbase.quotas">OperationQuota.OperationType</a></dt>
 <dd>
 <div class="block">Returns an array containing the constants of this enum type, in
@@ -91451,6 +91503,10 @@ the order they are declared.</div>
 <dd>&nbsp;</dd>
 <dt><a href="./org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.LeaseRecovery.html" title="interface in org.apache.hadoop.hbase.procedure2.store.wal"><span class="strong">WALProcedureStore.LeaseRecovery</span></a> - Interface in <a href="./org/apache/hadoop/hbase/procedure2/store/wal/package-summary.html">org.apache.hadoop.hbase.procedure2.store.wal</a></dt>
 <dd>&nbsp;</dd>
+<dt><a href="./org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.PushType.html" title="enum in org.apache.hadoop.hbase.procedure2.store.wal"><span class="strong">WALProcedureStore.PushType</span></a> - Enum in <a href="./org/apache/hadoop/hbase/procedure2/store/wal/package-summary.html">org.apache.hadoop.hbase.procedure2.store.wal</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.PushType.html#WALProcedureStore.PushType()">WALProcedureStore.PushType()</a></span> - Constructor for enum org.apache.hadoop.hbase.procedure2.store.wal.<a href="./org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.PushType.html" title="enum in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore.PushType</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="./org/apache/hadoop/hbase/wal/WALProvider.html" title="interface in org.apache.hadoop.hbase.wal"><span class="strong">WALProvider</span></a> - Interface in <a href="./org/apache/hadoop/hbase/wal/package-summary.html">org.apache.hadoop.hbase.wal</a></dt>
 <dd>
 <div class="block">The Write Ahead Log (WAL) stores all durable edits to the HRegion.</div>


[33/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.EnvironmentPriorityComparator.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.EnvironmentPriorityComparator.html b/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.EnvironmentPriorityComparator.html
index 174b98f..c847641 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.EnvironmentPriorityComparator.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.EnvironmentPriorityComparator.html
@@ -111,543 +111,549 @@
 <span class="sourceLineNo">103</span>   */<a name="line.103"></a>
 <span class="sourceLineNo">104</span>  private static Set&lt;String&gt; coprocessorNames =<a name="line.104"></a>
 <span class="sourceLineNo">105</span>      Collections.synchronizedSet(new HashSet&lt;String&gt;());<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public static Set&lt;String&gt; getLoadedCoprocessors() {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      return coprocessorNames;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>  }<a name="line.108"></a>
-<span class="sourceLineNo">109</span><a name="line.109"></a>
-<span class="sourceLineNo">110</span>  /**<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   * Used to create a parameter to the HServerLoad constructor so that<a name="line.111"></a>
-<span class="sourceLineNo">112</span>   * HServerLoad can provide information about the coprocessors loaded by this<a name="line.112"></a>
-<span class="sourceLineNo">113</span>   * regionserver.<a name="line.113"></a>
-<span class="sourceLineNo">114</span>   * (HBASE-4070: Improve region server metrics to report loaded coprocessors<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   * to master).<a name="line.115"></a>
-<span class="sourceLineNo">116</span>   */<a name="line.116"></a>
-<span class="sourceLineNo">117</span>  public Set&lt;String&gt; getCoprocessors() {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    Set&lt;String&gt; returnValue = new TreeSet&lt;String&gt;();<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    for (CoprocessorEnvironment e: coprocessors) {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      returnValue.add(e.getInstance().getClass().getSimpleName());<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    return returnValue;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  }<a name="line.123"></a>
-<span class="sourceLineNo">124</span><a name="line.124"></a>
-<span class="sourceLineNo">125</span>  /**<a name="line.125"></a>
-<span class="sourceLineNo">126</span>   * Load system coprocessors once only. Read the class names from configuration.<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   * Called by constructor.<a name="line.127"></a>
-<span class="sourceLineNo">128</span>   */<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  protected void loadSystemCoprocessors(Configuration conf, String confKey) {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    boolean coprocessorsEnabled = conf.getBoolean(COPROCESSORS_ENABLED_CONF_KEY,<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      DEFAULT_COPROCESSORS_ENABLED);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    if (!coprocessorsEnabled) {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      return;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    }<a name="line.134"></a>
-<span class="sourceLineNo">135</span><a name="line.135"></a>
-<span class="sourceLineNo">136</span>    Class&lt;?&gt; implClass = null;<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>    // load default coprocessors from configure file<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    String[] defaultCPClasses = conf.getStrings(confKey);<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    if (defaultCPClasses == null || defaultCPClasses.length == 0)<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      return;<a name="line.141"></a>
-<span class="sourceLineNo">142</span><a name="line.142"></a>
-<span class="sourceLineNo">143</span>    int priority = Coprocessor.PRIORITY_SYSTEM;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    for (String className : defaultCPClasses) {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      className = className.trim();<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      if (findCoprocessor(className) != null) {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>        // If already loaded will just continue<a name="line.147"></a>
-<span class="sourceLineNo">148</span>        LOG.warn("Attempted duplicate loading of " + className + "; skipped");<a name="line.148"></a>
-<span class="sourceLineNo">149</span>        continue;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      }<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      ClassLoader cl = this.getClass().getClassLoader();<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      Thread.currentThread().setContextClassLoader(cl);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      try {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>        implClass = cl.loadClass(className);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>        // Add coprocessors as we go to guard against case where a coprocessor is specified twice<a name="line.155"></a>
-<span class="sourceLineNo">156</span>        // in the configuration<a name="line.156"></a>
-<span class="sourceLineNo">157</span>        this.coprocessors.add(loadInstance(implClass, Coprocessor.PRIORITY_SYSTEM, conf));<a name="line.157"></a>
-<span class="sourceLineNo">158</span>        LOG.info("System coprocessor " + className + " was loaded " +<a name="line.158"></a>
-<span class="sourceLineNo">159</span>            "successfully with priority (" + priority++ + ").");<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      } catch (Throwable t) {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        // We always abort if system coprocessors cannot be loaded<a name="line.161"></a>
-<span class="sourceLineNo">162</span>        abortServer(className, t);<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>  }<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>   * Load a coprocessor implementation into the host<a name="line.168"></a>
-<span class="sourceLineNo">169</span>   * @param path path to implementation jar<a name="line.169"></a>
-<span class="sourceLineNo">170</span>   * @param className the main class name<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   * @param priority chaining priority<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   * @param conf configuration for coprocessor<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   * @throws java.io.IOException Exception<a name="line.173"></a>
-<span class="sourceLineNo">174</span>   */<a name="line.174"></a>
-<span class="sourceLineNo">175</span>  public E load(Path path, String className, int priority,<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      Configuration conf) throws IOException {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    Class&lt;?&gt; implClass = null;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    LOG.debug("Loading coprocessor class " + className + " with path " +<a name="line.178"></a>
-<span class="sourceLineNo">179</span>        path + " and priority " + priority);<a name="line.179"></a>
-<span class="sourceLineNo">180</span><a name="line.180"></a>
-<span class="sourceLineNo">181</span>    ClassLoader cl = null;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    if (path == null) {<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      try {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>        implClass = getClass().getClassLoader().loadClass(className);<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      } catch (ClassNotFoundException e) {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>        throw new IOException("No jar path specified for " + className);<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      }<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    } else {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      cl = CoprocessorClassLoader.getClassLoader(<a name="line.189"></a>
-<span class="sourceLineNo">190</span>        path, getClass().getClassLoader(), pathPrefix, conf);<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      try {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>        implClass = cl.loadClass(className);<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      } catch (ClassNotFoundException e) {<a name="line.193"></a>
-<span class="sourceLineNo">194</span>        throw new IOException("Cannot load external coprocessor class " + className, e);<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      }<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    }<a name="line.196"></a>
-<span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>    //load custom code for coprocessor<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    Thread currentThread = Thread.currentThread();<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    ClassLoader hostClassLoader = currentThread.getContextClassLoader();<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    try{<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      // switch temporarily to the thread classloader for custom CP<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      currentThread.setContextClassLoader(cl);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      E cpInstance = loadInstance(implClass, priority, conf);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      return cpInstance;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    } finally {<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      // restore the fresh (host) classloader<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      currentThread.setContextClassLoader(hostClassLoader);<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    }<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  }<a name="line.210"></a>
-<span class="sourceLineNo">211</span><a name="line.211"></a>
-<span class="sourceLineNo">212</span>  /**<a name="line.212"></a>
-<span class="sourceLineNo">213</span>   * @param implClass Implementation class<a name="line.213"></a>
-<span class="sourceLineNo">214</span>   * @param priority priority<a name="line.214"></a>
-<span class="sourceLineNo">215</span>   * @param conf configuration<a name="line.215"></a>
-<span class="sourceLineNo">216</span>   * @throws java.io.IOException Exception<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   */<a name="line.217"></a>
-<span class="sourceLineNo">218</span>  public void load(Class&lt;?&gt; implClass, int priority, Configuration conf)<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      throws IOException {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    E env = loadInstance(implClass, priority, conf);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    coprocessors.add(env);<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>  /**<a name="line.224"></a>
-<span class="sourceLineNo">225</span>   * @param implClass Implementation class<a name="line.225"></a>
-<span class="sourceLineNo">226</span>   * @param priority priority<a name="line.226"></a>
-<span class="sourceLineNo">227</span>   * @param conf configuration<a name="line.227"></a>
-<span class="sourceLineNo">228</span>   * @throws java.io.IOException Exception<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   */<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  public E loadInstance(Class&lt;?&gt; implClass, int priority, Configuration conf)<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      throws IOException {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    if (!Coprocessor.class.isAssignableFrom(implClass)) {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      throw new IOException("Configured class " + implClass.getName() + " must implement "<a name="line.233"></a>
-<span class="sourceLineNo">234</span>          + Coprocessor.class.getName() + " interface ");<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    }<a name="line.235"></a>
-<span class="sourceLineNo">236</span><a name="line.236"></a>
-<span class="sourceLineNo">237</span>    // create the instance<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    Coprocessor impl;<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    Object o = null;<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    try {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      o = implClass.newInstance();<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      impl = (Coprocessor)o;<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    } catch (InstantiationException e) {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      throw new IOException(e);<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    } catch (IllegalAccessException e) {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      throw new IOException(e);<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    }<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    // create the environment<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    E env = createEnvironment(implClass, impl, priority, loadSequence.incrementAndGet(), conf);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    if (env instanceof Environment) {<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      ((Environment)env).startup();<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    }<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    // HBASE-4014: maintain list of loaded coprocessors for later crash analysis<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    // if server (master or regionserver) aborts.<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    coprocessorNames.add(implClass.getName());<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    return env;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>  }<a name="line.257"></a>
-<span class="sourceLineNo">258</span><a name="line.258"></a>
-<span class="sourceLineNo">259</span>  /**<a name="line.259"></a>
-<span class="sourceLineNo">260</span>   * Called when a new Coprocessor class is loaded<a name="line.260"></a>
-<span class="sourceLineNo">261</span>   */<a name="line.261"></a>
-<span class="sourceLineNo">262</span>  public abstract E createEnvironment(Class&lt;?&gt; implClass, Coprocessor instance,<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      int priority, int sequence, Configuration conf);<a name="line.263"></a>
-<span class="sourceLineNo">264</span><a name="line.264"></a>
-<span class="sourceLineNo">265</span>  public void shutdown(CoprocessorEnvironment e) {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    if (e instanceof Environment) {<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      if (LOG.isDebugEnabled()) {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>        LOG.debug("Stop coprocessor " + e.getInstance().getClass().getName());<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      }<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      ((Environment)e).shutdown();<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    } else {<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      LOG.warn("Shutdown called on unknown environment: "+<a name="line.272"></a>
-<span class="sourceLineNo">273</span>          e.getClass().getName());<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    }<a name="line.274"></a>
-<span class="sourceLineNo">275</span>  }<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>  /**<a name="line.277"></a>
-<span class="sourceLineNo">278</span>   * Find a coprocessor implementation by class name<a name="line.278"></a>
-<span class="sourceLineNo">279</span>   * @param className the class name<a name="line.279"></a>
-<span class="sourceLineNo">280</span>   * @return the coprocessor, or null if not found<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   */<a name="line.281"></a>
-<span class="sourceLineNo">282</span>  public Coprocessor findCoprocessor(String className) {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    for (E env: coprocessors) {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      if (env.getInstance().getClass().getName().equals(className) ||<a name="line.284"></a>
-<span class="sourceLineNo">285</span>          env.getInstance().getClass().getSimpleName().equals(className)) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>        return env.getInstance();<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>    return null;<a name="line.289"></a>
-<span class="sourceLineNo">290</span>  }<a name="line.290"></a>
-<span class="sourceLineNo">291</span><a name="line.291"></a>
-<span class="sourceLineNo">292</span>  /**<a name="line.292"></a>
-<span class="sourceLineNo">293</span>   * Find list of coprocessors that extend/implement the given class/interface<a name="line.293"></a>
-<span class="sourceLineNo">294</span>   * @param cls the class/interface to look for<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   * @return the list of coprocessors, or null if not found<a name="line.295"></a>
-<span class="sourceLineNo">296</span>   */<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  public &lt;T extends Coprocessor&gt; List&lt;T&gt; findCoprocessors(Class&lt;T&gt; cls) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    ArrayList&lt;T&gt; ret = new ArrayList&lt;T&gt;();<a name="line.298"></a>
-<span class="sourceLineNo">299</span><a name="line.299"></a>
-<span class="sourceLineNo">300</span>    for (E env: coprocessors) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      Coprocessor cp = env.getInstance();<a name="line.301"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>  public static Set&lt;String&gt; getLoadedCoprocessors() {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    synchronized (coprocessorNames) {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      return new HashSet(coprocessorNames);<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    }<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  }<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>  /**<a name="line.113"></a>
+<span class="sourceLineNo">114</span>   * Used to create a parameter to the HServerLoad constructor so that<a name="line.114"></a>
+<span class="sourceLineNo">115</span>   * HServerLoad can provide information about the coprocessors loaded by this<a name="line.115"></a>
+<span class="sourceLineNo">116</span>   * regionserver.<a name="line.116"></a>
+<span class="sourceLineNo">117</span>   * (HBASE-4070: Improve region server metrics to report loaded coprocessors<a name="line.117"></a>
+<span class="sourceLineNo">118</span>   * to master).<a name="line.118"></a>
+<span class="sourceLineNo">119</span>   */<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  public Set&lt;String&gt; getCoprocessors() {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    Set&lt;String&gt; returnValue = new TreeSet&lt;String&gt;();<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    for (CoprocessorEnvironment e: coprocessors) {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      returnValue.add(e.getInstance().getClass().getSimpleName());<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    }<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    return returnValue;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>  }<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>  /**<a name="line.128"></a>
+<span class="sourceLineNo">129</span>   * Load system coprocessors once only. Read the class names from configuration.<a name="line.129"></a>
+<span class="sourceLineNo">130</span>   * Called by constructor.<a name="line.130"></a>
+<span class="sourceLineNo">131</span>   */<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  protected void loadSystemCoprocessors(Configuration conf, String confKey) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    boolean coprocessorsEnabled = conf.getBoolean(COPROCESSORS_ENABLED_CONF_KEY,<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      DEFAULT_COPROCESSORS_ENABLED);<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    if (!coprocessorsEnabled) {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      return;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    }<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>    Class&lt;?&gt; implClass = null;<a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>    // load default coprocessors from configure file<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    String[] defaultCPClasses = conf.getStrings(confKey);<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    if (defaultCPClasses == null || defaultCPClasses.length == 0)<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      return;<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>    int priority = Coprocessor.PRIORITY_SYSTEM;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    for (String className : defaultCPClasses) {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      className = className.trim();<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      if (findCoprocessor(className) != null) {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>        // If already loaded will just continue<a name="line.150"></a>
+<span class="sourceLineNo">151</span>        LOG.warn("Attempted duplicate loading of " + className + "; skipped");<a name="line.151"></a>
+<span class="sourceLineNo">152</span>        continue;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      }<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      ClassLoader cl = this.getClass().getClassLoader();<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      Thread.currentThread().setContextClassLoader(cl);<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      try {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>        implClass = cl.loadClass(className);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>        // Add coprocessors as we go to guard against case where a coprocessor is specified twice<a name="line.158"></a>
+<span class="sourceLineNo">159</span>        // in the configuration<a name="line.159"></a>
+<span class="sourceLineNo">160</span>        this.coprocessors.add(loadInstance(implClass, Coprocessor.PRIORITY_SYSTEM, conf));<a name="line.160"></a>
+<span class="sourceLineNo">161</span>        LOG.info("System coprocessor " + className + " was loaded " +<a name="line.161"></a>
+<span class="sourceLineNo">162</span>            "successfully with priority (" + priority++ + ").");<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      } catch (Throwable t) {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        // We always abort if system coprocessors cannot be loaded<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        abortServer(className, t);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      }<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    }<a name="line.167"></a>
+<span class="sourceLineNo">168</span>  }<a name="line.168"></a>
+<span class="sourceLineNo">169</span><a name="line.169"></a>
+<span class="sourceLineNo">170</span>  /**<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   * Load a coprocessor implementation into the host<a name="line.171"></a>
+<span class="sourceLineNo">172</span>   * @param path path to implementation jar<a name="line.172"></a>
+<span class="sourceLineNo">173</span>   * @param className the main class name<a name="line.173"></a>
+<span class="sourceLineNo">174</span>   * @param priority chaining priority<a name="line.174"></a>
+<span class="sourceLineNo">175</span>   * @param conf configuration for coprocessor<a name="line.175"></a>
+<span class="sourceLineNo">176</span>   * @throws java.io.IOException Exception<a name="line.176"></a>
+<span class="sourceLineNo">177</span>   */<a name="line.177"></a>
+<span class="sourceLineNo">178</span>  public E load(Path path, String className, int priority,<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      Configuration conf) throws IOException {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    Class&lt;?&gt; implClass = null;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    LOG.debug("Loading coprocessor class " + className + " with path " +<a name="line.181"></a>
+<span class="sourceLineNo">182</span>        path + " and priority " + priority);<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span>    ClassLoader cl = null;<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    if (path == null) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      try {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>        implClass = getClass().getClassLoader().loadClass(className);<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      } catch (ClassNotFoundException e) {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>        throw new IOException("No jar path specified for " + className);<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      }<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    } else {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      cl = CoprocessorClassLoader.getClassLoader(<a name="line.192"></a>
+<span class="sourceLineNo">193</span>        path, getClass().getClassLoader(), pathPrefix, conf);<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      try {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>        implClass = cl.loadClass(className);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      } catch (ClassNotFoundException e) {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>        throw new IOException("Cannot load external coprocessor class " + className, e);<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><a name="line.200"></a>
+<span class="sourceLineNo">201</span>    //load custom code for coprocessor<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    Thread currentThread = Thread.currentThread();<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    ClassLoader hostClassLoader = currentThread.getContextClassLoader();<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    try{<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      // switch temporarily to the thread classloader for custom CP<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      currentThread.setContextClassLoader(cl);<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      E cpInstance = loadInstance(implClass, priority, conf);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      return cpInstance;<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    } finally {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      // restore the fresh (host) classloader<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      currentThread.setContextClassLoader(hostClassLoader);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    }<a name="line.212"></a>
+<span class="sourceLineNo">213</span>  }<a name="line.213"></a>
+<span class="sourceLineNo">214</span><a name="line.214"></a>
+<span class="sourceLineNo">215</span>  /**<a name="line.215"></a>
+<span class="sourceLineNo">216</span>   * @param implClass Implementation class<a name="line.216"></a>
+<span class="sourceLineNo">217</span>   * @param priority priority<a name="line.217"></a>
+<span class="sourceLineNo">218</span>   * @param conf configuration<a name="line.218"></a>
+<span class="sourceLineNo">219</span>   * @throws java.io.IOException Exception<a name="line.219"></a>
+<span class="sourceLineNo">220</span>   */<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  public void load(Class&lt;?&gt; implClass, int priority, Configuration conf)<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      throws IOException {<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    E env = loadInstance(implClass, priority, conf);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    coprocessors.add(env);<a name="line.224"></a>
+<span class="sourceLineNo">225</span>  }<a name="line.225"></a>
+<span class="sourceLineNo">226</span><a name="line.226"></a>
+<span class="sourceLineNo">227</span>  /**<a name="line.227"></a>
+<span class="sourceLineNo">228</span>   * @param implClass Implementation class<a name="line.228"></a>
+<span class="sourceLineNo">229</span>   * @param priority priority<a name="line.229"></a>
+<span class="sourceLineNo">230</span>   * @param conf configuration<a name="line.230"></a>
+<span class="sourceLineNo">231</span>   * @throws java.io.IOException Exception<a name="line.231"></a>
+<span class="sourceLineNo">232</span>   */<a name="line.232"></a>
+<span class="sourceLineNo">233</span>  public E loadInstance(Class&lt;?&gt; implClass, int priority, Configuration conf)<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      throws IOException {<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    if (!Coprocessor.class.isAssignableFrom(implClass)) {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      throw new IOException("Configured class " + implClass.getName() + " must implement "<a name="line.236"></a>
+<span class="sourceLineNo">237</span>          + Coprocessor.class.getName() + " interface ");<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>    // create the instance<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    Coprocessor impl;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    Object o = null;<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    try {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      o = implClass.newInstance();<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      impl = (Coprocessor)o;<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    } catch (InstantiationException e) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      throw new IOException(e);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    } catch (IllegalAccessException e) {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      throw new IOException(e);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    }<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    // create the environment<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    E env = createEnvironment(implClass, impl, priority, loadSequence.incrementAndGet(), conf);<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    if (env instanceof Environment) {<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      ((Environment)env).startup();<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    // HBASE-4014: maintain list of loaded coprocessors for later crash analysis<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    // if server (master or regionserver) aborts.<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    coprocessorNames.add(implClass.getName());<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    return env;<a name="line.259"></a>
+<span class="sourceLineNo">260</span>  }<a name="line.260"></a>
+<span class="sourceLineNo">261</span><a name="line.261"></a>
+<span class="sourceLineNo">262</span>  /**<a name="line.262"></a>
+<span class="sourceLineNo">263</span>   * Called when a new Coprocessor class is loaded<a name="line.263"></a>
+<span class="sourceLineNo">264</span>   */<a name="line.264"></a>
+<span class="sourceLineNo">265</span>  public abstract E createEnvironment(Class&lt;?&gt; implClass, Coprocessor instance,<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      int priority, int sequence, Configuration conf);<a name="line.266"></a>
+<span class="sourceLineNo">267</span><a name="line.267"></a>
+<span class="sourceLineNo">268</span>  public void shutdown(CoprocessorEnvironment e) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    if (e instanceof Environment) {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      if (LOG.isDebugEnabled()) {<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        LOG.debug("Stop coprocessor " + e.getInstance().getClass().getName());<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      }<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      ((Environment)e).shutdown();<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    } else {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      LOG.warn("Shutdown called on unknown environment: "+<a name="line.275"></a>
+<span class="sourceLineNo">276</span>          e.getClass().getName());<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    }<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  }<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>  /**<a name="line.280"></a>
+<span class="sourceLineNo">281</span>   * Find a coprocessor implementation by class name<a name="line.281"></a>
+<span class="sourceLineNo">282</span>   * @param className the class name<a name="line.282"></a>
+<span class="sourceLineNo">283</span>   * @return the coprocessor, or null if not found<a name="line.283"></a>
+<span class="sourceLineNo">284</span>   */<a name="line.284"></a>
+<span class="sourceLineNo">285</span>  public Coprocessor findCoprocessor(String className) {<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    for (E env: coprocessors) {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      if (env.getInstance().getClass().getName().equals(className) ||<a name="line.287"></a>
+<span class="sourceLineNo">288</span>          env.getInstance().getClass().getSimpleName().equals(className)) {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>        return env.getInstance();<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      }<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    }<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    return null;<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  }<a name="line.293"></a>
+<span class="sourceLineNo">294</span><a name="line.294"></a>
+<span class="sourceLineNo">295</span>  /**<a name="line.295"></a>
+<span class="sourceLineNo">296</span>   * Find list of coprocessors that extend/implement the given class/interface<a name="line.296"></a>
+<span class="sourceLineNo">297</span>   * @param cls the class/interface to look for<a name="line.297"></a>
+<span class="sourceLineNo">298</span>   * @return the list of coprocessors, or null if not found<a name="line.298"></a>
+<span class="sourceLineNo">299</span>   */<a name="line.299"></a>
+<span class="sourceLineNo">300</span>  public &lt;T extends Coprocessor&gt; List&lt;T&gt; findCoprocessors(Class&lt;T&gt; cls) {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    ArrayList&lt;T&gt; ret = new ArrayList&lt;T&gt;();<a name="line.301"></a>
 <span class="sourceLineNo">302</span><a name="line.302"></a>
-<span class="sourceLineNo">303</span>      if(cp != null) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        if (cls.isAssignableFrom(cp.getClass())) {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>          ret.add((T)cp);<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>    return ret;<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  }<a name="line.310"></a>
-<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span>  /**<a name="line.312"></a>
-<span class="sourceLineNo">313</span>   * Find a coprocessor environment by class name<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   * @param className the class name<a name="line.314"></a>
-<span class="sourceLineNo">315</span>   * @return the coprocessor, or null if not found<a name="line.315"></a>
-<span class="sourceLineNo">316</span>   */<a name="line.316"></a>
-<span class="sourceLineNo">317</span>  public CoprocessorEnvironment findCoprocessorEnvironment(String className) {<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    for (E env: coprocessors) {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      if (env.getInstance().getClass().getName().equals(className) ||<a name="line.319"></a>
-<span class="sourceLineNo">320</span>          env.getInstance().getClass().getSimpleName().equals(className)) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>        return env;<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      }<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    }<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    return null;<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  }<a name="line.325"></a>
-<span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>  /**<a name="line.327"></a>
-<span class="sourceLineNo">328</span>   * Retrieves the set of classloaders used to instantiate Coprocessor classes defined in external<a name="line.328"></a>
-<span class="sourceLineNo">329</span>   * jar files.<a name="line.329"></a>
-<span class="sourceLineNo">330</span>   * @return A set of ClassLoader instances<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   */<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  Set&lt;ClassLoader&gt; getExternalClassLoaders() {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    Set&lt;ClassLoader&gt; externalClassLoaders = new HashSet&lt;ClassLoader&gt;();<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    final ClassLoader systemClassLoader = this.getClass().getClassLoader();<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    for (E env : coprocessors) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>      ClassLoader cl = env.getInstance().getClass().getClassLoader();<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      if (cl != systemClassLoader){<a name="line.337"></a>
-<span class="sourceLineNo">338</span>        //do not include system classloader<a name="line.338"></a>
-<span class="sourceLineNo">339</span>        externalClassLoaders.add(cl);<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      }<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    }<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    return externalClassLoaders;<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  }<a name="line.343"></a>
-<span class="sourceLineNo">344</span><a name="line.344"></a>
-<span class="sourceLineNo">345</span>  /**<a name="line.345"></a>
-<span class="sourceLineNo">346</span>   * Environment priority comparator.<a name="line.346"></a>
-<span class="sourceLineNo">347</span>   * Coprocessors are chained in sorted order.<a name="line.347"></a>
-<span class="sourceLineNo">348</span>   */<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  static class EnvironmentPriorityComparator<a name="line.349"></a>
-<span class="sourceLineNo">350</span>      implements Comparator&lt;CoprocessorEnvironment&gt; {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    public int compare(final CoprocessorEnvironment env1,<a name="line.351"></a>
-<span class="sourceLineNo">352</span>        final CoprocessorEnvironment env2) {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      if (env1.getPriority() &lt; env2.getPriority()) {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>        return -1;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      } else if (env1.getPriority() &gt; env2.getPriority()) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>        return 1;<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      }<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      if (env1.getLoadSequence() &lt; env2.getLoadSequence()) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>        return -1;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      } else if (env1.getLoadSequence() &gt; env2.getLoadSequence()) {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>        return 1;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      }<a name="line.362"></a>
-<span class="sourceLineNo">363</span>      return 0;<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    }<a name="line.364"></a>
-<span class="sourceLineNo">365</span>  }<a name="line.365"></a>
-<span class="sourceLineNo">366</span><a name="line.366"></a>
-<span class="sourceLineNo">367</span>  /**<a name="line.367"></a>
-<span class="sourceLineNo">368</span>   * Encapsulation of the environment of each coprocessor<a name="line.368"></a>
-<span class="sourceLineNo">369</span>   */<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  public static class Environment implements CoprocessorEnvironment {<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span>    /** The coprocessor */<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    public Coprocessor impl;<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    /** Chaining priority */<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    protected int priority = Coprocessor.PRIORITY_USER;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    /** Current coprocessor state */<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    Coprocessor.State state = Coprocessor.State.UNINSTALLED;<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    /** Accounting for tables opened by the coprocessor */<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    protected List&lt;Table&gt; openTables =<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      Collections.synchronizedList(new ArrayList&lt;Table&gt;());<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    private int seq;<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    private Configuration conf;<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    private ClassLoader classLoader;<a name="line.383"></a>
-<span class="sourceLineNo">384</span><a name="line.384"></a>
-<span class="sourceLineNo">385</span>    /**<a name="line.385"></a>
-<span class="sourceLineNo">386</span>     * Constructor<a name="line.386"></a>
-<span class="sourceLineNo">387</span>     * @param impl the coprocessor instance<a name="line.387"></a>
-<span class="sourceLineNo">388</span>     * @param priority chaining priority<a name="line.388"></a>
-<span class="sourceLineNo">389</span>     */<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    public Environment(final Coprocessor impl, final int priority,<a name="line.390"></a>
-<span class="sourceLineNo">391</span>        final int seq, final Configuration conf) {<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      this.impl = impl;<a name="line.392"></a>
-<span class="sourceLineNo">393</span>      this.classLoader = impl.getClass().getClassLoader();<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      this.priority = priority;<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      this.state = Coprocessor.State.INSTALLED;<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      this.seq = seq;<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      this.conf = conf;<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    }<a name="line.398"></a>
-<span class="sourceLineNo">399</span><a name="line.399"></a>
-<span class="sourceLineNo">400</span>    /** Initialize the environment */<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    public void startup() throws IOException {<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      if (state == Coprocessor.State.INSTALLED ||<a name="line.402"></a>
-<span class="sourceLineNo">403</span>          state == Coprocessor.State.STOPPED) {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>        state = Coprocessor.State.STARTING;<a name="line.404"></a>
-<span class="sourceLineNo">405</span>        Thread currentThread = Thread.currentThread();<a name="line.405"></a>
-<span class="sourceLineNo">406</span>        ClassLoader hostClassLoader = currentThread.getContextClassLoader();<a name="line.406"></a>
-<span class="sourceLineNo">407</span>        try {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>          currentThread.setContextClassLoader(this.getClassLoader());<a name="line.408"></a>
-<span class="sourceLineNo">409</span>          impl.start(this);<a name="line.409"></a>
-<span class="sourceLineNo">410</span>          state = Coprocessor.State.ACTIVE;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>        } finally {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>          currentThread.setContextClassLoader(hostClassLoader);<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        }<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      } else {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>        LOG.warn("Not starting coprocessor "+impl.getClass().getName()+<a name="line.415"></a>
-<span class="sourceLineNo">416</span>            " because not inactive (state="+state.toString()+")");<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      }<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    }<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>    /** Clean up the environment */<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    protected void shutdown() {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      if (state == Coprocessor.State.ACTIVE) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>        state = Coprocessor.State.STOPPING;<a name="line.423"></a>
-<span class="sourceLineNo">424</span>        Thread currentThread = Thread.currentThread();<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        ClassLoader hostClassLoader = currentThread.getContextClassLoader();<a name="line.425"></a>
-<span class="sourceLineNo">426</span>        try {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>          currentThread.setContextClassLoader(this.getClassLoader());<a name="line.427"></a>
-<span class="sourceLineNo">428</span>          impl.stop(this);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>          state = Coprocessor.State.STOPPED;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        } catch (IOException ioe) {<a name="line.430"></a>
-<span class="sourceLineNo">431</span>          LOG.error("Error stopping coprocessor "+impl.getClass().getName(), ioe);<a name="line.431"></a>
-<span class="sourceLineNo">432</span>        } finally {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          currentThread.setContextClassLoader(hostClassLoader);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>        }<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      } else {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>        LOG.warn("Not stopping coprocessor "+impl.getClass().getName()+<a name="line.436"></a>
-<span class="sourceLineNo">437</span>            " because not active (state="+state.toString()+")");<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      }<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      // clean up any table references<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      for (Table table: openTables) {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>        try {<a name="line.441"></a>
-<span class="sourceLineNo">442</span>          ((HTableWrapper)table).internalClose();<a name="line.442"></a>
-<span class="sourceLineNo">443</span>        } catch (IOException e) {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>          // nothing can be done here<a name="line.444"></a>
-<span class="sourceLineNo">445</span>          LOG.warn("Failed to close " +<a name="line.445"></a>
-<span class="sourceLineNo">446</span>              table.getName(), e);<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        }<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      }<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    }<a name="line.449"></a>
-<span class="sourceLineNo">450</span><a name="line.450"></a>
-<span class="sourceLineNo">451</span>    @Override<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    public Coprocessor getInstance() {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      return impl;<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
-<span class="sourceLineNo">455</span><a name="line.455"></a>
-<span class="sourceLineNo">456</span>    @Override<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    public ClassLoader getClassLoader() {<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      return classLoader;<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    }<a name="line.459"></a>
-<span class="sourceLineNo">460</span><a name="line.460"></a>
-<span class="sourceLineNo">461</span>    @Override<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    public int getPriority() {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      return priority;<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    }<a name="line.464"></a>
-<span class="sourceLineNo">465</span><a name="line.465"></a>
-<span class="sourceLineNo">466</span>    @Override<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    public int getLoadSequence() {<a name="line.467"></a>
-<span class="sourceLineNo">468</span>      return seq;<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    }<a name="line.469"></a>
-<span class="sourceLineNo">470</span><a name="line.470"></a>
-<span class="sourceLineNo">471</span>    /** @return the coprocessor environment version */<a name="line.471"></a>
+<span class="sourceLineNo">303</span>    for (E env: coprocessors) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      Coprocessor cp = env.getInstance();<a name="line.304"></a>
+<span class="sourceLineNo">305</span><a name="line.305"></a>
+<span class="sourceLineNo">306</span>      if(cp != null) {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>        if (cls.isAssignableFrom(cp.getClass())) {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>          ret.add((T)cp);<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>    return ret;<a name="line.312"></a>
+<span class="sourceLineNo">313</span>  }<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>  /**<a name="line.315"></a>
+<span class="sourceLineNo">316</span>   * Find a coprocessor environment by class name<a name="line.316"></a>
+<span class="sourceLineNo">317</span>   * @param className the class name<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   * @return the coprocessor, or null if not found<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   */<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  public CoprocessorEnvironment findCoprocessorEnvironment(String className) {<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    for (E env: coprocessors) {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      if (env.getInstance().getClass().getName().equals(className) ||<a name="line.322"></a>
+<span class="sourceLineNo">323</span>          env.getInstance().getClass().getSimpleName().equals(className)) {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>        return env;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      }<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    }<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    return null;<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  }<a name="line.328"></a>
+<span class="sourceLineNo">329</span><a name="line.329"></a>
+<span class="sourceLineNo">330</span>  /**<a name="line.330"></a>
+<span class="sourceLineNo">331</span>   * Retrieves the set of classloaders used to instantiate Coprocessor classes defined in external<a name="line.331"></a>
+<span class="sourceLineNo">332</span>   * jar files.<a name="line.332"></a>
+<span class="sourceLineNo">333</span>   * @return A set of ClassLoader instances<a name="line.333"></a>
+<span class="sourceLineNo">334</span>   */<a name="line.334"></a>
+<span class="sourceLineNo">335</span>  Set&lt;ClassLoader&gt; getExternalClassLoaders() {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    Set&lt;ClassLoader&gt; externalClassLoaders = new HashSet&lt;ClassLoader&gt;();<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    final ClassLoader systemClassLoader = this.getClass().getClassLoader();<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    for (E env : coprocessors) {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      ClassLoader cl = env.getInstance().getClass().getClassLoader();<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      if (cl != systemClassLoader){<a name="line.340"></a>
+<span class="sourceLineNo">341</span>        //do not include system classloader<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        externalClassLoaders.add(cl);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>      }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    }<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    return externalClassLoaders;<a name="line.345"></a>
+<span class="sourceLineNo">346</span>  }<a name="line.346"></a>
+<span class="sourceLineNo">347</span><a name="line.347"></a>
+<span class="sourceLineNo">348</span>  /**<a name="line.348"></a>
+<span class="sourceLineNo">349</span>   * Environment priority comparator.<a name="line.349"></a>
+<span class="sourceLineNo">350</span>   * Coprocessors are chained in sorted order.<a name="line.350"></a>
+<span class="sourceLineNo">351</span>   */<a name="line.351"></a>
+<span class="sourceLineNo">352</span>  static class EnvironmentPriorityComparator<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      implements Comparator&lt;CoprocessorEnvironment&gt; {<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    @Override<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    public int compare(final CoprocessorEnvironment env1,<a name="line.355"></a>
+<span class="sourceLineNo">356</span>        final CoprocessorEnvironment env2) {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>      if (env1.getPriority() &lt; env2.getPriority()) {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>        return -1;<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      } else if (env1.getPriority() &gt; env2.getPriority()) {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>        return 1;<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      }<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      if (env1.getLoadSequence() &lt; env2.getLoadSequence()) {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>        return -1;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      } else if (env1.getLoadSequence() &gt; env2.getLoadSequence()) {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>        return 1;<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      }<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      return 0;<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    }<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  }<a name="line.369"></a>
+<span class="sourceLineNo">370</span><a name="line.370"></a>
+<span class="sourceLineNo">371</span>  /**<a name="line.371"></a>
+<span class="sourceLineNo">372</span>   * Encapsulation of the environment of each coprocessor<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   */<a name="line.373"></a>
+<span class="sourceLineNo">374</span>  public static class Environment implements CoprocessorEnvironment {<a name="line.374"></a>
+<span class="sourceLineNo">375</span><a name="line.375"></a>
+<span class="sourceLineNo">376</span>    /** The coprocessor */<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    public Coprocessor impl;<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    /** Chaining priority */<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    protected int priority = Coprocessor.PRIORITY_USER;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    /** Current coprocessor state */<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    Coprocessor.State state = Coprocessor.State.UNINSTALLED;<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    /** Accounting for tables opened by the coprocessor */<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    protected List&lt;Table&gt; openTables =<a name="line.383"></a>
+<span class="sourceLineNo">384</span>      Collections.synchronizedList(new ArrayList&lt;Table&gt;());<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    private int seq;<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    private Configuration conf;<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    private ClassLoader classLoader;<a name="line.387"></a>
+<span class="sourceLineNo">388</span><a name="line.388"></a>
+<span class="sourceLineNo">389</span>    /**<a name="line.389"></a>
+<span class="sourceLineNo">390</span>     * Constructor<a name="line.390"></a>
+<span class="sourceLineNo">391</span>     * @param impl the coprocessor instance<a name="line.391"></a>
+<span class="sourceLineNo">392</span>     * @param priority chaining priority<a name="line.392"></a>
+<span class="sourceLineNo">393</span>     */<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    public Environment(final Coprocessor impl, final int priority,<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        final int seq, final Configuration conf) {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      this.impl = impl;<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      this.classLoader = impl.getClass().getClassLoader();<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      this.priority = priority;<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      this.state = Coprocessor.State.INSTALLED;<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      this.seq = seq;<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      this.conf = conf;<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    }<a name="line.402"></a>
+<span class="sourceLineNo">403</span><a name="line.403"></a>
+<span class="sourceLineNo">404</span>    /** Initialize the environment */<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    public void startup() throws IOException {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      if (state == Coprocessor.State.INSTALLED ||<a name="line.406"></a>
+<span class="sourceLineNo">407</span>          state == Coprocessor.State.STOPPED) {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>        state = Coprocessor.State.STARTING;<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        Thread currentThread = Thread.currentThread();<a name="line.409"></a>
+<span class="sourceLineNo">410</span>        ClassLoader hostClassLoader = currentThread.getContextClassLoader();<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        try {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>          currentThread.setContextClassLoader(this.getClassLoader());<a name="line.412"></a>
+<span class="sourceLineNo">413</span>          impl.start(this);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>          state = Coprocessor.State.ACTIVE;<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        } finally {<a name="line.415"></a>
+<span class="sourceLineNo">416</span>          currentThread.setContextClassLoader(hostClassLoader);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        }<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      } else {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>        LOG.warn("Not starting coprocessor "+impl.getClass().getName()+<a name="line.419"></a>
+<span class="sourceLineNo">420</span>            " because not inactive (state="+state.toString()+")");<a name="line.420"></a>
+<span class="sourceLineNo">421</span>      }<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    }<a name="line.422"></a>
+<span class="sourceLineNo">423</span><a name="line.423"></a>
+<span class="sourceLineNo">424</span>    /** Clean up the environment */<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    protected void shutdown() {<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      if (state == Coprocessor.State.ACTIVE) {<a name="line.426"></a>
+<span class="sourceLineNo">427</span>        state = Coprocessor.State.STOPPING;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>        Thread currentThread = Thread.currentThread();<a name="line.428"></a>
+<span class="sourceLineNo">429</span>        ClassLoader hostClassLoader = currentThread.getContextClassLoader();<a name="line.429"></a>
+<span class="sourceLineNo">430</span>        try {<a name="line.430"></a>
+<span class="sourceLineNo">431</span>          currentThread.setContextClassLoader(this.getClassLoader());<a name="line.431"></a>
+<span class="sourceLineNo">432</span>          impl.stop(this);<a name="line.432"></a>
+<span class="sourceLineNo">433</span>          state = Coprocessor.State.STOPPED;<a name="line.433"></a>
+<span class="sourceLineNo">434</span>        } catch (IOException ioe) {<a name="line.434"></a>
+<span class="sourceLineNo">435</span>          LOG.error("Error stopping coprocessor "+impl.getClass().getName(), ioe);<a name="line.435"></a>
+<span class="sourceLineNo">436</span>        } finally {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>          currentThread.setContextClassLoader(hostClassLoader);<a name="line.437"></a>
+<span class="sourceLineNo">438</span>        }<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      } else {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>        LOG.warn("Not stopping coprocessor "+impl.getClass().getName()+<a name="line.440"></a>
+<span class="sourceLineNo">441</span>            " because not active (state="+state.toString()+")");<a name="line.441"></a>
+<span class="sourceLineNo">442</span>      }<a name="line.442"></a>
+<span class="sourceLineNo">443</span>      synchronized (openTables) {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>        // clean up any table references<a name="line.444"></a>
+<span class="sourceLineNo">445</span>        for (Table table: openTables) {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>          try {<a name="line.446"></a>
+<span class="sourceLineNo">447</span>            ((HTableWrapper)table).internalClose();<a name="line.447"></a>
+<span class="sourceLineNo">448</span>          } catch (IOException e) {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>            // nothing can be done here<a name="line.449"></a>
+<span class="sourceLineNo">450</span>            LOG.warn("Failed to close " +<a name="line.450"></a>
+<span class="sourceLineNo">451</span>                table.getName(), e);<a name="line.451"></a>
+<span class="sourceLineNo">452</span>          }<a name="line.452"></a>
+<span class="sourceLineNo">453</span>        }<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      }<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    }<a name="line.455"></a>
+<span class="sourceLineNo">456</span><a name="line.456"></a>
+<span class="sourceLineNo">457</span>    @Override<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    public Coprocessor getInstance() {<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      return impl;<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    }<a name="line.460"></a>
+<span class="sourceLineNo">461</span><a name="line.461"></a>
+<span class="sourceLineNo">462</span>    @Override<a name="line.462"></a>
+<span class="sourceLineNo">463</span>    public ClassLoader getClassLoader() {<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      return classLoader;<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    }<a name="line.465"></a>
+<span class="sourceLineNo">466</span><a name="line.466"></a>
+<span class="sourceLineNo">467</span>    @Override<a name="line.467"></a>
+<span class="sourceLineNo">468</span>    public int getPriority() {<a name="line.468"></a>
+<span class="sourceLineNo">469</span>      return priority;<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    }<a name="line.470"></a>
+<span class="sourceLineNo">471</span><a name="line.471"></a>
 <span class="sourceLineNo">472</span>    @Override<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    public int getVersion() {<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      return Coprocessor.VERSION;<a name="line.474"></a>
+<span class="sourceLineNo">473</span>    public int getLoadSequence() {<a name="line.473"></a>
+<span class="sourceLineNo">474</span>      return seq;<a name="line.474"></a>
 <span class="sourceLineNo">475</span>    }<a name="line.475"></a>
 <span class="sourceLineNo">476</span><a name="line.476"></a>
-<span class="sourceLineNo">477</span>    /** @return the HBase release */<a name="line.477"></a>
+<span class="sourceLineNo">477</span>    /** @return the coprocessor environment version */<a name="line.477"></a>
 <span class="sourceLineNo">478</span>    @Override<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    public String getHBaseVersion() {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>      return VersionInfo.getVersion();<a name="line.480"></a>
+<span class="sourceLineNo">479</span>    public int getVersion() {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>      return Coprocessor.VERSION;<a name="line.480"></a>
 <span class="sourceLineNo">481</span>    }<a name="line.481"></a>
 <span class="sourceLineNo">482</span><a name="line.482"></a>
-<span class="sourceLineNo">483</span>    @Override<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    public Configuration getConfiguration() {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      return conf;<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    }<a name="line.486"></a>
-<span class="sourceLineNo">487</span><a name="line.487"></a>
-<span class="sourceLineNo">488</span>    /**<a name="line.488"></a>
-<span class="sourceLineNo">489</span>     * Open a table from within the Coprocessor environment<a name="line.489"></a>
-<span class="sourceLineNo">490</span>     * @param tableName the table name<a name="line.490"></a>
-<span class="sourceLineNo">491</span>     * @return an interface for manipulating the table<a name="line.491"></a>
-<span class="sourceLineNo">492</span>     * @exception java.io.IOException Exception<a name="line.492"></a>
-<span class="sourceLineNo">493</span>     */<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    @Override<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    public Table getTable(TableName tableName) throws IOException {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>      return this.getTable(tableName, HTable.getDefaultExecutor(getConfiguration()));<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    }<a name="line.497"></a>
-<span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>    /**<a name="line.499"></a>
-<span class="sourceLineNo">500</span>     * Open a table from within the Coprocessor environment<a name="line.500"></a>
-<span class="sourceLineNo">501</span>     * @param tableName the table name<a name="line.501"></a>
-<span class="sourceLineNo">502</span>     * @return an interface for manipulating the table<a name="line.502"></a>
-<span class="sourceLineNo">503</span>     * @exception java.io.IOException Exception<a name="line.503"></a>
-<span class="sourceLineNo">504</span>     */<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    @Override<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    public Table getTable(TableName tableName, ExecutorService pool) throws IOException {<a name="line.506"></a>
-<span class="sourceLineNo">507</span>      return HTableWrapper.createWrapper(openTables, tableName, this, pool);<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    }<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  }<a name="line.509"></a>
-<span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>  protected void abortServer(final CoprocessorEnvironment environment, final Throwable e) {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    abortServer(environment.getInstance().getClass().getName(), e);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>  }<a name="line.513"></a>
-<span class="sourceLineNo">514</span><a name="line.514"></a>
-<span class="sourceLineNo">515</span>  protected void abortServer(final String coprocessorName, final Throwable e) {<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    String message = "The coprocessor " + coprocessorName + " threw " + e.toString();<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    LOG.error(message, e);<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    if (abortable != null) {<a name="line.518"></a>
-<span class="sourceLineNo">519</span>      abortable.abort(message, e);<a name="line.519"></a>
-<span class="sourceLineNo">520</span>    } else {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>      LOG.warn("No available Abortable, process was not aborted");<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    }<a name="line.522"></a>
-<span class="sourceLineNo">523</span>  }<a name="line.523"></a>
-<span class="sourceLineNo">524</span><a name="line.524"></a>
-<span class="sourceLineNo">525</span>  /**<a name="line.525"></a>
-<span class="sourceLineNo">526</span>   * This is used by coprocessor hooks which are declared to throw IOException<a name="line.526"></a>
-<span class="sourceLineNo">527</span>   * (or its subtypes). For such hooks, we should handle throwable objects<a name="line.527"></a>
-<span class="sourceLineNo">528</span>   * depending on the Throwable's type. Those which are instances of<a name="line.528"></a>
-<span class="sourceLineNo">529</span>   * IOException should be passed on to the client. This is in conformance with<a name="line.529"></a>
-<span class="sourceLineNo">530</span>   * the HBase idiom regarding IOException: that it represents a circumstance<a name="line.530"></a>
-<span class="sourceLineNo">531</span>   * that should be passed along to the client for its own handling. For<a name="line.531"></a>
-<span class="sourceLineNo">532</span>   * example, a coprocessor that implements access controls would throw a<a name="line.532"></a>
-<span class="sourceLineNo">533</span>   * subclass of IOException, such as AccessDeniedException, in its preGet()<a name="line.533"></a>
-<span class="sourceLineNo">534</span>   * method to prevent an unauthorized client's performing a Get on a particular<a name="line.534"></a>
-<span class="sourceLineNo">535</span>   * table.<a name="line.535"></a>
-<span class="sourceLineNo">536</span>   * @param env Coprocessor Environment<a name="line.536"></a>
-<span class="sourceLineNo">537</span>   * @param e Throwable object thrown by coprocessor.<a name="line.537"></a>
-<span class="sourceLineNo">538</span>   * @exception IOException Exception<a name="line.538"></a>
-<span class="sourceLineNo">539</span>   */<a name="line.539"></a>
-<span class="sourceLineNo">540</span>  protected void handleCoprocessorThrowable(final CoprocessorEnvironment env, final Throwable e)<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      throws IOException {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    if (e instanceof IOException) {<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      throw (IOException)e;<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    }<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    // If we got here, e is not an IOException. A loaded coprocessor has a<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    // fatal bug, and the server (master or regionserver) should remove the<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    // faulty coprocessor from its set of active coprocessors. Setting<a name="line.547"></a>
-<span class="sourceLineNo">548</span>    // 'hbase.coprocessor.abortonerror' to true will cause abortServer(),<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    // which may be useful in development and testing environments where<a name="line.549"></a>
-<span class="sourceLineNo">550</span>    // 'failing fast' for error analysis is desired.<a name="line.550"></a>
-<span class="sourceLineNo">551</span>    if (env.getConfiguration().getBoolean(ABORT_ON_ERROR_KEY, DEFAULT_ABORT_ON_ERROR)) {<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      // server is configured to abort.<a name="line.552"></a>
-<span class="sourceLineNo">553</span>      abortServer(env, e);<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    } else {<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      LOG.error("Removing coprocessor '" + env.toString() + "' from " +<a name="line.555"></a>
-<span class="sourceLineNo">556</span>          "environment because it threw:  " + e,e);<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      coprocessors.remove(env);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      try {<a name="line.558"></a>
-<span class="sourceLineNo">559</span>        shutdown(env);<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      } catch (Exception x) {<a name="line.560"></a>
-<span class="sourceLineNo">561</span>        LOG.error("Uncaught exception when shutting down coprocessor '"<a name="line.561"></a>
-<span class="sourceLineNo">562</span>            + env.toString() + "'", x);<a name="line.562"></a>
-<span class="sourceLineNo">563</span>      }<a name="line.563"></a>
-<span class="sourceLineNo">564</span>      throw new DoNotRetryIOException("Coprocessor: '" + env.toString() +<a name="line.564"></a>
-<span class="sourceLineNo">565</span>          "' threw: '" + e + "' and has been removed from the active " +<a name="line.565"></a>
-<span class="sourceLineNo">566</span>          "coprocessor set.", e);<a name="line.566"></a>
-<span class="sourceLineNo">567</span>    }<a name="line.567"></a>
-<span class="sourceLineNo">568</span>  }<a name="line.568"></a>
-<span class="sourceLineNo">569</span><a name="line.569"></a>
-<span class="sourceLineNo">570</span>  /**<a name="line.570"></a>
-<span class="sourceLineNo">571</span>   * Used to gracefully handle fallback to deprecated methods when we<a name="line.571"></a>
-<span class="sourceLineNo">572</span>   * evolve coprocessor APIs.<a name="line.572"></a>
-<span class="sourceLineNo">573</span>   *<a name="line.573"></a>
-<span class="sourceLineNo">574</span>   * When a particular Coprocessor API is updated to change methods, hosts can support fallback<a name="line.574"></a>
-<span class="sourceLineNo">575</span>   * to the deprecated API by using this method to determine if an instance implements the new API.<a name="line.575"></a>
-<span class="sourceLineNo">576</span>   * In the event that said support is partial, then in the face of a runtime issue that prevents<a name="line.576"></a>
-<span class="sourceLineNo">577</span>   * proper operation {@link #legacyWarning(Class, String)} should be used to let operators know.<a name="line.577"></a>
-<span class="sourceLineNo">578</span>   *<a name="line.578"></a>
-<span class="sourceLineNo">579</span>   * For examples of this in action, see the implementation of<a name="line.579"></a>
-<span class="sourceLineNo">580</span>   * &lt;ul&gt;<a name="line.580"></a>
-<span class="sourceLineNo">581</span>   *   &lt;li&gt;{@link org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost}<a name="line.581"></a>
-<span class="sourceLineNo">582</span>   *   &lt;li&gt;{@link org.apache.hadoop.hbase.regionserver.wal.WALCoprocessorHost}<a name="line.582"></a>
-<span class="sourceLineNo">583</span>   * &lt;/ul&gt;<a name="line.583"></a>
+<span class="sourceLineNo">483</span>    /** @return the HBase release */<a name="line.483"></a>
+<span class="sourceLineNo">484</span>    @Override<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    public String getHBaseVersion() {<a name="line.485"></a>
+<span class="sourceLineNo">486</span>      return VersionInfo.getVersion();<a name="line.486"></a>
+<span class="sourceLineNo">487</span>    }<a name="line.487"></a>
+<span class="sourceLineNo">488</span><a name="line.488"></a>
+<span class="sourceLineNo">489</span>    @Override<a name="line.489"></a>
+<span class="sourceLineNo">490</span>    public Configuration getConfiguration() {<a name="line.490"></a>
+<span class="sourceLineNo">491</span>      return conf;<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    }<a name="line.492"></a>
+<span class="sourceLineNo">493</span><a name="line.493"></a>
+<span class="sourceLineNo">494</span>    /**<a name="line.494"></a>
+<span class="sourceLineNo">495</span>     * Open a table from within the Coprocessor environment<a name="line.495"></a>
+<span class="sourceLineNo">496</span>     * @param tableName the table name<a name="line.496"></a>
+<span class="sourceLineNo">497</span>     * @return an interface for manipulating the table<a name="line.497"></a>
+<span class="sourceLineNo">498</span>     * @exception java.io.IOException Exception<a name="line.498"></a>
+<span class="sourceLineNo">499</span>     */<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    @Override<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    public Table getTable(TableName tableName) throws IOException {<a name="line.501"></a>
+<span class="sourceLineNo">502</span>      return this.getTable(tableName, HTable.getDefaultExecutor(getConfiguration()));<a name="line.502"></a>
+<span class="sourceLineNo">503</span>    }<a name="line.503"></a>
+<span class="sourceLineNo">504</span><a name="line.504"></a>
+<span class="sourceLineNo">505</span>    /**<a name="line.505"></a>
+<span class="sourceLineNo">506</span>     * Open a table from within the Coprocessor environment<a name="line.506"></a>
+<span class="sourceLineNo">507</span>     * @param tableName the table name<a name="line.507"></a>
+<span class="sourceLineNo">508</span>     * @return an interface for manipulating the table<a name="line.508"></a>
+<span class="sourceLineNo">509</span>     * @exception java.io.IOException Exception<a name="line.509"></a>
+<span class="sourceLineNo">510</span>     */<a name="line.510"></a>
+<span class="sourceLineNo">511</span>    @Override<a name="line.511"></a>
+<span class="sourceLineNo">512</span>    public Table getTable(TableName tableName, ExecutorService pool) throws IOException {<a name="line.512"></a>
+<span class="sourceLineNo">513</span>      return HTableWrapper.createWrapper(openTables, tableName, this, pool);<a name="line.513"></a>
+<span class="sourceLineNo">514</span>    }<a name="line.514"></a>
+<span class="sourceLineNo">515</span>  }<a name="line.515"></a>
+<span class="sourceLineNo">516</span><a name="line.516"></a>
+<span class="sourceLineNo">517</span>  protected void abortServer(final CoprocessorEnvironment environment, final Throwable e) {<a name="line.517"></a>
+<span class="sourceLineNo">518</span>    abortServer(environment.getInstance().getClass().getName(), e);<a name="line.518"></a>
+<span class="sourceLineNo">519</span>  }<a name="line.519"></a>
+<span class="sourceLineNo">520</span><a name="line.520"></a>
+<span class="sourceLineNo">521</span>  protected void abortServer(final String coprocessorName, final Throwable e) {<a name="line.521"></a>
+<span class="sourceLineNo">522</span>    String message = "The coprocessor " + coprocessorName + " threw " + e.toString();<a name="line.522"></a>
+<span class="sourceLineNo">523</span>    LOG.error(message, e);<a name="line.523"></a>
+<span class="sourceLineNo">524</span>    if (abortable != null) {<a name="line.524"></a>
+<span class="sourceLineNo">525</span>      abortable.abort(message, e);<a name="line.525"></a>
+<span class="sourceLineNo">526</span>    } else {<a name="line.526"></a>
+<span class="sourceLineNo">527</span>      LOG.warn("No available Abortable, process was not aborted");<a name="line.527"></a>
+<span class="sourceLineNo">528</span>    }<a name="line.528"></a>
+<span class="sourceLineNo">529</span>  }<a name="line.529"></a>
+<span class="sourceLineNo">530</span><a name="line.530"></a>
+<span class="sourceLineNo">531</span>  /**<a name="line.531"></a>
+<span class="sourceLineNo">532</span>   * This is used by coprocessor hooks which are declared to throw IOException<a name="line.532"></a>
+<span class="sourceLineNo">533</span>   * (or its subtypes). For such hooks, we should handle throwable objects<a name="line.533"></a>
+<span class="sourceLineNo">534</span>   * depending on the Throwable's type. Those which are instances of<a name="line.534"></a>
+<span class="sourceLineNo">535</span>   * IOException should be passed on to the client. This is in conformance with<a name="line.535"></a>
+<span class="sourceLineNo">536</span>   * the HBase idiom regarding IOException: that it represents a circumstance<a name="line.536"></a>
+<span class="sourceLineNo">537</span>   * that should be passed along to the client for its own handling. For<a name="line.537"></a>
+<span class="sourceLineNo">538</span>   * example, a coprocessor that implements access controls would throw a<a name="line.538"></a>
+<span class="sourceLineNo">539</span>   * subclass of IOException, such as AccessDeniedException, in its preGet()<a name="line.539"></a>
+<span class="sourceLineNo">540</span>   * method to prevent an unauthorized client's performing a Get on a particular<a name="line.540"></a>
+<span class="sourceLineNo">541</span>   * table.<a name="line.541"></a>
+<span class="sourceLineNo">542</span>   * @param env Coprocessor Environment<a name="line.542"></a>
+<span class="sourceLineNo">543</span>   * @param e Throwable object thrown by coprocessor.<a name="line.543"></a>
+<span class="sourceLineNo">544</span>   * @exception IOException Exception<a name="line.544"></a>
+<span class="sourceLineNo">545</span>   */<a name="line.545"></a>
+<span class="sourceLineNo">546</span>  protected void handleCoprocessorThrowable(final CoprocessorEnvironment env, final Throwable e)<a name="line.546"></a>
+<span class="sourceLineNo">547</span>      throws IOException {<a name="line.547"></a>
+<span class="sourceLineNo">548</span>    if (e instanceof IOException) {<a name="line.548"></a>
+<span class="sourceLineNo">549</span>      throw (IOException)e;<a name="line.549"></a>
+<span class="sourceLineNo">550</span>    }<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    // If we got here, e is not an IOException. A loaded coprocessor has a<a name="line.551"></a>
+<span class="sourceLineNo">552</span>    // fatal bug, and the server (master or regionserver) should remove the<a name="line.552"></a>
+<span class="sourceLineNo">553</span>    // faulty coprocessor from its set of active coprocessors. Setting<a name="line.553"></a>
+<span class="sourceLineNo">554</span>    // 'hbase.coprocessor.abortonerror' to true will cause abortServer(),<a name="line.554"></a>
+<span class="sourceLineNo">555</span>    // which may be useful in development and testing environments where<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    // 'failing fast' for error analysis is desired.<a name="line.556"></a>
+<span class="sourceLineNo">557</span>    if (env.getConfiguration().getBoolean(ABORT_ON_ERROR_K

<TRUNCATED>

[31/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/src-html/org/apache/hadoop/hbase/executor/EventHandler.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/executor/EventHandler.html b/devapidocs/src-html/org/apache/hadoop/hbase/executor/EventHandler.html
index 00d3618..1306e90 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/executor/EventHandler.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/executor/EventHandler.html
@@ -105,95 +105,100 @@
 <span class="sourceLineNo">097</span>    return this;<a name="line.97"></a>
 <span class="sourceLineNo">098</span>  }<a name="line.98"></a>
 <span class="sourceLineNo">099</span><a name="line.99"></a>
-<span class="sourceLineNo">100</span>  public void run() {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    TraceScope chunk = Trace.startSpan(this.getClass().getSimpleName(), parent);<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    try {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      process();<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    } catch(Throwable t) {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>      handleException(t);<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    } finally {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      chunk.close();<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    }<a name="line.108"></a>
-<span class="sourceLineNo">109</span>  }<a name="line.109"></a>
-<span class="sourceLineNo">110</span><a name="line.110"></a>
-<span class="sourceLineNo">111</span>  /**<a name="line.111"></a>
-<span class="sourceLineNo">112</span>   * This method is the main processing loop to be implemented by the various<a name="line.112"></a>
-<span class="sourceLineNo">113</span>   * subclasses.<a name="line.113"></a>
-<span class="sourceLineNo">114</span>   * @throws IOException<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   */<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  public abstract void process() throws IOException;<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>   * Return the event type<a name="line.119"></a>
-<span class="sourceLineNo">120</span>   * @return The event type.<a name="line.120"></a>
-<span class="sourceLineNo">121</span>   */<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  public EventType getEventType() {<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    return this.eventType;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  }<a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>  /**<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   * Get the priority level for this handler instance.  This uses natural<a name="line.127"></a>
-<span class="sourceLineNo">128</span>   * ordering so lower numbers are higher priority.<a name="line.128"></a>
-<span class="sourceLineNo">129</span>   * &lt;p&gt;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>   * Lowest priority is Integer.MAX_VALUE.  Highest priority is 0.<a name="line.130"></a>
-<span class="sourceLineNo">131</span>   * &lt;p&gt;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>   * Subclasses should override this method to allow prioritizing handlers.<a name="line.132"></a>
-<span class="sourceLineNo">133</span>   * &lt;p&gt;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>   * Handlers with the same priority are handled in FIFO order.<a name="line.134"></a>
-<span class="sourceLineNo">135</span>   * &lt;p&gt;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>   * @return Integer.MAX_VALUE by default, override to set higher priorities<a name="line.136"></a>
-<span class="sourceLineNo">137</span>   */<a name="line.137"></a>
-<span class="sourceLineNo">138</span>  public int getPriority() {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    return Integer.MAX_VALUE;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  }<a name="line.140"></a>
-<span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>  /**<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * @return This events' sequence id.<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   */<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  public long getSeqid() {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    return this.seqid;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  }<a name="line.147"></a>
-<span class="sourceLineNo">148</span><a name="line.148"></a>
-<span class="sourceLineNo">149</span>  /**<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   * Default prioritized runnable comparator which implements a FIFO ordering.<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   * &lt;p&gt;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>   * Subclasses should not override this.  Instead, if they want to implement<a name="line.152"></a>
-<span class="sourceLineNo">153</span>   * priority beyond FIFO, they should override {@link #getPriority()}.<a name="line.153"></a>
-<span class="sourceLineNo">154</span>   */<a name="line.154"></a>
-<span class="sourceLineNo">155</span>  @Override<a name="line.155"></a>
-<span class="sourceLineNo">156</span>  public int compareTo(Runnable o) {<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    EventHandler eh = (EventHandler)o;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    if(getPriority() != eh.getPriority()) {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      return (getPriority() &lt; eh.getPriority()) ? -1 : 1;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    }<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    return (this.seqid &lt; eh.seqid) ? -1 : 1;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  }<a name="line.162"></a>
-<span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>  @Override<a name="line.164"></a>
-<span class="sourceLineNo">165</span>  public String toString() {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    return "Event #" + getSeqid() +<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      " of type " + eventType +<a name="line.167"></a>
-<span class="sourceLineNo">168</span>      " (" + getInformativeName() + ")";<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>   * Event implementations should override thie class to provide an<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   * informative name about what event they are handling. For example,<a name="line.173"></a>
-<span class="sourceLineNo">174</span>   * event-specific information such as which region or server is<a name="line.174"></a>
-<span class="sourceLineNo">175</span>   * being processed should be included if possible.<a name="line.175"></a>
-<span class="sourceLineNo">176</span>   */<a name="line.176"></a>
-<span class="sourceLineNo">177</span>  public String getInformativeName() {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    return this.getClass().toString();<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>   * Event exception handler, may be overridden<a name="line.182"></a>
-<span class="sourceLineNo">183</span>   * @param t Throwable object<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   */<a name="line.184"></a>
-<span class="sourceLineNo">185</span>  protected void handleException(Throwable t) {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    LOG.error("Caught throwable while processing event " + eventType, t);<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">100</span>  @Override<a name="line.100"></a>
+<span class="sourceLineNo">101</span>  public void run() {<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    TraceScope chunk = Trace.startSpan(this.getClass().getSimpleName(), parent);<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    try {<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      process();<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    } catch(Throwable t) {<a name="line.105"></a>
+<span class="sourceLineNo">106</span>      handleException(t);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    } finally {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>      chunk.close();<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><a name="line.111"></a>
+<span class="sourceLineNo">112</span>  /**<a name="line.112"></a>
+<span class="sourceLineNo">113</span>   * This method is the main processing loop to be implemented by the various<a name="line.113"></a>
+<span class="sourceLineNo">114</span>   * subclasses.<a name="line.114"></a>
+<span class="sourceLineNo">115</span>   * @throws IOException<a name="line.115"></a>
+<span class="sourceLineNo">116</span>   */<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  public abstract void process() throws IOException;<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>   * Return the event type<a name="line.120"></a>
+<span class="sourceLineNo">121</span>   * @return The event type.<a name="line.121"></a>
+<span class="sourceLineNo">122</span>   */<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  public EventType getEventType() {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    return this.eventType;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  }<a name="line.125"></a>
+<span class="sourceLineNo">126</span><a name="line.126"></a>
+<span class="sourceLineNo">127</span>  /**<a name="line.127"></a>
+<span class="sourceLineNo">128</span>   * Get the priority level for this handler instance.  This uses natural<a name="line.128"></a>
+<span class="sourceLineNo">129</span>   * ordering so lower numbers are higher priority.<a name="line.129"></a>
+<span class="sourceLineNo">130</span>   * &lt;p&gt;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>   * Lowest priority is Integer.MAX_VALUE.  Highest priority is 0.<a name="line.131"></a>
+<span class="sourceLineNo">132</span>   * &lt;p&gt;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>   * Subclasses should override this method to allow prioritizing handlers.<a name="line.133"></a>
+<span class="sourceLineNo">134</span>   * &lt;p&gt;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>   * Handlers with the same priority are handled in FIFO order.<a name="line.135"></a>
+<span class="sourceLineNo">136</span>   * &lt;p&gt;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>   * @return Integer.MAX_VALUE by default, override to set higher priorities<a name="line.137"></a>
+<span class="sourceLineNo">138</span>   */<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  public int getPriority() {<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    return Integer.MAX_VALUE;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>  }<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  /**<a name="line.143"></a>
+<span class="sourceLineNo">144</span>   * @return This events' sequence id.<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   */<a name="line.145"></a>
+<span class="sourceLineNo">146</span>  public long getSeqid() {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    return this.seqid;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  }<a name="line.148"></a>
+<span class="sourceLineNo">149</span><a name="line.149"></a>
+<span class="sourceLineNo">150</span>  /**<a name="line.150"></a>
+<span class="sourceLineNo">151</span>   * Default prioritized runnable comparator which implements a FIFO ordering.<a name="line.151"></a>
+<span class="sourceLineNo">152</span>   * &lt;p&gt;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>   * Subclasses should not override this.  Instead, if they want to implement<a name="line.153"></a>
+<span class="sourceLineNo">154</span>   * priority beyond FIFO, they should override {@link #getPriority()}.<a name="line.154"></a>
+<span class="sourceLineNo">155</span>   */<a name="line.155"></a>
+<span class="sourceLineNo">156</span>  @Override<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  public int compareTo(Runnable o) {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    EventHandler eh = (EventHandler)o;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    if(getPriority() != eh.getPriority()) {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      return (getPriority() &lt; eh.getPriority()) ? -1 : 1;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    }<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    return (this.seqid &lt; eh.seqid) ? -1 : 1;<a name="line.162"></a>
+<span class="sourceLineNo">163</span>  }<a name="line.163"></a>
+<span class="sourceLineNo">164</span><a name="line.164"></a>
+<span class="sourceLineNo">165</span>  @Override<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  public String toString() {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    return "Event #" + getSeqid() +<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      " of type " + eventType +<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      " (" + getInformativeName() + ")";<a name="line.169"></a>
+<span class="sourceLineNo">170</span>  }<a name="line.170"></a>
+<span class="sourceLineNo">171</span><a name="line.171"></a>
+<span class="sourceLineNo">172</span>  /**<a name="line.172"></a>
+<span class="sourceLineNo">173</span>   * Event implementations should override thie class to provide an<a name="line.173"></a>
+<span class="sourceLineNo">174</span>   * informative name about what event they are handling. For example,<a name="line.174"></a>
+<span class="sourceLineNo">175</span>   * event-specific information such as which region or server is<a name="line.175"></a>
+<span class="sourceLineNo">176</span>   * being processed should be included if possible.<a name="line.176"></a>
+<span class="sourceLineNo">177</span>   */<a name="line.177"></a>
+<span class="sourceLineNo">178</span>  public String getInformativeName() {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    return this.getClass().toString();<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>  /**<a name="line.182"></a>
+<span class="sourceLineNo">183</span>   * Event exception handler, may be overridden<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   * @param t Throwable object<a name="line.184"></a>
+<span class="sourceLineNo">185</span>   */<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  protected void handleException(Throwable t) {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    String msg = "Caught throwable while processing event " + eventType;<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    LOG.error(msg, t);<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    if (server != null) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      server.abort(msg, t);<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    }<a name="line.191"></a>
+<span class="sourceLineNo">192</span>  }<a name="line.192"></a>
+<span class="sourceLineNo">193</span>}<a name="line.193"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html
index c8381be..8bdb4c5 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html
@@ -27,8 +27,8 @@
 <span class="sourceLineNo">019</span><a name="line.19"></a>
 <span class="sourceLineNo">020</span>import org.codehaus.jackson.annotate.JsonIgnoreProperties;<a name="line.20"></a>
 <span class="sourceLineNo">021</span><a name="line.21"></a>
-<span class="sourceLineNo">022</span>import com.yammer.metrics.core.Histogram;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import com.yammer.metrics.stats.Snapshot;<a name="line.23"></a>
+<span class="sourceLineNo">022</span>import com.codahale.metrics.Histogram;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import com.codahale.metrics.Snapshot;<a name="line.23"></a>
 <span class="sourceLineNo">024</span><a name="line.24"></a>
 <span class="sourceLineNo">025</span>/**<a name="line.25"></a>
 <span class="sourceLineNo">026</span> * Snapshot of block cache age in cache.<a name="line.26"></a>
@@ -36,50 +36,48 @@
 <span class="sourceLineNo">028</span> */<a name="line.28"></a>
 <span class="sourceLineNo">029</span>@JsonIgnoreProperties({"ageHistogram", "snapshot"})<a name="line.29"></a>
 <span class="sourceLineNo">030</span>public class AgeSnapshot {<a name="line.30"></a>
-<span class="sourceLineNo">031</span>  private final Histogram ageHistogram;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>  private final Snapshot snapshot;<a name="line.32"></a>
-<span class="sourceLineNo">033</span><a name="line.33"></a>
-<span class="sourceLineNo">034</span>  AgeSnapshot(final Histogram ageHistogram) {<a name="line.34"></a>
-<span class="sourceLineNo">035</span>    this.ageHistogram = ageHistogram;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>    this.snapshot = ageHistogram.getSnapshot();<a name="line.36"></a>
-<span class="sourceLineNo">037</span>  }<a name="line.37"></a>
-<span class="sourceLineNo">038</span><a name="line.38"></a>
-<span class="sourceLineNo">039</span>  public double get75thPercentile() {<a name="line.39"></a>
-<span class="sourceLineNo">040</span>    return snapshot.get75thPercentile();<a name="line.40"></a>
-<span class="sourceLineNo">041</span>  }<a name="line.41"></a>
-<span class="sourceLineNo">042</span><a name="line.42"></a>
-<span class="sourceLineNo">043</span>  public double get95thPercentile() {<a name="line.43"></a>
-<span class="sourceLineNo">044</span>    return snapshot.get95thPercentile();<a name="line.44"></a>
-<span class="sourceLineNo">045</span>  }<a name="line.45"></a>
-<span class="sourceLineNo">046</span><a name="line.46"></a>
-<span class="sourceLineNo">047</span>  public double get98thPercentile() {<a name="line.47"></a>
-<span class="sourceLineNo">048</span>    return snapshot.get98thPercentile();<a name="line.48"></a>
-<span class="sourceLineNo">049</span>  }<a name="line.49"></a>
-<span class="sourceLineNo">050</span><a name="line.50"></a>
-<span class="sourceLineNo">051</span>  public double get999thPercentile() {<a name="line.51"></a>
-<span class="sourceLineNo">052</span>    return snapshot.get999thPercentile();<a name="line.52"></a>
-<span class="sourceLineNo">053</span>  }<a name="line.53"></a>
-<span class="sourceLineNo">054</span><a name="line.54"></a>
-<span class="sourceLineNo">055</span>  public double get99thPercentile() {<a name="line.55"></a>
-<span class="sourceLineNo">056</span>    return snapshot.get99thPercentile();<a name="line.56"></a>
-<span class="sourceLineNo">057</span>  }<a name="line.57"></a>
-<span class="sourceLineNo">058</span><a name="line.58"></a>
-<span class="sourceLineNo">059</span>  public double getMean() {<a name="line.59"></a>
-<span class="sourceLineNo">060</span>    return this.ageHistogram.mean();<a name="line.60"></a>
-<span class="sourceLineNo">061</span>  }<a name="line.61"></a>
-<span class="sourceLineNo">062</span><a name="line.62"></a>
-<span class="sourceLineNo">063</span>  public double getMax() {<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    return ageHistogram.max();<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  }<a name="line.65"></a>
-<span class="sourceLineNo">066</span><a name="line.66"></a>
-<span class="sourceLineNo">067</span>  public double getMin() {<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    return ageHistogram.min();<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  }<a name="line.69"></a>
-<span class="sourceLineNo">070</span><a name="line.70"></a>
-<span class="sourceLineNo">071</span>  public double getStdDev() {<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    return ageHistogram.stdDev();<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">031</span>  private final Snapshot snapshot;<a name="line.31"></a>
+<span class="sourceLineNo">032</span><a name="line.32"></a>
+<span class="sourceLineNo">033</span>  AgeSnapshot(final Histogram ageHistogram) {<a name="line.33"></a>
+<span class="sourceLineNo">034</span>    this.snapshot = ageHistogram.getSnapshot();<a name="line.34"></a>
+<span class="sourceLineNo">035</span>  }<a name="line.35"></a>
+<span class="sourceLineNo">036</span><a name="line.36"></a>
+<span class="sourceLineNo">037</span>  public double get75thPercentile() {<a name="line.37"></a>
+<span class="sourceLineNo">038</span>    return snapshot.get75thPercentile();<a name="line.38"></a>
+<span class="sourceLineNo">039</span>  }<a name="line.39"></a>
+<span class="sourceLineNo">040</span><a name="line.40"></a>
+<span class="sourceLineNo">041</span>  public double get95thPercentile() {<a name="line.41"></a>
+<span class="sourceLineNo">042</span>    return snapshot.get95thPercentile();<a name="line.42"></a>
+<span class="sourceLineNo">043</span>  }<a name="line.43"></a>
+<span class="sourceLineNo">044</span><a name="line.44"></a>
+<span class="sourceLineNo">045</span>  public double get98thPercentile() {<a name="line.45"></a>
+<span class="sourceLineNo">046</span>    return snapshot.get98thPercentile();<a name="line.46"></a>
+<span class="sourceLineNo">047</span>  }<a name="line.47"></a>
+<span class="sourceLineNo">048</span><a name="line.48"></a>
+<span class="sourceLineNo">049</span>  public double get999thPercentile() {<a name="line.49"></a>
+<span class="sourceLineNo">050</span>    return snapshot.get999thPercentile();<a name="line.50"></a>
+<span class="sourceLineNo">051</span>  }<a name="line.51"></a>
+<span class="sourceLineNo">052</span><a name="line.52"></a>
+<span class="sourceLineNo">053</span>  public double get99thPercentile() {<a name="line.53"></a>
+<span class="sourceLineNo">054</span>    return snapshot.get99thPercentile();<a name="line.54"></a>
+<span class="sourceLineNo">055</span>  }<a name="line.55"></a>
+<span class="sourceLineNo">056</span><a name="line.56"></a>
+<span class="sourceLineNo">057</span>  public double getMean() {<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    return this.snapshot.getMean();<a name="line.58"></a>
+<span class="sourceLineNo">059</span>  }<a name="line.59"></a>
+<span class="sourceLineNo">060</span><a name="line.60"></a>
+<span class="sourceLineNo">061</span>  public double getMax() {<a name="line.61"></a>
+<span class="sourceLineNo">062</span>    return snapshot.getMax();<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 double getMin() {<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    return snapshot.getMin();<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 double getStdDev() {<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    return snapshot.getStdDev();<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlockCountsPerFile.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlockCountsPerFile.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlockCountsPerFile.html
index 2a5efbf..ae7d613 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlockCountsPerFile.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlockCountsPerFile.html
@@ -39,259 +39,261 @@
 <span class="sourceLineNo">031</span>import org.codehaus.jackson.map.ObjectMapper;<a name="line.31"></a>
 <span class="sourceLineNo">032</span>import org.codehaus.jackson.map.SerializationConfig;<a name="line.32"></a>
 <span class="sourceLineNo">033</span><a name="line.33"></a>
-<span class="sourceLineNo">034</span>import com.yammer.metrics.core.Histogram;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import com.yammer.metrics.core.MetricsRegistry;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import com.yammer.metrics.stats.Snapshot;<a name="line.36"></a>
+<span class="sourceLineNo">034</span>import com.codahale.metrics.Histogram;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import com.codahale.metrics.MetricRegistry;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import com.codahale.metrics.Snapshot;<a name="line.36"></a>
 <span class="sourceLineNo">037</span><a name="line.37"></a>
-<span class="sourceLineNo">038</span>/**<a name="line.38"></a>
-<span class="sourceLineNo">039</span> * Utilty for aggregating counts in CachedBlocks and toString/toJSON CachedBlocks and BlockCaches.<a name="line.39"></a>
-<span class="sourceLineNo">040</span> * No attempt has been made at making this thread safe.<a name="line.40"></a>
-<span class="sourceLineNo">041</span> */<a name="line.41"></a>
-<span class="sourceLineNo">042</span>@InterfaceAudience.Private<a name="line.42"></a>
-<span class="sourceLineNo">043</span>public class BlockCacheUtil {<a name="line.43"></a>
-<span class="sourceLineNo">044</span>  /**<a name="line.44"></a>
-<span class="sourceLineNo">045</span>   * Needed making histograms.<a name="line.45"></a>
-<span class="sourceLineNo">046</span>   */<a name="line.46"></a>
-<span class="sourceLineNo">047</span>  private static final MetricsRegistry METRICS = new MetricsRegistry();<a name="line.47"></a>
-<span class="sourceLineNo">048</span><a name="line.48"></a>
-<span class="sourceLineNo">049</span>  /**<a name="line.49"></a>
-<span class="sourceLineNo">050</span>   * Needed generating JSON.<a name="line.50"></a>
-<span class="sourceLineNo">051</span>   */<a name="line.51"></a>
-<span class="sourceLineNo">052</span>  private static final ObjectMapper MAPPER = new ObjectMapper();<a name="line.52"></a>
-<span class="sourceLineNo">053</span>  static {<a name="line.53"></a>
-<span class="sourceLineNo">054</span>    MAPPER.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, false);<a name="line.54"></a>
-<span class="sourceLineNo">055</span>    MAPPER.configure(SerializationConfig.Feature.FLUSH_AFTER_WRITE_VALUE, true);<a name="line.55"></a>
-<span class="sourceLineNo">056</span>    MAPPER.configure(SerializationConfig.Feature.INDENT_OUTPUT, true);<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>  /**<a name="line.59"></a>
-<span class="sourceLineNo">060</span>   * @param cb<a name="line.60"></a>
-<span class="sourceLineNo">061</span>   * @return The block content as String.<a name="line.61"></a>
-<span class="sourceLineNo">062</span>   */<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  public static String toString(final CachedBlock cb, final long now) {<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    return "filename=" + cb.getFilename() + ", " + toStringMinusFileName(cb, now);<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  }<a name="line.65"></a>
-<span class="sourceLineNo">066</span><a name="line.66"></a>
-<span class="sourceLineNo">067</span>  /**<a name="line.67"></a>
-<span class="sourceLineNo">068</span>   * Little data structure to hold counts for a file.<a name="line.68"></a>
-<span class="sourceLineNo">069</span>   * Used doing a toJSON.<a name="line.69"></a>
-<span class="sourceLineNo">070</span>   */<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  static class CachedBlockCountsPerFile {<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    private int count = 0;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    private long size = 0;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    private int countData = 0;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>    private long sizeData = 0;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>    private final String filename;<a name="line.76"></a>
-<span class="sourceLineNo">077</span><a name="line.77"></a>
-<span class="sourceLineNo">078</span>    CachedBlockCountsPerFile(final String filename) {<a name="line.78"></a>
-<span class="sourceLineNo">079</span>      this.filename = filename;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>    }<a name="line.80"></a>
-<span class="sourceLineNo">081</span><a name="line.81"></a>
-<span class="sourceLineNo">082</span>    public int getCount() {<a name="line.82"></a>
-<span class="sourceLineNo">083</span>      return count;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    }<a name="line.84"></a>
-<span class="sourceLineNo">085</span><a name="line.85"></a>
-<span class="sourceLineNo">086</span>    public long getSize() {<a name="line.86"></a>
-<span class="sourceLineNo">087</span>      return size;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    }<a name="line.88"></a>
-<span class="sourceLineNo">089</span><a name="line.89"></a>
-<span class="sourceLineNo">090</span>    public int getCountData() {<a name="line.90"></a>
-<span class="sourceLineNo">091</span>      return countData;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>    }<a name="line.92"></a>
-<span class="sourceLineNo">093</span><a name="line.93"></a>
-<span class="sourceLineNo">094</span>    public long getSizeData() {<a name="line.94"></a>
-<span class="sourceLineNo">095</span>      return sizeData;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    }<a name="line.96"></a>
-<span class="sourceLineNo">097</span><a name="line.97"></a>
-<span class="sourceLineNo">098</span>    public String getFilename() {<a name="line.98"></a>
-<span class="sourceLineNo">099</span>      return filename;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    }<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  }<a name="line.101"></a>
-<span class="sourceLineNo">102</span><a name="line.102"></a>
-<span class="sourceLineNo">103</span>  /**<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * @param filename<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   * @param blocks<a name="line.105"></a>
-<span class="sourceLineNo">106</span>   * @return A JSON String of &lt;code&gt;filename&lt;/code&gt; and counts of &lt;code&gt;blocks&lt;/code&gt;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>   * @throws JsonGenerationException<a name="line.107"></a>
-<span class="sourceLineNo">108</span>   * @throws JsonMappingException<a name="line.108"></a>
-<span class="sourceLineNo">109</span>   * @throws IOException<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   */<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  public static String toJSON(final String filename, final NavigableSet&lt;CachedBlock&gt; blocks)<a name="line.111"></a>
-<span class="sourceLineNo">112</span>  throws JsonGenerationException, JsonMappingException, IOException {<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    CachedBlockCountsPerFile counts = new CachedBlockCountsPerFile(filename);<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    for (CachedBlock cb: blocks) {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      counts.count++;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      counts.size += cb.getSize();<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      BlockType bt = cb.getBlockType();<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      if (bt != null &amp;&amp; bt.isData()) {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>        counts.countData++;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>        counts.sizeData += cb.getSize();<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>    return MAPPER.writeValueAsString(counts);<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  }<a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>  /**<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   * @param cbsbf<a name="line.127"></a>
-<span class="sourceLineNo">128</span>   * @return JSON string of &lt;code&gt;cbsf&lt;/code&gt; aggregated<a name="line.128"></a>
-<span class="sourceLineNo">129</span>   * @throws JsonGenerationException<a name="line.129"></a>
-<span class="sourceLineNo">130</span>   * @throws JsonMappingException<a name="line.130"></a>
-<span class="sourceLineNo">131</span>   * @throws IOException<a name="line.131"></a>
-<span class="sourceLineNo">132</span>   */<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  public static String toJSON(final CachedBlocksByFile cbsbf)<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  throws JsonGenerationException, JsonMappingException, IOException {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    return MAPPER.writeValueAsString(cbsbf);<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  }<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>  /**<a name="line.138"></a>
-<span class="sourceLineNo">139</span>   * @param bc<a name="line.139"></a>
-<span class="sourceLineNo">140</span>   * @return JSON string of &lt;code&gt;bc&lt;/code&gt; content.<a name="line.140"></a>
-<span class="sourceLineNo">141</span>   * @throws JsonGenerationException<a name="line.141"></a>
-<span class="sourceLineNo">142</span>   * @throws JsonMappingException<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * @throws IOException<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   */<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  public static String toJSON(final BlockCache bc)<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  throws JsonGenerationException, JsonMappingException, IOException {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    return MAPPER.writeValueAsString(bc);<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  }<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  /**<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   * @param cb<a name="line.151"></a>
-<span class="sourceLineNo">152</span>   * @return The block content of &lt;code&gt;bc&lt;/code&gt; as a String minus the filename.<a name="line.152"></a>
-<span class="sourceLineNo">153</span>   */<a name="line.153"></a>
-<span class="sourceLineNo">154</span>  public static String toStringMinusFileName(final CachedBlock cb, final long now) {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    return "offset=" + cb.getOffset() +<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      ", size=" + cb.getSize() +<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      ", age=" + (now - cb.getCachedTime()) +<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      ", type=" + cb.getBlockType() +<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      ", priority=" + cb.getBlockPriority();<a name="line.159"></a>
-<span class="sourceLineNo">160</span>  }<a name="line.160"></a>
-<span class="sourceLineNo">161</span><a name="line.161"></a>
-<span class="sourceLineNo">162</span>  /**<a name="line.162"></a>
-<span class="sourceLineNo">163</span>   * Get a {@link CachedBlocksByFile} instance and load it up by iterating content in<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * {@link BlockCache}.<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * @param conf Used to read configurations<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * @param bc Block Cache to iterate.<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   * @return Laoded up instance of CachedBlocksByFile<a name="line.167"></a>
-<span class="sourceLineNo">168</span>   */<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  public static CachedBlocksByFile getLoadedCachedBlocksByFile(final Configuration conf,<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      final BlockCache bc) {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    CachedBlocksByFile cbsbf = new CachedBlocksByFile(conf);<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    for (CachedBlock cb: bc) {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      if (cbsbf.update(cb)) break;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    }<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    return cbsbf;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>  }<a name="line.176"></a>
-<span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span>  /**<a name="line.178"></a>
-<span class="sourceLineNo">179</span>   * Use one of these to keep a running account of cached blocks by file.  Throw it away when done.<a name="line.179"></a>
-<span class="sourceLineNo">180</span>   * This is different than metrics in that it is stats on current state of a cache.<a name="line.180"></a>
-<span class="sourceLineNo">181</span>   * See getLoadedCachedBlocksByFile<a name="line.181"></a>
-<span class="sourceLineNo">182</span>   */<a name="line.182"></a>
-<span class="sourceLineNo">183</span>  @JsonIgnoreProperties({"cachedBlockStatsByFile"})<a name="line.183"></a>
-<span class="sourceLineNo">184</span>  public static class CachedBlocksByFile {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    private int count;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    private int dataBlockCount;<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    private long size;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    private long dataSize;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    private final long now = System.nanoTime();<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    private final int max;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    public static final int DEFAULT_MAX = 100000;<a name="line.191"></a>
-<span class="sourceLineNo">192</span> <a name="line.192"></a>
-<span class="sourceLineNo">193</span>    CachedBlocksByFile() {<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      this(null);<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    }<a name="line.195"></a>
-<span class="sourceLineNo">196</span><a name="line.196"></a>
-<span class="sourceLineNo">197</span>    CachedBlocksByFile(final Configuration c) {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      this.max = c == null? DEFAULT_MAX:<a name="line.198"></a>
-<span class="sourceLineNo">199</span>        c.getInt("hbase.ui.blockcache.by.file.max", DEFAULT_MAX);<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>     * Map by filename. use concurent utils because we want our Map and contained blocks sorted.<a name="line.203"></a>
-<span class="sourceLineNo">204</span>     */<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    private NavigableMap&lt;String, NavigableSet&lt;CachedBlock&gt;&gt; cachedBlockByFile =<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      new ConcurrentSkipListMap&lt;String, NavigableSet&lt;CachedBlock&gt;&gt;();<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    Histogram age = METRICS.newHistogram(CachedBlocksByFile.class, "age");<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>     * @param cb<a name="line.210"></a>
-<span class="sourceLineNo">211</span>     * @return True if full.... if we won't be adding any more.<a name="line.211"></a>
-<span class="sourceLineNo">212</span>     */<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    public boolean update(final CachedBlock cb) {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      if (isFull()) return true;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      NavigableSet&lt;CachedBlock&gt; set = this.cachedBlockByFile.get(cb.getFilename());<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      if (set == null) {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>        set = new ConcurrentSkipListSet&lt;CachedBlock&gt;();<a name="line.217"></a>
-<span class="sourceLineNo">218</span>        this.cachedBlockByFile.put(cb.getFilename(), set);<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      }<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      set.add(cb);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      this.size += cb.getSize();<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      this.count++;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      BlockType bt = cb.getBlockType();<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      if (bt != null &amp;&amp; bt.isData()) {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>        this.dataBlockCount++;<a name="line.225"></a>
-<span class="sourceLineNo">226</span>        this.dataSize += cb.getSize();<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      }<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      long age = this.now - cb.getCachedTime();<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      this.age.update(age);<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>    /**<a name="line.233"></a>
-<span class="sourceLineNo">234</span>     * @return True if full; i.e. there are more items in the cache but we only loaded up<a name="line.234"></a>
-<span class="sourceLineNo">235</span>     * the maximum set in configuration &lt;code&gt;hbase.ui.blockcache.by.file.max&lt;/code&gt;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>     * (Default: DEFAULT_MAX).<a name="line.236"></a>
-<span class="sourceLineNo">237</span>     */<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    public boolean isFull() {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      return this.count &gt;= this.max;<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>    public NavigableMap&lt;String, NavigableSet&lt;CachedBlock&gt;&gt; getCachedBlockStatsByFile() {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      return this.cachedBlockByFile;<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    }<a name="line.244"></a>
-<span class="sourceLineNo">245</span><a name="line.245"></a>
-<span class="sourceLineNo">246</span>    /**<a name="line.246"></a>
-<span class="sourceLineNo">247</span>     * @return count of blocks in the cache<a name="line.247"></a>
-<span class="sourceLineNo">248</span>     */<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    public int getCount() {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      return count;<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    }<a name="line.251"></a>
-<span class="sourceLineNo">252</span><a name="line.252"></a>
-<span class="sourceLineNo">253</span>    public int getDataCount() {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      return dataBlockCount;<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
-<span class="sourceLineNo">256</span><a name="line.256"></a>
-<span class="sourceLineNo">257</span>    /**<a name="line.257"></a>
-<span class="sourceLineNo">258</span>     * @return size of blocks in the cache<a name="line.258"></a>
-<span class="sourceLineNo">259</span>     */<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    public long getSize() {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      return size;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    }<a name="line.262"></a>
-<span class="sourceLineNo">263</span><a name="line.263"></a>
-<span class="sourceLineNo">264</span>    /**<a name="line.264"></a>
-<span class="sourceLineNo">265</span>     * @return Size of data.<a name="line.265"></a>
-<span class="sourceLineNo">266</span>     */<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    public long getDataSize() {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      return dataSize;<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    }<a name="line.269"></a>
-<span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span>    public AgeSnapshot getAgeInCacheSnapshot() {<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      return new AgeSnapshot(this.age);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    }<a name="line.273"></a>
-<span class="sourceLineNo">274</span><a name="line.274"></a>
-<span class="sourceLineNo">275</span>    @Override<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    public String toString() {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      Snapshot snapshot = this.age.getSnapshot();<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      return "count=" + count + ", dataBlockCount=" + this.dataBlockCount + ", size=" + size +<a name="line.278"></a>
-<span class="sourceLineNo">279</span>          ", dataSize=" + getDataSize() +<a name="line.279"></a>
-<span class="sourceLineNo">280</span>          ", mean age=" + this.age.mean() + ", stddev age=" + this.age.stdDev() +<a name="line.280"></a>
-<span class="sourceLineNo">281</span>          ", min age=" + this.age.min() + ", max age=" + this.age.max() +<a name="line.281"></a>
-<span class="sourceLineNo">282</span>          ", 95th percentile age=" + snapshot.get95thPercentile() +<a name="line.282"></a>
-<span class="sourceLineNo">283</span>          ", 99th percentile age=" + snapshot.get99thPercentile();<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    }<a name="line.284"></a>
-<span class="sourceLineNo">285</span>  }<a name="line.285"></a>
-<span class="sourceLineNo">286</span>}<a name="line.286"></a>
+<span class="sourceLineNo">038</span>import static com.codahale.metrics.MetricRegistry.name;<a name="line.38"></a>
+<span class="sourceLineNo">039</span><a name="line.39"></a>
+<span class="sourceLineNo">040</span>/**<a name="line.40"></a>
+<span class="sourceLineNo">041</span> * Utilty for aggregating counts in CachedBlocks and toString/toJSON CachedBlocks and BlockCaches.<a name="line.41"></a>
+<span class="sourceLineNo">042</span> * No attempt has been made at making this thread safe.<a name="line.42"></a>
+<span class="sourceLineNo">043</span> */<a name="line.43"></a>
+<span class="sourceLineNo">044</span>@InterfaceAudience.Private<a name="line.44"></a>
+<span class="sourceLineNo">045</span>public class BlockCacheUtil {<a name="line.45"></a>
+<span class="sourceLineNo">046</span>  /**<a name="line.46"></a>
+<span class="sourceLineNo">047</span>   * Needed making histograms.<a name="line.47"></a>
+<span class="sourceLineNo">048</span>   */<a name="line.48"></a>
+<span class="sourceLineNo">049</span>  private static final MetricRegistry METRICS = new MetricRegistry();<a name="line.49"></a>
+<span class="sourceLineNo">050</span><a name="line.50"></a>
+<span class="sourceLineNo">051</span>  /**<a name="line.51"></a>
+<span class="sourceLineNo">052</span>   * Needed generating JSON.<a name="line.52"></a>
+<span class="sourceLineNo">053</span>   */<a name="line.53"></a>
+<span class="sourceLineNo">054</span>  private static final ObjectMapper MAPPER = new ObjectMapper();<a name="line.54"></a>
+<span class="sourceLineNo">055</span>  static {<a name="line.55"></a>
+<span class="sourceLineNo">056</span>    MAPPER.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, false);<a name="line.56"></a>
+<span class="sourceLineNo">057</span>    MAPPER.configure(SerializationConfig.Feature.FLUSH_AFTER_WRITE_VALUE, true);<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    MAPPER.configure(SerializationConfig.Feature.INDENT_OUTPUT, true);<a name="line.58"></a>
+<span class="sourceLineNo">059</span>  }<a name="line.59"></a>
+<span class="sourceLineNo">060</span><a name="line.60"></a>
+<span class="sourceLineNo">061</span>  /**<a name="line.61"></a>
+<span class="sourceLineNo">062</span>   * @param cb<a name="line.62"></a>
+<span class="sourceLineNo">063</span>   * @return The block content as String.<a name="line.63"></a>
+<span class="sourceLineNo">064</span>   */<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  public static String toString(final CachedBlock cb, final long now) {<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    return "filename=" + cb.getFilename() + ", " + toStringMinusFileName(cb, now);<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>  /**<a name="line.69"></a>
+<span class="sourceLineNo">070</span>   * Little data structure to hold counts for a file.<a name="line.70"></a>
+<span class="sourceLineNo">071</span>   * Used doing a toJSON.<a name="line.71"></a>
+<span class="sourceLineNo">072</span>   */<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  static class CachedBlockCountsPerFile {<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    private int count = 0;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    private long size = 0;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    private int countData = 0;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    private long sizeData = 0;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    private final String filename;<a name="line.78"></a>
+<span class="sourceLineNo">079</span><a name="line.79"></a>
+<span class="sourceLineNo">080</span>    CachedBlockCountsPerFile(final String filename) {<a name="line.80"></a>
+<span class="sourceLineNo">081</span>      this.filename = filename;<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 getCount() {<a name="line.84"></a>
+<span class="sourceLineNo">085</span>      return count;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    }<a name="line.86"></a>
+<span class="sourceLineNo">087</span><a name="line.87"></a>
+<span class="sourceLineNo">088</span>    public long getSize() {<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      return size;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    }<a name="line.90"></a>
+<span class="sourceLineNo">091</span><a name="line.91"></a>
+<span class="sourceLineNo">092</span>    public int getCountData() {<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      return countData;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    }<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span>    public long getSizeData() {<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      return sizeData;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    }<a name="line.98"></a>
+<span class="sourceLineNo">099</span><a name="line.99"></a>
+<span class="sourceLineNo">100</span>    public String getFilename() {<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      return filename;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    }<a name="line.102"></a>
+<span class="sourceLineNo">103</span>  }<a name="line.103"></a>
+<span class="sourceLineNo">104</span><a name="line.104"></a>
+<span class="sourceLineNo">105</span>  /**<a name="line.105"></a>
+<span class="sourceLineNo">106</span>   * @param filename<a name="line.106"></a>
+<span class="sourceLineNo">107</span>   * @param blocks<a name="line.107"></a>
+<span class="sourceLineNo">108</span>   * @return A JSON String of &lt;code&gt;filename&lt;/code&gt; and counts of &lt;code&gt;blocks&lt;/code&gt;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>   * @throws JsonGenerationException<a name="line.109"></a>
+<span class="sourceLineNo">110</span>   * @throws JsonMappingException<a name="line.110"></a>
+<span class="sourceLineNo">111</span>   * @throws IOException<a name="line.111"></a>
+<span class="sourceLineNo">112</span>   */<a name="line.112"></a>
+<span class="sourceLineNo">113</span>  public static String toJSON(final String filename, final NavigableSet&lt;CachedBlock&gt; blocks)<a name="line.113"></a>
+<span class="sourceLineNo">114</span>  throws JsonGenerationException, JsonMappingException, IOException {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    CachedBlockCountsPerFile counts = new CachedBlockCountsPerFile(filename);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    for (CachedBlock cb: blocks) {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      counts.count++;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      counts.size += cb.getSize();<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      BlockType bt = cb.getBlockType();<a name="line.119"></a>
+<span class="sourceLineNo">120</span>      if (bt != null &amp;&amp; bt.isData()) {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>        counts.countData++;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>        counts.sizeData += cb.getSize();<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      }<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    }<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    return MAPPER.writeValueAsString(counts);<a name="line.125"></a>
+<span class="sourceLineNo">126</span>  }<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>  /**<a name="line.128"></a>
+<span class="sourceLineNo">129</span>   * @param cbsbf<a name="line.129"></a>
+<span class="sourceLineNo">130</span>   * @return JSON string of &lt;code&gt;cbsf&lt;/code&gt; aggregated<a name="line.130"></a>
+<span class="sourceLineNo">131</span>   * @throws JsonGenerationException<a name="line.131"></a>
+<span class="sourceLineNo">132</span>   * @throws JsonMappingException<a name="line.132"></a>
+<span class="sourceLineNo">133</span>   * @throws IOException<a name="line.133"></a>
+<span class="sourceLineNo">134</span>   */<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  public static String toJSON(final CachedBlocksByFile cbsbf)<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  throws JsonGenerationException, JsonMappingException, IOException {<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    return MAPPER.writeValueAsString(cbsbf);<a name="line.137"></a>
+<span class="sourceLineNo">138</span>  }<a name="line.138"></a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span>  /**<a name="line.140"></a>
+<span class="sourceLineNo">141</span>   * @param bc<a name="line.141"></a>
+<span class="sourceLineNo">142</span>   * @return JSON string of &lt;code&gt;bc&lt;/code&gt; content.<a name="line.142"></a>
+<span class="sourceLineNo">143</span>   * @throws JsonGenerationException<a name="line.143"></a>
+<span class="sourceLineNo">144</span>   * @throws JsonMappingException<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   * @throws IOException<a name="line.145"></a>
+<span class="sourceLineNo">146</span>   */<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  public static String toJSON(final BlockCache bc)<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  throws JsonGenerationException, JsonMappingException, IOException {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    return MAPPER.writeValueAsString(bc);<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>   * @param cb<a name="line.153"></a>
+<span class="sourceLineNo">154</span>   * @return The block content of &lt;code&gt;bc&lt;/code&gt; as a String minus the filename.<a name="line.154"></a>
+<span class="sourceLineNo">155</span>   */<a name="line.155"></a>
+<span class="sourceLineNo">156</span>  public static String toStringMinusFileName(final CachedBlock cb, final long now) {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    return "offset=" + cb.getOffset() +<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      ", size=" + cb.getSize() +<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      ", age=" + (now - cb.getCachedTime()) +<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      ", type=" + cb.getBlockType() +<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      ", priority=" + cb.getBlockPriority();<a name="line.161"></a>
+<span class="sourceLineNo">162</span>  }<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>  /**<a name="line.164"></a>
+<span class="sourceLineNo">165</span>   * Get a {@link CachedBlocksByFile} instance and load it up by iterating content in<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   * {@link BlockCache}.<a name="line.166"></a>
+<span class="sourceLineNo">167</span>   * @param conf Used to read configurations<a name="line.167"></a>
+<span class="sourceLineNo">168</span>   * @param bc Block Cache to iterate.<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * @return Laoded up instance of CachedBlocksByFile<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   */<a name="line.170"></a>
+<span class="sourceLineNo">171</span>  public static CachedBlocksByFile getLoadedCachedBlocksByFile(final Configuration conf,<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      final BlockCache bc) {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    CachedBlocksByFile cbsbf = new CachedBlocksByFile(conf);<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    for (CachedBlock cb: bc) {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      if (cbsbf.update(cb)) break;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    }<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    return cbsbf;<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>  /**<a name="line.180"></a>
+<span class="sourceLineNo">181</span>   * Use one of these to keep a running account of cached blocks by file.  Throw it away when done.<a name="line.181"></a>
+<span class="sourceLineNo">182</span>   * This is different than metrics in that it is stats on current state of a cache.<a name="line.182"></a>
+<span class="sourceLineNo">183</span>   * See getLoadedCachedBlocksByFile<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   */<a name="line.184"></a>
+<span class="sourceLineNo">185</span>  @JsonIgnoreProperties({"cachedBlockStatsByFile"})<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  public static class CachedBlocksByFile {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    private int count;<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    private int dataBlockCount;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    private long size;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    private long dataSize;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    private final long now = System.nanoTime();<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    private final int max;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    public static final int DEFAULT_MAX = 100000;<a name="line.193"></a>
+<span class="sourceLineNo">194</span><a name="line.194"></a>
+<span class="sourceLineNo">195</span>    CachedBlocksByFile() {<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      this(null);<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>    CachedBlocksByFile(final Configuration c) {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      this.max = c == null? DEFAULT_MAX:<a name="line.200"></a>
+<span class="sourceLineNo">201</span>        c.getInt("hbase.ui.blockcache.by.file.max", DEFAULT_MAX);<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>     * Map by filename. use concurent utils because we want our Map and contained blocks sorted.<a name="line.205"></a>
+<span class="sourceLineNo">206</span>     */<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    private NavigableMap&lt;String, NavigableSet&lt;CachedBlock&gt;&gt; cachedBlockByFile =<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      new ConcurrentSkipListMap&lt;String, NavigableSet&lt;CachedBlock&gt;&gt;();<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    Histogram age = METRICS.histogram(name(CachedBlocksByFile.class, "age"));<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>     * @param cb<a name="line.212"></a>
+<span class="sourceLineNo">213</span>     * @return True if full.... if we won't be adding any more.<a name="line.213"></a>
+<span class="sourceLineNo">214</span>     */<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    public boolean update(final CachedBlock cb) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      if (isFull()) return true;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      NavigableSet&lt;CachedBlock&gt; set = this.cachedBlockByFile.get(cb.getFilename());<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      if (set == null) {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        set = new ConcurrentSkipListSet&lt;CachedBlock&gt;();<a name="line.219"></a>
+<span class="sourceLineNo">220</span>        this.cachedBlockByFile.put(cb.getFilename(), set);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      }<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      set.add(cb);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      this.size += cb.getSize();<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      this.count++;<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      BlockType bt = cb.getBlockType();<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      if (bt != null &amp;&amp; bt.isData()) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        this.dataBlockCount++;<a name="line.227"></a>
+<span class="sourceLineNo">228</span>        this.dataSize += cb.getSize();<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      }<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      long age = this.now - cb.getCachedTime();<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      this.age.update(age);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      return false;<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    }<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span>    /**<a name="line.235"></a>
+<span class="sourceLineNo">236</span>     * @return True if full; i.e. there are more items in the cache but we only loaded up<a name="line.236"></a>
+<span class="sourceLineNo">237</span>     * the maximum set in configuration &lt;code&gt;hbase.ui.blockcache.by.file.max&lt;/code&gt;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>     * (Default: DEFAULT_MAX).<a name="line.238"></a>
+<span class="sourceLineNo">239</span>     */<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    public boolean isFull() {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      return this.count &gt;= this.max;<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>    public NavigableMap&lt;String, NavigableSet&lt;CachedBlock&gt;&gt; getCachedBlockStatsByFile() {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      return this.cachedBlockByFile;<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    }<a name="line.246"></a>
+<span class="sourceLineNo">247</span><a name="line.247"></a>
+<span class="sourceLineNo">248</span>    /**<a name="line.248"></a>
+<span class="sourceLineNo">249</span>     * @return count of blocks in the cache<a name="line.249"></a>
+<span class="sourceLineNo">250</span>     */<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    public int getCount() {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      return count;<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>    public int getDataCount() {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      return dataBlockCount;<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
+<span class="sourceLineNo">258</span><a name="line.258"></a>
+<span class="sourceLineNo">259</span>    /**<a name="line.259"></a>
+<span class="sourceLineNo">260</span>     * @return size of blocks in the cache<a name="line.260"></a>
+<span class="sourceLineNo">261</span>     */<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    public long getSize() {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      return size;<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    }<a name="line.264"></a>
+<span class="sourceLineNo">265</span><a name="line.265"></a>
+<span class="sourceLineNo">266</span>    /**<a name="line.266"></a>
+<span class="sourceLineNo">267</span>     * @return Size of data.<a name="line.267"></a>
+<span class="sourceLineNo">268</span>     */<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    public long getDataSize() {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      return dataSize;<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    }<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>    public AgeSnapshot getAgeInCacheSnapshot() {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      return new AgeSnapshot(this.age);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span>    @Override<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    public String toString() {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      Snapshot snapshot = age.getSnapshot();<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      return "count=" + count + ", dataBlockCount=" + dataBlockCount + ", size=" + size +<a name="line.280"></a>
+<span class="sourceLineNo">281</span>          ", dataSize=" + getDataSize() +<a name="line.281"></a>
+<span class="sourceLineNo">282</span>          ", mean age=" + snapshot.getMean() + ", stddev age=" + snapshot.getStdDev() +<a name="line.282"></a>
+<span class="sourceLineNo">283</span>          ", min age=" + snapshot.getMin() + ", max age=" + snapshot.getMax() +<a name="line.283"></a>
+<span class="sourceLineNo">284</span>          ", 95th percentile age=" + snapshot.get95thPercentile() +<a name="line.284"></a>
+<span class="sourceLineNo">285</span>          ", 99th percentile age=" + snapshot.get99thPercentile();<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    }<a name="line.286"></a>
+<span class="sourceLineNo">287</span>  }<a name="line.287"></a>
+<span class="sourceLineNo">288</span>}<a name="line.288"></a>
 
 
 


[17/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/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 fddb01d..367c0bc 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 = "servers", type = "List&lt;ServerName&gt;"),<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    @org.jamon.annotations.Argument(name = "assignmentManager", type = "AssignmentManager"),<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    @org.jamon.annotations.Argument(name = "deadServers", type = "Set&lt;ServerName&gt;"),<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    @org.jamon.annotations.Argument(name = "metaLocation", type = "ServerName"),<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    @org.jamon.annotations.Argument(name = "serverManager", type = "ServerManager"),<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 = "filter", type = "String"),<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    @org.jamon.annotations.Argument(name = "catalogJanitorEnabled", type = "boolean"),<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    @org.jamon.annotations.Argument(name = "frags", type = "Map&lt;String,Integer&gt;")})<a name="line.70"></a>
+<span class="sourceLineNo">062</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<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 = "assignmentManager", type = "AssignmentManager"),<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    @org.jamon.annotations.Argument(name = "serverManager", type = "ServerManager"),<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 = "catalogJanitorEnabled", type = "boolean"),<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    @org.jamon.annotations.Argument(name = "frags", type = "Map&lt;String,Integer&gt;"),<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 = "format", type = "String")})<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>    // 23, 1<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    public void setServers(List&lt;ServerName&gt; servers)<a name="line.112"></a>
+<span class="sourceLineNo">111</span>    // 26, 1<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    public void setFilter(String filter)<a name="line.112"></a>
 <span class="sourceLineNo">113</span>    {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      // 23, 1<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      m_servers = servers;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      m_servers__IsNotDefault = true;<a name="line.116"></a>
+<span class="sourceLineNo">114</span>      // 26, 1<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      m_filter = filter;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      m_filter__IsNotDefault = true;<a name="line.116"></a>
 <span class="sourceLineNo">117</span>    }<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    public List&lt;ServerName&gt; getServers()<a name="line.118"></a>
+<span class="sourceLineNo">118</span>    public String getFilter()<a name="line.118"></a>
 <span class="sourceLineNo">119</span>    {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      return m_servers;<a name="line.120"></a>
+<span class="sourceLineNo">120</span>      return m_filter;<a name="line.120"></a>
 <span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    private List&lt;ServerName&gt; m_servers;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    public boolean getServers__IsNotDefault()<a name="line.123"></a>
+<span class="sourceLineNo">122</span>    private String m_filter;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    public boolean getFilter__IsNotDefault()<a name="line.123"></a>
 <span class="sourceLineNo">124</span>    {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      return m_servers__IsNotDefault;<a name="line.125"></a>
+<span class="sourceLineNo">125</span>      return m_filter__IsNotDefault;<a name="line.125"></a>
 <span class="sourceLineNo">126</span>    }<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    private boolean m_servers__IsNotDefault;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    // 29, 1<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    public void setAssignmentManager(AssignmentManager assignmentManager)<a name="line.129"></a>
+<span class="sourceLineNo">127</span>    private boolean m_filter__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>      // 29, 1<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      m_assignmentManager = assignmentManager;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      m_assignmentManager__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 AssignmentManager getAssignmentManager()<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_assignmentManager;<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 AssignmentManager m_assignmentManager;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    public boolean getAssignmentManager__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_assignmentManager__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_assignmentManager__IsNotDefault;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    // 24, 1<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    public void setDeadServers(Set&lt;ServerName&gt; deadServers)<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>    // 29, 1<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    public void setAssignmentManager(AssignmentManager assignmentManager)<a name="line.146"></a>
 <span class="sourceLineNo">147</span>    {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      // 24, 1<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      m_deadServers = deadServers;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      m_deadServers__IsNotDefault = true;<a name="line.150"></a>
+<span class="sourceLineNo">148</span>      // 29, 1<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      m_assignmentManager = assignmentManager;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      m_assignmentManager__IsNotDefault = true;<a name="line.150"></a>
 <span class="sourceLineNo">151</span>    }<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    public Set&lt;ServerName&gt; getDeadServers()<a name="line.152"></a>
+<span class="sourceLineNo">152</span>    public AssignmentManager getAssignmentManager()<a name="line.152"></a>
 <span class="sourceLineNo">153</span>    {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      return m_deadServers;<a name="line.154"></a>
+<span class="sourceLineNo">154</span>      return m_assignmentManager;<a name="line.154"></a>
 <span class="sourceLineNo">155</span>    }<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    private Set&lt;ServerName&gt; m_deadServers;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    public boolean getDeadServers__IsNotDefault()<a name="line.157"></a>
+<span class="sourceLineNo">156</span>    private AssignmentManager m_assignmentManager;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    public boolean getAssignmentManager__IsNotDefault()<a name="line.157"></a>
 <span class="sourceLineNo">158</span>    {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      return m_deadServers__IsNotDefault;<a name="line.159"></a>
+<span class="sourceLineNo">159</span>      return m_assignmentManager__IsNotDefault;<a name="line.159"></a>
 <span class="sourceLineNo">160</span>    }<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    private boolean m_deadServers__IsNotDefault;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    // 22, 1<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    public void setMetaLocation(ServerName metaLocation)<a name="line.163"></a>
+<span class="sourceLineNo">161</span>    private boolean m_assignmentManager__IsNotDefault;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    // 28, 1<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    public void setServerManager(ServerManager serverManager)<a name="line.163"></a>
 <span class="sourceLineNo">164</span>    {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      // 22, 1<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      m_metaLocation = metaLocation;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      m_metaLocation__IsNotDefault = true;<a name="line.167"></a>
+<span class="sourceLineNo">165</span>      // 28, 1<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      m_serverManager = serverManager;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      m_serverManager__IsNotDefault = true;<a name="line.167"></a>
 <span class="sourceLineNo">168</span>    }<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    public ServerName getMetaLocation()<a name="line.169"></a>
+<span class="sourceLineNo">169</span>    public ServerManager getServerManager()<a name="line.169"></a>
 <span class="sourceLineNo">170</span>    {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      return m_metaLocation;<a name="line.171"></a>
+<span class="sourceLineNo">171</span>      return m_serverManager;<a name="line.171"></a>
 <span class="sourceLineNo">172</span>    }<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    private ServerName m_metaLocation;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    public boolean getMetaLocation__IsNotDefault()<a name="line.174"></a>
+<span class="sourceLineNo">173</span>    private ServerManager m_serverManager;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    public boolean getServerManager__IsNotDefault()<a name="line.174"></a>
 <span class="sourceLineNo">175</span>    {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      return m_metaLocation__IsNotDefault;<a name="line.176"></a>
+<span class="sourceLineNo">176</span>      return m_serverManager__IsNotDefault;<a name="line.176"></a>
 <span class="sourceLineNo">177</span>    }<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    private boolean m_metaLocation__IsNotDefault;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    // 28, 1<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    public void setServerManager(ServerManager serverManager)<a name="line.180"></a>
+<span class="sourceLineNo">178</span>    private boolean m_serverManager__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>      // 28, 1<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      m_serverManager = serverManager;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      m_serverManager__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 ServerManager getServerManager()<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_serverManager;<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 ServerManager m_serverManager;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    public boolean getServerManager__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_serverManager__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_serverManager__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">195</span>    private boolean m_deadServers__IsNotDefault;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    // 25, 1<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    public void setCatalogJanitorEnabled(boolean catalogJanitorEnabled)<a name="line.197"></a>
 <span class="sourceLineNo">198</span>    {<a name="line.198"></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">199</span>      // 25, 1<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      m_catalogJanitorEnabled = catalogJanitorEnabled;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      m_catalogJanitorEnabled__IsNotDefault = true;<a name="line.201"></a>
 <span class="sourceLineNo">202</span>    }<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    public String getFormat()<a name="line.203"></a>
+<span class="sourceLineNo">203</span>    public boolean getCatalogJanitorEnabled()<a name="line.203"></a>
 <span class="sourceLineNo">204</span>    {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      return m_format;<a name="line.205"></a>
+<span class="sourceLineNo">205</span>      return m_catalogJanitorEnabled;<a name="line.205"></a>
 <span class="sourceLineNo">206</span>    }<a name="line.206"></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">207</span>    private boolean m_catalogJanitorEnabled;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    public boolean getCatalogJanitorEnabled__IsNotDefault()<a name="line.208"></a>
 <span class="sourceLineNo">209</span>    {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      return m_format__IsNotDefault;<a name="line.210"></a>
+<span class="sourceLineNo">210</span>      return m_catalogJanitorEnabled__IsNotDefault;<a name="line.210"></a>
 <span class="sourceLineNo">211</span>    }<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    private boolean m_format__IsNotDefault;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    // 26, 1<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    public void setFilter(String filter)<a name="line.214"></a>
+<span class="sourceLineNo">212</span>    private boolean m_catalogJanitorEnabled__IsNotDefault;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    // 21, 1<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    public void setFrags(Map&lt;String,Integer&gt; frags)<a name="line.214"></a>
 <span class="sourceLineNo">215</span>    {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      // 26, 1<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      m_filter = filter;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      m_filter__IsNotDefault = true;<a name="line.218"></a>
+<span class="sourceLineNo">216</span>      // 21, 1<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      m_frags = frags;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      m_frags__IsNotDefault = true;<a name="line.218"></a>
 <span class="sourceLineNo">219</span>    }<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    public String getFilter()<a name="line.220"></a>
+<span class="sourceLineNo">220</span>    public Map&lt;String,Integer&gt; getFrags()<a name="line.220"></a>
 <span class="sourceLineNo">221</span>    {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      return m_filter;<a name="line.222"></a>
+<span class="sourceLineNo">222</span>      return m_frags;<a name="line.222"></a>
 <span class="sourceLineNo">223</span>    }<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    private String m_filter;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    public boolean getFilter__IsNotDefault()<a name="line.225"></a>
+<span class="sourceLineNo">224</span>    private Map&lt;String,Integer&gt; m_frags;<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    public boolean getFrags__IsNotDefault()<a name="line.225"></a>
 <span class="sourceLineNo">226</span>    {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      return m_filter__IsNotDefault;<a name="line.227"></a>
+<span class="sourceLineNo">227</span>      return m_frags__IsNotDefault;<a name="line.227"></a>
 <span class="sourceLineNo">228</span>    }<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    private boolean m_filter__IsNotDefault;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    // 25, 1<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    public void setCatalogJanitorEnabled(boolean catalogJanitorEnabled)<a name="line.231"></a>
+<span class="sourceLineNo">229</span>    private boolean m_frags__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>      // 25, 1<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      m_catalogJanitorEnabled = catalogJanitorEnabled;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      m_catalogJanitorEnabled__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 boolean getCatalogJanitorEnabled()<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_catalogJanitorEnabled;<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 boolean m_catalogJanitorEnabled;<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    public boolean getCatalogJanitorEnabled__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_catalogJanitorEnabled__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_catalogJanitorEnabled__IsNotDefault;<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    // 21, 1<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    public void setFrags(Map&lt;String,Integer&gt; frags)<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>    // 27, 1<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    public void setFormat(String format)<a name="line.248"></a>
 <span class="sourceLineNo">249</span>    {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      // 21, 1<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      m_frags = frags;<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      m_frags__IsNotDefault = true;<a name="line.252"></a>
+<span class="sourceLineNo">250</span>      // 27, 1<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      m_format = format;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      m_format__IsNotDefault = true;<a name="line.252"></a>
 <span class="sourceLineNo">253</span>    }<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    public Map&lt;String,Integer&gt; getFrags()<a name="line.254"></a>
+<span class="sourceLineNo">254</span>    public String getFormat()<a name="line.254"></a>
 <span class="sourceLineNo">255</span>    {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      return m_frags;<a name="line.256"></a>
+<span class="sourceLineNo">256</span>      return m_format;<a name="line.256"></a>
 <span class="sourceLineNo">257</span>    }<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    private Map&lt;String,Integer&gt; m_frags;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    public boolean getFrags__IsNotDefault()<a name="line.259"></a>
+<span class="sourceLineNo">258</span>    private String m_format;<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    public boolean getFormat__IsNotDefault()<a name="line.259"></a>
 <span class="sourceLineNo">260</span>    {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      return m_frags__IsNotDefault;<a name="line.261"></a>
+<span class="sourceLineNo">261</span>      return m_format__IsNotDefault;<a name="line.261"></a>
 <span class="sourceLineNo">262</span>    }<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    private boolean m_frags__IsNotDefault;<a name="line.263"></a>
+<span class="sourceLineNo">263</span>    private boolean m_format__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 List&lt;ServerName&gt; servers;<a name="line.275"></a>
-<span class="sourceLineNo">276</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServers(List&lt;ServerName&gt; p_servers)<a name="line.276"></a>
+<span class="sourceLineNo">275</span>  protected String filter;<a name="line.275"></a>
+<span class="sourceLineNo">276</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFilter(String p_filter)<a name="line.276"></a>
 <span class="sourceLineNo">277</span>  {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    (getImplData()).setServers(p_servers);<a name="line.278"></a>
+<span class="sourceLineNo">278</span>    (getImplData()).setFilter(p_filter);<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 AssignmentManager assignmentManager;<a name="line.282"></a>
-<span class="sourceLineNo">283</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setAssignmentManager(AssignmentManager p_assignmentManager)<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()).setAssignmentManager(p_assignmentManager);<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 Set&lt;ServerName&gt; deadServers;<a name="line.289"></a>
-<span class="sourceLineNo">290</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setDeadServers(Set&lt;ServerName&gt; p_deadServers)<a name="line.290"></a>
+<span class="sourceLineNo">289</span>  protected AssignmentManager assignmentManager;<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setAssignmentManager(AssignmentManager p_assignmentManager)<a name="line.290"></a>
 <span class="sourceLineNo">291</span>  {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    (getImplData()).setDeadServers(p_deadServers);<a name="line.292"></a>
+<span class="sourceLineNo">292</span>    (getImplData()).setAssignmentManager(p_assignmentManager);<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 ServerName metaLocation;<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setMetaLocation(ServerName p_metaLocation)<a name="line.297"></a>
+<span class="sourceLineNo">296</span>  protected ServerManager serverManager;<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServerManager(ServerManager p_serverManager)<a name="line.297"></a>
 <span class="sourceLineNo">298</span>  {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    (getImplData()).setMetaLocation(p_metaLocation);<a name="line.299"></a>
+<span class="sourceLineNo">299</span>    (getImplData()).setServerManager(p_serverManager);<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 ServerManager serverManager;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServerManager(ServerManager p_serverManager)<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()).setServerManager(p_serverManager);<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 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">310</span>  protected boolean catalogJanitorEnabled;<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setCatalogJanitorEnabled(boolean p_catalogJanitorEnabled)<a name="line.311"></a>
 <span class="sourceLineNo">312</span>  {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    (getImplData()).setFormat(p_format);<a name="line.313"></a>
+<span class="sourceLineNo">313</span>    (getImplData()).setCatalogJanitorEnabled(p_catalogJanitorEnabled);<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 String filter;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFilter(String p_filter)<a name="line.318"></a>
+<span class="sourceLineNo">317</span>  protected Map&lt;String,Integer&gt; frags;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFrags(Map&lt;String,Integer&gt; p_frags)<a name="line.318"></a>
 <span class="sourceLineNo">319</span>  {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    (getImplData()).setFilter(p_filter);<a name="line.320"></a>
+<span class="sourceLineNo">320</span>    (getImplData()).setFrags(p_frags);<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 boolean catalogJanitorEnabled;<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setCatalogJanitorEnabled(boolean p_catalogJanitorEnabled)<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()).setCatalogJanitorEnabled(p_catalogJanitorEnabled);<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 Map&lt;String,Integer&gt; frags;<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFrags(Map&lt;String,Integer&gt; p_frags)<a name="line.332"></a>
+<span class="sourceLineNo">331</span>  protected String format;<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFormat(String p_format)<a name="line.332"></a>
 <span class="sourceLineNo">333</span>  {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    (getImplData()).setFrags(p_frags);<a name="line.334"></a>
+<span class="sourceLineNo">334</span>    (getImplData()).setFormat(p_format);<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/539ad177/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 fddb01d..367c0bc 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 = "servers", type = "List&lt;ServerName&gt;"),<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    @org.jamon.annotations.Argument(name = "assignmentManager", type = "AssignmentManager"),<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    @org.jamon.annotations.Argument(name = "deadServers", type = "Set&lt;ServerName&gt;"),<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    @org.jamon.annotations.Argument(name = "metaLocation", type = "ServerName"),<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    @org.jamon.annotations.Argument(name = "serverManager", type = "ServerManager"),<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 = "filter", type = "String"),<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    @org.jamon.annotations.Argument(name = "catalogJanitorEnabled", type = "boolean"),<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    @org.jamon.annotations.Argument(name = "frags", type = "Map&lt;String,Integer&gt;")})<a name="line.70"></a>
+<span class="sourceLineNo">062</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<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 = "assignmentManager", type = "AssignmentManager"),<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    @org.jamon.annotations.Argument(name = "serverManager", type = "ServerManager"),<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 = "catalogJanitorEnabled", type = "boolean"),<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    @org.jamon.annotations.Argument(name = "frags", type = "Map&lt;String,Integer&gt;"),<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 = "format", type = "String")})<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>    // 23, 1<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    public void setServers(List&lt;ServerName&gt; servers)<a name="line.112"></a>
+<span class="sourceLineNo">111</span>    // 26, 1<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    public void setFilter(String filter)<a name="line.112"></a>
 <span class="sourceLineNo">113</span>    {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      // 23, 1<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      m_servers = servers;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      m_servers__IsNotDefault = true;<a name="line.116"></a>
+<span class="sourceLineNo">114</span>      // 26, 1<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      m_filter = filter;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      m_filter__IsNotDefault = true;<a name="line.116"></a>
 <span class="sourceLineNo">117</span>    }<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    public List&lt;ServerName&gt; getServers()<a name="line.118"></a>
+<span class="sourceLineNo">118</span>    public String getFilter()<a name="line.118"></a>
 <span class="sourceLineNo">119</span>    {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      return m_servers;<a name="line.120"></a>
+<span class="sourceLineNo">120</span>      return m_filter;<a name="line.120"></a>
 <span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    private List&lt;ServerName&gt; m_servers;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    public boolean getServers__IsNotDefault()<a name="line.123"></a>
+<span class="sourceLineNo">122</span>    private String m_filter;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    public boolean getFilter__IsNotDefault()<a name="line.123"></a>
 <span class="sourceLineNo">124</span>    {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      return m_servers__IsNotDefault;<a name="line.125"></a>
+<span class="sourceLineNo">125</span>      return m_filter__IsNotDefault;<a name="line.125"></a>
 <span class="sourceLineNo">126</span>    }<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    private boolean m_servers__IsNotDefault;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    // 29, 1<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    public void setAssignmentManager(AssignmentManager assignmentManager)<a name="line.129"></a>
+<span class="sourceLineNo">127</span>    private boolean m_filter__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>      // 29, 1<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      m_assignmentManager = assignmentManager;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      m_assignmentManager__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 AssignmentManager getAssignmentManager()<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_assignmentManager;<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 AssignmentManager m_assignmentManager;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    public boolean getAssignmentManager__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_assignmentManager__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_assignmentManager__IsNotDefault;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    // 24, 1<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    public void setDeadServers(Set&lt;ServerName&gt; deadServers)<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>    // 29, 1<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    public void setAssignmentManager(AssignmentManager assignmentManager)<a name="line.146"></a>
 <span class="sourceLineNo">147</span>    {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      // 24, 1<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      m_deadServers = deadServers;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      m_deadServers__IsNotDefault = true;<a name="line.150"></a>
+<span class="sourceLineNo">148</span>      // 29, 1<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      m_assignmentManager = assignmentManager;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      m_assignmentManager__IsNotDefault = true;<a name="line.150"></a>
 <span class="sourceLineNo">151</span>    }<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    public Set&lt;ServerName&gt; getDeadServers()<a name="line.152"></a>
+<span class="sourceLineNo">152</span>    public AssignmentManager getAssignmentManager()<a name="line.152"></a>
 <span class="sourceLineNo">153</span>    {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      return m_deadServers;<a name="line.154"></a>
+<span class="sourceLineNo">154</span>      return m_assignmentManager;<a name="line.154"></a>
 <span class="sourceLineNo">155</span>    }<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    private Set&lt;ServerName&gt; m_deadServers;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    public boolean getDeadServers__IsNotDefault()<a name="line.157"></a>
+<span class="sourceLineNo">156</span>    private AssignmentManager m_assignmentManager;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    public boolean getAssignmentManager__IsNotDefault()<a name="line.157"></a>
 <span class="sourceLineNo">158</span>    {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      return m_deadServers__IsNotDefault;<a name="line.159"></a>
+<span class="sourceLineNo">159</span>      return m_assignmentManager__IsNotDefault;<a name="line.159"></a>
 <span class="sourceLineNo">160</span>    }<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    private boolean m_deadServers__IsNotDefault;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    // 22, 1<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    public void setMetaLocation(ServerName metaLocation)<a name="line.163"></a>
+<span class="sourceLineNo">161</span>    private boolean m_assignmentManager__IsNotDefault;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    // 28, 1<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    public void setServerManager(ServerManager serverManager)<a name="line.163"></a>
 <span class="sourceLineNo">164</span>    {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      // 22, 1<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      m_metaLocation = metaLocation;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      m_metaLocation__IsNotDefault = true;<a name="line.167"></a>
+<span class="sourceLineNo">165</span>      // 28, 1<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      m_serverManager = serverManager;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      m_serverManager__IsNotDefault = true;<a name="line.167"></a>
 <span class="sourceLineNo">168</span>    }<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    public ServerName getMetaLocation()<a name="line.169"></a>
+<span class="sourceLineNo">169</span>    public ServerManager getServerManager()<a name="line.169"></a>
 <span class="sourceLineNo">170</span>    {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      return m_metaLocation;<a name="line.171"></a>
+<span class="sourceLineNo">171</span>      return m_serverManager;<a name="line.171"></a>
 <span class="sourceLineNo">172</span>    }<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    private ServerName m_metaLocation;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    public boolean getMetaLocation__IsNotDefault()<a name="line.174"></a>
+<span class="sourceLineNo">173</span>    private ServerManager m_serverManager;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    public boolean getServerManager__IsNotDefault()<a name="line.174"></a>
 <span class="sourceLineNo">175</span>    {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      return m_metaLocation__IsNotDefault;<a name="line.176"></a>
+<span class="sourceLineNo">176</span>      return m_serverManager__IsNotDefault;<a name="line.176"></a>
 <span class="sourceLineNo">177</span>    }<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    private boolean m_metaLocation__IsNotDefault;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    // 28, 1<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    public void setServerManager(ServerManager serverManager)<a name="line.180"></a>
+<span class="sourceLineNo">178</span>    private boolean m_serverManager__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>      // 28, 1<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      m_serverManager = serverManager;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      m_serverManager__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 ServerManager getServerManager()<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_serverManager;<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 ServerManager m_serverManager;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    public boolean getServerManager__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_serverManager__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_serverManager__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">195</span>    private boolean m_deadServers__IsNotDefault;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    // 25, 1<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    public void setCatalogJanitorEnabled(boolean catalogJanitorEnabled)<a name="line.197"></a>
 <span class="sourceLineNo">198</span>    {<a name="line.198"></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">199</span>      // 25, 1<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      m_catalogJanitorEnabled = catalogJanitorEnabled;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      m_catalogJanitorEnabled__IsNotDefault = true;<a name="line.201"></a>
 <span class="sourceLineNo">202</span>    }<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    public String getFormat()<a name="line.203"></a>
+<span class="sourceLineNo">203</span>    public boolean getCatalogJanitorEnabled()<a name="line.203"></a>
 <span class="sourceLineNo">204</span>    {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      return m_format;<a name="line.205"></a>
+<span class="sourceLineNo">205</span>      return m_catalogJanitorEnabled;<a name="line.205"></a>
 <span class="sourceLineNo">206</span>    }<a name="line.206"></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">207</span>    private boolean m_catalogJanitorEnabled;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    public boolean getCatalogJanitorEnabled__IsNotDefault()<a name="line.208"></a>
 <span class="sourceLineNo">209</span>    {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      return m_format__IsNotDefault;<a name="line.210"></a>
+<span class="sourceLineNo">210</span>      return m_catalogJanitorEnabled__IsNotDefault;<a name="line.210"></a>
 <span class="sourceLineNo">211</span>    }<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    private boolean m_format__IsNotDefault;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    // 26, 1<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    public void setFilter(String filter)<a name="line.214"></a>
+<span class="sourceLineNo">212</span>    private boolean m_catalogJanitorEnabled__IsNotDefault;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    // 21, 1<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    public void setFrags(Map&lt;String,Integer&gt; frags)<a name="line.214"></a>
 <span class="sourceLineNo">215</span>    {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      // 26, 1<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      m_filter = filter;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      m_filter__IsNotDefault = true;<a name="line.218"></a>
+<span class="sourceLineNo">216</span>      // 21, 1<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      m_frags = frags;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      m_frags__IsNotDefault = true;<a name="line.218"></a>
 <span class="sourceLineNo">219</span>    }<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    public String getFilter()<a name="line.220"></a>
+<span class="sourceLineNo">220</span>    public Map&lt;String,Integer&gt; getFrags()<a name="line.220"></a>
 <span class="sourceLineNo">221</span>    {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      return m_filter;<a name="line.222"></a>
+<span class="sourceLineNo">222</span>      return m_frags;<a name="line.222"></a>
 <span class="sourceLineNo">223</span>    }<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    private String m_filter;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    public boolean getFilter__IsNotDefault()<a name="line.225"></a>
+<span class="sourceLineNo">224</span>    private Map&lt;String,Integer&gt; m_frags;<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    public boolean getFrags__IsNotDefault()<a name="line.225"></a>
 <span class="sourceLineNo">226</span>    {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      return m_filter__IsNotDefault;<a name="line.227"></a>
+<span class="sourceLineNo">227</span>      return m_frags__IsNotDefault;<a name="line.227"></a>
 <span class="sourceLineNo">228</span>    }<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    private boolean m_filter__IsNotDefault;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    // 25, 1<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    public void setCatalogJanitorEnabled(boolean catalogJanitorEnabled)<a name="line.231"></a>
+<span class="sourceLineNo">229</span>    private boolean m_frags__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>      // 25, 1<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      m_catalogJanitorEnabled = catalogJanitorEnabled;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      m_catalogJanitorEnabled__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 boolean getCatalogJanitorEnabled()<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_catalogJanitorEnabled;<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 boolean m_catalogJanitorEnabled;<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    public boolean getCatalogJanitorEnabled__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_catalogJanitorEnabled__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_catalogJanitorEnabled__IsNotDefault;<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    // 21, 1<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    public void setFrags(Map&lt;String,Integer&gt; frags)<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>    // 27, 1<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    public void setFormat(String format)<a name="line.248"></a>
 <span class="sourceLineNo">249</span>    {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      // 21, 1<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      m_frags = frags;<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      m_frags__IsNotDefault = true;<a name="line.252"></a>
+<span class="sourceLineNo">250</span>      // 27, 1<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      m_format = format;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      m_format__IsNotDefault = true;<a name="line.252"></a>
 <span class="sourceLineNo">253</span>    }<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    public Map&lt;String,Integer&gt; getFrags()<a name="line.254"></a>
+<span class="sourceLineNo">254</span>    public String getFormat()<a name="line.254"></a>
 <span class="sourceLineNo">255</span>    {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      return m_frags;<a name="line.256"></a>
+<span class="sourceLineNo">256</span>      return m_format;<a name="line.256"></a>
 <span class="sourceLineNo">257</span>    }<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    private Map&lt;String,Integer&gt; m_frags;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    public boolean getFrags__IsNotDefault()<a name="line.259"></a>
+<span class="sourceLineNo">258</span>    private String m_format;<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    public boolean getFormat__IsNotDefault()<a name="line.259"></a>
 <span class="sourceLineNo">260</span>    {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      return m_frags__IsNotDefault;<a name="line.261"></a>
+<span class="sourceLineNo">261</span>      return m_format__IsNotDefault;<a name="line.261"></a>
 <span class="sourceLineNo">262</span>    }<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    private boolean m_frags__IsNotDefault;<a name="line.263"></a>
+<span class="sourceLineNo">263</span>    private boolean m_format__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 List&lt;ServerName&gt; servers;<a name="line.275"></a>
-<span class="sourceLineNo">276</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServers(List&lt;ServerName&gt; p_servers)<a name="line.276"></a>
+<span class="sourceLineNo">275</span>  protected String filter;<a name="line.275"></a>
+<span class="sourceLineNo">276</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFilter(String p_filter)<a name="line.276"></a>
 <span class="sourceLineNo">277</span>  {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    (getImplData()).setServers(p_servers);<a name="line.278"></a>
+<span class="sourceLineNo">278</span>    (getImplData()).setFilter(p_filter);<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 AssignmentManager assignmentManager;<a name="line.282"></a>
-<span class="sourceLineNo">283</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setAssignmentManager(AssignmentManager p_assignmentManager)<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()).setAssignmentManager(p_assignmentManager);<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 Set&lt;ServerName&gt; deadServers;<a name="line.289"></a>
-<span class="sourceLineNo">290</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setDeadServers(Set&lt;ServerName&gt; p_deadServers)<a name="line.290"></a>
+<span class="sourceLineNo">289</span>  protected AssignmentManager assignmentManager;<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setAssignmentManager(AssignmentManager p_assignmentManager)<a name="line.290"></a>
 <span class="sourceLineNo">291</span>  {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    (getImplData()).setDeadServers(p_deadServers);<a name="line.292"></a>
+<span class="sourceLineNo">292</span>    (getImplData()).setAssignmentManager(p_assignmentManager);<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 ServerName metaLocation;<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setMetaLocation(ServerName p_metaLocation)<a name="line.297"></a>
+<span class="sourceLineNo">296</span>  protected ServerManager serverManager;<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServerManager(ServerManager p_serverManager)<a name="line.297"></a>
 <span class="sourceLineNo">298</span>  {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    (getImplData()).setMetaLocation(p_metaLocation);<a name="line.299"></a>
+<span class="sourceLineNo">299</span>    (getImplData()).setServerManager(p_serverManager);<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 ServerManager serverManager;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServerManager(ServerManager p_serverManager)<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()).setServerManager(p_serverManager);<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 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">310</span>  protected boolean catalogJanitorEnabled;<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setCatalogJanitorEnabled(boolean p_catalogJanitorEnabled)<a name="line.311"></a>
 <span class="sourceLineNo">312</span>  {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    (getImplData()).setFormat(p_format);<a name="line.313"></a>
+<span class="sourceLineNo">313</span>    (getImplData()).setCatalogJanitorEnabled(p_catalogJanitorEnabled);<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 String filter;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFilter(String p_filter)<a name="line.318"></a>
+<span class="sourceLineNo">317</span>  protected Map&lt;String,Integer&gt; frags;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFrags(Map&lt;String,Integer&gt; p_frags)<a name="line.318"></a>
 <span class="sourceLineNo">319</span>  {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    (getImplData()).setFilter(p_filter);<a name="line.320"></a>
+<span class="sourceLineNo">320</span>    (getImplData()).setFrags(p_frags);<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 boolean catalogJanitorEnabled;<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setCatalogJanitorEnabled(boolean p_catalogJanitorEnabled)<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()).setCatalogJanitorEnabled(p_catalogJanitorEnabled);<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 Map&lt;String,Integer&gt; frags;<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFrags(Map&lt;String,Integer&gt; p_frags)<a name="line.332"></a>
+<span class="sourceLineNo">331</span>  protected String format;<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFormat(String p_format)<a name="line.332"></a>
 <span class="sourceLineNo">333</span>  {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    (getImplData()).setFrags(p_frags);<a name="line.334"></a>
+<span class="sourceLineNo">334</span>    (getImplData()).setFormat(p_format);<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/539ad177/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 e258308..66b52f2 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 List&lt;ServerName&gt; servers;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>  private final AssignmentManager assignmentManager;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  private final Set&lt;ServerName&gt; deadServers;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  private final ServerName metaLocation;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  private final ServerManager serverManager;<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 String filter;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  private final boolean catalogJanitorEnabled;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  private final Map&lt;String,Integer&gt; frags;<a name="line.71"></a>
+<span class="sourceLineNo">063</span>  private final String filter;<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 AssignmentManager assignmentManager;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  private final ServerManager serverManager;<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 boolean catalogJanitorEnabled;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>  private final Map&lt;String,Integer&gt; frags;<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 String format;<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.getServers__IsNotDefault())<a name="line.101"></a>
+<span class="sourceLineNo">101</span>    if(! p_implData.getFilter__IsNotDefault())<a name="line.101"></a>
 <span class="sourceLineNo">102</span>    {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      p_implData.setServers(null);<a name="line.103"></a>
+<span class="sourceLineNo">103</span>      p_implData.setFilter("general");<a name="line.103"></a>
 <span class="sourceLineNo">104</span>    }<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    if(! p_implData.getAssignmentManager__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.setAssignmentManager(null);<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.getDeadServers__IsNotDefault())<a name="line.109"></a>
+<span class="sourceLineNo">109</span>    if(! p_implData.getAssignmentManager__IsNotDefault())<a name="line.109"></a>
 <span class="sourceLineNo">110</span>    {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      p_implData.setDeadServers(null);<a name="line.111"></a>
+<span class="sourceLineNo">111</span>      p_implData.setAssignmentManager(null);<a name="line.111"></a>
 <span class="sourceLineNo">112</span>    }<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    if(! p_implData.getMetaLocation__IsNotDefault())<a name="line.113"></a>
+<span class="sourceLineNo">113</span>    if(! p_implData.getServerManager__IsNotDefault())<a name="line.113"></a>
 <span class="sourceLineNo">114</span>    {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      p_implData.setMetaLocation(null);<a name="line.115"></a>
+<span class="sourceLineNo">115</span>      p_implData.setServerManager(null);<a name="line.115"></a>
 <span class="sourceLineNo">116</span>    }<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    if(! p_implData.getServerManager__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.setServerManager(null);<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.getFormat__IsNotDefault())<a name="line.121"></a>
+<span class="sourceLineNo">121</span>    if(! p_implData.getCatalogJanitorEnabled__IsNotDefault())<a name="line.121"></a>
 <span class="sourceLineNo">122</span>    {<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      p_implData.setFormat("html");<a name="line.123"></a>
+<span class="sourceLineNo">123</span>      p_implData.setCatalogJanitorEnabled(true);<a name="line.123"></a>
 <span class="sourceLineNo">124</span>    }<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    if(! p_implData.getFilter__IsNotDefault())<a name="line.125"></a>
+<span class="sourceLineNo">125</span>    if(! p_implData.getFrags__IsNotDefault())<a name="line.125"></a>
 <span class="sourceLineNo">126</span>    {<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      p_implData.setFilter("general");<a name="line.127"></a>
+<span class="sourceLineNo">127</span>      p_implData.setFrags(null);<a name="line.127"></a>
 <span class="sourceLineNo">128</span>    }<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    if(! p_implData.getCatalogJanitorEnabled__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.setCatalogJanitorEnabled(true);<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.getFrags__IsNotDefault())<a name="line.133"></a>
+<span class="sourceLineNo">133</span>    if(! p_implData.getFormat__IsNotDefault())<a name="line.133"></a>
 <span class="sourceLineNo">134</span>    {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      p_implData.setFrags(null);<a name="line.135"></a>
+<span class="sourceLineNo">135</span>      p_implData.setFormat("html");<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>    servers = p_implData.getServers();<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    assignmentManager = p_implData.getAssignmentManager();<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    deadServers = p_implData.getDeadServers();<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    metaLocation = p_implData.getMetaLocation();<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    serverManager = p_implData.getServerManager();<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    format = p_implData.getFormat();<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    filter = p_implData.getFilter();<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    catalogJanitorEnabled = p_implData.getCatalogJanitorEnabled();<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    frags = p_implData.getFrags();<a name="line.151"></a>
+<span class="sourceLineNo">143</span>    filter = p_implData.getFilter();<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    metaLocation = p_implData.getMetaLocation();<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    assignmentManager = p_implData.getAssignmentManager();<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    serverManager = p_implData.getServerManager();<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    deadServers = p_implData.getDeadServers();<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    catalogJanitorEnabled = p_implData.getCatalogJanitorEnabled();<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    frags = p_implData.getFrags();<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    servers = p_implData.getServers();<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    format = p_implData.getFormat();<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/539ad177/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheViewTmpl.ImplData.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheViewTmpl.ImplData.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheViewTmpl.ImplData.html
index 5530edb..07ba120 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheViewTmpl.ImplData.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheViewTmpl.ImplData.html
@@ -36,7 +36,7 @@
 <span class="sourceLineNo">028</span>// 39, 1<a name="line.28"></a>
 <span class="sourceLineNo">029</span>import org.apache.hadoop.util.StringUtils;<a name="line.29"></a>
 <span class="sourceLineNo">030</span>// 40, 1<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import com.yammer.metrics.stats.Snapshot;<a name="line.31"></a>
+<span class="sourceLineNo">031</span>import com.codahale.metrics.Snapshot;<a name="line.31"></a>
 <span class="sourceLineNo">032</span><a name="line.32"></a>
 <span class="sourceLineNo">033</span>@org.jamon.annotations.Template(<a name="line.33"></a>
 <span class="sourceLineNo">034</span>  signature = "95C3D36942FE38FFB173E11E1B54D0B2",<a name="line.34"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheViewTmpl.Intf.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheViewTmpl.Intf.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheViewTmpl.Intf.html
index 5530edb..07ba120 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheViewTmpl.Intf.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheViewTmpl.Intf.html
@@ -36,7 +36,7 @@
 <span class="sourceLineNo">028</span>// 39, 1<a name="line.28"></a>
 <span class="sourceLineNo">029</span>import org.apache.hadoop.util.StringUtils;<a name="line.29"></a>
 <span class="sourceLineNo">030</span>// 40, 1<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import com.yammer.metrics.stats.Snapshot;<a name="line.31"></a>
+<span class="sourceLineNo">031</span>import com.codahale.metrics.Snapshot;<a name="line.31"></a>
 <span class="sourceLineNo">032</span><a name="line.32"></a>
 <span class="sourceLineNo">033</span>@org.jamon.annotations.Template(<a name="line.33"></a>
 <span class="sourceLineNo">034</span>  signature = "95C3D36942FE38FFB173E11E1B54D0B2",<a name="line.34"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheViewTmpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheViewTmpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheViewTmpl.html
index 5530edb..07ba120 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheViewTmpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/regionserver/BlockCacheViewTmpl.html
@@ -36,7 +36,7 @@
 <span class="sourceLineNo">028</span>// 39, 1<a name="line.28"></a>
 <span class="sourceLineNo">029</span>import org.apache.hadoop.util.StringUtils;<a name="line.29"></a>
 <span class="sourceLineNo">030</span>// 40, 1<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import com.yammer.metrics.stats.Snapshot;<a name="line.31"></a>
+<span class="sourceLineNo">031</span>import com.codahale.metrics.Snapshot;<a name="line.31"></a>
 <span class="sourceLineNo">032</span><a name="line.32"></a>
 <span class="sourceLineNo">033</span>@org.jamon.annotations.Template(<a name="line.33"></a>
 <span class="sourceLineNo">034</span>  signature = "95C3D36942FE38FFB173E11E1B54D0B2",<a name="line.34"></a>


[47/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/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 5e53d38..2ca1de0 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/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/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/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/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/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/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>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html b/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html
index 072bb4e..1e69124 100644
--- a/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html
+++ b/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html
@@ -107,7 +107,7 @@
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.370">CoprocessorHost.Environment</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.374">CoprocessorHost.Environment</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="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase">CoprocessorEnvironment</a></pre>
 <div class="block">Encapsulation of the environment of each coprocessor</div>
@@ -283,7 +283,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironmen
 <ul class="blockList">
 <li class="blockList">
 <h4>impl</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Coprocessor.html" title="interface in org.apache.hadoop.hbase">Coprocessor</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html#line.373">impl</a></pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Coprocessor.html" title="interface in org.apache.hadoop.hbase">Coprocessor</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html#line.377">impl</a></pre>
 <div class="block">The coprocessor</div>
 </li>
 </ul>
@@ -293,7 +293,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironmen
 <ul class="blockList">
 <li class="blockList">
 <h4>priority</h4>
-<pre>protected&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html#line.375">priority</a></pre>
+<pre>protected&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html#line.379">priority</a></pre>
 <div class="block">Chaining priority</div>
 </li>
 </ul>
@@ -303,7 +303,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironmen
 <ul class="blockList">
 <li class="blockList">
 <h4>state</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/Coprocessor.State.html" title="enum in org.apache.hadoop.hbase">Coprocessor.State</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html#line.377">state</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/Coprocessor.State.html" title="enum in org.apache.hadoop.hbase">Coprocessor.State</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html#line.381">state</a></pre>
 <div class="block">Current coprocessor state</div>
 </li>
 </ul>
@@ -313,7 +313,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironmen
 <ul class="blockList">
 <li class="blockList">
 <h4>openTables</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/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html#line.379">openTables</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="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html#line.383">openTables</a></pre>
 <div class="block">Accounting for tables opened by the coprocessor</div>
 </li>
 </ul>
@@ -323,7 +323,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironmen
 <ul class="blockList">
 <li class="blockList">
 <h4>seq</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html#line.381">seq</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html#line.385">seq</a></pre>
 </li>
 </ul>
 <a name="conf">
@@ -332,7 +332,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironmen
 <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/coprocessor/CoprocessorHost.Environment.html#line.382">conf</a></pre>
+<pre>private&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html#line.386">conf</a></pre>
 </li>
 </ul>
 <a name="classLoader">
@@ -341,7 +341,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironmen
 <ul class="blockListLast">
 <li class="blockList">
 <h4>classLoader</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/ClassLoader.html?is-external=true" title="class or interface in java.lang">ClassLoader</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html#line.383">classLoader</a></pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/ClassLoader.html?is-external=true" title="class or interface in java.lang">ClassLoader</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html#line.387">classLoader</a></pre>
 </li>
 </ul>
 </li>
@@ -358,7 +358,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironmen
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CoprocessorHost.Environment</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html#line.390">CoprocessorHost.Environment</a>(<a href="../../../../../org/apache/hadoop/hbase/Coprocessor.html" title="interface in org.apache.hadoop.hbase">Coprocessor</a>&nbsp;impl,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html#line.394">CoprocessorHost.Environment</a>(<a href="../../../../../org/apache/hadoop/hbase/Coprocessor.html" title="interface in org.apache.hadoop.hbase">Coprocessor</a>&nbsp;impl,
                            int&nbsp;priority,
                            int&nbsp;seq,
                            org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
@@ -380,7 +380,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironmen
 <ul class="blockList">
 <li class="blockList">
 <h4>startup</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html#line.401">startup</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html#line.405">startup</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>
 <div class="block">Initialize the environment</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -393,7 +393,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironmen
 <ul class="blockList">
 <li class="blockList">
 <h4>shutdown</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html#line.421">shutdown</a>()</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html#line.425">shutdown</a>()</pre>
 <div class="block">Clean up the environment</div>
 </li>
 </ul>
@@ -403,7 +403,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironmen
 <ul class="blockList">
 <li class="blockList">
 <h4>getInstance</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Coprocessor.html" title="interface in org.apache.hadoop.hbase">Coprocessor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html#line.452">getInstance</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Coprocessor.html" title="interface in org.apache.hadoop.hbase">Coprocessor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html#line.458">getInstance</a>()</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html#getInstance()">getInstance</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase">CoprocessorEnvironment</a></code></dd>
@@ -416,7 +416,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironmen
 <ul class="blockList">
 <li class="blockList">
 <h4>getClassLoader</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/ClassLoader.html?is-external=true" title="class or interface in java.lang">ClassLoader</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html#line.457">getClassLoader</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/ClassLoader.html?is-external=true" title="class or interface in java.lang">ClassLoader</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html#line.463">getClassLoader</a>()</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html#getClassLoader()">getClassLoader</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase">CoprocessorEnvironment</a></code></dd>
@@ -429,7 +429,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironmen
 <ul class="blockList">
 <li class="blockList">
 <h4>getPriority</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html#line.462">getPriority</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html#line.468">getPriority</a>()</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html#getPriority()">getPriority</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase">CoprocessorEnvironment</a></code></dd>
@@ -442,7 +442,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironmen
 <ul class="blockList">
 <li class="blockList">
 <h4>getLoadSequence</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html#line.467">getLoadSequence</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html#line.473">getLoadSequence</a>()</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html#getLoadSequence()">getLoadSequence</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase">CoprocessorEnvironment</a></code></dd>
@@ -455,7 +455,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironmen
 <ul class="blockList">
 <li class="blockList">
 <h4>getVersion</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html#line.473">getVersion</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html#line.479">getVersion</a>()</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html#getVersion()">getVersion</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase">CoprocessorEnvironment</a></code></dd>
@@ -468,7 +468,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironmen
 <ul class="blockList">
 <li class="blockList">
 <h4>getHBaseVersion</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/coprocessor/CoprocessorHost.Environment.html#line.479">getHBaseVersion</a>()</pre>
+<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/coprocessor/CoprocessorHost.Environment.html#line.485">getHBaseVersion</a>()</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html#getHBaseVersion()">getHBaseVersion</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase">CoprocessorEnvironment</a></code></dd>
@@ -481,7 +481,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironmen
 <ul class="blockList">
 <li class="blockList">
 <h4>getConfiguration</h4>
-<pre>public&nbsp;org.apache.hadoop.conf.Configuration&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html#line.484">getConfiguration</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.conf.Configuration&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html#line.490">getConfiguration</a>()</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html#getConfiguration()">getConfiguration</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase">CoprocessorEnvironment</a></code></dd>
@@ -494,7 +494,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironmen
 <ul class="blockList">
 <li class="blockList">
 <h4>getTable</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html#line.495">getTable</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html#line.501">getTable</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)
                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">Open a table from within the Coprocessor environment</div>
 <dl>
@@ -512,7 +512,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironmen
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getTable</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html#line.506">getTable</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.Environment.html#line.512">getTable</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
              <a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ExecutorService.html?is-external=true" title="class or interface in java.util.concurrent">ExecutorService</a>&nbsp;pool)
                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">Open a table from within the Coprocessor environment</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.EnvironmentPriorityComparator.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.EnvironmentPriorityComparator.html b/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.EnvironmentPriorityComparator.html
index bee92d8..7aecdd9 100644
--- a/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.EnvironmentPriorityComparator.html
+++ b/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.EnvironmentPriorityComparator.html
@@ -103,7 +103,7 @@
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.349">CoprocessorHost.EnvironmentPriorityComparator</a>
+<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.352">CoprocessorHost.EnvironmentPriorityComparator</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/CoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase">CoprocessorEnvironment</a>&gt;</pre>
 <div class="block">Environment priority comparator.
@@ -183,7 +183,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Comparato
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CoprocessorHost.EnvironmentPriorityComparator</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.EnvironmentPriorityComparator.html#line.349">CoprocessorHost.EnvironmentPriorityComparator</a>()</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.EnvironmentPriorityComparator.html#line.352">CoprocessorHost.EnvironmentPriorityComparator</a>()</pre>
 </li>
 </ul>
 </li>
@@ -200,7 +200,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/coprocessor/CoprocessorHost.EnvironmentPriorityComparator.html#line.351">compare</a>(<a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase">CoprocessorEnvironment</a>&nbsp;env1,
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.EnvironmentPriorityComparator.html#line.355">compare</a>(<a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase">CoprocessorEnvironment</a>&nbsp;env1,
           <a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase">CoprocessorEnvironment</a>&nbsp;env2)</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html b/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html
index 5c5a2a5..02af807 100644
--- a/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html
+++ b/devapidocs/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html
@@ -589,7 +589,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>legacyWarning</h4>
-<pre>private static 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="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;? extends <a href="../../../../../org/apache/hadoop/hbase/Coprocessor.html" title="interface in org.apache.hadoop.hbase">Coprocessor</a>&gt;&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.616">legacyWarning</a></pre>
+<pre>private static 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="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;? extends <a href="../../../../../org/apache/hadoop/hbase/Coprocessor.html" title="interface in org.apache.hadoop.hbase">Coprocessor</a>&gt;&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.622">legacyWarning</a></pre>
 <div class="block">Used to limit legacy handling to once per Coprocessor class per classloader.</div>
 </li>
 </ul>
@@ -624,7 +624,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getLoadedCoprocessors</h4>
-<pre>public static&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="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.106">getLoadedCoprocessors</a>()</pre>
+<pre>public static&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="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.107">getLoadedCoprocessors</a>()</pre>
 </li>
 </ul>
 <a name="getCoprocessors()">
@@ -633,7 +633,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getCoprocessors</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="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.117">getCoprocessors</a>()</pre>
+<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="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.120">getCoprocessors</a>()</pre>
 <div class="block">Used to create a parameter to the HServerLoad constructor so that
  HServerLoad can provide information about the coprocessors loaded by this
  regionserver.
@@ -647,7 +647,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>loadSystemCoprocessors</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.129">loadSystemCoprocessors</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.132">loadSystemCoprocessors</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                           <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;confKey)</pre>
 <div class="block">Load system coprocessors once only. Read the class names from configuration.
  Called by constructor.</div>
@@ -659,7 +659,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>load</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">E</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.175">load</a>(org.apache.hadoop.fs.Path&nbsp;path,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">E</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.178">load</a>(org.apache.hadoop.fs.Path&nbsp;path,
      <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;className,
      int&nbsp;priority,
      org.apache.hadoop.conf.Configuration&nbsp;conf)
@@ -676,7 +676,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>load</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.218">load</a>(<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;implClass,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.221">load</a>(<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;implClass,
         int&nbsp;priority,
         org.apache.hadoop.conf.Configuration&nbsp;conf)
           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>
@@ -691,7 +691,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>loadInstance</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">E</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.230">loadInstance</a>(<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;implClass,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">E</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.233">loadInstance</a>(<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;implClass,
              int&nbsp;priority,
              org.apache.hadoop.conf.Configuration&nbsp;conf)
                                               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>
@@ -706,7 +706,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>createEnvironment</h4>
-<pre>public abstract&nbsp;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">E</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.262">createEnvironment</a>(<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;implClass,
+<pre>public abstract&nbsp;<a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="type parameter in CoprocessorHost">E</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.265">createEnvironment</a>(<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;implClass,
                   <a href="../../../../../org/apache/hadoop/hbase/Coprocessor.html" title="interface in org.apache.hadoop.hbase">Coprocessor</a>&nbsp;instance,
                   int&nbsp;priority,
                   int&nbsp;sequence,
@@ -720,7 +720,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>shutdown</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.265">shutdown</a>(<a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase">CoprocessorEnvironment</a>&nbsp;e)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.268">shutdown</a>(<a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase">CoprocessorEnvironment</a>&nbsp;e)</pre>
 </li>
 </ul>
 <a name="findCoprocessor(java.lang.String)">
@@ -729,7 +729,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>findCoprocessor</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Coprocessor.html" title="interface in org.apache.hadoop.hbase">Coprocessor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.282">findCoprocessor</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;className)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Coprocessor.html" title="interface in org.apache.hadoop.hbase">Coprocessor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.285">findCoprocessor</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;className)</pre>
 <div class="block">Find a coprocessor implementation by class name</div>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>className</code> - the class name</dd>
 <dt><span class="strong">Returns:</span></dt><dd>the coprocessor, or null if not found</dd></dl>
@@ -741,7 +741,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>findCoprocessors</h4>
-<pre>public&nbsp;&lt;T extends <a href="../../../../../org/apache/hadoop/hbase/Coprocessor.html" title="interface in org.apache.hadoop.hbase">Coprocessor</a>&gt;&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;T&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.297">findCoprocessors</a>(<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;T&gt;&nbsp;cls)</pre>
+<pre>public&nbsp;&lt;T extends <a href="../../../../../org/apache/hadoop/hbase/Coprocessor.html" title="interface in org.apache.hadoop.hbase">Coprocessor</a>&gt;&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;T&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.300">findCoprocessors</a>(<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;T&gt;&nbsp;cls)</pre>
 <div class="block">Find list of coprocessors that extend/implement the given class/interface</div>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>cls</code> - the class/interface to look for</dd>
 <dt><span class="strong">Returns:</span></dt><dd>the list of coprocessors, or null if not found</dd></dl>
@@ -753,7 +753,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>findCoprocessorEnvironment</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase">CoprocessorEnvironment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.317">findCoprocessorEnvironment</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;className)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase">CoprocessorEnvironment</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.320">findCoprocessorEnvironment</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;className)</pre>
 <div class="block">Find a coprocessor environment by class name</div>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>className</code> - the class name</dd>
 <dt><span class="strong">Returns:</span></dt><dd>the coprocessor, or null if not found</dd></dl>
@@ -765,7 +765,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getExternalClassLoaders</h4>
-<pre><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="http://docs.oracle.com/javase/7/docs/api/java/lang/ClassLoader.html?is-external=true" title="class or interface in java.lang">ClassLoader</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.332">getExternalClassLoaders</a>()</pre>
+<pre><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="http://docs.oracle.com/javase/7/docs/api/java/lang/ClassLoader.html?is-external=true" title="class or interface in java.lang">ClassLoader</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.335">getExternalClassLoaders</a>()</pre>
 <div class="block">Retrieves the set of classloaders used to instantiate Coprocessor classes defined in external
  jar files.</div>
 <dl><dt><span class="strong">Returns:</span></dt><dd>A set of ClassLoader instances</dd></dl>
@@ -777,7 +777,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>abortServer</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.511">abortServer</a>(<a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase">CoprocessorEnvironment</a>&nbsp;environment,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.517">abortServer</a>(<a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase">CoprocessorEnvironment</a>&nbsp;environment,
                <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;e)</pre>
 </li>
 </ul>
@@ -787,7 +787,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>abortServer</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.515">abortServer</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;coprocessorName,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.521">abortServer</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;coprocessorName,
                <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;e)</pre>
 </li>
 </ul>
@@ -797,7 +797,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>handleCoprocessorThrowable</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.540">handleCoprocessorThrowable</a>(<a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase">CoprocessorEnvironment</a>&nbsp;env,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.546">handleCoprocessorThrowable</a>(<a href="../../../../../org/apache/hadoop/hbase/CoprocessorEnvironment.html" title="interface in org.apache.hadoop.hbase">CoprocessorEnvironment</a>&nbsp;env,
                               <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;e)
                                    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 used by coprocessor hooks which are declared to throw IOException
@@ -822,7 +822,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <li class="blockList">
 <h4>useLegacyMethod</h4>
 <pre><a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.Private.html" title="annotation in org.apache.hadoop.hbase.classification">@InterfaceAudience.Private</a>
-protected static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.591">useLegacyMethod</a>(<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;? extends <a href="../../../../../org/apache/hadoop/hbase/Coprocessor.html" title="interface in org.apache.hadoop.hbase">Coprocessor</a>&gt;&nbsp;clazz,
+protected static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.597">useLegacyMethod</a>(<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;? extends <a href="../../../../../org/apache/hadoop/hbase/Coprocessor.html" title="interface in org.apache.hadoop.hbase">Coprocessor</a>&gt;&nbsp;clazz,
                                                 <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/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;...&nbsp;parameterTypes)</pre>
 <div class="block">Used to gracefully handle fallback to deprecated methods when we
@@ -849,7 +849,7 @@ protected static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/h
 <li class="blockList">
 <h4>legacyWarning</h4>
 <pre><a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.Private.html" title="annotation in org.apache.hadoop.hbase.classification">@InterfaceAudience.Private</a>
-protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.635">legacyWarning</a>(<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;? extends <a href="../../../../../org/apache/hadoop/hbase/Coprocessor.html" title="interface in org.apache.hadoop.hbase">Coprocessor</a>&gt;&nbsp;clazz,
+protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#line.641">legacyWarning</a>(<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;? extends <a href="../../../../../org/apache/hadoop/hbase/Coprocessor.html" title="interface in org.apache.hadoop.hbase">Coprocessor</a>&gt;&nbsp;clazz,
                                            <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;message)</pre>
 <div class="block">limits the amount of logging to once per coprocessor class.
  Used in concert with <a href="../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#useLegacyMethod(java.lang.Class,%20java.lang.String,%20java.lang.Class...)"><code>useLegacyMethod(Class, String, Class[])</code></a> when a runtime issue

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/hbase/executor/EventHandler.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/executor/EventHandler.html b/devapidocs/org/apache/hadoop/hbase/executor/EventHandler.html
index 024495c..d0ac8c2 100644
--- a/devapidocs/org/apache/hadoop/hbase/executor/EventHandler.html
+++ b/devapidocs/org/apache/hadoop/hbase/executor/EventHandler.html
@@ -401,7 +401,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/executor/EventHandler.html#line.100">run</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/executor/EventHandler.html#line.101">run</a>()</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html?is-external=true#run()" title="class or interface in java.lang">run</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></code></dd>
@@ -414,7 +414,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>process</h4>
-<pre>public abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/executor/EventHandler.html#line.116">process</a>()
+<pre>public abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/executor/EventHandler.html#line.117">process</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>
 <div class="block">This method is the main processing loop to be implemented by the various
  subclasses.</div>
@@ -428,7 +428,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>getEventType</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/executor/EventType.html" title="enum in org.apache.hadoop.hbase.executor">EventType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/executor/EventHandler.html#line.122">getEventType</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/executor/EventType.html" title="enum in org.apache.hadoop.hbase.executor">EventType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/executor/EventHandler.html#line.123">getEventType</a>()</pre>
 <div class="block">Return the event type</div>
 <dl><dt><span class="strong">Returns:</span></dt><dd>The event type.</dd></dl>
 </li>
@@ -439,7 +439,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>getPriority</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/executor/EventHandler.html#line.138">getPriority</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/executor/EventHandler.html#line.139">getPriority</a>()</pre>
 <div class="block">Get the priority level for this handler instance.  This uses natural
  ordering so lower numbers are higher priority.
  <p>
@@ -458,7 +458,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>getSeqid</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/executor/EventHandler.html#line.145">getSeqid</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/executor/EventHandler.html#line.146">getSeqid</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>This events' sequence id.</dd></dl>
 </li>
 </ul>
@@ -468,7 +468,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>compareTo</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/executor/EventHandler.html#line.156">compareTo</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a>&nbsp;o)</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/executor/EventHandler.html#line.157">compareTo</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a>&nbsp;o)</pre>
 <div class="block">Default prioritized runnable comparator which implements a FIFO ordering.
  <p>
  Subclasses should not override this.  Instead, if they want to implement
@@ -485,7 +485,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</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/executor/EventHandler.html#line.165">toString</a>()</pre>
+<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/executor/EventHandler.html#line.166">toString</a>()</pre>
 <dl>
 <dt><strong>Overrides:</strong></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
@@ -498,7 +498,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>getInformativeName</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/executor/EventHandler.html#line.177">getInformativeName</a>()</pre>
+<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/executor/EventHandler.html#line.178">getInformativeName</a>()</pre>
 <div class="block">Event implementations should override thie class to provide an
  informative name about what event they are handling. For example,
  event-specific information such as which region or server is
@@ -511,7 +511,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>handleException</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/executor/EventHandler.html#line.185">handleException</a>(<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)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/executor/EventHandler.html#line.186">handleException</a>(<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)</pre>
 <div class="block">Event exception handler, may be overridden</div>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>t</code> - Throwable object</dd></dl>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html b/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
index e2a480d..3e5c0d2 100644
--- a/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
@@ -96,8 +96,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.executor.<a href="../../../../../org/apache/hadoop/hbase/executor/EventType.html" title="enum in org.apache.hadoop.hbase.executor"><span class="strong">EventType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.executor.<a href="../../../../../org/apache/hadoop/hbase/executor/ExecutorType.html" title="enum in org.apache.hadoop.hbase.executor"><span class="strong">ExecutorType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.executor.<a href="../../../../../org/apache/hadoop/hbase/executor/EventType.html" title="enum in org.apache.hadoop.hbase.executor"><span class="strong">EventType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/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 9b22923..73bcb2a 100644
--- a/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
@@ -162,13 +162,13 @@
 <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/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/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>
-<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/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/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/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/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/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/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/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/FilterWrapper.FilterRowRetCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="strong">FilterWrapper.FilterRowRetCode</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html
index a182eee..dad4705 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html
@@ -118,11 +118,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <th class="colLast" scope="col">Field and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>private com.yammer.metrics.core.Histogram</code></td>
-<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html#ageHistogram">ageHistogram</a></strong></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>private com.yammer.metrics.stats.Snapshot</code></td>
+<td class="colFirst"><code>private com.codahale.metrics.Snapshot</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html#snapshot">snapshot</a></strong></code>&nbsp;</td>
 </tr>
 </table>
@@ -140,7 +136,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <th class="colOne" scope="col">Constructor and Description</th>
 </tr>
 <tr class="altColor">
-<td class="colOne"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html#AgeSnapshot(com.yammer.metrics.core.Histogram)">AgeSnapshot</a></strong>(com.yammer.metrics.core.Histogram&nbsp;ageHistogram)</code>&nbsp;</td>
+<td class="colOne"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html#AgeSnapshot(com.codahale.metrics.Histogram)">AgeSnapshot</a></strong>(com.codahale.metrics.Histogram&nbsp;ageHistogram)</code>&nbsp;</td>
 </tr>
 </table>
 </li>
@@ -215,22 +211,13 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <!--   -->
 </a>
 <h3>Field Detail</h3>
-<a name="ageHistogram">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>ageHistogram</h4>
-<pre>private final&nbsp;com.yammer.metrics.core.Histogram <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html#line.31">ageHistogram</a></pre>
-</li>
-</ul>
 <a name="snapshot">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>snapshot</h4>
-<pre>private final&nbsp;com.yammer.metrics.stats.Snapshot <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html#line.32">snapshot</a></pre>
+<pre>private final&nbsp;com.codahale.metrics.Snapshot <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html#line.31">snapshot</a></pre>
 </li>
 </ul>
 </li>
@@ -241,13 +228,13 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <!--   -->
 </a>
 <h3>Constructor Detail</h3>
-<a name="AgeSnapshot(com.yammer.metrics.core.Histogram)">
+<a name="AgeSnapshot(com.codahale.metrics.Histogram)">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>AgeSnapshot</h4>
-<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html#line.34">AgeSnapshot</a>(com.yammer.metrics.core.Histogram&nbsp;ageHistogram)</pre>
+<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html#line.33">AgeSnapshot</a>(com.codahale.metrics.Histogram&nbsp;ageHistogram)</pre>
 </li>
 </ul>
 </li>
@@ -264,7 +251,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>get75thPercentile</h4>
-<pre>public&nbsp;double&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html#line.39">get75thPercentile</a>()</pre>
+<pre>public&nbsp;double&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html#line.37">get75thPercentile</a>()</pre>
 </li>
 </ul>
 <a name="get95thPercentile()">
@@ -273,7 +260,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>get95thPercentile</h4>
-<pre>public&nbsp;double&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html#line.43">get95thPercentile</a>()</pre>
+<pre>public&nbsp;double&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html#line.41">get95thPercentile</a>()</pre>
 </li>
 </ul>
 <a name="get98thPercentile()">
@@ -282,7 +269,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>get98thPercentile</h4>
-<pre>public&nbsp;double&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html#line.47">get98thPercentile</a>()</pre>
+<pre>public&nbsp;double&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html#line.45">get98thPercentile</a>()</pre>
 </li>
 </ul>
 <a name="get999thPercentile()">
@@ -291,7 +278,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>get999thPercentile</h4>
-<pre>public&nbsp;double&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html#line.51">get999thPercentile</a>()</pre>
+<pre>public&nbsp;double&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html#line.49">get999thPercentile</a>()</pre>
 </li>
 </ul>
 <a name="get99thPercentile()">
@@ -300,7 +287,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>get99thPercentile</h4>
-<pre>public&nbsp;double&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html#line.55">get99thPercentile</a>()</pre>
+<pre>public&nbsp;double&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html#line.53">get99thPercentile</a>()</pre>
 </li>
 </ul>
 <a name="getMean()">
@@ -309,7 +296,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getMean</h4>
-<pre>public&nbsp;double&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html#line.59">getMean</a>()</pre>
+<pre>public&nbsp;double&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html#line.57">getMean</a>()</pre>
 </li>
 </ul>
 <a name="getMax()">
@@ -318,7 +305,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getMax</h4>
-<pre>public&nbsp;double&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html#line.63">getMax</a>()</pre>
+<pre>public&nbsp;double&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html#line.61">getMax</a>()</pre>
 </li>
 </ul>
 <a name="getMin()">
@@ -327,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>getMin</h4>
-<pre>public&nbsp;double&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html#line.67">getMin</a>()</pre>
+<pre>public&nbsp;double&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html#line.65">getMin</a>()</pre>
 </li>
 </ul>
 <a name="getStdDev()">
@@ -336,7 +323,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getStdDev</h4>
-<pre>public&nbsp;double&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html#line.71">getStdDev</a>()</pre>
+<pre>public&nbsp;double&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/AgeSnapshot.html#line.69">getStdDev</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlockCountsPerFile.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlockCountsPerFile.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlockCountsPerFile.html
index 7e57246..c25f2f1 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlockCountsPerFile.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlockCountsPerFile.html
@@ -99,7 +99,7 @@
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html#line.71">BlockCacheUtil.CachedBlockCountsPerFile</a>
+<pre>static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.html#line.73">BlockCacheUtil.CachedBlockCountsPerFile</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">Little data structure to hold counts for a file.
  Used doing a toJSON.</div>
@@ -221,7 +221,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>count</h4>
-<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlockCountsPerFile.html#line.72">count</a></pre>
+<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlockCountsPerFile.html#line.74">count</a></pre>
 </li>
 </ul>
 <a name="size">
@@ -230,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>size</h4>
-<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlockCountsPerFile.html#line.73">size</a></pre>
+<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlockCountsPerFile.html#line.75">size</a></pre>
 </li>
 </ul>
 <a name="countData">
@@ -239,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>countData</h4>
-<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlockCountsPerFile.html#line.74">countData</a></pre>
+<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlockCountsPerFile.html#line.76">countData</a></pre>
 </li>
 </ul>
 <a name="sizeData">
@@ -248,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>sizeData</h4>
-<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlockCountsPerFile.html#line.75">sizeData</a></pre>
+<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlockCountsPerFile.html#line.77">sizeData</a></pre>
 </li>
 </ul>
 <a name="filename">
@@ -257,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>filename</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/io/hfile/BlockCacheUtil.CachedBlockCountsPerFile.html#line.76">filename</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/io/hfile/BlockCacheUtil.CachedBlockCountsPerFile.html#line.78">filename</a></pre>
 </li>
 </ul>
 </li>
@@ -274,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>BlockCacheUtil.CachedBlockCountsPerFile</h4>
-<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlockCountsPerFile.html#line.78">BlockCacheUtil.CachedBlockCountsPerFile</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;filename)</pre>
+<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlockCountsPerFile.html#line.80">BlockCacheUtil.CachedBlockCountsPerFile</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;filename)</pre>
 </li>
 </ul>
 </li>
@@ -291,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>getCount</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlockCountsPerFile.html#line.82">getCount</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlockCountsPerFile.html#line.84">getCount</a>()</pre>
 </li>
 </ul>
 <a name="getSize()">
@@ -300,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>getSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlockCountsPerFile.html#line.86">getSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlockCountsPerFile.html#line.88">getSize</a>()</pre>
 </li>
 </ul>
 <a name="getCountData()">
@@ -309,7 +309,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getCountData</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlockCountsPerFile.html#line.90">getCountData</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlockCountsPerFile.html#line.92">getCountData</a>()</pre>
 </li>
 </ul>
 <a name="getSizeData()">
@@ -318,7 +318,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getSizeData</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlockCountsPerFile.html#line.94">getSizeData</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.CachedBlockCountsPerFile.html#line.96">getSizeData</a>()</pre>
 </li>
 </ul>
 <a name="getFilename()">
@@ -327,7 +327,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getFilename</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/io/hfile/BlockCacheUtil.CachedBlockCountsPerFile.html#line.98">getFilename</a>()</pre>
+<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/io/hfile/BlockCacheUtil.CachedBlockCountsPerFile.html#line.100">getFilename</a>()</pre>
 </li>
 </ul>
 </li>


[42/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/package-frame.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/package-frame.html b/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/package-frame.html
index e46ca9a..2565285 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/package-frame.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/package-frame.html
@@ -24,6 +24,10 @@
 <li><a href="ProcedureWALFormatReader.WalProcedureMap.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal" target="classFrame">ProcedureWALFormatReader.WalProcedureMap</a></li>
 <li><a href="WALProcedureStore.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal" target="classFrame">WALProcedureStore</a></li>
 </ul>
+<h2 title="Enums">Enums</h2>
+<ul title="Enums">
+<li><a href="WALProcedureStore.PushType.html" title="enum in org.apache.hadoop.hbase.procedure2.store.wal" target="classFrame">WALProcedureStore.PushType</a></li>
+</ul>
 <h2 title="Exceptions">Exceptions</h2>
 <ul title="Exceptions">
 <li><a href="CorruptedWALProcedureStoreException.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal" target="classFrame">CorruptedWALProcedureStoreException</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/package-summary.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/package-summary.html b/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/package-summary.html
index 6a0aeab..d595a3f 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/package-summary.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/package-summary.html
@@ -133,6 +133,21 @@
 </table>
 </li>
 <li class="blockList">
+<table class="packageSummary" border="0" cellpadding="3" cellspacing="0" summary="Enum Summary table, listing enums, and an explanation">
+<caption><span>Enum Summary</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Enum</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.PushType.html" title="enum in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore.PushType</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
 <table class="packageSummary" border="0" cellpadding="3" cellspacing="0" summary="Exception Summary table, listing exceptions, and an explanation">
 <caption><span>Exception Summary</span><span class="tabEnd">&nbsp;</span></caption>
 <tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/package-tree.html b/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/package-tree.html
index 9e00c09..a9d61cf 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/package-tree.html
@@ -114,6 +114,18 @@
 </li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.store.wal.<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.LeaseRecovery.html" title="interface in org.apache.hadoop.hbase.procedure2.store.wal"><span class="strong">WALProcedureStore.LeaseRecovery</span></a></li>
 </ul>
+<h2 title="Enum Hierarchy">Enum Hierarchy</h2>
+<ul>
+<li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang"><span class="strong">Object</span></a>
+<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.store.wal.<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.PushType.html" title="enum in org.apache.hadoop.hbase.procedure2.store.wal"><span class="strong">WALProcedureStore.PushType</span></a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
 </div>
 <!-- ======= START OF BOTTOM NAVBAR ====== -->
 <div class="bottomNav"><a name="navbar_bottom">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/package-use.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/package-use.html b/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/package-use.html
index a6409bf..4d47c5e 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/package-use.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/package-use.html
@@ -150,6 +150,9 @@
 <tr class="rowColor">
 <td class="colOne"><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/class-use/WALProcedureStore.LeaseRecovery.html#org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore.LeaseRecovery</a>&nbsp;</td>
 </tr>
+<tr class="altColor">
+<td class="colOne"><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/class-use/WALProcedureStore.PushType.html#org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore.PushType</a>&nbsp;</td>
+</tr>
 </tbody>
 </table>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/hbase/procedure2/util/class-use/ByteSlot.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/util/class-use/ByteSlot.html b/devapidocs/org/apache/hadoop/hbase/procedure2/util/class-use/ByteSlot.html
index 57e933a..6422736 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/util/class-use/ByteSlot.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/util/class-use/ByteSlot.html
@@ -135,7 +135,10 @@
 <tbody>
 <tr class="altColor">
 <td class="colFirst"><code>private long</code></td>
-<td class="colLast"><span class="strong">WALProcedureStore.</span><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#pushData(org.apache.hadoop.hbase.procedure2.util.ByteSlot)">pushData</a></strong>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/util/ByteSlot.html" title="class in org.apache.hadoop.hbase.procedure2.util">ByteSlot</a>&nbsp;slot)</code>&nbsp;</td>
+<td class="colLast"><span class="strong">WALProcedureStore.</span><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#pushData(org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore.PushType,%20org.apache.hadoop.hbase.procedure2.util.ByteSlot,%20long,%20long[])">pushData</a></strong>(<a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.PushType.html" title="enum in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore.PushType</a>&nbsp;type,
+                <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/util/ByteSlot.html" title="class in org.apache.hadoop.hbase.procedure2.util">ByteSlot</a>&nbsp;slot,
+                long&nbsp;procId,
+                long[]&nbsp;subProcIds)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/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 7629726..7d2e25c 100644
--- a/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
@@ -174,10 +174,10 @@
 <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/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/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/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/QuotaType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="strong">QuotaType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaScope.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="strong">QuotaScope</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/OperationQuota.OperationType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="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>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/hbase/regionserver/handler/RegionReplicaFlushHandler.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/handler/RegionReplicaFlushHandler.html b/devapidocs/org/apache/hadoop/hbase/regionserver/handler/RegionReplicaFlushHandler.html
index 57ba13b..cb89694 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/handler/RegionReplicaFlushHandler.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/handler/RegionReplicaFlushHandler.html
@@ -374,7 +374,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/executor/EventHandler
 <ul class="blockList">
 <li class="blockList">
 <h4>getRetriesCount</h4>
-<pre>private&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/RegionReplicaFlushHandler.html#line.97">getRetriesCount</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>private&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/RegionReplicaFlushHandler.html#line.95">getRetriesCount</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 </li>
 </ul>
 <a name="triggerFlushInPrimaryRegion(org.apache.hadoop.hbase.regionserver.HRegion)">
@@ -383,7 +383,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/executor/EventHandler
 <ul class="blockListLast">
 <li class="blockList">
 <h4>triggerFlushInPrimaryRegion</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/RegionReplicaFlushHandler.html#line.107">triggerFlushInPrimaryRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region)
+<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/RegionReplicaFlushHandler.html#line.105">triggerFlushInPrimaryRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region)
                            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/RuntimeException.html?is-external=true" title="class or interface in java.lang">RuntimeException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/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 aabbe34..0615068 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -599,23 +599,23 @@
 <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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/DeleteTracker.DeleteResult.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">DeleteTracker.DeleteResult</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/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 861f57e..bb358f1 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
@@ -140,9 +140,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.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>
 <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>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html b/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
index 8ed3775..2e57e53 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
@@ -159,9 +159,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.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/MetricsThriftServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="strong">MetricsThriftServerSourceFactoryImpl.FactoryStorage</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.ThriftServerType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="strong">ThriftMetrics.ThriftServerType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="strong">ThriftServerRunner.ImplType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/MetricsThriftServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="strong">MetricsThriftServerSourceFactoryImpl.FactoryStorage</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/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 3e735e0..c9fce42 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_servers">
+<a name="m_filter">
 <!--   -->
 </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.122">m_servers</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.122">m_filter</a></pre>
 </li>
 </ul>
-<a name="m_servers__IsNotDefault">
+<a name="m_filter__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.127">m_servers__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.127">m_filter__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_assignmentManager">
+<a name="m_metaLocation">
 <!--   -->
 </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.139">m_assignmentManager</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_assignmentManager__IsNotDefault">
+<a name="m_metaLocation__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.144">m_assignmentManager__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_deadServers">
+<a name="m_assignmentManager">
 <!--   -->
 </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.156">m_deadServers</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.156">m_assignmentManager</a></pre>
 </li>
 </ul>
-<a name="m_deadServers__IsNotDefault">
+<a name="m_assignmentManager__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.161">m_deadServers__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.161">m_assignmentManager__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_metaLocation">
+<a name="m_serverManager">
 <!--   -->
 </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.173">m_metaLocation</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.173">m_serverManager</a></pre>
 </li>
 </ul>
-<a name="m_metaLocation__IsNotDefault">
+<a name="m_serverManager__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.178">m_metaLocation__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.178">m_serverManager__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_serverManager">
+<a name="m_deadServers">
 <!--   -->
 </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.190">m_serverManager</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_serverManager__IsNotDefault">
+<a name="m_deadServers__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockList">
 <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.195">m_serverManager__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_format">
+<a name="m_catalogJanitorEnabled">
 <!--   -->
 </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.207">m_format</a></pre>
+<h4>m_catalogJanitorEnabled</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.207">m_catalogJanitorEnabled</a></pre>
 </li>
 </ul>
-<a name="m_format__IsNotDefault">
+<a name="m_catalogJanitorEnabled__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.212">m_format__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.212">m_catalogJanitorEnabled__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.224">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.224">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.229">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.229">m_frags__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_catalogJanitorEnabled">
+<a name="m_servers">
 <!--   -->
 </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.241">m_catalogJanitorEnabled</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_catalogJanitorEnabled__IsNotDefault">
+<a name="m_servers__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.246">m_catalogJanitorEnabled__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_frags">
+<a name="m_format">
 <!--   -->
 </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.258">m_frags</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.258">m_format</a></pre>
 </li>
 </ul>
-<a name="m_frags__IsNotDefault">
+<a name="m_format__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <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.263">m_frags__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.263">m_format__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="setServers(java.util.List)">
+<a name="setFilter(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.112">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>setFilter</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.112">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="getServers()">
+<a name="getFilter()">
 <!--   -->
 </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.118">getServers</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.118">getFilter</a>()</pre>
 </li>
 </ul>
-<a name="getServers__IsNotDefault()">
+<a name="getFilter__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.123">getServers__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.123">getFilter__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setAssignmentManager(org.apache.hadoop.hbase.master.AssignmentManager)">
+<a name="setMetaLocation(org.apache.hadoop.hbase.ServerName)">
 <!--   -->
 </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.129">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>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="getAssignmentManager()">
+<a name="getMetaLocation()">
 <!--   -->
 </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.135">getAssignmentManager</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="getAssignmentManager__IsNotDefault()">
+<a name="getMetaLocation__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.140">getAssignmentManager__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="setDeadServers(java.util.Set)">
+<a name="setAssignmentManager(org.apache.hadoop.hbase.master.AssignmentManager)">
 <!--   -->
 </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.146">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>setAssignmentManager</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.146">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="getDeadServers()">
+<a name="getAssignmentManager()">
 <!--   -->
 </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.152">getDeadServers</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.152">getAssignmentManager</a>()</pre>
 </li>
 </ul>
-<a name="getDeadServers__IsNotDefault()">
+<a name="getAssignmentManager__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.157">getDeadServers__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.157">getAssignmentManager__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setMetaLocation(org.apache.hadoop.hbase.ServerName)">
+<a name="setServerManager(org.apache.hadoop.hbase.master.ServerManager)">
 <!--   -->
 </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.163">setMetaLocation</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;metaLocation)</pre>
+<h4>setServerManager</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.163">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="getMetaLocation()">
+<a name="getServerManager()">
 <!--   -->
 </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.169">getMetaLocation</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.169">getServerManager</a>()</pre>
 </li>
 </ul>
-<a name="getMetaLocation__IsNotDefault()">
+<a name="getServerManager__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.174">getMetaLocation__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.174">getServerManager__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setServerManager(org.apache.hadoop.hbase.master.ServerManager)">
+<a name="setDeadServers(java.util.Set)">
 <!--   -->
 </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.180">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>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="getServerManager()">
+<a name="getDeadServers()">
 <!--   -->
 </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.186">getServerManager</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="getServerManager__IsNotDefault()">
+<a name="getDeadServers__IsNotDefault()">
 <!--   -->
 </a>
 <ul class="blockList">
 <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.191">getServerManager__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="setFormat(java.lang.String)">
+<a name="setCatalogJanitorEnabled(boolean)">
 <!--   -->
 </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.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>
+<h4>setCatalogJanitorEnabled</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.197">setCatalogJanitorEnabled</a>(boolean&nbsp;catalogJanitorEnabled)</pre>
 </li>
 </ul>
-<a name="getFormat()">
+<a name="getCatalogJanitorEnabled()">
 <!--   -->
 </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.203">getFormat</a>()</pre>
+<h4>getCatalogJanitorEnabled</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.203">getCatalogJanitorEnabled</a>()</pre>
 </li>
 </ul>
-<a name="getFormat__IsNotDefault()">
+<a name="getCatalogJanitorEnabled__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.208">getFormat__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.208">getCatalogJanitorEnabled__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.214">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.214">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.220">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.220">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.225">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.225">getFrags__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setCatalogJanitorEnabled(boolean)">
+<a name="setServers(java.util.List)">
 <!--   -->
 </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.231">setCatalogJanitorEnabled</a>(boolean&nbsp;catalogJanitorEnabled)</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="getCatalogJanitorEnabled()">
+<a name="getServers()">
 <!--   -->
 </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.237">getCatalogJanitorEnabled</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="getCatalogJanitorEnabled__IsNotDefault()">
+<a name="getServers__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.242">getCatalogJanitorEnabled__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="setFrags(java.util.Map)">
+<a name="setFormat(java.lang.String)">
 <!--   -->
 </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.248">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>setFormat</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.248">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="getFrags()">
+<a name="getFormat()">
 <!--   -->
 </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.254">getFrags</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.254">getFormat</a>()</pre>
 </li>
 </ul>
-<a name="getFrags__IsNotDefault()">
+<a name="getFormat__IsNotDefault()">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <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.259">getFrags__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.259">getFormat__IsNotDefault</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/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 665fbde..33d3fc6 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="servers">
+<a name="filter">
 <!--   -->
 </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.275">servers</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.275">filter</a></pre>
 </li>
 </ul>
-<a name="assignmentManager">
+<a name="metaLocation">
 <!--   -->
 </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.282">assignmentManager</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="deadServers">
+<a name="assignmentManager">
 <!--   -->
 </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.289">deadServers</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.289">assignmentManager</a></pre>
 </li>
 </ul>
-<a name="metaLocation">
+<a name="serverManager">
 <!--   -->
 </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.296">metaLocation</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.296">serverManager</a></pre>
 </li>
 </ul>
-<a name="serverManager">
+<a name="deadServers">
 <!--   -->
 </a>
 <ul class="blockList">
 <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.303">serverManager</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="format">
+<a name="catalogJanitorEnabled">
 <!--   -->
 </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.310">format</a></pre>
+<h4>catalogJanitorEnabled</h4>
+<pre>protected&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.310">catalogJanitorEnabled</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.317">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.317">frags</a></pre>
 </li>
 </ul>
-<a name="catalogJanitorEnabled">
+<a name="servers">
 <!--   -->
 </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.324">catalogJanitorEnabled</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="frags">
+<a name="format">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <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.331">frags</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.331">format</a></pre>
 </li>
 </ul>
 </li>
@@ -473,85 +473,85 @@ extends org.jamon.AbstractTemplateProxy</pre>
 </dl>
 </li>
 </ul>
-<a name="setServers(java.util.List)">
+<a name="setFilter(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.276">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>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.276">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="setAssignmentManager(org.apache.hadoop.hbase.master.AssignmentManager)">
+<a name="setMetaLocation(org.apache.hadoop.hbase.ServerName)">
 <!--   -->
 </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.283">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>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="setDeadServers(java.util.Set)">
+<a name="setAssignmentManager(org.apache.hadoop.hbase.master.AssignmentManager)">
 <!--   -->
 </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.290">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>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.290">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="setMetaLocation(org.apache.hadoop.hbase.ServerName)">
+<a name="setServerManager(org.apache.hadoop.hbase.master.ServerManager)">
 <!--   -->
 </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.297">setMetaLocation</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;p_metaLocation)</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.297">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="setServerManager(org.apache.hadoop.hbase.master.ServerManager)">
+<a name="setDeadServers(java.util.Set)">
 <!--   -->
 </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.304">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>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="setFormat(java.lang.String)">
+<a name="setCatalogJanitorEnabled(boolean)">
 <!--   -->
 </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.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>
+<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.311">setCatalogJanitorEnabled</a>(boolean&nbsp;p_catalogJanitorEnabled)</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.318">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.318">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="setCatalogJanitorEnabled(boolean)">
+<a name="setServers(java.util.List)">
 <!--   -->
 </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.325">setCatalogJanitorEnabled</a>(boolean&nbsp;p_catalogJanitorEnabled)</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="setFrags(java.util.Map)">
+<a name="setFormat(java.lang.String)">
 <!--   -->
 </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.332">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>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.332">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="constructImpl(java.lang.Class)">


[26/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html
index b065ec0..519b3ef 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html
@@ -31,633 +31,748 @@
 <span class="sourceLineNo">023</span>import java.io.DataInput;<a name="line.23"></a>
 <span class="sourceLineNo">024</span>import java.io.IOException;<a name="line.24"></a>
 <span class="sourceLineNo">025</span>import java.io.PrintStream;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.util.ArrayList;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.util.HashMap;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.util.Iterator;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.util.LinkedHashSet;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.util.List;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.util.Locale;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.util.Map;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.util.Set;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.SortedMap;<a name="line.34"></a>
-<span class="sourceLineNo">035</span><a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.commons.cli.CommandLine;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.commons.cli.CommandLineParser;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.commons.cli.HelpFormatter;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.commons.cli.Option;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.commons.cli.OptionGroup;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.commons.cli.Options;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.commons.cli.ParseException;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.commons.cli.PosixParser;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.commons.logging.Log;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.commons.logging.LogFactory;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.classification.InterfaceStability;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.conf.Configuration;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.conf.Configured;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.fs.FileSystem;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.fs.Path;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.Cell;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.HConstants;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.TableName;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.Tag;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.io.FSDataInputStreamWrapper;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.io.hfile.HFile.FileInfo;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.mob.MobUtils;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.regionserver.TimeRangeTracker;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.util.BloomFilter;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.util.BloomFilterUtil;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.util.BloomFilterFactory;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.Writables;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.util.Tool;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.util.ToolRunner;<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>import com.yammer.metrics.core.Histogram;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import com.yammer.metrics.core.Metric;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import com.yammer.metrics.core.MetricName;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import com.yammer.metrics.core.MetricPredicate;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import com.yammer.metrics.core.MetricsRegistry;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import com.yammer.metrics.reporting.ConsoleReporter;<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> * Implements pretty-printing functionality for {@link HFile}s.<a name="line.84"></a>
-<span class="sourceLineNo">085</span> */<a name="line.85"></a>
-<span class="sourceLineNo">086</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.86"></a>
-<span class="sourceLineNo">087</span>@InterfaceStability.Evolving<a name="line.87"></a>
-<span class="sourceLineNo">088</span>public class HFilePrettyPrinter extends Configured implements Tool {<a name="line.88"></a>
-<span class="sourceLineNo">089</span><a name="line.89"></a>
-<span class="sourceLineNo">090</span>  private static final Log LOG = LogFactory.getLog(HFilePrettyPrinter.class);<a name="line.90"></a>
-<span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>  private Options options = new Options();<a name="line.92"></a>
-<span class="sourceLineNo">093</span><a name="line.93"></a>
-<span class="sourceLineNo">094</span>  private boolean verbose;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  private boolean printValue;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  private boolean printKey;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>  private boolean shouldPrintMeta;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  private boolean printBlockIndex;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  private boolean printBlockHeaders;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>  private boolean printStats;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  private boolean checkRow;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>  private boolean checkFamily;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  private boolean isSeekToRow = false;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>  private boolean checkMobIntegrity = false;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>  private Map&lt;String, List&lt;Path&gt;&gt; mobFileLocations;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  private static final int FOUND_MOB_FILES_CACHE_CAPACITY = 50;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>  private static final int MISSING_MOB_FILES_CACHE_CAPACITY = 20;<a name="line.107"></a>
-<span class="sourceLineNo">108</span><a name="line.108"></a>
-<span class="sourceLineNo">109</span>  /**<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   * The row which the user wants to specify and print all the KeyValues for.<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   */<a name="line.111"></a>
-<span class="sourceLineNo">112</span>  private byte[] row = null;<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>  private List&lt;Path&gt; files = new ArrayList&lt;Path&gt;();<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  private int count;<a name="line.115"></a>
-<span class="sourceLineNo">116</span><a name="line.116"></a>
-<span class="sourceLineNo">117</span>  private static final String FOUR_SPACES = "    ";<a name="line.117"></a>
+<span class="sourceLineNo">026</span>import java.text.DateFormat;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.util.ArrayList;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.util.HashMap;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.util.Iterator;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.LinkedHashSet;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.util.List;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.util.Locale;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.util.Map;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.Set;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.SortedMap;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import java.util.TimeZone;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import java.util.concurrent.TimeUnit;<a name="line.37"></a>
+<span class="sourceLineNo">038</span><a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.commons.cli.CommandLine;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.commons.cli.CommandLineParser;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.commons.cli.HelpFormatter;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.commons.cli.Option;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.commons.cli.OptionGroup;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.commons.cli.Options;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.commons.cli.ParseException;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.commons.cli.PosixParser;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.commons.lang.StringUtils;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.commons.logging.Log;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.commons.logging.LogFactory;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.classification.InterfaceStability;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.conf.Configuration;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.conf.Configured;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.fs.FileSystem;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.fs.Path;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.Cell;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.HConstants;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.TableName;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.Tag;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.io.FSDataInputStreamWrapper;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.io.hfile.HFile.FileInfo;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.mob.MobUtils;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.regionserver.TimeRangeTracker;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.util.BloomFilter;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.util.BloomFilterUtil;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.BloomFilterFactory;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.util.Writables;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.util.Tool;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.util.ToolRunner;<a name="line.78"></a>
+<span class="sourceLineNo">079</span><a name="line.79"></a>
+<span class="sourceLineNo">080</span>import com.codahale.metrics.Histogram;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import com.codahale.metrics.Counter;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import com.codahale.metrics.Gauge;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import com.codahale.metrics.Meter;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import com.codahale.metrics.MetricFilter;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import com.codahale.metrics.MetricRegistry;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import com.codahale.metrics.ConsoleReporter;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import com.codahale.metrics.ScheduledReporter;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import com.codahale.metrics.Snapshot;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import com.codahale.metrics.Timer;<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>import static com.codahale.metrics.MetricRegistry.name;<a name="line.91"></a>
+<span class="sourceLineNo">092</span><a name="line.92"></a>
+<span class="sourceLineNo">093</span>/**<a name="line.93"></a>
+<span class="sourceLineNo">094</span> * Implements pretty-printing functionality for {@link HFile}s.<a name="line.94"></a>
+<span class="sourceLineNo">095</span> */<a name="line.95"></a>
+<span class="sourceLineNo">096</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.96"></a>
+<span class="sourceLineNo">097</span>@InterfaceStability.Evolving<a name="line.97"></a>
+<span class="sourceLineNo">098</span>public class HFilePrettyPrinter extends Configured implements Tool {<a name="line.98"></a>
+<span class="sourceLineNo">099</span><a name="line.99"></a>
+<span class="sourceLineNo">100</span>  private static final Log LOG = LogFactory.getLog(HFilePrettyPrinter.class);<a name="line.100"></a>
+<span class="sourceLineNo">101</span><a name="line.101"></a>
+<span class="sourceLineNo">102</span>  private Options options = new Options();<a name="line.102"></a>
+<span class="sourceLineNo">103</span><a name="line.103"></a>
+<span class="sourceLineNo">104</span>  private boolean verbose;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  private boolean printValue;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>  private boolean printKey;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>  private boolean shouldPrintMeta;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  private boolean printBlockIndex;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>  private boolean printBlockHeaders;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  private boolean printStats;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  private boolean checkRow;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>  private boolean checkFamily;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>  private boolean isSeekToRow = false;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>  private boolean checkMobIntegrity = false;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  private Map&lt;String, List&lt;Path&gt;&gt; mobFileLocations;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  private static final int FOUND_MOB_FILES_CACHE_CAPACITY = 50;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  private static final int MISSING_MOB_FILES_CACHE_CAPACITY = 20;<a name="line.117"></a>
 <span class="sourceLineNo">118</span><a name="line.118"></a>
-<span class="sourceLineNo">119</span>  public HFilePrettyPrinter() {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    super();<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    init();<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  }<a name="line.122"></a>
+<span class="sourceLineNo">119</span>  /**<a name="line.119"></a>
+<span class="sourceLineNo">120</span>   * The row which the user wants to specify and print all the KeyValues for.<a name="line.120"></a>
+<span class="sourceLineNo">121</span>   */<a name="line.121"></a>
+<span class="sourceLineNo">122</span>  private byte[] row = null;<a name="line.122"></a>
 <span class="sourceLineNo">123</span><a name="line.123"></a>
-<span class="sourceLineNo">124</span>  public HFilePrettyPrinter(Configuration conf) {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    super(conf);<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    init();<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  }<a name="line.127"></a>
+<span class="sourceLineNo">124</span>  private List&lt;Path&gt; files = new ArrayList&lt;Path&gt;();<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  private int count;<a name="line.125"></a>
+<span class="sourceLineNo">126</span><a name="line.126"></a>
+<span class="sourceLineNo">127</span>  private static final String FOUR_SPACES = "    ";<a name="line.127"></a>
 <span class="sourceLineNo">128</span><a name="line.128"></a>
-<span class="sourceLineNo">129</span>  private void init() {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    options.addOption("v", "verbose", false,<a name="line.130"></a>
-<span class="sourceLineNo">131</span>        "Verbose output; emits file and meta data delimiters");<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    options.addOption("p", "printkv", false, "Print key/value pairs");<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    options.addOption("e", "printkey", false, "Print keys");<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    options.addOption("m", "printmeta", false, "Print meta data of file");<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    options.addOption("b", "printblocks", false, "Print block index meta data");<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    options.addOption("h", "printblockheaders", false, "Print block headers for each block.");<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    options.addOption("k", "checkrow", false,<a name="line.137"></a>
-<span class="sourceLineNo">138</span>        "Enable row order check; looks for out-of-order keys");<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    options.addOption("a", "checkfamily", false, "Enable family check");<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    options.addOption("w", "seekToRow", true,<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      "Seek to this row and print all the kvs for this row only");<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    options.addOption("s", "stats", false, "Print statistics");<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    options.addOption("i", "checkMobIntegrity", false,<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      "Print all cells whose mob files are missing");<a name="line.144"></a>
-<span class="sourceLineNo">145</span><a name="line.145"></a>
-<span class="sourceLineNo">146</span>    OptionGroup files = new OptionGroup();<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    files.addOption(new Option("f", "file", true,<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      "File to scan. Pass full-path; e.g. hdfs://a:9000/hbase/hbase:meta/12/34"));<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    files.addOption(new Option("r", "region", true,<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      "Region to scan. Pass region name; e.g. 'hbase:meta,,1'"));<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    options.addOptionGroup(files);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  }<a name="line.152"></a>
-<span class="sourceLineNo">153</span><a name="line.153"></a>
-<span class="sourceLineNo">154</span>  public boolean parseOptions(String args[]) throws ParseException,<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      IOException {<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    if (args.length == 0) {<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      HelpFormatter formatter = new HelpFormatter();<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      formatter.printHelp("HFile", options, true);<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      return false;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    }<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    CommandLineParser parser = new PosixParser();<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    CommandLine cmd = parser.parse(options, args);<a name="line.162"></a>
+<span class="sourceLineNo">129</span>  public HFilePrettyPrinter() {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    super();<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    init();<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  }<a name="line.132"></a>
+<span class="sourceLineNo">133</span><a name="line.133"></a>
+<span class="sourceLineNo">134</span>  public HFilePrettyPrinter(Configuration conf) {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    super(conf);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    init();<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>  private void init() {<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    options.addOption("v", "verbose", false,<a name="line.140"></a>
+<span class="sourceLineNo">141</span>        "Verbose output; emits file and meta data delimiters");<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    options.addOption("p", "printkv", false, "Print key/value pairs");<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    options.addOption("e", "printkey", false, "Print keys");<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    options.addOption("m", "printmeta", false, "Print meta data of file");<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    options.addOption("b", "printblocks", false, "Print block index meta data");<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    options.addOption("h", "printblockheaders", false, "Print block headers for each block.");<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    options.addOption("k", "checkrow", false,<a name="line.147"></a>
+<span class="sourceLineNo">148</span>        "Enable row order check; looks for out-of-order keys");<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    options.addOption("a", "checkfamily", false, "Enable family check");<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    options.addOption("w", "seekToRow", true,<a name="line.150"></a>
+<span class="sourceLineNo">151</span>      "Seek to this row and print all the kvs for this row only");<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    options.addOption("s", "stats", false, "Print statistics");<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    options.addOption("i", "checkMobIntegrity", false,<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      "Print all cells whose mob files are missing");<a name="line.154"></a>
+<span class="sourceLineNo">155</span><a name="line.155"></a>
+<span class="sourceLineNo">156</span>    OptionGroup files = new OptionGroup();<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    files.addOption(new Option("f", "file", true,<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      "File to scan. Pass full-path; e.g. hdfs://a:9000/hbase/hbase:meta/12/34"));<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    files.addOption(new Option("r", "region", true,<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      "Region to scan. Pass region name; e.g. 'hbase:meta,,1'"));<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    options.addOptionGroup(files);<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>    verbose = cmd.hasOption("v");<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    printValue = cmd.hasOption("p");<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    printKey = cmd.hasOption("e") || printValue;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    shouldPrintMeta = cmd.hasOption("m");<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    printBlockIndex = cmd.hasOption("b");<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    printBlockHeaders = cmd.hasOption("h");<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    printStats = cmd.hasOption("s");<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    checkRow = cmd.hasOption("k");<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    checkFamily = cmd.hasOption("a");<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    checkMobIntegrity = cmd.hasOption("i");<a name="line.173"></a>
-<span class="sourceLineNo">174</span><a name="line.174"></a>
-<span class="sourceLineNo">175</span>    if (cmd.hasOption("f")) {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      files.add(new Path(cmd.getOptionValue("f")));<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    }<a name="line.177"></a>
-<span class="sourceLineNo">178</span><a name="line.178"></a>
-<span class="sourceLineNo">179</span>    if (cmd.hasOption("w")) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      String key = cmd.getOptionValue("w");<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      if (key != null &amp;&amp; key.length() != 0) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        row = Bytes.toBytesBinary(key);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>        isSeekToRow = true;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      } else {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>        System.err.println("Invalid row is specified.");<a name="line.185"></a>
-<span class="sourceLineNo">186</span>        System.exit(-1);<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><a name="line.189"></a>
-<span class="sourceLineNo">190</span>    if (cmd.hasOption("r")) {<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      String regionName = cmd.getOptionValue("r");<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      byte[] rn = Bytes.toBytes(regionName);<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      byte[][] hri = HRegionInfo.parseRegionName(rn);<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      Path rootDir = FSUtils.getRootDir(getConf());<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      Path tableDir = FSUtils.getTableDir(rootDir, TableName.valueOf(hri[0]));<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      String enc = HRegionInfo.encodeRegionName(rn);<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      Path regionDir = new Path(tableDir, enc);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      if (verbose)<a name="line.198"></a>
-<span class="sourceLineNo">199</span>        System.out.println("region dir -&gt; " + regionDir);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      List&lt;Path&gt; regionFiles = HFile.getStoreFiles(FileSystem.get(getConf()),<a name="line.200"></a>
-<span class="sourceLineNo">201</span>          regionDir);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      if (verbose)<a name="line.202"></a>
-<span class="sourceLineNo">203</span>        System.out.println("Number of region files found -&gt; "<a name="line.203"></a>
-<span class="sourceLineNo">204</span>            + regionFiles.size());<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      if (verbose) {<a name="line.205"></a>
-<span class="sourceLineNo">206</span>        int i = 1;<a name="line.206"></a>
-<span class="sourceLineNo">207</span>        for (Path p : regionFiles) {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>          if (verbose)<a name="line.208"></a>
-<span class="sourceLineNo">209</span>            System.out.println("Found file[" + i++ + "] -&gt; " + p);<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>      files.addAll(regionFiles);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    }<a name="line.213"></a>
-<span class="sourceLineNo">214</span><a name="line.214"></a>
-<span class="sourceLineNo">215</span>    if(checkMobIntegrity) {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      if (verbose) {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>        System.out.println("checkMobIntegrity is enabled");<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      }<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      mobFileLocations = new HashMap&lt;String, List&lt;Path&gt;&gt;();<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    }<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    return true;<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>  /**<a name="line.224"></a>
-<span class="sourceLineNo">225</span>   * Runs the command-line pretty-printer, and returns the desired command<a name="line.225"></a>
-<span class="sourceLineNo">226</span>   * exit code (zero for success, non-zero for failure).<a name="line.226"></a>
-<span class="sourceLineNo">227</span>   */<a name="line.227"></a>
-<span class="sourceLineNo">228</span>  @Override<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  public int run(String[] args) {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    if (getConf() == null) {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      throw new RuntimeException("A Configuration instance must be provided.");<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    }<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    try {<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      FSUtils.setFsDefault(getConf(), FSUtils.getRootDir(getConf()));<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      if (!parseOptions(args))<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        return 1;<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    } catch (IOException ex) {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      LOG.error("Error parsing command-line options", ex);<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      return 1;<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    } catch (ParseException ex) {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      LOG.error("Error parsing command-line options", ex);<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      return 1;<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>    // iterate over all files found<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    for (Path fileName : files) {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      try {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>        processFile(fileName);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      } catch (IOException ex) {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        LOG.error("Error reading " + fileName, ex);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>        System.exit(-2);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      }<a name="line.252"></a>
+<span class="sourceLineNo">164</span>  public boolean parseOptions(String args[]) throws ParseException,<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      IOException {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    if (args.length == 0) {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      HelpFormatter formatter = new HelpFormatter();<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      formatter.printHelp("HFile", options, true);<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      return false;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    }<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    CommandLineParser parser = new PosixParser();<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    CommandLine cmd = parser.parse(options, args);<a name="line.172"></a>
+<span class="sourceLineNo">173</span><a name="line.173"></a>
+<span class="sourceLineNo">174</span>    verbose = cmd.hasOption("v");<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    printValue = cmd.hasOption("p");<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    printKey = cmd.hasOption("e") || printValue;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    shouldPrintMeta = cmd.hasOption("m");<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    printBlockIndex = cmd.hasOption("b");<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    printBlockHeaders = cmd.hasOption("h");<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    printStats = cmd.hasOption("s");<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    checkRow = cmd.hasOption("k");<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    checkFamily = cmd.hasOption("a");<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    checkMobIntegrity = cmd.hasOption("i");<a name="line.183"></a>
+<span class="sourceLineNo">184</span><a name="line.184"></a>
+<span class="sourceLineNo">185</span>    if (cmd.hasOption("f")) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      files.add(new Path(cmd.getOptionValue("f")));<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>    if (cmd.hasOption("w")) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      String key = cmd.getOptionValue("w");<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      if (key != null &amp;&amp; key.length() != 0) {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>        row = Bytes.toBytesBinary(key);<a name="line.192"></a>
+<span class="sourceLineNo">193</span>        isSeekToRow = true;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      } else {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>        System.err.println("Invalid row is specified.");<a name="line.195"></a>
+<span class="sourceLineNo">196</span>        System.exit(-1);<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>    if (cmd.hasOption("r")) {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      String regionName = cmd.getOptionValue("r");<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      byte[] rn = Bytes.toBytes(regionName);<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      byte[][] hri = HRegionInfo.parseRegionName(rn);<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      Path rootDir = FSUtils.getRootDir(getConf());<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      Path tableDir = FSUtils.getTableDir(rootDir, TableName.valueOf(hri[0]));<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      String enc = HRegionInfo.encodeRegionName(rn);<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      Path regionDir = new Path(tableDir, enc);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      if (verbose)<a name="line.208"></a>
+<span class="sourceLineNo">209</span>        System.out.println("region dir -&gt; " + regionDir);<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      List&lt;Path&gt; regionFiles = HFile.getStoreFiles(FileSystem.get(getConf()),<a name="line.210"></a>
+<span class="sourceLineNo">211</span>          regionDir);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      if (verbose)<a name="line.212"></a>
+<span class="sourceLineNo">213</span>        System.out.println("Number of region files found -&gt; "<a name="line.213"></a>
+<span class="sourceLineNo">214</span>            + regionFiles.size());<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      if (verbose) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>        int i = 1;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        for (Path p : regionFiles) {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>          if (verbose)<a name="line.218"></a>
+<span class="sourceLineNo">219</span>            System.out.println("Found file[" + i++ + "] -&gt; " + p);<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>      files.addAll(regionFiles);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    }<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>    if(checkMobIntegrity) {<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      if (verbose) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        System.out.println("checkMobIntegrity is enabled");<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      }<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      mobFileLocations = new HashMap&lt;String, List&lt;Path&gt;&gt;();<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    }<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    return true;<a name="line.231"></a>
+<span class="sourceLineNo">232</span>  }<a name="line.232"></a>
+<span class="sourceLineNo">233</span><a name="line.233"></a>
+<span class="sourceLineNo">234</span>  /**<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   * Runs the command-line pretty-printer, and returns the desired command<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   * exit code (zero for success, non-zero for failure).<a name="line.236"></a>
+<span class="sourceLineNo">237</span>   */<a name="line.237"></a>
+<span class="sourceLineNo">238</span>  @Override<a name="line.238"></a>
+<span class="sourceLineNo">239</span>  public int run(String[] args) {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    if (getConf() == null) {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      throw new RuntimeException("A Configuration instance must be provided.");<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    }<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    try {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      FSUtils.setFsDefault(getConf(), FSUtils.getRootDir(getConf()));<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      if (!parseOptions(args))<a name="line.245"></a>
+<span class="sourceLineNo">246</span>        return 1;<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    } catch (IOException ex) {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      LOG.error("Error parsing command-line options", ex);<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      return 1;<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    } catch (ParseException ex) {<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      LOG.error("Error parsing command-line options", ex);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      return 1;<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>    if (verbose || printKey) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      System.out.println("Scanned kv count -&gt; " + count);<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
-<span class="sourceLineNo">258</span><a name="line.258"></a>
-<span class="sourceLineNo">259</span>    return 0;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  }<a name="line.260"></a>
-<span class="sourceLineNo">261</span><a name="line.261"></a>
-<span class="sourceLineNo">262</span>  private void processFile(Path file) throws IOException {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    if (verbose)<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      System.out.println("Scanning -&gt; " + file);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    FileSystem fs = file.getFileSystem(getConf());<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    if (!fs.exists(file)) {<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      System.err.println("ERROR, file doesnt exist: " + file);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      System.exit(-2);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    }<a name="line.269"></a>
-<span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span>    HFile.Reader reader = HFile.createReader(fs, file, new CacheConfig(getConf()), getConf());<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>    Map&lt;byte[], byte[]&gt; fileInfo = reader.loadFileInfo();<a name="line.273"></a>
-<span class="sourceLineNo">274</span><a name="line.274"></a>
-<span class="sourceLineNo">275</span>    KeyValueStatsCollector fileStats = null;<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>    if (verbose || printKey || checkRow || checkFamily || printStats || checkMobIntegrity) {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      // scan over file and read key/value's and check if requested<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      HFileScanner scanner = reader.getScanner(false, false, false);<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      fileStats = new KeyValueStatsCollector();<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      boolean shouldScanKeysValues = false;<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      if (this.isSeekToRow) {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>        // seek to the first kv on this row<a name="line.283"></a>
-<span class="sourceLineNo">284</span>        shouldScanKeysValues =<a name="line.284"></a>
-<span class="sourceLineNo">285</span>          (scanner.seekTo(KeyValueUtil.createFirstOnRow(this.row)) != -1);<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      } else {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>        shouldScanKeysValues = scanner.seekTo();<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      }<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      if (shouldScanKeysValues)<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        scanKeysValues(file, fileStats, scanner, row);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    }<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>    // print meta data<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    if (shouldPrintMeta) {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      printMeta(reader, fileInfo);<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    }<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>    if (printBlockIndex) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      System.out.println("Block Index:");<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      System.out.println(reader.getDataBlockIndexReader());<a name="line.300"></a>
+<span class="sourceLineNo">255</span>    // iterate over all files found<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    for (Path fileName : files) {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      try {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>        processFile(fileName);<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      } catch (IOException ex) {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>        LOG.error("Error reading " + fileName, ex);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>        System.exit(-2);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      }<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    }<a name="line.263"></a>
+<span class="sourceLineNo">264</span><a name="line.264"></a>
+<span class="sourceLineNo">265</span>    if (verbose || printKey) {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      System.out.println("Scanned kv count -&gt; " + count);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    }<a name="line.267"></a>
+<span class="sourceLineNo">268</span><a name="line.268"></a>
+<span class="sourceLineNo">269</span>    return 0;<a name="line.269"></a>
+<span class="sourceLineNo">270</span>  }<a name="line.270"></a>
+<span class="sourceLineNo">271</span><a name="line.271"></a>
+<span class="sourceLineNo">272</span>  private void processFile(Path file) throws IOException {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    if (verbose)<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      System.out.println("Scanning -&gt; " + file);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    FileSystem fs = file.getFileSystem(getConf());<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    if (!fs.exists(file)) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      System.err.println("ERROR, file doesnt exist: " + file);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      System.exit(-2);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    }<a name="line.279"></a>
+<span class="sourceLineNo">280</span><a name="line.280"></a>
+<span class="sourceLineNo">281</span>    HFile.Reader reader = HFile.createReader(fs, file, new CacheConfig(getConf()), getConf());<a name="line.281"></a>
+<span class="sourceLineNo">282</span><a name="line.282"></a>
+<span class="sourceLineNo">283</span>    Map&lt;byte[], byte[]&gt; fileInfo = reader.loadFileInfo();<a name="line.283"></a>
+<span class="sourceLineNo">284</span><a name="line.284"></a>
+<span class="sourceLineNo">285</span>    KeyValueStatsCollector fileStats = null;<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>    if (verbose || printKey || checkRow || checkFamily || printStats || checkMobIntegrity) {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      // scan over file and read key/value's and check if requested<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      HFileScanner scanner = reader.getScanner(false, false, false);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      fileStats = new KeyValueStatsCollector();<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      boolean shouldScanKeysValues = false;<a name="line.291"></a>
+<span class="sourceLineNo">292</span>      if (this.isSeekToRow) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>        // seek to the first kv on this row<a name="line.293"></a>
+<span class="sourceLineNo">294</span>        shouldScanKeysValues =<a name="line.294"></a>
+<span class="sourceLineNo">295</span>          (scanner.seekTo(KeyValueUtil.createFirstOnRow(this.row)) != -1);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>      } else {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>        shouldScanKeysValues = scanner.seekTo();<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      }<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      if (shouldScanKeysValues)<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        scanKeysValues(file, fileStats, scanner, row);<a name="line.300"></a>
 <span class="sourceLineNo">301</span>    }<a name="line.301"></a>
 <span class="sourceLineNo">302</span><a name="line.302"></a>
-<span class="sourceLineNo">303</span>    if (printBlockHeaders) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>      System.out.println("Block Headers:");<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      /*<a name="line.305"></a>
-<span class="sourceLineNo">306</span>       * TODO: this same/similar block iteration logic is used in HFileBlock#blockRange and<a name="line.306"></a>
-<span class="sourceLineNo">307</span>       * TestLazyDataBlockDecompression. Refactor?<a name="line.307"></a>
-<span class="sourceLineNo">308</span>       */<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      FSDataInputStreamWrapper fsdis = new FSDataInputStreamWrapper(fs, file);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      long fileSize = fs.getFileStatus(file).getLen();<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      FixedFileTrailer trailer =<a name="line.311"></a>
-<span class="sourceLineNo">312</span>        FixedFileTrailer.readFromStream(fsdis.getStream(false), fileSize);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      long offset = trailer.getFirstDataBlockOffset(),<a name="line.313"></a>
-<span class="sourceLineNo">314</span>        max = trailer.getLastDataBlockOffset();<a name="line.314"></a>
-<span class="sourceLineNo">315</span>      HFileBlock block;<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      while (offset &lt;= max) {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>        block = reader.readBlock(offset, -1, /* cacheBlock */ false, /* pread */ false,<a name="line.317"></a>
-<span class="sourceLineNo">318</span>          /* isCompaction */ false, /* updateCacheMetrics */ false, null, null);<a name="line.318"></a>
-<span class="sourceLineNo">319</span>        offset += block.getOnDiskSizeWithHeader();<a name="line.319"></a>
-<span class="sourceLineNo">320</span>        System.out.println(block);<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      }<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    }<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span>    if (printStats) {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      fileStats.finish();<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      System.out.println("Stats:\n" + fileStats);<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>    reader.close();<a name="line.329"></a>
-<span class="sourceLineNo">330</span>  }<a name="line.330"></a>
-<span class="sourceLineNo">331</span><a name="line.331"></a>
-<span class="sourceLineNo">332</span>  private void scanKeysValues(Path file, KeyValueStatsCollector fileStats,<a name="line.332"></a>
-<span class="sourceLineNo">333</span>      HFileScanner scanner,  byte[] row) throws IOException {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    Cell pCell = null;<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    FileSystem fs = FileSystem.get(getConf());<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    Set&lt;String&gt; foundMobFiles = new LinkedHashSet&lt;String&gt;(FOUND_MOB_FILES_CACHE_CAPACITY);<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    Set&lt;String&gt; missingMobFiles = new LinkedHashSet&lt;String&gt;(MISSING_MOB_FILES_CACHE_CAPACITY);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    do {<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      Cell cell = scanner.getCell();<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      if (row != null &amp;&amp; row.length != 0) {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>        int result = CellComparator.COMPARATOR.compareRows(cell, row, 0, row.length);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>        if (result &gt; 0) {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>          break;<a name="line.343"></a>
-<span class="sourceLineNo">344</span>        } else if (result &lt; 0) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>          continue;<a name="line.345"></a>
-<span class="sourceLineNo">346</span>        }<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      }<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      // collect stats<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      if (printStats) {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>        fileStats.collect(cell);<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      }<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      // dump key value<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      if (printKey) {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>        System.out.print("K: " + cell);<a name="line.354"></a>
-<span class="sourceLineNo">355</span>        if (printValue) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>          System.out.print(" V: "<a name="line.356"></a>
-<span class="sourceLineNo">357</span>              + Bytes.toStringBinary(cell.getValueArray(), cell.getValueOffset(),<a name="line.357"></a>
-<span class="sourceLineNo">358</span>                  cell.getValueLength()));<a name="line.358"></a>
-<span class="sourceLineNo">359</span>          int i = 0;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>          List&lt;Tag&gt; tags = Tag.asList(cell.getTagsArray(), cell.getTagsOffset(),<a name="line.360"></a>
-<span class="sourceLineNo">361</span>              cell.getTagsLength());<a name="line.361"></a>
-<span class="sourceLineNo">362</span>          for (Tag tag : tags) {<a name="line.362"></a>
-<span class="sourceLineNo">363</span>            System.out.print(String.format(" T[%d]: %s", i++,<a name="line.363"></a>
-<span class="sourceLineNo">364</span>                Bytes.toStringBinary(tag.getBuffer(), tag.getTagOffset(), tag.getTagLength())));<a name="line.364"></a>
-<span class="sourceLineNo">365</span>          }<a name="line.365"></a>
-<span class="sourceLineNo">366</span>        }<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        System.out.println();<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      }<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      // check if rows are in order<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      if (checkRow &amp;&amp; pCell != null) {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>        if (CellComparator.COMPARATOR.compareRows(pCell, cell) &gt; 0) {<a name="line.371"></a>
-<span class="sourceLineNo">372</span>          System.err.println("WARNING, previous row is greater then"<a name="line.372"></a>
-<span class="sourceLineNo">373</span>              + " current row\n\tfilename -&gt; " + file + "\n\tprevious -&gt; "<a name="line.373"></a>
-<span class="sourceLineNo">374</span>              + CellUtil.getCellKeyAsString(pCell) + "\n\tcurrent  -&gt; "<a name="line.374"></a>
-<span class="sourceLineNo">375</span>              + CellUtil.getCellKeyAsString(cell));<a name="line.375"></a>
+<span class="sourceLineNo">303</span>    // print meta data<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    if (shouldPrintMeta) {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      printMeta(reader, fileInfo);<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>    if (printBlockIndex) {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      System.out.println("Block Index:");<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      System.out.println(reader.getDataBlockIndexReader());<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>    if (printBlockHeaders) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      System.out.println("Block Headers:");<a name="line.314"></a>
+<span class="sourceLineNo">315</span>      /*<a name="line.315"></a>
+<span class="sourceLineNo">316</span>       * TODO: this same/similar block iteration logic is used in HFileBlock#blockRange and<a name="line.316"></a>
+<span class="sourceLineNo">317</span>       * TestLazyDataBlockDecompression. Refactor?<a name="line.317"></a>
+<span class="sourceLineNo">318</span>       */<a name="line.318"></a>
+<span class="sourceLineNo">319</span>      FSDataInputStreamWrapper fsdis = new FSDataInputStreamWrapper(fs, file);<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      long fileSize = fs.getFileStatus(file).getLen();<a name="line.320"></a>
+<span class="sourceLineNo">321</span>      FixedFileTrailer trailer =<a name="line.321"></a>
+<span class="sourceLineNo">322</span>        FixedFileTrailer.readFromStream(fsdis.getStream(false), fileSize);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      long offset = trailer.getFirstDataBlockOffset(),<a name="line.323"></a>
+<span class="sourceLineNo">324</span>        max = trailer.getLastDataBlockOffset();<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      HFileBlock block;<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      while (offset &lt;= max) {<a name="line.326"></a>
+<span class="sourceLineNo">327</span>        block = reader.readBlock(offset, -1, /* cacheBlock */ false, /* pread */ false,<a name="line.327"></a>
+<span class="sourceLineNo">328</span>          /* isCompaction */ false, /* updateCacheMetrics */ false, null, null);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>        offset += block.getOnDiskSizeWithHeader();<a name="line.329"></a>
+<span class="sourceLineNo">330</span>        System.out.println(block);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>      }<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    }<a name="line.332"></a>
+<span class="sourceLineNo">333</span><a name="line.333"></a>
+<span class="sourceLineNo">334</span>    if (printStats) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>      fileStats.finish();<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      System.out.println("Stats:\n" + fileStats);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    }<a name="line.337"></a>
+<span class="sourceLineNo">338</span><a name="line.338"></a>
+<span class="sourceLineNo">339</span>    reader.close();<a name="line.339"></a>
+<span class="sourceLineNo">340</span>  }<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>  private void scanKeysValues(Path file, KeyValueStatsCollector fileStats,<a name="line.342"></a>
+<span class="sourceLineNo">343</span>      HFileScanner scanner,  byte[] row) throws IOException {<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    Cell pCell = null;<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    FileSystem fs = FileSystem.get(getConf());<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    Set&lt;String&gt; foundMobFiles = new LinkedHashSet&lt;String&gt;(FOUND_MOB_FILES_CACHE_CAPACITY);<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    Set&lt;String&gt; missingMobFiles = new LinkedHashSet&lt;String&gt;(MISSING_MOB_FILES_CACHE_CAPACITY);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    do {<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      Cell cell = scanner.getCell();<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      if (row != null &amp;&amp; row.length != 0) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>        int result = CellComparator.COMPARATOR.compareRows(cell, row, 0, row.length);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>        if (result &gt; 0) {<a name="line.352"></a>
+<span class="sourceLineNo">353</span>          break;<a name="line.353"></a>
+<span class="sourceLineNo">354</span>        } else if (result &lt; 0) {<a name="line.354"></a>
+<span class="sourceLineNo">355</span>          continue;<a name="line.355"></a>
+<span class="sourceLineNo">356</span>        }<a name="line.356"></a>
+<span class="sourceLineNo">357</span>      }<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      // collect stats<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      if (printStats) {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>        fileStats.collect(cell);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      }<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      // dump key value<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      if (printKey) {<a name="line.363"></a>
+<span class="sourceLineNo">364</span>        System.out.print("K: " + cell);<a name="line.364"></a>
+<span class="sourceLineNo">365</span>        if (printValue) {<a name="line.365"></a>
+<span class="sourceLineNo">366</span>          System.out.print(" V: "<a name="line.366"></a>
+<span class="sourceLineNo">367</span>              + Bytes.toStringBinary(cell.getValueArray(), cell.getValueOffset(),<a name="line.367"></a>
+<span class="sourceLineNo">368</span>                  cell.getValueLength()));<a name="line.368"></a>
+<span class="sourceLineNo">369</span>          int i = 0;<a name="line.369"></a>
+<span class="sourceLineNo">370</span>          List&lt;Tag&gt; tags = Tag.asList(cell.getTagsArray(), cell.getTagsOffset(),<a name="line.370"></a>
+<span class="sourceLineNo">371</span>              cell.getTagsLength());<a name="line.371"></a>
+<span class="sourceLineNo">372</span>          for (Tag tag : tags) {<a name="line.372"></a>
+<span class="sourceLineNo">373</span>            System.out.print(String.format(" T[%d]: %s", i++,<a name="line.373"></a>
+<span class="sourceLineNo">374</span>                Bytes.toStringBinary(tag.getBuffer(), tag.getTagOffset(), tag.getTagLength())));<a name="line.374"></a>
+<span class="sourceLineNo">375</span>          }<a name="line.375"></a>
 <span class="sourceLineNo">376</span>        }<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      }<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      // check if families are consistent<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      if (checkFamily) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>        String fam = Bytes.toString(cell.getFamilyArray(), cell.getFamilyOffset(),<a name="line.380"></a>
-<span class="sourceLineNo">381</span>            cell.getFamilyLength());<a name="line.381"></a>
-<span class="sourceLineNo">382</span>        if (!file.toString().contains(fam)) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>          System.err.println("WARNING, filename does not match kv family,"<a name="line.383"></a>
-<span class="sourceLineNo">384</span>              + "\n\tfilename -&gt; " + file + "\n\tkeyvalue -&gt; "<a name="line.384"></a>
+<span class="sourceLineNo">377</span>        System.out.println();<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      }<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      // check if rows are in order<a name="line.379"></a>
+<span class="sourceLineNo">380</span>      if (checkRow &amp;&amp; pCell != null) {<a name="line.380"></a>
+<span class="sourceLineNo">381</span>        if (CellComparator.COMPARATOR.compareRows(pCell, cell) &gt; 0) {<a name="line.381"></a>
+<span class="sourceLineNo">382</span>          System.err.println("WARNING, previous row is greater then"<a name="line.382"></a>
+<span class="sourceLineNo">383</span>              + " current row\n\tfilename -&gt; " + file + "\n\tprevious -&gt; "<a name="line.383"></a>
+<span class="sourceLineNo">384</span>              + CellUtil.getCellKeyAsString(pCell) + "\n\tcurrent  -&gt; "<a name="line.384"></a>
 <span class="sourceLineNo">385</span>              + CellUtil.getCellKeyAsString(cell));<a name="line.385"></a>
 <span class="sourceLineNo">386</span>        }<a name="line.386"></a>
-<span class="sourceLineNo">387</span>        if (pCell != null &amp;&amp; CellComparator.compareFamilies(pCell, cell) != 0) {<a name="line.387"></a>
-<span class="sourceLineNo">388</span>          System.err.println("WARNING, previous kv has different family"<a name="line.388"></a>
-<span class="sourceLineNo">389</span>              + " compared to current key\n\tfilename -&gt; " + file<a name="line.389"></a>
-<span class="sourceLineNo">390</span>              + "\n\tprevious -&gt; " + CellUtil.getCellKeyAsString(pCell)<a name="line.390"></a>
-<span class="sourceLineNo">391</span>              + "\n\tcurrent  -&gt; " + CellUtil.getCellKeyAsString(cell));<a name="line.391"></a>
-<span class="sourceLineNo">392</span>        }<a name="line.392"></a>
-<span class="sourceLineNo">393</span>      }<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      // check if mob files are missing.<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      if (checkMobIntegrity &amp;&amp; MobUtils.isMobReferenceCell(cell)) {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>        Tag tnTag = MobUtils.getTableNameTag(cell);<a name="line.396"></a>
-<span class="sourceLineNo">397</span>        if (tnTag == null) {<a name="line.397"></a>
-<span class="sourceLineNo">398</span>          System.err.println("ERROR, wrong tag format in mob reference cell "<a name="line.398"></a>
-<span class="sourceLineNo">399</span>            + CellUtil.getCellKeyAsString(cell));<a name="line.399"></a>
-<span class="sourceLineNo">400</span>        } else if (!MobUtils.hasValidMobRefCellValue(cell)) {<a name="line.400"></a>
-<span class="sourceLineNo">401</span>          System.err.println("ERROR, wrong value format in mob reference cell "<a name="line.401"></a>
-<span class="sourceLineNo">402</span>            + CellUtil.getCellKeyAsString(cell));<a name="line.402"></a>
-<span class="sourceLineNo">403</span>        } else {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>          TableName tn = TableName.valueOf(tnTag.getValue());<a name="line.404"></a>
-<span class="sourceLineNo">405</span>          String mobFileName = MobUtils.getMobFileName(cell);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>          boolean exist = mobFileExists(fs, tn, mobFileName,<a name="line.406"></a>
-<span class="sourceLineNo">407</span>            Bytes.toString(CellUtil.cloneFamily(cell)), foundMobFiles, missingMobFiles);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>          if (!exist) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>            // report error<a name="line.409"></a>
-<span class="sourceLineNo">410</span>            System.err.println("ERROR, the mob file [" + mobFileName<a name="line.410"></a>
-<span class="sourceLineNo">411</span>              + "] is missing referenced by cell " + CellUtil.getCellKeyAsString(cell));<a name="line.411"></a>
-<span class="sourceLineNo">412</span>          }<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        }<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      }<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      pCell = cell;<a name="line.415"></a>
-<span class="sourceLineNo">416</span>      ++count;<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    } while (scanner.next());<a name="line.417"></a>
-<span class="sourceLineNo">418</span>  }<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>  /**<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   * Checks whether the referenced mob file exists.<a name="line.421"></a>
-<span class="sourceLineNo">422</span>   */<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  private boolean mobFileExists(FileSystem fs, TableName tn, String mobFileName, String family,<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    Set&lt;String&gt; foundMobFiles, Set&lt;String&gt; missingMobFiles) throws IOException {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    if (foundMobFiles.contains(mobFileName)) {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      return true;<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    }<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    if (missingMobFiles.contains(mobFileName)) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      return false;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    }<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    String tableName = tn.getNameAsString();<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    List&lt;Path&gt; locations = mobFileLocations.get(tableName);<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    if (locations == null) {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      locations = new ArrayList&lt;Path&gt;(2);<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      locations.add(MobUtils.getMobFamilyPath(getConf(), tn, family));<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      locations.add(HFileArchiveUtil.getStoreArchivePath(getConf(), tn,<a name="line.436"></a>
-<span class="sourceLineNo">437</span>        MobUtils.getMobRegionInfo(tn).getEncodedName(), family));<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      mobFileLocations.put(tn.getNameAsString(), locations);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    }<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    boolean exist = false;<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    for (Path location : locations) {<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      Path mobFilePath = new Path(location, mobFileName);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      if (fs.exists(mobFilePath)) {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>        exist = true;<a name="line.444"></a>
-<span class="sourceLineNo">445</span>        break;<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>    if (exist) {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>      evictMobFilesIfNecessary(foundMobFiles, FOUND_MOB_FILES_CACHE_CAPACITY);<a name="line.449"></a>
-<span class="sourceLineNo">450</span>      foundMobFiles.add(mobFileName);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    } else {<a name="line.451"></a>
-<span class="sourceLineNo">452</span>      evictMobFilesIfNecessary(missingMobFiles, MISSING_MOB_FILES_CACHE_CAPACITY);<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      missingMobFiles.add(mobFileName);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    return exist;<a name="line.455"></a>
-<span class="sourceLineNo">456</span>  }<a name="line.456"></a>
-<span class="sourceLineNo">457</span><a name="line.457"></a>
-<span class="sourceLineNo">458</span>  /**<a name="line.458"></a>
-<span class="sourceLineNo">459</span>   * Evicts the cached mob files if the set is larger than the limit.<a name="line.459"></a>
-<span class="sourceLineNo">460</span>   */<a name="line.460"></a>
-<span class="sourceLineNo">461</span>  private void evictMobFilesIfNecessary(Set&lt;String&gt; mobFileNames, int limit) {<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    if (mobFileNames.size() &lt; limit) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      return;<a name="line.463"></a>
+<span class="sourceLineNo">387</span>      }<a name="line.387"></a>
+<span class="sourceLineNo">388</span>      // check if families are consistent<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      if (checkFamily) {<a name="line.389"></a>
+<span class="sourceLineNo">390</span>        String fam = Bytes.toString(cell.getFamilyArray(), cell.getFamilyOffset(),<a name="line.390"></a>
+<span class="sourceLineNo">391</span>            cell.getFamilyLength());<a name="line.391"></a>
+<span class="sourceLineNo">392</span>        if (!file.toString().contains(fam)) {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>          System.err.println("WARNING, filename does not match kv family,"<a name="line.393"></a>
+<span class="sourceLineNo">394</span>              + "\n\tfilename -&gt; " + file + "\n\tkeyvalue -&gt; "<a name="line.394"></a>
+<span class="sourceLineNo">395</span>              + CellUtil.getCellKeyAsString(cell));<a name="line.395"></a>
+<span class="sourceLineNo">396</span>        }<a name="line.396"></a>
+<span class="sourceLineNo">397</span>        if (pCell != null &amp;&amp; CellComparator.compareFamilies(pCell, cell) != 0) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>          System.err.println("WARNING, previous kv has different family"<a name="line.398"></a>
+<span class="sourceLineNo">399</span>              + " compared to current key\n\tfilename -&gt; " + file<a name="line.399"></a>
+<span class="sourceLineNo">400</span>              + "\n\tprevious -&gt; " + CellUtil.getCellKeyAsString(pCell)<a name="line.400"></a>
+<span class="sourceLineNo">401</span>              + "\n\tcurrent  -&gt; " + CellUtil.getCellKeyAsString(cell));<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        }<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      }<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      // check if mob files are missing.<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      if (checkMobIntegrity &amp;&amp; MobUtils.isMobReferenceCell(cell)) {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>        Tag tnTag = MobUtils.getTableNameTag(cell);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>        if (tnTag == null) {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>          System.err.println("ERROR, wrong tag format in mob reference cell "<a name="line.408"></a>
+<span class="sourceLineNo">409</span>            + CellUtil.getCellKeyAsString(cell));<a name="line.409"></a>
+<span class="sourceLineNo">410</span>        } else if (!MobUtils.hasValidMobRefCellValue(cell)) {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>          System.err.println("ERROR, wrong value format in mob reference cell "<a name="line.411"></a>
+<span class="sourceLineNo">412</span>            + CellUtil.getCellKeyAsString(cell));<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        } else {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>          TableName tn = TableName.valueOf(tnTag.getValue());<a name="line.414"></a>
+<span class="sourceLineNo">415</span>          String mobFileName = MobUtils.getMobFileName(cell);<a name="line.415"></a>
+<span class="sourceLineNo">416</span>          boolean exist = mobFileExists(fs, tn, mobFileName,<a name="line.416"></a>
+<span class="sourceLineNo">417</span>            Bytes.toString(CellUtil.cloneFamily(cell)), foundMobFiles, missingMobFiles);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>          if (!exist) {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>            // report error<a name="line.419"></a>
+<span class="sourceLineNo">420</span>            System.err.println("ERROR, the mob file [" + mobFileName<a name="line.420"></a>
+<span class="sourceLineNo">421</span>              + "] is missing referenced by cell " + CellUtil.getCellKeyAsString(cell));<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>      }<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      pCell = cell;<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      ++count;<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    } while (scanner.next());<a name="line.427"></a>
+<span class="sourceLineNo">428</span>  }<a name="line.428"></a>
+<span class="sourceLineNo">429</span><a name="line.429"></a>
+<span class="sourceLineNo">430</span>  /**<a name="line.430"></a>
+<span class="sourceLineNo">431</span>   * Checks whether the referenced mob file exists.<a name="line.431"></a>
+<span class="sourceLineNo">432</span>   */<a name="line.432"></a>
+<span class="sourceLineNo">433</span>  private boolean mobFileExists(FileSystem fs, TableName tn, String mobFileName, String family,<a name="line.433"></a>
+<span class="sourceLineNo">434</span>    Set&lt;String&gt; foundMobFiles, Set&lt;String&gt; missingMobFiles) throws IOException {<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    if (foundMobFiles.contains(mobFileName)) {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      return true;<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    }<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    if (missingMobFiles.contains(mobFileName)) {<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      return false;<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    String tableName = tn.getNameAsString();<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    List&lt;Path&gt; locations = mobFileLocations.get(tableName);<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    if (locations == null) {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      locations = new ArrayList&lt;Path&gt;(2);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      locations.add(MobUtils.getMobFamilyPath(getConf(), tn, family));<a name="line.445"></a>
+<span class="sourceLineNo">446</span>      locations.add(HFileArchiveUtil.getStoreArchivePath(getConf(), tn,<a name="line.446"></a>
+<span class="sourceLineNo">447</span>        MobUtils.getMobRegionInfo(tn).getEncodedName(), family));<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      mobFileLocations.put(tn.getNameAsString(), locations);<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    }<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    boolean exist = false;<a name="line.450"></a>
+<span class="sourceLineNo">451</span>    for (Path location : locations) {<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      Path mobFilePath = new Path(location, mobFileName);<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      if (fs.exists(mobFilePath)) {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>        exist = true;<a name="line.454"></a>
+<span class="sourceLineNo">455</span>        break;<a name="line.455"></a>
+<span class="sourceLineNo">456</span>      }<a name="line.456"></a>
+<span class="sourceLineNo">457</span>    }<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    if (exist) {<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      evictMobFilesIfNecessary(foundMobFiles, FOUND_MOB_FILES_CACHE_CAPACITY);<a name="line.459"></a>
+<span class="sourceLineNo">460</span>      foundMobFiles.add(mobFileName);<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    } else {<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      evictMobFilesIfNecessary(missingMobFiles, MISSING_MOB_FILES_CACHE_CAPACITY);<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      missingMobFiles.add(mobFileName);<a name="line.463"></a>
 <span class="sourceLineNo">464</span>    }<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    int index = 0;<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    int evict = limit / 2;<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    Iterator&lt;String&gt; fileNamesItr = mobFileNames.iterator();<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    while (index &lt; evict &amp;&amp; fileNamesItr.hasNext()) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      fileNamesItr.next();<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      fileNamesItr.remove();<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      index++;<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>  }<a name="line.473"></a>
-<span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span>  /**<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * Format a string of the form "k1=v1, k2=v2, ..." into separate lines<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * with a four-space indentation.<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   */<a name="line.478"></a>
-<span class="sourceLineNo">479</span>  private static String asSeparateLines(String keyValueStr) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    return keyValueStr.replaceAll(", ([a-zA-Z]+=)",<a name="line.480"></a>
-<span class="sourceLineNo">481</span>                                  ",\n" + FOUR_SPACES + "$1");<a name="line.481"></a>
-<span class="sourceLineNo">482</span>  }<a name="line.482"></a>
-<span class="sourceLineNo">483</span><a name="line.483"></a>
-<span class="sourceLineNo">484</span>  private void printMeta(HFile.Reader reader, Map&lt;byte[], byte[]&gt; fileInfo)<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      throws IOException {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    System.out.println("Block index size as per heapsize: "<a name="line.486"></a>
-<span class="sourceLineNo">487</span>        + reader.indexSize());<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    System.out.println(asSeparateLines(reader.toString()));<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    System.out.println("Trailer:\n    "<a name="line.489"></a>
-<span class="sourceLineNo">490</span>        + asSeparateLines(reader.getTrailer().toString()));<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    System.out.println("Fileinfo:");<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    for (Map.Entry&lt;byte[], byte[]&gt; e : fileInfo.entrySet()) {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      System.out.print(FOUR_SPACES + Bytes.toString(e.getKey()) + " = ");<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      if (Bytes.compareTo(e.getKey(), Bytes.toBytes("MAX_SEQ_ID_KEY")) == 0) {<a name="line.494"></a>
-<span class="sourceLineNo">495</span>        long seqid = Bytes.toLong(e.getValue());<a name="line.495"></a>
-<span class="sourceLineNo">496</span>        System.out.println(seqid);<a name="line.496"></a>
-<span class="sourceLineNo">497</span>      } else if (Bytes.compareTo(e.getKey(), Bytes.toBytes("TIMERANGE")) == 0) {<a name="line.497"></a>
-<span class="sourceLineNo">498</span>        TimeRangeTracker timeRangeTracker = new TimeRangeTracker();<a name="li

<TRUNCATED>

[51/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.


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

Branch: refs/heads/asf-site
Commit: 539ad17793a15c4c4bbf475b897afb889cd6795a
Parents: a90ef9c
Author: jenkins <bu...@apache.org>
Authored: Wed Dec 16 15:09:56 2015 +0000
Committer: Misty Stanley-Jones <ms...@cloudera.com>
Committed: Wed Dec 16 08:50:20 2015 -0800

----------------------------------------------------------------------
 acid-semantics.html                             |     4 +-
 apache_hbase_reference_guide.pdf                |   Bin 14187212 -> 14190415 bytes
 apache_hbase_reference_guide.pdfmarks           |     4 +-
 .../hbase/mapreduce/TableMapReduceUtil.html     |     6 +-
 book.html                                       |    38 +-
 bulk-loads.html                                 |     4 +-
 checkstyle-aggregate.html                       | 10320 ++++++++---------
 checkstyle.rss                                  |    10 +-
 coc.html                                        |     4 +-
 cygwin.html                                     |     4 +-
 dependencies.html                               |     4 +-
 dependency-convergence.html                     |    36 +-
 dependency-info.html                            |     4 +-
 dependency-management.html                      |    30 +-
 devapidocs/allclasses-frame.html                |     2 +
 devapidocs/allclasses-noframe.html              |     2 +
 devapidocs/index-all.html                       |   116 +-
 .../hbase/classification/package-tree.html      |     8 +-
 .../client/MetricsConnection.CallStats.html     |    28 +-
 .../client/MetricsConnection.CallTracker.html   |    32 +-
 .../client/MetricsConnection.NewMetric.html     |     4 +-
 .../client/MetricsConnection.RegionStats.html   |    20 +-
 .../client/MetricsConnection.RunnerStats.html   |    26 +-
 .../hadoop/hbase/client/MetricsConnection.html  |   100 +-
 .../class-use/MetricsConnection.NewMetric.html  |     4 +-
 .../hadoop/hbase/client/package-tree.html       |     8 +-
 .../CoprocessorHost.Environment.html            |    40 +-
 ...essorHost.EnvironmentPriorityComparator.html |     6 +-
 .../hbase/coprocessor/CoprocessorHost.html      |    36 +-
 .../hadoop/hbase/executor/EventHandler.html     |    18 +-
 .../hadoop/hbase/executor/package-tree.html     |     2 +-
 .../hadoop/hbase/filter/package-tree.html       |     8 +-
 .../hadoop/hbase/io/hfile/AgeSnapshot.html      |    41 +-
 ...BlockCacheUtil.CachedBlockCountsPerFile.html |    24 +-
 .../BlockCacheUtil.CachedBlocksByFile.html      |    44 +-
 .../hadoop/hbase/io/hfile/BlockCacheUtil.html   |    22 +-
 .../hadoop/hbase/io/hfile/CacheStats.html       |   126 +-
 ...ilePrettyPrinter.KeyValueStatsCollector.html |    48 +-
 .../HFilePrettyPrinter.SimpleReporter.html      |   185 +-
 .../hbase/io/hfile/HFilePrettyPrinter.html      |    71 +-
 .../hadoop/hbase/io/hfile/HFileReaderImpl.html  |     4 +-
 .../HFilePrettyPrinter.SimpleReporter.html      |    15 +
 .../hadoop/hbase/io/hfile/package-frame.html    |     1 +
 .../hadoop/hbase/io/hfile/package-summary.html  |    45 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |    23 +-
 .../hadoop/hbase/io/hfile/package-use.html      |    30 +-
 .../hadoop/hbase/mapreduce/package-tree.html    |     4 +-
 .../hadoop/hbase/master/package-tree.html       |     4 +-
 .../hbase/master/procedure/package-tree.html    |     2 +-
 .../org/apache/hadoop/hbase/package-tree.html   |    10 +-
 .../hbase/procedure2/class-use/Procedure.html   |    16 +-
 .../hadoop/hbase/procedure2/package-tree.html   |     2 +-
 .../store/ProcedureStoreTracker.BitSetNode.html |    74 +-
 .../ProcedureStoreTracker.DeleteState.html      |    12 +-
 .../procedure2/store/ProcedureStoreTracker.html |    85 +-
 .../wal/WALProcedureStore.LeaseRecovery.html    |     4 +-
 .../procedure2/store/wal/WALProcedureStore.html |   380 +-
 .../procedure2/store/wal/package-frame.html     |     4 +
 .../procedure2/store/wal/package-summary.html   |    15 +
 .../procedure2/store/wal/package-tree.html      |    12 +
 .../hbase/procedure2/store/wal/package-use.html |     3 +
 .../procedure2/util/class-use/ByteSlot.html     |     5 +-
 .../hadoop/hbase/quotas/package-tree.html       |     6 +-
 .../handler/RegionReplicaFlushHandler.html      |     4 +-
 .../hadoop/hbase/regionserver/package-tree.html |    24 +-
 .../hbase/security/access/package-tree.html     |     2 +-
 .../hadoop/hbase/thrift/package-tree.html       |     2 +-
 .../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 +-
 .../hadoop/hbase/util/YammerHistogramUtils.html |    20 +-
 .../apache/hadoop/hbase/util/package-tree.html  |     4 +-
 .../apache/hadoop/hbase/wal/package-tree.html   |     2 +-
 .../hadoop/metrics2/lib/MutableHistogram.html   |    10 +-
 devapidocs/overview-tree.html                   |    20 +-
 .../ChoreService.ChoreServiceThreadFactory.html |     2 +-
 .../org/apache/hadoop/hbase/ChoreService.html   |     2 +-
 .../client/MetricsConnection.CallStats.html     |   767 +-
 .../client/MetricsConnection.CallTracker.html   |   767 +-
 .../client/MetricsConnection.NewMetric.html     |   767 +-
 .../client/MetricsConnection.RegionStats.html   |   767 +-
 .../client/MetricsConnection.RunnerStats.html   |   767 +-
 .../hadoop/hbase/client/MetricsConnection.html  |   767 +-
 .../CoprocessorHost.Environment.html            |  1064 +-
 ...essorHost.EnvironmentPriorityComparator.html |  1064 +-
 .../hbase/coprocessor/CoprocessorHost.html      |  1064 +-
 .../hadoop/hbase/executor/EventHandler.html     |   183 +-
 .../hadoop/hbase/io/hfile/AgeSnapshot.html      |    90 +-
 ...BlockCacheUtil.CachedBlockCountsPerFile.html |   506 +-
 .../BlockCacheUtil.CachedBlocksByFile.html      |   506 +-
 .../hadoop/hbase/io/hfile/BlockCacheUtil.html   |   506 +-
 .../hadoop/hbase/io/hfile/CacheStats.html       |   534 +-
 ...ilePrettyPrinter.KeyValueStatsCollector.html |  1337 ++-
 .../HFilePrettyPrinter.SimpleReporter.html      |  1337 ++-
 .../hbase/io/hfile/HFilePrettyPrinter.html      |  1337 ++-
 .../hbase/mapreduce/TableMapReduceUtil.html     |     6 +-
 .../store/ProcedureStoreTracker.BitSetNode.html |  1113 +-
 .../ProcedureStoreTracker.DeleteState.html      |  1113 +-
 .../procedure2/store/ProcedureStoreTracker.html |  1113 +-
 .../wal/WALProcedureStore.LeaseRecovery.html    |  1712 +--
 .../procedure2/store/wal/WALProcedureStore.html |  1712 +--
 .../handler/RegionReplicaFlushHandler.html      |   208 +-
 .../tmpl/master/MasterStatusTmpl.ImplData.html  |   270 +-
 .../tmpl/master/MasterStatusTmpl.Intf.html      |   270 +-
 .../hbase/tmpl/master/MasterStatusTmpl.html     |   270 +-
 .../hbase/tmpl/master/MasterStatusTmplImpl.html |    72 +-
 .../BlockCacheViewTmpl.ImplData.html            |     2 +-
 .../regionserver/BlockCacheViewTmpl.Intf.html   |     2 +-
 .../tmpl/regionserver/BlockCacheViewTmpl.html   |     2 +-
 .../regionserver/BlockCacheViewTmplImpl.html    |     2 +-
 .../regionserver/RSStatusTmpl.ImplData.html     |   120 +-
 .../tmpl/regionserver/RSStatusTmpl.Intf.html    |   120 +-
 .../hbase/tmpl/regionserver/RSStatusTmpl.html   |   120 +-
 .../tmpl/regionserver/RSStatusTmplImpl.html     |    32 +-
 .../ServerMetricsTmpl.ImplData.html             |     2 +-
 .../regionserver/ServerMetricsTmpl.Intf.html    |     2 +-
 .../tmpl/regionserver/ServerMetricsTmpl.html    |     2 +-
 .../regionserver/ServerMetricsTmplImpl.html     |     2 +-
 .../hadoop/hbase/util/YammerHistogramUtils.html |    28 +-
 .../hadoop/metrics2/lib/MutableHistogram.html   |    16 +-
 distribution-management.html                    |     4 +-
 export_control.html                             |     4 +-
 hbase-annotations/checkstyle.html               |     6 +-
 hbase-annotations/dependencies.html             |     6 +-
 hbase-annotations/dependency-convergence.html   |    38 +-
 hbase-annotations/dependency-info.html          |     6 +-
 hbase-annotations/dependency-management.html    |    32 +-
 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-spark/checkstyle.html                     |     6 +-
 hbase-spark/dependencies.html                   |   542 +-
 hbase-spark/dependency-convergence.html         |    38 +-
 hbase-spark/dependency-info.html                |     6 +-
 hbase-spark/dependency-management.html          |    32 +-
 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/allclasses-frame.html            |     1 -
 testdevapidocs/allclasses-noframe.html          |     1 -
 testdevapidocs/index-all.html                   |    24 +-
 .../IntegrationTestRegionReplicaPerf.Stat.html  |     6 +-
 .../hbase/PerformanceEvaluation.RunResult.html  |    12 +-
 .../hbase/PerformanceEvaluation.Test.html       |    18 +-
 .../hbase/executor/TestExecutorService.html     |    18 +-
 .../org/apache/hadoop/hbase/package-tree.html   |     2 +-
 .../hadoop/hbase/procedure2/package-tree.html   |     2 +-
 ...TestProcedureStoreTracker.TestProcedure.html |   348 -
 .../store/TestProcedureStoreTracker.html        |    47 +-
 ...TestProcedureStoreTracker.TestProcedure.html |   115 -
 .../hbase/procedure2/store/package-frame.html   |     1 -
 .../hbase/procedure2/store/package-summary.html |     4 -
 .../hbase/procedure2/store/package-tree.html    |     5 -
 .../wal/TestWALProcedureStore.LoadCounter.html  |    34 +-
 ...LProcedureStore.TestSequentialProcedure.html |    16 +-
 .../store/wal/TestWALProcedureStore.html        |    32 +-
 ...ALPerformanceEvaluation.WALPutBenchmark.html |    20 +-
 .../hbase/wal/WALPerformanceEvaluation.html     |    76 +-
 testdevapidocs/overview-tree.html               |     1 -
 ...nTestRegionReplicaPerf.PerfEvalCallable.html |     6 +-
 .../IntegrationTestRegionReplicaPerf.Stat.html  |     6 +-
 ...ationTestRegionReplicaPerf.TimingResult.html |     6 +-
 .../hbase/IntegrationTestRegionReplicaPerf.html |     6 +-
 ...rformanceEvaluation.BufferedMutatorTest.html |    22 +-
 .../PerformanceEvaluation.CmdDescriptor.html    |    22 +-
 .../hbase/PerformanceEvaluation.Counter.html    |    22 +-
 ...PerformanceEvaluation.EvaluationMapTask.html |    22 +-
 .../PerformanceEvaluation.FilteredScanTest.html |    22 +-
 .../PerformanceEvaluation.RandomReadTest.html   |    22 +-
 ...Evaluation.RandomScanWithRange10000Test.html |    22 +-
 ...eEvaluation.RandomScanWithRange1000Test.html |    22 +-
 ...ceEvaluation.RandomScanWithRange100Test.html |    22 +-
 ...nceEvaluation.RandomScanWithRange10Test.html |    22 +-
 ...manceEvaluation.RandomScanWithRangeTest.html |    22 +-
 ...erformanceEvaluation.RandomSeekScanTest.html |    22 +-
 .../PerformanceEvaluation.RandomWriteTest.html  |    22 +-
 .../hbase/PerformanceEvaluation.RunResult.html  |    22 +-
 .../hbase/PerformanceEvaluation.ScanTest.html   |    22 +-
 ...erformanceEvaluation.SequentialReadTest.html |    22 +-
 ...rformanceEvaluation.SequentialWriteTest.html |    22 +-
 .../hbase/PerformanceEvaluation.Status.html     |    22 +-
 .../hbase/PerformanceEvaluation.TableTest.html  |    22 +-
 .../hbase/PerformanceEvaluation.Test.html       |    22 +-
 .../PerformanceEvaluation.TestOptions.html      |    22 +-
 .../hadoop/hbase/PerformanceEvaluation.html     |    22 +-
 .../hadoop/hbase/TestPerformanceEvaluation.html |    18 +-
 .../hadoop/hbase/client/TestClientPushback.html |    23 +-
 .../hbase/client/TestMetricsConnection.html     |     6 +-
 .../TestExecutorService.TestEventHandler.html   |    65 +-
 .../hbase/executor/TestExecutorService.html     |    65 +-
 ...ProcedureRecovery.BaseTestStepProcedure.html |     4 +-
 ...y.TestMultiStepProcedure.Step1Procedure.html |     4 +-
 ...y.TestMultiStepProcedure.Step2Procedure.html |     4 +-
 ...rocedureRecovery.TestMultiStepProcedure.html |     4 +-
 .../TestProcedureRecovery.TestProcEnv.html      |     4 +-
 ...ocedureRecovery.TestSingleStepProcedure.html |     4 +-
 ...ecovery.TestStateMachineProcedure.State.html |     4 +-
 ...edureRecovery.TestStateMachineProcedure.html |     4 +-
 .../hbase/procedure2/TestProcedureRecovery.html |     4 +-
 ...TestProcedureStoreTracker.TestProcedure.html |   343 -
 .../store/TestProcedureStoreTracker.html        |   449 +-
 .../wal/TestWALProcedureStore.LoadCounter.html  |   711 +-
 ...LProcedureStore.TestSequentialProcedure.html |   711 +-
 .../store/wal/TestWALProcedureStore.html        |   711 +-
 ...ALPerformanceEvaluation.WALPutBenchmark.html |  1050 +-
 .../hbase/wal/WALPerformanceEvaluation.html     |  1050 +-
 .../hbase/IntegrationTestRegionReplicaPerf.html |     6 +-
 .../hadoop/hbase/PerformanceEvaluation.html     |    22 +-
 .../hadoop/hbase/TestPerformanceEvaluation.html |    18 +-
 .../hadoop/hbase/client/TestClientPushback.html |    23 +-
 .../hbase/client/TestMetricsConnection.html     |     6 +-
 .../hbase/executor/TestExecutorService.html     |    65 +-
 .../procedure2/ProcedureTestingUtility.html     |     8 +-
 .../hbase/procedure2/TestProcedureRecovery.html |     4 +-
 .../procedure2/TestProcedureReplayOrder.html    |    12 +-
 .../store/TestProcedureStoreTracker.html        |   449 +-
 .../hbase/procedure2/store/package-frame.html   |     3 -
 .../hbase/procedure2/store/package-summary.html |     5 -
 .../store/wal/TestWALProcedureStore.html        |   711 +-
 .../hbase/wal/WALPerformanceEvaluation.html     |  1050 +-
 xref/allclasses-frame.html                      |     3 +
 xref/org/apache/hadoop/hbase/ChoreService.html  |     2 +-
 .../hadoop/hbase/client/MetricsConnection.html  |   767 +-
 .../hbase/coprocessor/CoprocessorHost.html      |  1064 +-
 .../hadoop/hbase/executor/EventHandler.html     |   183 +-
 .../hadoop/hbase/io/hfile/AgeSnapshot.html      |    90 +-
 .../hadoop/hbase/io/hfile/BlockCacheUtil.html   |   506 +-
 .../hadoop/hbase/io/hfile/CacheStats.html       |   534 +-
 .../hbase/io/hfile/HFilePrettyPrinter.html      |  1337 ++-
 .../hadoop/hbase/io/hfile/package-frame.html    |     3 +
 .../hadoop/hbase/io/hfile/package-summary.html  |     5 +
 .../hbase/mapreduce/TableMapReduceUtil.html     |     6 +-
 .../procedure2/store/ProcedureStoreTracker.html |  1113 +-
 .../procedure2/store/wal/WALProcedureStore.html |  1712 +--
 .../procedure2/store/wal/package-frame.html     |     3 +
 .../procedure2/store/wal/package-summary.html   |     5 +
 .../handler/RegionReplicaFlushHandler.html      |   208 +-
 .../hbase/tmpl/common/TaskMonitorTmpl.html      |    60 +-
 .../hbase/tmpl/common/TaskMonitorTmplImpl.html  |    16 +-
 .../hbase/tmpl/master/MasterStatusTmpl.html     |   270 +-
 .../hbase/tmpl/master/MasterStatusTmplImpl.html |    72 +-
 .../tmpl/regionserver/BlockCacheViewTmpl.html   |     2 +-
 .../regionserver/BlockCacheViewTmplImpl.html    |     2 +-
 .../hbase/tmpl/regionserver/RSStatusTmpl.html   |   120 +-
 .../tmpl/regionserver/RSStatusTmplImpl.html     |    32 +-
 .../tmpl/regionserver/ServerMetricsTmpl.html    |     2 +-
 .../regionserver/ServerMetricsTmplImpl.html     |     2 +-
 .../hadoop/hbase/util/YammerHistogramUtils.html |    28 +-
 .../hadoop/metrics2/lib/MutableHistogram.html   |    16 +-
 293 files changed, 26725 insertions(+), 26711 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/acid-semantics.html
----------------------------------------------------------------------
diff --git a/acid-semantics.html b/acid-semantics.html
index a3b699c..8a055ee 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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <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: 2015-12-15</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-12-16</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/apache_hbase_reference_guide.pdf
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index a44f6d1..cc48801 100644
Binary files a/apache_hbase_reference_guide.pdf and b/apache_hbase_reference_guide.pdf differ

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/apache_hbase_reference_guide.pdfmarks
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdfmarks b/apache_hbase_reference_guide.pdfmarks
index 3c331b3..dce9e2e 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:20151215172516)
-  /CreationDate (D:20151215172516)
+  /ModDate (D:20151216150624)
+  /CreationDate (D:20151216150624)
   /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/539ad177/apidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html
----------------------------------------------------------------------
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html b/apidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html
index d6cf161..271fd72 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html
@@ -27,7 +27,7 @@
 <span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.mapreduce;<a name="line.19"></a>
 <span class="sourceLineNo">020</span><a name="line.20"></a>
 <span class="sourceLineNo">021</span>import com.google.protobuf.InvalidProtocolBufferException;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import com.yammer.metrics.core.MetricsRegistry;<a name="line.22"></a>
+<span class="sourceLineNo">022</span>import com.codahale.metrics.MetricRegistry;<a name="line.22"></a>
 <span class="sourceLineNo">023</span>import org.apache.commons.logging.Log;<a name="line.23"></a>
 <span class="sourceLineNo">024</span>import org.apache.commons.logging.LogFactory;<a name="line.24"></a>
 <span class="sourceLineNo">025</span>import org.apache.hadoop.conf.Configuration;<a name="line.25"></a>
@@ -347,7 +347,7 @@
 <span class="sourceLineNo">339</span><a name="line.339"></a>
 <span class="sourceLineNo">340</span>    if (addDependencyJars) {<a name="line.340"></a>
 <span class="sourceLineNo">341</span>      addDependencyJars(job);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      addDependencyJars(job.getConfiguration(), MetricsRegistry.class);<a name="line.342"></a>
+<span class="sourceLineNo">342</span>      addDependencyJars(job.getConfiguration(), MetricRegistry.class);<a name="line.342"></a>
 <span class="sourceLineNo">343</span>    }<a name="line.343"></a>
 <span class="sourceLineNo">344</span><a name="line.344"></a>
 <span class="sourceLineNo">345</span>    resetCacheConfig(job.getConfiguration());<a name="line.345"></a>
@@ -793,7 +793,7 @@
 <span class="sourceLineNo">785</span>      com.google.protobuf.Message.class,<a name="line.785"></a>
 <span class="sourceLineNo">786</span>      com.google.common.collect.Lists.class,<a name="line.786"></a>
 <span class="sourceLineNo">787</span>      org.apache.htrace.Trace.class,<a name="line.787"></a>
-<span class="sourceLineNo">788</span>      com.yammer.metrics.core.MetricsRegistry.class);<a name="line.788"></a>
+<span class="sourceLineNo">788</span>      com.codahale.metrics.MetricRegistry.class);<a name="line.788"></a>
 <span class="sourceLineNo">789</span>  }<a name="line.789"></a>
 <span class="sourceLineNo">790</span><a name="line.790"></a>
 <span class="sourceLineNo">791</span>  /**<a name="line.791"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/book.html
----------------------------------------------------------------------
diff --git a/book.html b/book.html
index 254b7e6..5a660c2 100644
--- a/book.html
+++ b/book.html
@@ -10248,41 +10248,43 @@ To start Thrift on a node, run the command <code>bin/hbase-daemon.sh start thrif
 <p><a href="#security.gateway.thrift">Configure the Thrift Gateway to Authenticate on Behalf of the Client</a> describes how to configure the Thrift gateway to authenticate to HBase on the client&#8217;s behalf, and to access HBase using a proxy user. The limitation of this approach is that after the client is initialized with a particular set of credentials, it cannot change these credentials during the session. The <code>doAs</code> feature provides a flexible way to impersonate multiple principals using the same client. This feature was implemented in <a href="https://issues.apache.org/jira/browse/HBASE-12640">HBASE-12640</a> for Thrift 1, but is currently not available for Thrift 2.</p>
 </div>
 <div class="paragraph">
-<p><strong>To allow proxy users</strong>, add the following to the <em>hbase-site.xml</em> file for every HBase node:</p>
+<p><strong>To enable the <code>doAs</code> feature</strong>, add the following to the <em>hbase-site.xml</em> file for every Thrift gateway:</p>
 </div>
 <div class="listingblock">
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;property&gt;</span>
-  <span class="tag">&lt;name&gt;</span>hadoop.security.authorization<span class="tag">&lt;/name&gt;</span>
+  <span class="tag">&lt;name&gt;</span>hbase.regionserver.thrift.http<span class="tag">&lt;/name&gt;</span>
   <span class="tag">&lt;value&gt;</span>true<span class="tag">&lt;/value&gt;</span>
 <span class="tag">&lt;/property&gt;</span>
 <span class="tag">&lt;property&gt;</span>
-  <span class="tag">&lt;name&gt;</span>hadoop.proxyuser.$USER.groups<span class="tag">&lt;/name&gt;</span>
-  <span class="tag">&lt;value&gt;</span>$GROUPS<span class="tag">&lt;/value&gt;</span>
-<span class="tag">&lt;/property&gt;</span>
-<span class="tag">&lt;property&gt;</span>
-  <span class="tag">&lt;name&gt;</span>hadoop.proxyuser.$USER.hosts<span class="tag">&lt;/name&gt;</span>
-  <span class="tag">&lt;value&gt;</span>$GROUPS<span class="tag">&lt;/value&gt;</span>
+  <span class="tag">&lt;name&gt;</span>hbase.thrift.support.proxyuser<span class="tag">&lt;/name&gt;</span>
+  <span class="tag">&lt;value&gt;</span>true/value<span class="error">&gt;</span>
 <span class="tag">&lt;/property&gt;</span></code></pre>
 </div>
 </div>
 <div class="paragraph">
-<p><strong>To enable the <code>doAs</code> feature</strong>, add the following to the <em>hbase-site.xml</em> file for every Thrift gateway:</p>
+<p><strong>To allow proxy users</strong> when using <code>doAs</code> impersonation, add the following to the <em>hbase-site.xml</em> file for every HBase node:</p>
 </div>
 <div class="listingblock">
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;property&gt;</span>
-  <span class="tag">&lt;name&gt;</span>hbase.regionserver.thrift.http<span class="tag">&lt;/name&gt;</span>
+  <span class="tag">&lt;name&gt;</span>hadoop.security.authorization<span class="tag">&lt;/name&gt;</span>
   <span class="tag">&lt;value&gt;</span>true<span class="tag">&lt;/value&gt;</span>
 <span class="tag">&lt;/property&gt;</span>
 <span class="tag">&lt;property&gt;</span>
-  <span class="tag">&lt;name&gt;</span>hbase.thrift.support.proxyuser<span class="tag">&lt;/name&gt;</span>
-  <span class="tag">&lt;value&gt;</span>true/value<span class="error">&gt;</span>
+  <span class="tag">&lt;name&gt;</span>hadoop.proxyuser.$USER.groups<span class="tag">&lt;/name&gt;</span>
+  <span class="tag">&lt;value&gt;</span>$GROUPS<span class="tag">&lt;/value&gt;</span>
+<span class="tag">&lt;/property&gt;</span>
+<span class="tag">&lt;property&gt;</span>
+  <span class="tag">&lt;name&gt;</span>hadoop.proxyuser.$USER.hosts<span class="tag">&lt;/name&gt;</span>
+  <span class="tag">&lt;value&gt;</span>$GROUPS<span class="tag">&lt;/value&gt;</span>
 <span class="tag">&lt;/property&gt;</span></code></pre>
 </div>
 </div>
 <div class="paragraph">
-<p>Take a look at the <a href="https://github.com/apache/hbase/blob/master/hbase-examples/src/main/java/org/apache/hadoop/hbase/thrift/HttpDoAsClient.java">demo client</a> to get an overall idea of how to use this feature in your client.</p>
+<p>Take a look at the
+<a href="https://github.com/apache/hbase/blob/master/hbase-examples/src/main/java/org/apache/hadoop/hbase/thrift/HttpDoAsClient.java">demo client</a>
+to get an overall idea of how to use this feature in your client.</p>
 </div>
 </div>
 <div class="sect2">
@@ -10327,6 +10329,10 @@ To enable REST gateway Kerberos authentication for client access, add the follow
 <div class="listingblock">
 <div class="content">
 <pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;property&gt;</span>
+  <span class="tag">&lt;name&gt;</span>hbase.rest.support.proxyuser<span class="tag">&lt;/name&gt;</span>
+  <span class="tag">&lt;value&gt;</span>true<span class="tag">&lt;/value&gt;</span>
+<span class="tag">&lt;/property&gt;</span>
+<span class="tag">&lt;property&gt;</span>
   <span class="tag">&lt;name&gt;</span>hbase.rest.authentication.type<span class="tag">&lt;/name&gt;</span>
   <span class="tag">&lt;value&gt;</span>kerberos<span class="tag">&lt;/value&gt;</span>
 <span class="tag">&lt;/property&gt;</span>
@@ -27527,6 +27533,10 @@ End-of-life releases are not included in this list.
 </thead>
 <tbody>
 <tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">0.94</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Lars Hofhansl</p></td>
+</tr>
+<tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">0.98</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Andrew Purtell</p></td>
 </tr>
@@ -32882,7 +32892,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 2015-12-15 17:01:23 UTC
+Last updated 2015-12-16 14:39:59 UTC
 </div>
 </div>
 </body>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/bulk-loads.html
----------------------------------------------------------------------
diff --git a/bulk-loads.html b/bulk-loads.html
index a415828..3498b8a 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="20151215" />
+    <meta name="Date-Revision-yyyymmdd" content="20151216" />
     <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: 2015-12-15</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2015-12-16</li>
             </p>
                 </div>
 


[37/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/src-html/org/apache/hadoop/hbase/client/MetricsConnection.RegionStats.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/client/MetricsConnection.RegionStats.html b/devapidocs/src-html/org/apache/hadoop/hbase/client/MetricsConnection.RegionStats.html
index 0d9837b..9090c08 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/client/MetricsConnection.RegionStats.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/client/MetricsConnection.RegionStats.html
@@ -28,12 +28,12 @@
 <span class="sourceLineNo">020</span>import com.google.common.annotations.VisibleForTesting;<a name="line.20"></a>
 <span class="sourceLineNo">021</span>import com.google.protobuf.Descriptors.MethodDescriptor;<a name="line.21"></a>
 <span class="sourceLineNo">022</span>import com.google.protobuf.Message;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import com.yammer.metrics.core.Counter;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import com.yammer.metrics.core.Histogram;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import com.yammer.metrics.core.MetricsRegistry;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import com.yammer.metrics.core.Timer;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import com.yammer.metrics.reporting.JmxReporter;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import com.yammer.metrics.util.RatioGauge;<a name="line.28"></a>
+<span class="sourceLineNo">023</span>import com.codahale.metrics.Counter;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import com.codahale.metrics.Histogram;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import com.codahale.metrics.MetricRegistry;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import com.codahale.metrics.Timer;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import com.codahale.metrics.JmxReporter;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import com.codahale.metrics.RatioGauge;<a name="line.28"></a>
 <span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.ServerName;<a name="line.29"></a>
 <span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.30"></a>
 <span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.protobuf.generated.ClientProtos;<a name="line.31"></a>
@@ -48,394 +48,397 @@
 <span class="sourceLineNo">040</span>import java.util.concurrent.ThreadPoolExecutor;<a name="line.40"></a>
 <span class="sourceLineNo">041</span>import java.util.concurrent.TimeUnit;<a name="line.41"></a>
 <span class="sourceLineNo">042</span><a name="line.42"></a>
-<span class="sourceLineNo">043</span>/**<a name="line.43"></a>
-<span class="sourceLineNo">044</span> * This class is for maintaining the various connection statistics and publishing them through<a name="line.44"></a>
-<span class="sourceLineNo">045</span> * the metrics interfaces.<a name="line.45"></a>
-<span class="sourceLineNo">046</span> *<a name="line.46"></a>
-<span class="sourceLineNo">047</span> * This class manages its own {@link MetricsRegistry} and {@link JmxReporter} so as to not<a name="line.47"></a>
-<span class="sourceLineNo">048</span> * conflict with other uses of Yammer Metrics within the client application. Instantiating<a name="line.48"></a>
-<span class="sourceLineNo">049</span> * this class implicitly creates and "starts" instances of these classes; be sure to call<a name="line.49"></a>
-<span class="sourceLineNo">050</span> * {@link #shutdown()} to terminate the thread pools they allocate.<a name="line.50"></a>
-<span class="sourceLineNo">051</span> */<a name="line.51"></a>
-<span class="sourceLineNo">052</span>@InterfaceAudience.Private<a name="line.52"></a>
-<span class="sourceLineNo">053</span>public class MetricsConnection {<a name="line.53"></a>
-<span class="sourceLineNo">054</span><a name="line.54"></a>
-<span class="sourceLineNo">055</span>  /** Set this key to {@code true} to enable metrics collection of client requests. */<a name="line.55"></a>
-<span class="sourceLineNo">056</span>  public static final String CLIENT_SIDE_METRICS_ENABLED_KEY = "hbase.client.metrics.enable";<a name="line.56"></a>
-<span class="sourceLineNo">057</span><a name="line.57"></a>
-<span class="sourceLineNo">058</span>  private static final String DRTN_BASE = "rpcCallDurationMs_";<a name="line.58"></a>
-<span class="sourceLineNo">059</span>  private static final String REQ_BASE = "rpcCallRequestSizeBytes_";<a name="line.59"></a>
-<span class="sourceLineNo">060</span>  private static final String RESP_BASE = "rpcCallResponseSizeBytes_";<a name="line.60"></a>
-<span class="sourceLineNo">061</span>  private static final String MEMLOAD_BASE = "memstoreLoad_";<a name="line.61"></a>
-<span class="sourceLineNo">062</span>  private static final String HEAP_BASE = "heapOccupancy_";<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  private static final String CLIENT_SVC = ClientService.getDescriptor().getName();<a name="line.63"></a>
-<span class="sourceLineNo">064</span><a name="line.64"></a>
-<span class="sourceLineNo">065</span>  /** A container class for collecting details about the RPC call as it percolates. */<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  public static class CallStats {<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    private long requestSizeBytes = 0;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    private long responseSizeBytes = 0;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    private long startTime = 0;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    private long callTimeMs = 0;<a name="line.70"></a>
-<span class="sourceLineNo">071</span><a name="line.71"></a>
-<span class="sourceLineNo">072</span>    public long getRequestSizeBytes() {<a name="line.72"></a>
-<span class="sourceLineNo">073</span>      return requestSizeBytes;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    }<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>    public void setRequestSizeBytes(long requestSizeBytes) {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>      this.requestSizeBytes = requestSizeBytes;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    }<a name="line.78"></a>
-<span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>    public long getResponseSizeBytes() {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      return responseSizeBytes;<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 void setResponseSizeBytes(long responseSizeBytes) {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      this.responseSizeBytes = responseSizeBytes;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    }<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>    public long getStartTime() {<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      return startTime;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    }<a name="line.90"></a>
-<span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>    public void setStartTime(long startTime) {<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      this.startTime = startTime;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    }<a name="line.94"></a>
-<span class="sourceLineNo">095</span><a name="line.95"></a>
-<span class="sourceLineNo">096</span>    public long getCallTimeMs() {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>      return callTimeMs;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    }<a name="line.98"></a>
-<span class="sourceLineNo">099</span><a name="line.99"></a>
-<span class="sourceLineNo">100</span>    public void setCallTimeMs(long callTimeMs) {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      this.callTimeMs = callTimeMs;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    }<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  }<a name="line.103"></a>
-<span class="sourceLineNo">104</span><a name="line.104"></a>
-<span class="sourceLineNo">105</span>  @VisibleForTesting<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  protected final class CallTracker {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    private final String name;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    @VisibleForTesting final Timer callTimer;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    @VisibleForTesting final Histogram reqHist;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    @VisibleForTesting final Histogram respHist;<a name="line.110"></a>
-<span class="sourceLineNo">111</span><a name="line.111"></a>
-<span class="sourceLineNo">112</span>    private CallTracker(MetricsRegistry registry, String name, String subName, String scope) {<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      StringBuilder sb = new StringBuilder(CLIENT_SVC).append("_").append(name);<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      if (subName != null) {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>        sb.append("(").append(subName).append(")");<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      }<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      this.name = sb.toString();<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      this.callTimer = registry.newTimer(MetricsConnection.class, DRTN_BASE + this.name, scope);<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      this.reqHist = registry.newHistogram(MetricsConnection.class, REQ_BASE + this.name, scope);<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      this.respHist = registry.newHistogram(MetricsConnection.class, RESP_BASE + this.name, scope);<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>    private CallTracker(MetricsRegistry registry, String name, String scope) {<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      this(registry, name, null, scope);<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    }<a name="line.125"></a>
-<span class="sourceLineNo">126</span><a name="line.126"></a>
-<span class="sourceLineNo">127</span>    public void updateRpc(CallStats stats) {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      this.callTimer.update(stats.getCallTimeMs(), TimeUnit.MILLISECONDS);<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      this.reqHist.update(stats.getRequestSizeBytes());<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      this.respHist.update(stats.getResponseSizeBytes());<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    }<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>    @Override<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    public String toString() {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      return "CallTracker:" + name;<a name="line.135"></a>
+<span class="sourceLineNo">043</span>import static com.codahale.metrics.MetricRegistry.name;<a name="line.43"></a>
+<span class="sourceLineNo">044</span><a name="line.44"></a>
+<span class="sourceLineNo">045</span>/**<a name="line.45"></a>
+<span class="sourceLineNo">046</span> * This class is for maintaining the various connection statistics and publishing them through<a name="line.46"></a>
+<span class="sourceLineNo">047</span> * the metrics interfaces.<a name="line.47"></a>
+<span class="sourceLineNo">048</span> *<a name="line.48"></a>
+<span class="sourceLineNo">049</span> * This class manages its own {@link MetricRegistry} and {@link JmxReporter} so as to not<a name="line.49"></a>
+<span class="sourceLineNo">050</span> * conflict with other uses of Yammer Metrics within the client application. Instantiating<a name="line.50"></a>
+<span class="sourceLineNo">051</span> * this class implicitly creates and "starts" instances of these classes; be sure to call<a name="line.51"></a>
+<span class="sourceLineNo">052</span> * {@link #shutdown()} to terminate the thread pools they allocate.<a name="line.52"></a>
+<span class="sourceLineNo">053</span> */<a name="line.53"></a>
+<span class="sourceLineNo">054</span>@InterfaceAudience.Private<a name="line.54"></a>
+<span class="sourceLineNo">055</span>public class MetricsConnection {<a name="line.55"></a>
+<span class="sourceLineNo">056</span><a name="line.56"></a>
+<span class="sourceLineNo">057</span>  /** Set this key to {@code true} to enable metrics collection of client requests. */<a name="line.57"></a>
+<span class="sourceLineNo">058</span>  public static final String CLIENT_SIDE_METRICS_ENABLED_KEY = "hbase.client.metrics.enable";<a name="line.58"></a>
+<span class="sourceLineNo">059</span><a name="line.59"></a>
+<span class="sourceLineNo">060</span>  private static final String DRTN_BASE = "rpcCallDurationMs_";<a name="line.60"></a>
+<span class="sourceLineNo">061</span>  private static final String REQ_BASE = "rpcCallRequestSizeBytes_";<a name="line.61"></a>
+<span class="sourceLineNo">062</span>  private static final String RESP_BASE = "rpcCallResponseSizeBytes_";<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  private static final String MEMLOAD_BASE = "memstoreLoad_";<a name="line.63"></a>
+<span class="sourceLineNo">064</span>  private static final String HEAP_BASE = "heapOccupancy_";<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  private static final String CLIENT_SVC = ClientService.getDescriptor().getName();<a name="line.65"></a>
+<span class="sourceLineNo">066</span><a name="line.66"></a>
+<span class="sourceLineNo">067</span>  /** A container class for collecting details about the RPC call as it percolates. */<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  public static class CallStats {<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    private long requestSizeBytes = 0;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    private long responseSizeBytes = 0;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    private long startTime = 0;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    private long callTimeMs = 0;<a name="line.72"></a>
+<span class="sourceLineNo">073</span><a name="line.73"></a>
+<span class="sourceLineNo">074</span>    public long getRequestSizeBytes() {<a name="line.74"></a>
+<span class="sourceLineNo">075</span>      return requestSizeBytes;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    }<a name="line.76"></a>
+<span class="sourceLineNo">077</span><a name="line.77"></a>
+<span class="sourceLineNo">078</span>    public void setRequestSizeBytes(long requestSizeBytes) {<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      this.requestSizeBytes = requestSizeBytes;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    }<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>    public long getResponseSizeBytes() {<a name="line.82"></a>
+<span class="sourceLineNo">083</span>      return responseSizeBytes;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    }<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>    public void setResponseSizeBytes(long responseSizeBytes) {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>      this.responseSizeBytes = responseSizeBytes;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    }<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>    public long getStartTime() {<a name="line.90"></a>
+<span class="sourceLineNo">091</span>      return startTime;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    }<a name="line.92"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span>    public void setStartTime(long startTime) {<a name="line.94"></a>
+<span class="sourceLineNo">095</span>      this.startTime = startTime;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    }<a name="line.96"></a>
+<span class="sourceLineNo">097</span><a name="line.97"></a>
+<span class="sourceLineNo">098</span>    public long getCallTimeMs() {<a name="line.98"></a>
+<span class="sourceLineNo">099</span>      return callTimeMs;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    }<a name="line.100"></a>
+<span class="sourceLineNo">101</span><a name="line.101"></a>
+<span class="sourceLineNo">102</span>    public void setCallTimeMs(long callTimeMs) {<a name="line.102"></a>
+<span class="sourceLineNo">103</span>      this.callTimeMs = callTimeMs;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    }<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  }<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>  @VisibleForTesting<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  protected final class CallTracker {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    private final String name;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    @VisibleForTesting final Timer callTimer;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    @VisibleForTesting final Histogram reqHist;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    @VisibleForTesting final Histogram respHist;<a name="line.112"></a>
+<span class="sourceLineNo">113</span><a name="line.113"></a>
+<span class="sourceLineNo">114</span>    private CallTracker(MetricRegistry registry, String name, String subName, String scope) {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      StringBuilder sb = new StringBuilder(CLIENT_SVC).append("_").append(name);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      if (subName != null) {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>        sb.append("(").append(subName).append(")");<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      }<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      this.name = sb.toString();<a name="line.119"></a>
+<span class="sourceLineNo">120</span>      this.callTimer = registry.timer(name(MetricsConnection.class,<a name="line.120"></a>
+<span class="sourceLineNo">121</span>        DRTN_BASE + this.name, scope));<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      this.reqHist = registry.histogram(name(MetricsConnection.class,<a name="line.122"></a>
+<span class="sourceLineNo">123</span>        REQ_BASE + this.name, scope));<a name="line.123"></a>
+<span class="sourceLineNo">124</span>      this.respHist = registry.histogram(name(MetricsConnection.class,<a name="line.124"></a>
+<span class="sourceLineNo">125</span>        RESP_BASE + this.name, scope));<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    }<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>    private CallTracker(MetricRegistry registry, String name, String scope) {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      this(registry, name, null, scope);<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>    public void updateRpc(CallStats stats) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      this.callTimer.update(stats.getCallTimeMs(), TimeUnit.MILLISECONDS);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      this.reqHist.update(stats.getRequestSizeBytes());<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      this.respHist.update(stats.getResponseSizeBytes());<a name="line.135"></a>
 <span class="sourceLineNo">136</span>    }<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>  protected static class RegionStats {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    final String name;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    final Histogram memstoreLoadHist;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    final Histogram heapOccupancyHist;<a name="line.142"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span>    @Override<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    public String toString() {<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      return "CallTracker:" + name;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    }<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  }<a name="line.142"></a>
 <span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>    public RegionStats(MetricsRegistry registry, String name) {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      this.name = name;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      this.memstoreLoadHist = registry.newHistogram(MetricsConnection.class,<a name="line.146"></a>
-<span class="sourceLineNo">147</span>          MEMLOAD_BASE + this.name);<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      this.heapOccupancyHist = registry.newHistogram(MetricsConnection.class,<a name="line.148"></a>
-<span class="sourceLineNo">149</span>          HEAP_BASE + this.name);<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    }<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>    public void update(ClientProtos.RegionLoadStats regionStatistics) {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      this.memstoreLoadHist.update(regionStatistics.getMemstoreLoad());<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      this.heapOccupancyHist.update(regionStatistics.getHeapOccupancy());<a name="line.154"></a>
+<span class="sourceLineNo">144</span>  protected static class RegionStats {<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    final String name;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    final Histogram memstoreLoadHist;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    final Histogram heapOccupancyHist;<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>    public RegionStats(MetricRegistry registry, String name) {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      this.name = name;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>      this.memstoreLoadHist = registry.histogram(name(MetricsConnection.class,<a name="line.151"></a>
+<span class="sourceLineNo">152</span>          MEMLOAD_BASE + this.name));<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      this.heapOccupancyHist = registry.histogram(name(MetricsConnection.class,<a name="line.153"></a>
+<span class="sourceLineNo">154</span>          HEAP_BASE + this.name));<a name="line.154"></a>
 <span class="sourceLineNo">155</span>    }<a name="line.155"></a>
-<span class="sourceLineNo">156</span>  }<a name="line.156"></a>
-<span class="sourceLineNo">157</span><a name="line.157"></a>
-<span class="sourceLineNo">158</span>  @VisibleForTesting<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  protected static class RunnerStats {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    final Counter normalRunners;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    final Counter delayRunners;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    final Histogram delayIntevalHist;<a name="line.162"></a>
-<span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>    public RunnerStats(MetricsRegistry registry) {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      this.normalRunners = registry.newCounter(MetricsConnection.class, "normalRunnersCount");<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      this.delayRunners = registry.newCounter(MetricsConnection.class, "delayRunnersCount");<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      this.delayIntevalHist = registry.newHistogram(MetricsConnection.class, "delayIntervalHist");<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    }<a name="line.168"></a>
-<span class="sourceLineNo">169</span><a name="line.169"></a>
-<span class="sourceLineNo">170</span>    public void incrNormalRunners() {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      this.normalRunners.inc();<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    }<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>    public void incrDelayRunners() {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      this.delayRunners.inc();<a name="line.175"></a>
+<span class="sourceLineNo">156</span><a name="line.156"></a>
+<span class="sourceLineNo">157</span>    public void update(ClientProtos.RegionLoadStats regionStatistics) {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      this.memstoreLoadHist.update(regionStatistics.getMemstoreLoad());<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      this.heapOccupancyHist.update(regionStatistics.getHeapOccupancy());<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    }<a name="line.160"></a>
+<span class="sourceLineNo">161</span>  }<a name="line.161"></a>
+<span class="sourceLineNo">162</span><a name="line.162"></a>
+<span class="sourceLineNo">163</span>  @VisibleForTesting<a name="line.163"></a>
+<span class="sourceLineNo">164</span>  protected static class RunnerStats {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    final Counter normalRunners;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    final Counter delayRunners;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    final Histogram delayIntevalHist;<a name="line.167"></a>
+<span class="sourceLineNo">168</span><a name="line.168"></a>
+<span class="sourceLineNo">169</span>    public RunnerStats(MetricRegistry registry) {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      this.normalRunners = registry.counter(<a name="line.170"></a>
+<span class="sourceLineNo">171</span>        name(MetricsConnection.class, "normalRunnersCount"));<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      this.delayRunners = registry.counter(<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        name(MetricsConnection.class, "delayRunnersCount"));<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      this.delayIntevalHist = registry.histogram(<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        name(MetricsConnection.class, "delayIntervalHist"));<a name="line.175"></a>
 <span class="sourceLineNo">176</span>    }<a name="line.176"></a>
 <span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span>    public void updateDelayInterval(long interval) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      this.delayIntevalHist.update(interval);<a name="line.179"></a>
+<span class="sourceLineNo">178</span>    public void incrNormalRunners() {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      this.normalRunners.inc();<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><a name="line.182"></a>
-<span class="sourceLineNo">183</span>  @VisibleForTesting<a name="line.183"></a>
-<span class="sourceLineNo">184</span>  protected ConcurrentHashMap&lt;ServerName, ConcurrentMap&lt;byte[], RegionStats&gt;&gt; serverStats<a name="line.184"></a>
-<span class="sourceLineNo">185</span>          = new ConcurrentHashMap&lt;ServerName, ConcurrentMap&lt;byte[], RegionStats&gt;&gt;();<a name="line.185"></a>
-<span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>  public void updateServerStats(ServerName serverName, byte[] regionName,<a name="line.187"></a>
-<span class="sourceLineNo">188</span>                                Object r) {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    if (!(r instanceof Result)) {<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      return;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    }<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    Result result = (Result) r;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    ClientProtos.RegionLoadStats stats = result.getStats();<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    if(stats == null){<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      return;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    }<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    String name = serverName.getServerName() + "," + Bytes.toStringBinary(regionName);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    ConcurrentMap&lt;byte[], RegionStats&gt; rsStats = null;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    if (serverStats.containsKey(serverName)) {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      rsStats = serverStats.get(serverName);<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    } else {<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      rsStats = serverStats.putIfAbsent(serverName,<a name="line.202"></a>
-<span class="sourceLineNo">203</span>          new ConcurrentSkipListMap&lt;byte[], RegionStats&gt;(Bytes.BYTES_COMPARATOR));<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      if (rsStats == null) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>        rsStats = serverStats.get(serverName);<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>    RegionStats regionStats = null;<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    if (rsStats.containsKey(regionName)) {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      regionStats = rsStats.get(regionName);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    } else {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      regionStats = rsStats.putIfAbsent(regionName, new RegionStats(this.registry, name));<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      if (regionStats == null) {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        regionStats = rsStats.get(regionName);<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>    regionStats.update(stats);<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>  /** A lambda for dispatching to the appropriate metric factory method */<a name="line.221"></a>
-<span class="sourceLineNo">222</span>  private static interface NewMetric&lt;T&gt; {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    T newMetric(Class&lt;?&gt; clazz, String name, String scope);<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>  /** Anticipated number of metric entries */<a name="line.226"></a>
-<span class="sourceLineNo">227</span>  private static final int CAPACITY = 50;<a name="line.227"></a>
-<span class="sourceLineNo">228</span>  /** Default load factor from {@link java.util.HashMap#DEFAULT_LOAD_FACTOR} */<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  private static final float LOAD_FACTOR = 0.75f;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  /**<a name="line.230"></a>
-<span class="sourceLineNo">231</span>   * Anticipated number of concurrent accessor threads, from<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   * {@link ConnectionImplementation#getBatchPool()}<a name="line.232"></a>
-<span class="sourceLineNo">233</span>   */<a name="line.233"></a>
-<span class="sourceLineNo">234</span>  private static final int CONCURRENCY_LEVEL = 256;<a name="line.234"></a>
-<span class="sourceLineNo">235</span><a name="line.235"></a>
-<span class="sourceLineNo">236</span>  private final MetricsRegistry registry;<a name="line.236"></a>
-<span class="sourceLineNo">237</span>  private final JmxReporter reporter;<a name="line.237"></a>
-<span class="sourceLineNo">238</span>  private final String scope;<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>  private final NewMetric&lt;Timer&gt; timerFactory = new NewMetric&lt;Timer&gt;() {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    @Override public Timer newMetric(Class&lt;?&gt; clazz, String name, String scope) {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      return registry.newTimer(clazz, name, scope);<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>  private final NewMetric&lt;Histogram&gt; histogramFactory = new NewMetric&lt;Histogram&gt;() {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    @Override public Histogram newMetric(Class&lt;?&gt; clazz, String name, String scope) {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      return registry.newHistogram(clazz, name, scope);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    }<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  };<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>  // static metrics<a name="line.252"></a>
+<span class="sourceLineNo">181</span><a name="line.181"></a>
+<span class="sourceLineNo">182</span>    public void incrDelayRunners() {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      this.delayRunners.inc();<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>    public void updateDelayInterval(long interval) {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      this.delayIntevalHist.update(interval);<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>  @VisibleForTesting<a name="line.191"></a>
+<span class="sourceLineNo">192</span>  protected ConcurrentHashMap&lt;ServerName, ConcurrentMap&lt;byte[], RegionStats&gt;&gt; serverStats<a name="line.192"></a>
+<span class="sourceLineNo">193</span>          = new ConcurrentHashMap&lt;ServerName, ConcurrentMap&lt;byte[], RegionStats&gt;&gt;();<a name="line.193"></a>
+<span class="sourceLineNo">194</span><a name="line.194"></a>
+<span class="sourceLineNo">195</span>  public void updateServerStats(ServerName serverName, byte[] regionName,<a name="line.195"></a>
+<span class="sourceLineNo">196</span>                                Object r) {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    if (!(r instanceof Result)) {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      return;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    }<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    Result result = (Result) r;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    ClientProtos.RegionLoadStats stats = result.getStats();<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    if(stats == null){<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      return;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    }<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    String name = serverName.getServerName() + "," + Bytes.toStringBinary(regionName);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    ConcurrentMap&lt;byte[], RegionStats&gt; rsStats = null;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    if (serverStats.containsKey(serverName)) {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      rsStats = serverStats.get(serverName);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    } else {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      rsStats = serverStats.putIfAbsent(serverName,<a name="line.210"></a>
+<span class="sourceLineNo">211</span>          new ConcurrentSkipListMap&lt;byte[], RegionStats&gt;(Bytes.BYTES_COMPARATOR));<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      if (rsStats == null) {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>        rsStats = serverStats.get(serverName);<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>    RegionStats regionStats = null;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    if (rsStats.containsKey(regionName)) {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      regionStats = rsStats.get(regionName);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    } else {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      regionStats = rsStats.putIfAbsent(regionName, new RegionStats(this.registry, name));<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      if (regionStats == null) {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>        regionStats = rsStats.get(regionName);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      }<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    }<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    regionStats.update(stats);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>  }<a name="line.226"></a>
+<span class="sourceLineNo">227</span><a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span>  /** A lambda for dispatching to the appropriate metric factory method */<a name="line.229"></a>
+<span class="sourceLineNo">230</span>  private static interface NewMetric&lt;T&gt; {<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    T newMetric(Class&lt;?&gt; clazz, String name, String scope);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>  }<a name="line.232"></a>
+<span class="sourceLineNo">233</span><a name="line.233"></a>
+<span class="sourceLineNo">234</span>  /** Anticipated number of metric entries */<a name="line.234"></a>
+<span class="sourceLineNo">235</span>  private static final int CAPACITY = 50;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>  /** Default load factor from {@link java.util.HashMap#DEFAULT_LOAD_FACTOR} */<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  private static final float LOAD_FACTOR = 0.75f;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>  /**<a name="line.238"></a>
+<span class="sourceLineNo">239</span>   * Anticipated number of concurrent accessor threads, from<a name="line.239"></a>
+<span class="sourceLineNo">240</span>   * {@link ConnectionImplementation#getBatchPool()}<a name="line.240"></a>
+<span class="sourceLineNo">241</span>   */<a name="line.241"></a>
+<span class="sourceLineNo">242</span>  private static final int CONCURRENCY_LEVEL = 256;<a name="line.242"></a>
+<span class="sourceLineNo">243</span><a name="line.243"></a>
+<span class="sourceLineNo">244</span>  private final MetricRegistry registry;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>  private final JmxReporter reporter;<a name="line.245"></a>
+<span class="sourceLineNo">246</span>  private final String scope;<a name="line.246"></a>
+<span class="sourceLineNo">247</span><a name="line.247"></a>
+<span class="sourceLineNo">248</span>  private final NewMetric&lt;Timer&gt; timerFactory = new NewMetric&lt;Timer&gt;() {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    @Override public Timer newMetric(Class&lt;?&gt; clazz, String name, String scope) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      return registry.timer(name(clazz, name, scope));<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    }<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  };<a name="line.252"></a>
 <span class="sourceLineNo">253</span><a name="line.253"></a>
-<span class="sourceLineNo">254</span>  @VisibleForTesting protected final Counter metaCacheHits;<a name="line.254"></a>
-<span class="sourceLineNo">255</span>  @VisibleForTesting protected final Counter metaCacheMisses;<a name="line.255"></a>
-<span class="sourceLineNo">256</span>  @VisibleForTesting protected final CallTracker getTracker;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>  @VisibleForTesting protected final CallTracker scanTracker;<a name="line.257"></a>
-<span class="sourceLineNo">258</span>  @VisibleForTesting protected final CallTracker appendTracker;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  @VisibleForTesting protected final CallTracker deleteTracker;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  @VisibleForTesting protected final CallTracker incrementTracker;<a name="line.260"></a>
-<span class="sourceLineNo">261</span>  @VisibleForTesting protected final CallTracker putTracker;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>  @VisibleForTesting protected final CallTracker multiTracker;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>  @VisibleForTesting protected final RunnerStats runnerStats;<a name="line.263"></a>
-<span class="sourceLineNo">264</span><a name="line.264"></a>
-<span class="sourceLineNo">265</span>  // dynamic metrics<a name="line.265"></a>
-<span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>  // These maps are used to cache references to the metric instances that are managed by the<a name="line.267"></a>
-<span class="sourceLineNo">268</span>  // registry. I don't think their use perfectly removes redundant allocations, but it's<a name="line.268"></a>
-<span class="sourceLineNo">269</span>  // a big improvement over calling registry.newMetric each time.<a name="line.269"></a>
-<span class="sourceLineNo">270</span>  @VisibleForTesting protected final ConcurrentMap&lt;String, Timer&gt; rpcTimers =<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      new ConcurrentHashMap&lt;&gt;(CAPACITY, LOAD_FACTOR, CONCURRENCY_LEVEL);<a name="line.271"></a>
-<span class="sourceLineNo">272</span>  @VisibleForTesting protected final ConcurrentMap&lt;String, Histogram&gt; rpcHistograms =<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      new ConcurrentHashMap&lt;&gt;(CAPACITY * 2 /* tracking both request and response sizes */,<a name="line.273"></a>
-<span class="sourceLineNo">274</span>          LOAD_FACTOR, CONCURRENCY_LEVEL);<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span>  public MetricsConnection(final ConnectionImplementation conn) {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    this.scope = conn.toString();<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    this.registry = new MetricsRegistry();<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    final ThreadPoolExecutor batchPool = (ThreadPoolExecutor) conn.getCurrentBatchPool();<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    final ThreadPoolExecutor metaPool = (ThreadPoolExecutor) conn.getCurrentMetaLookupPool();<a name="line.280"></a>
-<span class="sourceLineNo">281</span><a name="line.281"></a>
-<span class="sourceLineNo">282</span>    this.registry.newGauge(this.getClass(), "executorPoolActiveThreads", scope,<a name="line.282"></a>
-<span class="sourceLineNo">283</span>        new RatioGauge() {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>          @Override protected double getNumerator() {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>            return batchPool.getActiveCount();<a name="line.285"></a>
-<span class="sourceLineNo">286</span>          }<a name="line.286"></a>
-<span class="sourceLineNo">287</span>          @Override protected double getDenominator() {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>            return batchPool.getMaximumPoolSize();<a name="line.288"></a>
-<span class="sourceLineNo">289</span>          }<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        });<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    this.registry.newGauge(this.getClass(), "metaPoolActiveThreads", scope,<a name="line.291"></a>
-<span class="sourceLineNo">292</span>        new RatioGauge() {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>          @Override protected double getNumerator() {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>            return metaPool.getActiveCount();<a name="line.294"></a>
+<span class="sourceLineNo">254</span>  private final NewMetric&lt;Histogram&gt; histogramFactory = new NewMetric&lt;Histogram&gt;() {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    @Override public Histogram newMetric(Class&lt;?&gt; clazz, String name, String scope) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      return registry.histogram(name(clazz, name, scope));<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
+<span class="sourceLineNo">258</span>  };<a name="line.258"></a>
+<span class="sourceLineNo">259</span><a name="line.259"></a>
+<span class="sourceLineNo">260</span>  // static metrics<a name="line.260"></a>
+<span class="sourceLineNo">261</span><a name="line.261"></a>
+<span class="sourceLineNo">262</span>  @VisibleForTesting protected final Counter metaCacheHits;<a name="line.262"></a>
+<span class="sourceLineNo">263</span>  @VisibleForTesting protected final Counter metaCacheMisses;<a name="line.263"></a>
+<span class="sourceLineNo">264</span>  @VisibleForTesting protected final CallTracker getTracker;<a name="line.264"></a>
+<span class="sourceLineNo">265</span>  @VisibleForTesting protected final CallTracker scanTracker;<a name="line.265"></a>
+<span class="sourceLineNo">266</span>  @VisibleForTesting protected final CallTracker appendTracker;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>  @VisibleForTesting protected final CallTracker deleteTracker;<a name="line.267"></a>
+<span class="sourceLineNo">268</span>  @VisibleForTesting protected final CallTracker incrementTracker;<a name="line.268"></a>
+<span class="sourceLineNo">269</span>  @VisibleForTesting protected final CallTracker putTracker;<a name="line.269"></a>
+<span class="sourceLineNo">270</span>  @VisibleForTesting protected final CallTracker multiTracker;<a name="line.270"></a>
+<span class="sourceLineNo">271</span>  @VisibleForTesting protected final RunnerStats runnerStats;<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>  // dynamic metrics<a name="line.273"></a>
+<span class="sourceLineNo">274</span><a name="line.274"></a>
+<span class="sourceLineNo">275</span>  // These maps are used to cache references to the metric instances that are managed by the<a name="line.275"></a>
+<span class="sourceLineNo">276</span>  // registry. I don't think their use perfectly removes redundant allocations, but it's<a name="line.276"></a>
+<span class="sourceLineNo">277</span>  // a big improvement over calling registry.newMetric each time.<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  @VisibleForTesting protected final ConcurrentMap&lt;String, Timer&gt; rpcTimers =<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      new ConcurrentHashMap&lt;&gt;(CAPACITY, LOAD_FACTOR, CONCURRENCY_LEVEL);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>  @VisibleForTesting protected final ConcurrentMap&lt;String, Histogram&gt; rpcHistograms =<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      new ConcurrentHashMap&lt;&gt;(CAPACITY * 2 /* tracking both request and response sizes */,<a name="line.281"></a>
+<span class="sourceLineNo">282</span>          LOAD_FACTOR, CONCURRENCY_LEVEL);<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>  public MetricsConnection(final ConnectionImplementation conn) {<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    this.scope = conn.toString();<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    this.registry = new MetricRegistry();<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    final ThreadPoolExecutor batchPool = (ThreadPoolExecutor) conn.getCurrentBatchPool();<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    final ThreadPoolExecutor metaPool = (ThreadPoolExecutor) conn.getCurrentMetaLookupPool();<a name="line.288"></a>
+<span class="sourceLineNo">289</span><a name="line.289"></a>
+<span class="sourceLineNo">290</span>    this.registry.register(name(this.getClass(), "executorPoolActiveThreads", scope),<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        new RatioGauge() {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>          @Override<a name="line.292"></a>
+<span class="sourceLineNo">293</span>          protected Ratio getRatio() {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>            return Ratio.of(batchPool.getActiveCount(), batchPool.getMaximumPoolSize());<a name="line.294"></a>
 <span class="sourceLineNo">295</span>          }<a name="line.295"></a>
-<span class="sourceLineNo">296</span>          @Override protected double getDenominator() {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>            return metaPool.getMaximumPoolSize();<a name="line.297"></a>
-<span class="sourceLineNo">298</span>          }<a name="line.298"></a>
-<span class="sourceLineNo">299</span>        });<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    this.metaCacheHits = registry.newCounter(this.getClass(), "metaCacheHits", scope);<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    this.metaCacheMisses = registry.newCounter(this.getClass(), "metaCacheMisses", scope);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    this.getTracker = new CallTracker(this.registry, "Get", scope);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    this.scanTracker = new CallTracker(this.registry, "Scan", scope);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    this.appendTracker = new CallTracker(this.registry, "Mutate", "Append", scope);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    this.deleteTracker = new CallTracker(this.registry, "Mutate", "Delete", scope);<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    this.incrementTracker = new CallTracker(this.registry, "Mutate", "Increment", scope);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    this.putTracker = new CallTracker(this.registry, "Mutate", "Put", scope);<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    this.multiTracker = new CallTracker(this.registry, "Multi", scope);<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    this.runnerStats = new RunnerStats(this.registry);<a name="line.309"></a>
-<span class="sourceLineNo">310</span><a name="line.310"></a>
-<span class="sourceLineNo">311</span>    this.reporter = new JmxReporter(this.registry);<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    this.reporter.start();<a name="line.312"></a>
-<span class="sourceLineNo">313</span>  }<a name="line.313"></a>
+<span class="sourceLineNo">296</span>        });<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    this.registry.register(name(this.getClass(), "metaPoolActiveThreads", scope),<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        new RatioGauge() {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>          @Override<a name="line.299"></a>
+<span class="sourceLineNo">300</span>          protected Ratio getRatio() {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>            return Ratio.of(metaPool.getActiveCount(), metaPool.getMaximumPoolSize());<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>    this.metaCacheHits = registry.counter(name(this.getClass(), "metaCacheHits", scope));<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    this.metaCacheMisses = registry.counter(name(this.getClass(), "metaCacheMisses", scope));<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    this.getTracker = new CallTracker(this.registry, "Get", scope);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    this.scanTracker = new CallTracker(this.registry, "Scan", scope);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    this.appendTracker = new CallTracker(this.registry, "Mutate", "Append", scope);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    this.deleteTracker = new CallTracker(this.registry, "Mutate", "Delete", scope);<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    this.incrementTracker = new CallTracker(this.registry, "Mutate", "Increment", scope);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    this.putTracker = new CallTracker(this.registry, "Mutate", "Put", scope);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    this.multiTracker = new CallTracker(this.registry, "Multi", scope);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    this.runnerStats = new RunnerStats(this.registry);<a name="line.313"></a>
 <span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span>  public void shutdown() {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    this.reporter.shutdown();<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    this.registry.shutdown();<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  /** Produce an instance of {@link CallStats} for clients to attach to RPCs. */<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  public static CallStats newCallStats() {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    // TODO: instance pool to reduce GC?<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    return new CallStats();<a name="line.323"></a>
-<span class="sourceLineNo">324</span>  }<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>  /** Increment the number of meta cache hits. */<a name="line.326"></a>
-<span class="sourceLineNo">327</span>  public void incrMetaCacheHit() {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    metaCacheHits.inc();<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>  /** Increment the number of meta cache misses. */<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  public void incrMetaCacheMiss() {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    metaCacheMisses.inc();<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  }<a name="line.334"></a>
-<span class="sourceLineNo">335</span><a name="line.335"></a>
-<span class="sourceLineNo">336</span>  /** Increment the number of normal runner counts. */<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  public void incrNormalRunners() {<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    this.runnerStats.incrNormalRunners();<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  }<a name="line.339"></a>
-<span class="sourceLineNo">340</span><a name="line.340"></a>
-<span class="sourceLineNo">341</span>  /** Increment the number of delay runner counts. */<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  public void incrDelayRunners() {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    this.runnerStats.incrDelayRunners();<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  }<a name="line.344"></a>
-<span class="sourceLineNo">345</span><a name="line.345"></a>
-<span class="sourceLineNo">346</span>  /** Update delay interval of delay runner. */<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  public void updateDelayInterval(long interval) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    this.runnerStats.updateDelayInterval(interval);<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  }<a name="line.349"></a>
-<span class="sourceLineNo">350</span><a name="line.350"></a>
-<span class="sourceLineNo">351</span>  /**<a name="line.351"></a>
-<span class="sourceLineNo">352</span>   * Get a metric for {@code key} from {@code map}, or create it with {@code factory}.<a name="line.352"></a>
-<span class="sourceLineNo">353</span>   */<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  private &lt;T&gt; T getMetric(String key, ConcurrentMap&lt;String, T&gt; map, NewMetric&lt;T&gt; factory) {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    T t = map.get(key);<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    if (t == null) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      t = factory.newMetric(this.getClass(), key, scope);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      map.putIfAbsent(key, t);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    }<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    return t;<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>  /** Update call stats for non-critical-path methods */<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  private void updateRpcGeneric(MethodDescriptor method, CallStats stats) {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    final String methodName = method.getService().getName() + "_" + method.getName();<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    getMetric(DRTN_BASE + methodName, rpcTimers, timerFactory)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        .update(stats.getCallTimeMs(), TimeUnit.MILLISECONDS);<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    getMetric(REQ_BASE + methodName, rpcHistograms, histogramFactory)<a name="line.368"></a>
-<span class="sourceLineNo">369</span>        .update(stats.getRequestSizeBytes());<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    getMetric(RESP_BASE + methodName, rpcHistograms, histogramFactory)<a name="line.370"></a>
-<span class="sourceLineNo">371</span>        .update(stats.getResponseSizeBytes());<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>  /** Report RPC context to metrics system. */<a name="line.374"></a>
-<span class="sourceLineNo">375</span>  public void updateRpc(MethodDescriptor method, Message param, CallStats stats) {<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    // this implementation is tied directly to protobuf implementation details. would be better<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    // if we could dispatch based on something static, ie, request Message type.<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    if (method.getService() == ClientService.getDescriptor()) {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      switch(method.getIndex()) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      case 0:<a name="line.380"></a>
-<span class="sourceLineNo">381</span>        assert "Get".equals(method.getName());<a name="line.381"></a>
-<span class="sourceLineNo">382</span>        getTracker.updateRpc(stats);<a name="line.382"></a>
-<span class="sourceLineNo">383</span>        return;<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      case 1:<a name="line.384"></a>
-<span class="sourceLineNo">385</span>        assert "Mutate".equals(method.getName());<a name="line.385"></a>
-<span class="sourceLineNo">386</span>        final MutationType mutationType = ((MutateRequest) param).getMutation().getMutateType();<a name="line.386"></a>
-<span class="sourceLineNo">387</span>        switch(mutationType) {<a name="line.387"></a>
-<span class="sourceLineNo">388</span>        case APPEND:<a name="line.388"></a>
-<span class="sourceLineNo">389</span>          appendTracker.updateRpc(stats);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>          return;<a name="line.390"></a>
-<span class="sourceLineNo">391</span>        case DELETE:<a name="line.391"></a>
-<span class="sourceLineNo">392</span>          deleteTracker.updateRpc(stats);<a name="line.392"></a>
+<span class="sourceLineNo">315</span>    this.reporter = JmxReporter.forRegistry(this.registry).build();<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    this.reporter.start();<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  }<a name="line.317"></a>
+<span class="sourceLineNo">318</span><a name="line.318"></a>
+<span class="sourceLineNo">319</span>  public void shutdown() {<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    this.reporter.stop();<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  }<a name="line.321"></a>
+<span class="sourceLineNo">322</span><a name="line.322"></a>
+<span class="sourceLineNo">323</span>  /** Produce an instance of {@link CallStats} for clients to attach to RPCs. */<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  public static CallStats newCallStats() {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    // TODO: instance pool to reduce GC?<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    return new CallStats();<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>  /** Increment the number of meta cache hits. */<a name="line.329"></a>
+<span class="sourceLineNo">330</span>  public void incrMetaCacheHit() {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    metaCacheHits.inc();<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  }<a name="line.332"></a>
+<span class="sourceLineNo">333</span><a name="line.333"></a>
+<span class="sourceLineNo">334</span>  /** Increment the number of meta cache misses. */<a name="line.334"></a>
+<span class="sourceLineNo">335</span>  public void incrMetaCacheMiss() {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    metaCacheMisses.inc();<a name="line.336"></a>
+<span class="sourceLineNo">337</span>  }<a name="line.337"></a>
+<span class="sourceLineNo">338</span><a name="line.338"></a>
+<span class="sourceLineNo">339</span>  /** Increment the number of normal runner counts. */<a name="line.339"></a>
+<span class="sourceLineNo">340</span>  public void incrNormalRunners() {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    this.runnerStats.incrNormalRunners();<a name="line.341"></a>
+<span class="sourceLineNo">342</span>  }<a name="line.342"></a>
+<span class="sourceLineNo">343</span><a name="line.343"></a>
+<span class="sourceLineNo">344</span>  /** Increment the number of delay runner counts. */<a name="line.344"></a>
+<span class="sourceLineNo">345</span>  public void incrDelayRunners() {<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    this.runnerStats.incrDelayRunners();<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  }<a name="line.347"></a>
+<span class="sourceLineNo">348</span><a name="line.348"></a>
+<span class="sourceLineNo">349</span>  /** Update delay interval of delay runner. */<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  public void updateDelayInterval(long interval) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    this.runnerStats.updateDelayInterval(interval);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>  }<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>  /**<a name="line.354"></a>
+<span class="sourceLineNo">355</span>   * Get a metric for {@code key} from {@code map}, or create it with {@code factory}.<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   */<a name="line.356"></a>
+<span class="sourceLineNo">357</span>  private &lt;T&gt; T getMetric(String key, ConcurrentMap&lt;String, T&gt; map, NewMetric&lt;T&gt; factory) {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    T t = map.get(key);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    if (t == null) {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      t = factory.newMetric(this.getClass(), key, scope);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      map.putIfAbsent(key, t);<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    }<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    return t;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>  }<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>  /** Update call stats for non-critical-path methods */<a name="line.366"></a>
+<span class="sourceLineNo">367</span>  private void updateRpcGeneric(MethodDescriptor method, CallStats stats) {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    final String methodName = method.getService().getName() + "_" + method.getName();<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    getMetric(DRTN_BASE + methodName, rpcTimers, timerFactory)<a name="line.369"></a>
+<span class="sourceLineNo">370</span>        .update(stats.getCallTimeMs(), TimeUnit.MILLISECONDS);<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    getMetric(REQ_BASE + methodName, rpcHistograms, histogramFactory)<a name="line.371"></a>
+<span class="sourceLineNo">372</span>        .update(stats.getRequestSizeBytes());<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    getMetric(RESP_BASE + methodName, rpcHistograms, histogramFactory)<a name="line.373"></a>
+<span class="sourceLineNo">374</span>        .update(stats.getResponseSizeBytes());<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  }<a name="line.375"></a>
+<span class="sourceLineNo">376</span><a name="line.376"></a>
+<span class="sourceLineNo">377</span>  /** Report RPC context to metrics system. */<a name="line.377"></a>
+<span class="sourceLineNo">378</span>  public void updateRpc(MethodDescriptor method, Message param, CallStats stats) {<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    // this implementation is tied directly to protobuf implementation details. would be better<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    // if we could dispatch based on something static, ie, request Message type.<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    if (method.getService() == ClientService.getDescriptor()) {<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      switch(method.getIndex()) {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      case 0:<a name="line.383"></a>
+<span class="sourceLineNo">384</span>        assert "Get".equals(method.getName());<a name="line.384"></a>
+<span class="sourceLineNo">385</span>        getTracker.updateRpc(stats);<a name="line.385"></a>
+<span class="sourceLineNo">386</span>        return;<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      case 1:<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        assert "Mutate".equals(method.getName());<a name="line.388"></a>
+<span class="sourceLineNo">389</span>        final MutationType mutationType = ((MutateRequest) param).getMutation().getMutateType();<a name="line.389"></a>
+<span class="sourceLineNo">390</span>        switch(mutationType) {<a name="line.390"></a>
+<span class="sourceLineNo">391</span>        case APPEND:<a name="line.391"></a>
+<span class="sourceLineNo">392</span>          appendTracker.updateRpc(stats);<a name="line.392"></a>
 <span class="sourceLineNo">393</span>          return;<a name="line.393"></a>
-<span class="sourceLineNo">394</span>        case INCREMENT:<a name="line.394"></a>
-<span class="sourceLineNo">395</span>          incrementTracker.updateRpc(stats);<a name="line.395"></a>
+<span class="sourceLineNo">394</span>        case DELETE:<a name="line.394"></a>
+<span class="sourceLineNo">395</span>          deleteTracker.updateRpc(stats);<a name="line.395"></a>
 <span class="sourceLineNo">396</span>          return;<a name="line.396"></a>
-<span class="sourceLineNo">397</span>        case PUT:<a name="line.397"></a>
-<span class="sourceLineNo">398</span>          putTracker.updateRpc(stats);<a name="line.398"></a>
+<span class="sourceLineNo">397</span>        case INCREMENT:<a name="line.397"></a>
+<span class="sourceLineNo">398</span>          incrementTracker.updateRpc(stats);<a name="line.398"></a>
 <span class="sourceLineNo">399</span>          return;<a name="line.399"></a>
-<span class="sourceLineNo">400</span>        default:<a name="line.400"></a>
-<span class="sourceLineNo">401</span>          throw new RuntimeException("Unrecognized mutation type " + mutationType);<a name="line.401"></a>
-<span class="sourceLineNo">402</span>        }<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      case 2:<a name="line.403"></a>
-<span class="sourceLineNo">404</span>        assert "Scan".equals(method.getName());<a name="line.404"></a>
-<span class="sourceLineNo">405</span>        scanTracker.updateRpc(stats);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>        return;<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      case 3:<a name="line.407"></a>
-<span class="sourceLineNo">408</span>        assert "BulkLoadHFile".equals(method.getName());<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        // use generic implementation<a name="line.409"></a>
-<span class="sourceLineNo">410</span>        break;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      case 4:<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        assert "ExecService".equals(method.getName());<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        // use generic implementation<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        break;<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      case 5:<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        assert "ExecRegionServerService".equals(method.getName());<a name="line.416"></a>
-<span class="sourceLineNo">417</span>        // use generic implementation<a name="line.417"></a>
-<span class="sourceLineNo">418</span>        break;<a name="line.418"></a>
-<span class="sourceLineNo">419</span>      case 6:<a name="line.419"></a>
-<span class="sourceLineNo">420</span>        assert "Multi".equals(method.getName());<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        multiTracker.updateRpc(stats);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        return;<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      default:<a name="line.423"></a>
-<span class="sourceLineNo">424</span>        throw new RuntimeException("Unrecognized ClientService RPC type " + method.getFullName());<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      }<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    }<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    // Fallback to dynamic registry lookup for DDL methods.<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    updateRpcGeneric(method, stats);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>  }<a name="line.429"></a>
-<span class="sourceLineNo">430</span>}<a name="line.430"></a>
+<span class="sourceLineNo">400</span>        case PUT:<a name="line.400"></a>
+<span class="sourceLineNo">401</span>          putTracker.updateRpc(stats);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>          return;<a name="line.402"></a>
+<span class="sourceLineNo">403</span>        default:<a name="line.403"></a>
+<span class="sourceLineNo">404</span>          throw new RuntimeException("Unrecognized mutation type " + mutationType);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>        }<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      case 2:<a name="line.406"></a>
+<span class="sourceLineNo">407</span>        assert "Scan".equals(method.getName());<a name="line.407"></a>
+<span class="sourceLineNo">408</span>        scanTracker.updateRpc(stats);<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        return;<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      case 3:<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        assert "BulkLoadHFile".equals(method.getName());<a name="line.411"></a>
+<span class="sourceLineNo">412</span>        // use generic implementation<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        break;<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      case 4:<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        assert "ExecService".equals(method.getName());<a name="line.415"></a>
+<span class="sourceLineNo">416</span>        // use generic implementation<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        break;<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      case 5:<a name="line.418"></a>
+<span class="sourceLineNo">419</span>        assert "ExecRegionServerService".equals(method.getName());<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        // use generic implementation<a name="line.420"></a>
+<span class="sourceLineNo">421</span>        break;<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      case 6:<a name="line.422"></a>
+<span class="sourceLineNo">423</span>        assert "Multi".equals(method.getName());<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        multiTracker.updateRpc(stats);<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        return;<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      default:<a name="line.426"></a>
+<span class="sourceLineNo">427</span>        throw new RuntimeException("Unrecognized ClientService RPC type " + method.getFullName());<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      }<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    }<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    // Fallback to dynamic registry lookup for DDL methods.<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    updateRpcGeneric(method, stats);<a name="line.431"></a>
+<span class="sourceLineNo">432</span>  }<a name="line.432"></a>
+<span class="sourceLineNo">433</span>}<a name="line.433"></a>
 
 
 


[09/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.Test.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.Test.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.Test.html
index d15c216..bf5e0a0 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.Test.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.Test.html
@@ -101,9 +101,9 @@
 <span class="sourceLineNo">093</span><a name="line.93"></a>
 <span class="sourceLineNo">094</span>import com.google.common.base.Objects;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>import com.google.common.util.concurrent.ThreadFactoryBuilder;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import com.yammer.metrics.core.Histogram;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import com.yammer.metrics.stats.Snapshot;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import com.yammer.metrics.stats.UniformSample;<a name="line.98"></a>
+<span class="sourceLineNo">096</span>import com.codahale.metrics.Histogram;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import com.codahale.metrics.Snapshot;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import com.codahale.metrics.UniformReservoir;<a name="line.98"></a>
 <span class="sourceLineNo">099</span><a name="line.99"></a>
 <span class="sourceLineNo">100</span>/**<a name="line.100"></a>
 <span class="sourceLineNo">101</span> * Script used evaluating HBase performance and scalability.  Runs a HBase<a name="line.101"></a>
@@ -1062,8 +1062,8 @@
 <span class="sourceLineNo">1054</span>        this.connection = ConnectionFactory.createConnection(conf);<a name="line.1054"></a>
 <span class="sourceLineNo">1055</span>      }<a name="line.1055"></a>
 <span class="sourceLineNo">1056</span>      onStartup();<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1058"></a>
+<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1058"></a>
 <span class="sourceLineNo">1059</span>    }<a name="line.1059"></a>
 <span class="sourceLineNo">1060</span><a name="line.1060"></a>
 <span class="sourceLineNo">1061</span>    abstract void onStartup() throws IOException;<a name="line.1061"></a>
@@ -1129,21 +1129,21 @@
 <span class="sourceLineNo">1121</span>     */<a name="line.1121"></a>
 <span class="sourceLineNo">1122</span>    private void reportLatency() throws IOException {<a name="line.1122"></a>
 <span class="sourceLineNo">1123</span>      status.setStatus(testName + " latency log (microseconds), on " +<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>          latency.count() + " measures");<a name="line.1124"></a>
+<span class="sourceLineNo">1124</span>          latency.getCount() + " measures");<a name="line.1124"></a>
 <span class="sourceLineNo">1125</span>      reportHistogram(this.latency);<a name="line.1125"></a>
 <span class="sourceLineNo">1126</span>    }<a name="line.1126"></a>
 <span class="sourceLineNo">1127</span><a name="line.1127"></a>
 <span class="sourceLineNo">1128</span>    private void reportValueSize() throws IOException {<a name="line.1128"></a>
 <span class="sourceLineNo">1129</span>      status.setStatus(testName + " valueSize after " +<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>          valueSize.count() + " measures");<a name="line.1130"></a>
+<span class="sourceLineNo">1130</span>          valueSize.getCount() + " measures");<a name="line.1130"></a>
 <span class="sourceLineNo">1131</span>      reportHistogram(this.valueSize);<a name="line.1131"></a>
 <span class="sourceLineNo">1132</span>    }<a name="line.1132"></a>
 <span class="sourceLineNo">1133</span><a name="line.1133"></a>
 <span class="sourceLineNo">1134</span>    private void reportHistogram(final Histogram h) throws IOException {<a name="line.1134"></a>
 <span class="sourceLineNo">1135</span>      Snapshot sn = h.getSnapshot();<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + h.min());<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + h.mean());<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + h.stdDev());<a name="line.1138"></a>
+<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + sn.getMin());<a name="line.1136"></a>
+<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + sn.getMean());<a name="line.1137"></a>
+<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + sn.getStdDev());<a name="line.1138"></a>
 <span class="sourceLineNo">1139</span>      status.setStatus(testName + " 50th     = " + sn.getMedian());<a name="line.1139"></a>
 <span class="sourceLineNo">1140</span>      status.setStatus(testName + " 75th     = " + sn.get75thPercentile());<a name="line.1140"></a>
 <span class="sourceLineNo">1141</span>      status.setStatus(testName + " 95th     = " + sn.get95thPercentile());<a name="line.1141"></a>
@@ -1151,7 +1151,7 @@
 <span class="sourceLineNo">1143</span>      status.setStatus(testName + " 99.9th   = " + sn.get999thPercentile());<a name="line.1143"></a>
 <span class="sourceLineNo">1144</span>      status.setStatus(testName + " 99.99th  = " + sn.getValue(0.9999));<a name="line.1144"></a>
 <span class="sourceLineNo">1145</span>      status.setStatus(testName + " 99.999th = " + sn.getValue(0.99999));<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + h.max());<a name="line.1146"></a>
+<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + sn.getMax());<a name="line.1146"></a>
 <span class="sourceLineNo">1147</span>    }<a name="line.1147"></a>
 <span class="sourceLineNo">1148</span><a name="line.1148"></a>
 <span class="sourceLineNo">1149</span>    /**<a name="line.1149"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.TestOptions.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.TestOptions.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.TestOptions.html
index d15c216..bf5e0a0 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.TestOptions.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.TestOptions.html
@@ -101,9 +101,9 @@
 <span class="sourceLineNo">093</span><a name="line.93"></a>
 <span class="sourceLineNo">094</span>import com.google.common.base.Objects;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>import com.google.common.util.concurrent.ThreadFactoryBuilder;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import com.yammer.metrics.core.Histogram;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import com.yammer.metrics.stats.Snapshot;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import com.yammer.metrics.stats.UniformSample;<a name="line.98"></a>
+<span class="sourceLineNo">096</span>import com.codahale.metrics.Histogram;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import com.codahale.metrics.Snapshot;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import com.codahale.metrics.UniformReservoir;<a name="line.98"></a>
 <span class="sourceLineNo">099</span><a name="line.99"></a>
 <span class="sourceLineNo">100</span>/**<a name="line.100"></a>
 <span class="sourceLineNo">101</span> * Script used evaluating HBase performance and scalability.  Runs a HBase<a name="line.101"></a>
@@ -1062,8 +1062,8 @@
 <span class="sourceLineNo">1054</span>        this.connection = ConnectionFactory.createConnection(conf);<a name="line.1054"></a>
 <span class="sourceLineNo">1055</span>      }<a name="line.1055"></a>
 <span class="sourceLineNo">1056</span>      onStartup();<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1058"></a>
+<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1058"></a>
 <span class="sourceLineNo">1059</span>    }<a name="line.1059"></a>
 <span class="sourceLineNo">1060</span><a name="line.1060"></a>
 <span class="sourceLineNo">1061</span>    abstract void onStartup() throws IOException;<a name="line.1061"></a>
@@ -1129,21 +1129,21 @@
 <span class="sourceLineNo">1121</span>     */<a name="line.1121"></a>
 <span class="sourceLineNo">1122</span>    private void reportLatency() throws IOException {<a name="line.1122"></a>
 <span class="sourceLineNo">1123</span>      status.setStatus(testName + " latency log (microseconds), on " +<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>          latency.count() + " measures");<a name="line.1124"></a>
+<span class="sourceLineNo">1124</span>          latency.getCount() + " measures");<a name="line.1124"></a>
 <span class="sourceLineNo">1125</span>      reportHistogram(this.latency);<a name="line.1125"></a>
 <span class="sourceLineNo">1126</span>    }<a name="line.1126"></a>
 <span class="sourceLineNo">1127</span><a name="line.1127"></a>
 <span class="sourceLineNo">1128</span>    private void reportValueSize() throws IOException {<a name="line.1128"></a>
 <span class="sourceLineNo">1129</span>      status.setStatus(testName + " valueSize after " +<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>          valueSize.count() + " measures");<a name="line.1130"></a>
+<span class="sourceLineNo">1130</span>          valueSize.getCount() + " measures");<a name="line.1130"></a>
 <span class="sourceLineNo">1131</span>      reportHistogram(this.valueSize);<a name="line.1131"></a>
 <span class="sourceLineNo">1132</span>    }<a name="line.1132"></a>
 <span class="sourceLineNo">1133</span><a name="line.1133"></a>
 <span class="sourceLineNo">1134</span>    private void reportHistogram(final Histogram h) throws IOException {<a name="line.1134"></a>
 <span class="sourceLineNo">1135</span>      Snapshot sn = h.getSnapshot();<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + h.min());<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + h.mean());<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + h.stdDev());<a name="line.1138"></a>
+<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + sn.getMin());<a name="line.1136"></a>
+<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + sn.getMean());<a name="line.1137"></a>
+<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + sn.getStdDev());<a name="line.1138"></a>
 <span class="sourceLineNo">1139</span>      status.setStatus(testName + " 50th     = " + sn.getMedian());<a name="line.1139"></a>
 <span class="sourceLineNo">1140</span>      status.setStatus(testName + " 75th     = " + sn.get75thPercentile());<a name="line.1140"></a>
 <span class="sourceLineNo">1141</span>      status.setStatus(testName + " 95th     = " + sn.get95thPercentile());<a name="line.1141"></a>
@@ -1151,7 +1151,7 @@
 <span class="sourceLineNo">1143</span>      status.setStatus(testName + " 99.9th   = " + sn.get999thPercentile());<a name="line.1143"></a>
 <span class="sourceLineNo">1144</span>      status.setStatus(testName + " 99.99th  = " + sn.getValue(0.9999));<a name="line.1144"></a>
 <span class="sourceLineNo">1145</span>      status.setStatus(testName + " 99.999th = " + sn.getValue(0.99999));<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + h.max());<a name="line.1146"></a>
+<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + sn.getMax());<a name="line.1146"></a>
 <span class="sourceLineNo">1147</span>    }<a name="line.1147"></a>
 <span class="sourceLineNo">1148</span><a name="line.1148"></a>
 <span class="sourceLineNo">1149</span>    /**<a name="line.1149"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.html
index d15c216..bf5e0a0 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/PerformanceEvaluation.html
@@ -101,9 +101,9 @@
 <span class="sourceLineNo">093</span><a name="line.93"></a>
 <span class="sourceLineNo">094</span>import com.google.common.base.Objects;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>import com.google.common.util.concurrent.ThreadFactoryBuilder;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import com.yammer.metrics.core.Histogram;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import com.yammer.metrics.stats.Snapshot;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import com.yammer.metrics.stats.UniformSample;<a name="line.98"></a>
+<span class="sourceLineNo">096</span>import com.codahale.metrics.Histogram;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import com.codahale.metrics.Snapshot;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import com.codahale.metrics.UniformReservoir;<a name="line.98"></a>
 <span class="sourceLineNo">099</span><a name="line.99"></a>
 <span class="sourceLineNo">100</span>/**<a name="line.100"></a>
 <span class="sourceLineNo">101</span> * Script used evaluating HBase performance and scalability.  Runs a HBase<a name="line.101"></a>
@@ -1062,8 +1062,8 @@
 <span class="sourceLineNo">1054</span>        this.connection = ConnectionFactory.createConnection(conf);<a name="line.1054"></a>
 <span class="sourceLineNo">1055</span>      }<a name="line.1055"></a>
 <span class="sourceLineNo">1056</span>      onStartup();<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformSample(1024 * 500));<a name="line.1058"></a>
+<span class="sourceLineNo">1057</span>      latency = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>      valueSize = YammerHistogramUtils.newHistogram(new UniformReservoir(1024 * 500));<a name="line.1058"></a>
 <span class="sourceLineNo">1059</span>    }<a name="line.1059"></a>
 <span class="sourceLineNo">1060</span><a name="line.1060"></a>
 <span class="sourceLineNo">1061</span>    abstract void onStartup() throws IOException;<a name="line.1061"></a>
@@ -1129,21 +1129,21 @@
 <span class="sourceLineNo">1121</span>     */<a name="line.1121"></a>
 <span class="sourceLineNo">1122</span>    private void reportLatency() throws IOException {<a name="line.1122"></a>
 <span class="sourceLineNo">1123</span>      status.setStatus(testName + " latency log (microseconds), on " +<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>          latency.count() + " measures");<a name="line.1124"></a>
+<span class="sourceLineNo">1124</span>          latency.getCount() + " measures");<a name="line.1124"></a>
 <span class="sourceLineNo">1125</span>      reportHistogram(this.latency);<a name="line.1125"></a>
 <span class="sourceLineNo">1126</span>    }<a name="line.1126"></a>
 <span class="sourceLineNo">1127</span><a name="line.1127"></a>
 <span class="sourceLineNo">1128</span>    private void reportValueSize() throws IOException {<a name="line.1128"></a>
 <span class="sourceLineNo">1129</span>      status.setStatus(testName + " valueSize after " +<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>          valueSize.count() + " measures");<a name="line.1130"></a>
+<span class="sourceLineNo">1130</span>          valueSize.getCount() + " measures");<a name="line.1130"></a>
 <span class="sourceLineNo">1131</span>      reportHistogram(this.valueSize);<a name="line.1131"></a>
 <span class="sourceLineNo">1132</span>    }<a name="line.1132"></a>
 <span class="sourceLineNo">1133</span><a name="line.1133"></a>
 <span class="sourceLineNo">1134</span>    private void reportHistogram(final Histogram h) throws IOException {<a name="line.1134"></a>
 <span class="sourceLineNo">1135</span>      Snapshot sn = h.getSnapshot();<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + h.min());<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + h.mean());<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + h.stdDev());<a name="line.1138"></a>
+<span class="sourceLineNo">1136</span>      status.setStatus(testName + " Min      = " + sn.getMin());<a name="line.1136"></a>
+<span class="sourceLineNo">1137</span>      status.setStatus(testName + " Avg      = " + sn.getMean());<a name="line.1137"></a>
+<span class="sourceLineNo">1138</span>      status.setStatus(testName + " StdDev   = " + sn.getStdDev());<a name="line.1138"></a>
 <span class="sourceLineNo">1139</span>      status.setStatus(testName + " 50th     = " + sn.getMedian());<a name="line.1139"></a>
 <span class="sourceLineNo">1140</span>      status.setStatus(testName + " 75th     = " + sn.get75thPercentile());<a name="line.1140"></a>
 <span class="sourceLineNo">1141</span>      status.setStatus(testName + " 95th     = " + sn.get95thPercentile());<a name="line.1141"></a>
@@ -1151,7 +1151,7 @@
 <span class="sourceLineNo">1143</span>      status.setStatus(testName + " 99.9th   = " + sn.get999thPercentile());<a name="line.1143"></a>
 <span class="sourceLineNo">1144</span>      status.setStatus(testName + " 99.99th  = " + sn.getValue(0.9999));<a name="line.1144"></a>
 <span class="sourceLineNo">1145</span>      status.setStatus(testName + " 99.999th = " + sn.getValue(0.99999));<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + h.max());<a name="line.1146"></a>
+<span class="sourceLineNo">1146</span>      status.setStatus(testName + " Max      = " + sn.getMax());<a name="line.1146"></a>
 <span class="sourceLineNo">1147</span>    }<a name="line.1147"></a>
 <span class="sourceLineNo">1148</span><a name="line.1148"></a>
 <span class="sourceLineNo">1149</span>    /**<a name="line.1149"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/TestPerformanceEvaluation.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/TestPerformanceEvaluation.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/TestPerformanceEvaluation.html
index ea4314f..5f91578 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/TestPerformanceEvaluation.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/TestPerformanceEvaluation.html
@@ -48,9 +48,9 @@
 <span class="sourceLineNo">040</span>import org.junit.Test;<a name="line.40"></a>
 <span class="sourceLineNo">041</span>import org.junit.experimental.categories.Category;<a name="line.41"></a>
 <span class="sourceLineNo">042</span><a name="line.42"></a>
-<span class="sourceLineNo">043</span>import com.yammer.metrics.core.Histogram;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import com.yammer.metrics.stats.Snapshot;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import com.yammer.metrics.stats.UniformSample;<a name="line.45"></a>
+<span class="sourceLineNo">043</span>import com.codahale.metrics.Histogram;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import com.codahale.metrics.Snapshot;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import com.codahale.metrics.UniformReservoir;<a name="line.45"></a>
 <span class="sourceLineNo">046</span><a name="line.46"></a>
 <span class="sourceLineNo">047</span>@Category({MiscTests.class, SmallTests.class})<a name="line.47"></a>
 <span class="sourceLineNo">048</span>public class TestPerformanceEvaluation {<a name="line.48"></a>
@@ -133,16 +133,16 @@
 <span class="sourceLineNo">125</span>    opts.setValueSize(valueSize);<a name="line.125"></a>
 <span class="sourceLineNo">126</span>    RandomReadTest rrt = new RandomReadTest(null, opts, null);<a name="line.126"></a>
 <span class="sourceLineNo">127</span>    Constructor&lt;?&gt; ctor =<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      Histogram.class.getDeclaredConstructor(com.yammer.metrics.stats.Sample.class);<a name="line.128"></a>
+<span class="sourceLineNo">128</span>      Histogram.class.getDeclaredConstructor(com.codahale.metrics.Reservoir.class);<a name="line.128"></a>
 <span class="sourceLineNo">129</span>    ctor.setAccessible(true);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    Histogram histogram = (Histogram)ctor.newInstance(new UniformSample(1024 * 500));<a name="line.130"></a>
+<span class="sourceLineNo">130</span>    Histogram histogram = (Histogram)ctor.newInstance(new UniformReservoir(1024 * 500));<a name="line.130"></a>
 <span class="sourceLineNo">131</span>    for (int i = 0; i &lt; 100; i++) {<a name="line.131"></a>
 <span class="sourceLineNo">132</span>      histogram.update(rrt.getValueLength(null));<a name="line.132"></a>
 <span class="sourceLineNo">133</span>    }<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    double stddev = histogram.stdDev();<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    assertTrue(stddev != 0 &amp;&amp; stddev != 1.0);<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    assertTrue(histogram.stdDev() != 0);<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    Snapshot snapshot = histogram.getSnapshot();<a name="line.137"></a>
+<span class="sourceLineNo">134</span>    Snapshot snapshot = histogram.getSnapshot();<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    double stddev = snapshot.getStdDev();<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    assertTrue(stddev != 0 &amp;&amp; stddev != 1.0);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    assertTrue(snapshot.getStdDev() != 0);<a name="line.137"></a>
 <span class="sourceLineNo">138</span>    double median = snapshot.getMedian();<a name="line.138"></a>
 <span class="sourceLineNo">139</span>    assertTrue(median != 0 &amp;&amp; median != 1 &amp;&amp; median != valueSize);<a name="line.139"></a>
 <span class="sourceLineNo">140</span>  }<a name="line.140"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestClientPushback.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestClientPushback.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestClientPushback.html
index 782bd09..7d83c24 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestClientPushback.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestClientPushback.html
@@ -158,22 +158,23 @@
 <span class="sourceLineNo">150</span>    MetricsConnection.RegionStats rsStats = conn.getConnectionMetrics().<a name="line.150"></a>
 <span class="sourceLineNo">151</span>            serverStats.get(server).get(regionName);<a name="line.151"></a>
 <span class="sourceLineNo">152</span>    assertEquals(name, rsStats.name);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    assertEquals(rsStats.heapOccupancyHist.mean(),<a name="line.153"></a>
+<span class="sourceLineNo">153</span>    assertEquals(rsStats.heapOccupancyHist.getSnapshot().getMean(),<a name="line.153"></a>
 <span class="sourceLineNo">154</span>        (double)regionStats.getHeapOccupancyPercent(), 0.1 );<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    assertEquals(rsStats.memstoreLoadHist.mean(),<a name="line.155"></a>
+<span class="sourceLineNo">155</span>    assertEquals(rsStats.memstoreLoadHist.getSnapshot().getMean(),<a name="line.155"></a>
 <span class="sourceLineNo">156</span>        (double)regionStats.getMemstoreLoadPercent(), 0.1);<a name="line.156"></a>
 <span class="sourceLineNo">157</span><a name="line.157"></a>
 <span class="sourceLineNo">158</span>    MetricsConnection.RunnerStats runnerStats = conn.getConnectionMetrics().runnerStats;<a name="line.158"></a>
 <span class="sourceLineNo">159</span><a name="line.159"></a>
-<span class="sourceLineNo">160</span>    assertEquals(runnerStats.delayRunners.count(), 1);<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    assertEquals(runnerStats.normalRunners.count(), 1);<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    assertEquals("", runnerStats.delayIntevalHist.mean(), (double)backoffTime, 0.1);<a name="line.162"></a>
-<span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>    latch.await(backoffTime * 2, TimeUnit.MILLISECONDS);<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    assertNotEquals("AsyncProcess did not submit the work time", endTime.get(), 0);<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    assertTrue("AsyncProcess did not delay long enough", endTime.get() - startTime &gt;= backoffTime);<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">160</span>    assertEquals(runnerStats.delayRunners.getCount(), 1);<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    assertEquals(runnerStats.normalRunners.getCount(), 1);<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    assertEquals("", runnerStats.delayIntevalHist.getSnapshot().getMean(),<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      (double)backoffTime, 0.1);<a name="line.163"></a>
+<span class="sourceLineNo">164</span><a name="line.164"></a>
+<span class="sourceLineNo">165</span>    latch.await(backoffTime * 2, TimeUnit.MILLISECONDS);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    assertNotEquals("AsyncProcess did not submit the work time", endTime.get(), 0);<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    assertTrue("AsyncProcess did not delay long enough", endTime.get() - startTime &gt;= backoffTime);<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestMetricsConnection.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestMetricsConnection.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestMetricsConnection.html
index 0df08ad..a54292e 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestMetricsConnection.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestMetricsConnection.html
@@ -120,9 +120,9 @@
 <span class="sourceLineNo">112</span>        METRICS.getTracker, METRICS.scanTracker, METRICS.multiTracker, METRICS.appendTracker,<a name="line.112"></a>
 <span class="sourceLineNo">113</span>        METRICS.deleteTracker, METRICS.incrementTracker, METRICS.putTracker<a name="line.113"></a>
 <span class="sourceLineNo">114</span>    }) {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      Assert.assertEquals("Failed to invoke callTimer on " + t, loop, t.callTimer.count());<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      Assert.assertEquals("Failed to invoke reqHist on " + t, loop, t.reqHist.count());<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      Assert.assertEquals("Failed to invoke respHist on " + t, loop, t.respHist.count());<a name="line.117"></a>
+<span class="sourceLineNo">115</span>      Assert.assertEquals("Failed to invoke callTimer on " + t, loop, t.callTimer.getCount());<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      Assert.assertEquals("Failed to invoke reqHist on " + t, loop, t.reqHist.getCount());<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      Assert.assertEquals("Failed to invoke respHist on " + t, loop, t.respHist.getCount());<a name="line.117"></a>
 <span class="sourceLineNo">118</span>    }<a name="line.118"></a>
 <span class="sourceLineNo">119</span>  }<a name="line.119"></a>
 <span class="sourceLineNo">120</span>}<a name="line.120"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/executor/TestExecutorService.TestEventHandler.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/executor/TestExecutorService.TestEventHandler.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/executor/TestExecutorService.TestEventHandler.html
index a737e1d..c21f298 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/executor/TestExecutorService.TestEventHandler.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/executor/TestExecutorService.TestEventHandler.html
@@ -27,17 +27,17 @@
 <span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.executor;<a name="line.19"></a>
 <span class="sourceLineNo">020</span><a name="line.20"></a>
 <span class="sourceLineNo">021</span>import static org.junit.Assert.*;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import static org.junit.Assert.assertEquals;<a name="line.22"></a>
-<span class="sourceLineNo">023</span><a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.io.IOException;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import java.io.StringWriter;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.util.concurrent.ThreadPoolExecutor;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.28"></a>
-<span class="sourceLineNo">029</span><a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.commons.logging.Log;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.commons.logging.LogFactory;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.*;<a name="line.32"></a>
+<span class="sourceLineNo">022</span>import java.io.IOException;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.io.StringWriter;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import java.util.concurrent.ThreadPoolExecutor;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.26"></a>
+<span class="sourceLineNo">027</span><a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.commons.logging.Log;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.commons.logging.LogFactory;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.conf.Configuration;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.*;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.Waiter.Predicate;<a name="line.32"></a>
 <span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.executor.ExecutorService.Executor;<a name="line.33"></a>
 <span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.executor.ExecutorService.ExecutorStatus;<a name="line.34"></a>
 <span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.testclassification.MiscTests;<a name="line.35"></a>
@@ -98,8 +98,8 @@
 <span class="sourceLineNo">090</span>    assertTrue(status.queuedEvents.isEmpty());<a name="line.90"></a>
 <span class="sourceLineNo">091</span>    assertEquals(5, status.running.size());<a name="line.91"></a>
 <span class="sourceLineNo">092</span>    checkStatusDump(status);<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    <a name="line.93"></a>
-<span class="sourceLineNo">094</span>    <a name="line.94"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span><a name="line.94"></a>
 <span class="sourceLineNo">095</span>    // Now interrupt the running Executor<a name="line.95"></a>
 <span class="sourceLineNo">096</span>    synchronized (lock) {<a name="line.96"></a>
 <span class="sourceLineNo">097</span>      lock.set(false);<a name="line.97"></a>
@@ -148,7 +148,7 @@
 <span class="sourceLineNo">140</span>    status.dumpTo(sw, "");<a name="line.140"></a>
 <span class="sourceLineNo">141</span>    String dump = sw.toString();<a name="line.141"></a>
 <span class="sourceLineNo">142</span>    LOG.info("Got status dump:\n" + dump);<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    <a name="line.143"></a>
+<span class="sourceLineNo">143</span><a name="line.143"></a>
 <span class="sourceLineNo">144</span>    assertTrue(dump.contains("Waiting on java.util.concurrent.atomic.AtomicBoolean"));<a name="line.144"></a>
 <span class="sourceLineNo">145</span>  }<a name="line.145"></a>
 <span class="sourceLineNo">146</span><a name="line.146"></a>
@@ -181,8 +181,41 @@
 <span class="sourceLineNo">173</span>    }<a name="line.173"></a>
 <span class="sourceLineNo">174</span>  }<a name="line.174"></a>
 <span class="sourceLineNo">175</span><a name="line.175"></a>
-<span class="sourceLineNo">176</span>}<a name="line.176"></a>
-<span class="sourceLineNo">177</span><a name="line.177"></a>
+<span class="sourceLineNo">176</span>  @Test<a name="line.176"></a>
+<span class="sourceLineNo">177</span>  public void testAborting() throws Exception {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    final Configuration conf = HBaseConfiguration.create();<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    final Server server = mock(Server.class);<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    when(server.getConfiguration()).thenReturn(conf);<a name="line.180"></a>
+<span class="sourceLineNo">181</span><a name="line.181"></a>
+<span class="sourceLineNo">182</span>    ExecutorService executorService = new ExecutorService("unit_test");<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    executorService.startExecutorService(<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      ExecutorType.MASTER_SERVER_OPERATIONS, 1);<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>    executorService.submit(new EventHandler(server, EventType.M_SERVER_SHUTDOWN) {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      @Override<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      public void process() throws IOException {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>        throw new RuntimeException("Should cause abort");<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      }<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    });<a name="line.192"></a>
+<span class="sourceLineNo">193</span><a name="line.193"></a>
+<span class="sourceLineNo">194</span>    Waiter.waitFor(conf, 30000, new Predicate&lt;Exception&gt;() {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      @Override<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      public boolean evaluate() throws Exception {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>        try {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>          verify(server, times(1)).abort(anyString(), (Throwable) anyObject());<a name="line.198"></a>
+<span class="sourceLineNo">199</span>          return true;<a name="line.199"></a>
+<span class="sourceLineNo">200</span>        } catch (Throwable t) {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>          return false;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>        }<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      }<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    });<a name="line.204"></a>
+<span class="sourceLineNo">205</span><a name="line.205"></a>
+<span class="sourceLineNo">206</span>    executorService.shutdown();<a name="line.206"></a>
+<span class="sourceLineNo">207</span>  }<a name="line.207"></a>
+<span class="sourceLineNo">208</span><a name="line.208"></a>
+<span class="sourceLineNo">209</span>}<a name="line.209"></a>
+<span class="sourceLineNo">210</span><a name="line.210"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/executor/TestExecutorService.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/executor/TestExecutorService.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/executor/TestExecutorService.html
index a737e1d..c21f298 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/executor/TestExecutorService.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/executor/TestExecutorService.html
@@ -27,17 +27,17 @@
 <span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.executor;<a name="line.19"></a>
 <span class="sourceLineNo">020</span><a name="line.20"></a>
 <span class="sourceLineNo">021</span>import static org.junit.Assert.*;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import static org.junit.Assert.assertEquals;<a name="line.22"></a>
-<span class="sourceLineNo">023</span><a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.io.IOException;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import java.io.StringWriter;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.util.concurrent.ThreadPoolExecutor;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.28"></a>
-<span class="sourceLineNo">029</span><a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.commons.logging.Log;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.commons.logging.LogFactory;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.*;<a name="line.32"></a>
+<span class="sourceLineNo">022</span>import java.io.IOException;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.io.StringWriter;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import java.util.concurrent.ThreadPoolExecutor;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.26"></a>
+<span class="sourceLineNo">027</span><a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.commons.logging.Log;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.commons.logging.LogFactory;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.conf.Configuration;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.*;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.Waiter.Predicate;<a name="line.32"></a>
 <span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.executor.ExecutorService.Executor;<a name="line.33"></a>
 <span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.executor.ExecutorService.ExecutorStatus;<a name="line.34"></a>
 <span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.testclassification.MiscTests;<a name="line.35"></a>
@@ -98,8 +98,8 @@
 <span class="sourceLineNo">090</span>    assertTrue(status.queuedEvents.isEmpty());<a name="line.90"></a>
 <span class="sourceLineNo">091</span>    assertEquals(5, status.running.size());<a name="line.91"></a>
 <span class="sourceLineNo">092</span>    checkStatusDump(status);<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    <a name="line.93"></a>
-<span class="sourceLineNo">094</span>    <a name="line.94"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span><a name="line.94"></a>
 <span class="sourceLineNo">095</span>    // Now interrupt the running Executor<a name="line.95"></a>
 <span class="sourceLineNo">096</span>    synchronized (lock) {<a name="line.96"></a>
 <span class="sourceLineNo">097</span>      lock.set(false);<a name="line.97"></a>
@@ -148,7 +148,7 @@
 <span class="sourceLineNo">140</span>    status.dumpTo(sw, "");<a name="line.140"></a>
 <span class="sourceLineNo">141</span>    String dump = sw.toString();<a name="line.141"></a>
 <span class="sourceLineNo">142</span>    LOG.info("Got status dump:\n" + dump);<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    <a name="line.143"></a>
+<span class="sourceLineNo">143</span><a name="line.143"></a>
 <span class="sourceLineNo">144</span>    assertTrue(dump.contains("Waiting on java.util.concurrent.atomic.AtomicBoolean"));<a name="line.144"></a>
 <span class="sourceLineNo">145</span>  }<a name="line.145"></a>
 <span class="sourceLineNo">146</span><a name="line.146"></a>
@@ -181,8 +181,41 @@
 <span class="sourceLineNo">173</span>    }<a name="line.173"></a>
 <span class="sourceLineNo">174</span>  }<a name="line.174"></a>
 <span class="sourceLineNo">175</span><a name="line.175"></a>
-<span class="sourceLineNo">176</span>}<a name="line.176"></a>
-<span class="sourceLineNo">177</span><a name="line.177"></a>
+<span class="sourceLineNo">176</span>  @Test<a name="line.176"></a>
+<span class="sourceLineNo">177</span>  public void testAborting() throws Exception {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    final Configuration conf = HBaseConfiguration.create();<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    final Server server = mock(Server.class);<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    when(server.getConfiguration()).thenReturn(conf);<a name="line.180"></a>
+<span class="sourceLineNo">181</span><a name="line.181"></a>
+<span class="sourceLineNo">182</span>    ExecutorService executorService = new ExecutorService("unit_test");<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    executorService.startExecutorService(<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      ExecutorType.MASTER_SERVER_OPERATIONS, 1);<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>    executorService.submit(new EventHandler(server, EventType.M_SERVER_SHUTDOWN) {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      @Override<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      public void process() throws IOException {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>        throw new RuntimeException("Should cause abort");<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      }<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    });<a name="line.192"></a>
+<span class="sourceLineNo">193</span><a name="line.193"></a>
+<span class="sourceLineNo">194</span>    Waiter.waitFor(conf, 30000, new Predicate&lt;Exception&gt;() {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      @Override<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      public boolean evaluate() throws Exception {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>        try {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>          verify(server, times(1)).abort(anyString(), (Throwable) anyObject());<a name="line.198"></a>
+<span class="sourceLineNo">199</span>          return true;<a name="line.199"></a>
+<span class="sourceLineNo">200</span>        } catch (Throwable t) {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>          return false;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>        }<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      }<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    });<a name="line.204"></a>
+<span class="sourceLineNo">205</span><a name="line.205"></a>
+<span class="sourceLineNo">206</span>    executorService.shutdown();<a name="line.206"></a>
+<span class="sourceLineNo">207</span>  }<a name="line.207"></a>
+<span class="sourceLineNo">208</span><a name="line.208"></a>
+<span class="sourceLineNo">209</span>}<a name="line.209"></a>
+<span class="sourceLineNo">210</span><a name="line.210"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.BaseTestStepProcedure.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.BaseTestStepProcedure.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.BaseTestStepProcedure.html
index 53fe897..9fdc021 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.BaseTestStepProcedure.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.BaseTestStepProcedure.html
@@ -321,7 +321,7 @@
 <span class="sourceLineNo">313</span>  public void testRunningProcWithSameNonce() throws Exception {<a name="line.313"></a>
 <span class="sourceLineNo">314</span>    final long nonceGroup = 456;<a name="line.314"></a>
 <span class="sourceLineNo">315</span>    final long nonce = 33333;<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    Procedure proc = new TestMultiStepProcedure();<a name="line.316"></a>
+<span class="sourceLineNo">316</span>    Procedure proc = new TestSingleStepProcedure();<a name="line.316"></a>
 <span class="sourceLineNo">317</span>    long procId = ProcedureTestingUtility.submitAndWait(procExecutor, proc, nonceGroup, nonce);<a name="line.317"></a>
 <span class="sourceLineNo">318</span><a name="line.318"></a>
 <span class="sourceLineNo">319</span>    // Restart (use a latch to prevent the step execution until we submitted proc2)<a name="line.319"></a>
@@ -329,7 +329,7 @@
 <span class="sourceLineNo">321</span>    procEnv.setWaitLatch(latch);<a name="line.321"></a>
 <span class="sourceLineNo">322</span>    restart();<a name="line.322"></a>
 <span class="sourceLineNo">323</span>    // Submit a procedure with the same nonce and expect the same procedure would return.<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    Procedure proc2 = new TestMultiStepProcedure();<a name="line.324"></a>
+<span class="sourceLineNo">324</span>    Procedure proc2 = new TestSingleStepProcedure();<a name="line.324"></a>
 <span class="sourceLineNo">325</span>    long procId2 = procExecutor.submitProcedure(proc2, nonceGroup, nonce);<a name="line.325"></a>
 <span class="sourceLineNo">326</span>    latch.countDown();<a name="line.326"></a>
 <span class="sourceLineNo">327</span>    procEnv.setWaitLatch(null);<a name="line.327"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestMultiStepProcedure.Step1Procedure.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestMultiStepProcedure.Step1Procedure.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestMultiStepProcedure.Step1Procedure.html
index 53fe897..9fdc021 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestMultiStepProcedure.Step1Procedure.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestMultiStepProcedure.Step1Procedure.html
@@ -321,7 +321,7 @@
 <span class="sourceLineNo">313</span>  public void testRunningProcWithSameNonce() throws Exception {<a name="line.313"></a>
 <span class="sourceLineNo">314</span>    final long nonceGroup = 456;<a name="line.314"></a>
 <span class="sourceLineNo">315</span>    final long nonce = 33333;<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    Procedure proc = new TestMultiStepProcedure();<a name="line.316"></a>
+<span class="sourceLineNo">316</span>    Procedure proc = new TestSingleStepProcedure();<a name="line.316"></a>
 <span class="sourceLineNo">317</span>    long procId = ProcedureTestingUtility.submitAndWait(procExecutor, proc, nonceGroup, nonce);<a name="line.317"></a>
 <span class="sourceLineNo">318</span><a name="line.318"></a>
 <span class="sourceLineNo">319</span>    // Restart (use a latch to prevent the step execution until we submitted proc2)<a name="line.319"></a>
@@ -329,7 +329,7 @@
 <span class="sourceLineNo">321</span>    procEnv.setWaitLatch(latch);<a name="line.321"></a>
 <span class="sourceLineNo">322</span>    restart();<a name="line.322"></a>
 <span class="sourceLineNo">323</span>    // Submit a procedure with the same nonce and expect the same procedure would return.<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    Procedure proc2 = new TestMultiStepProcedure();<a name="line.324"></a>
+<span class="sourceLineNo">324</span>    Procedure proc2 = new TestSingleStepProcedure();<a name="line.324"></a>
 <span class="sourceLineNo">325</span>    long procId2 = procExecutor.submitProcedure(proc2, nonceGroup, nonce);<a name="line.325"></a>
 <span class="sourceLineNo">326</span>    latch.countDown();<a name="line.326"></a>
 <span class="sourceLineNo">327</span>    procEnv.setWaitLatch(null);<a name="line.327"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestMultiStepProcedure.Step2Procedure.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestMultiStepProcedure.Step2Procedure.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestMultiStepProcedure.Step2Procedure.html
index 53fe897..9fdc021 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestMultiStepProcedure.Step2Procedure.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestMultiStepProcedure.Step2Procedure.html
@@ -321,7 +321,7 @@
 <span class="sourceLineNo">313</span>  public void testRunningProcWithSameNonce() throws Exception {<a name="line.313"></a>
 <span class="sourceLineNo">314</span>    final long nonceGroup = 456;<a name="line.314"></a>
 <span class="sourceLineNo">315</span>    final long nonce = 33333;<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    Procedure proc = new TestMultiStepProcedure();<a name="line.316"></a>
+<span class="sourceLineNo">316</span>    Procedure proc = new TestSingleStepProcedure();<a name="line.316"></a>
 <span class="sourceLineNo">317</span>    long procId = ProcedureTestingUtility.submitAndWait(procExecutor, proc, nonceGroup, nonce);<a name="line.317"></a>
 <span class="sourceLineNo">318</span><a name="line.318"></a>
 <span class="sourceLineNo">319</span>    // Restart (use a latch to prevent the step execution until we submitted proc2)<a name="line.319"></a>
@@ -329,7 +329,7 @@
 <span class="sourceLineNo">321</span>    procEnv.setWaitLatch(latch);<a name="line.321"></a>
 <span class="sourceLineNo">322</span>    restart();<a name="line.322"></a>
 <span class="sourceLineNo">323</span>    // Submit a procedure with the same nonce and expect the same procedure would return.<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    Procedure proc2 = new TestMultiStepProcedure();<a name="line.324"></a>
+<span class="sourceLineNo">324</span>    Procedure proc2 = new TestSingleStepProcedure();<a name="line.324"></a>
 <span class="sourceLineNo">325</span>    long procId2 = procExecutor.submitProcedure(proc2, nonceGroup, nonce);<a name="line.325"></a>
 <span class="sourceLineNo">326</span>    latch.countDown();<a name="line.326"></a>
 <span class="sourceLineNo">327</span>    procEnv.setWaitLatch(null);<a name="line.327"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestMultiStepProcedure.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestMultiStepProcedure.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestMultiStepProcedure.html
index 53fe897..9fdc021 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestMultiStepProcedure.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestMultiStepProcedure.html
@@ -321,7 +321,7 @@
 <span class="sourceLineNo">313</span>  public void testRunningProcWithSameNonce() throws Exception {<a name="line.313"></a>
 <span class="sourceLineNo">314</span>    final long nonceGroup = 456;<a name="line.314"></a>
 <span class="sourceLineNo">315</span>    final long nonce = 33333;<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    Procedure proc = new TestMultiStepProcedure();<a name="line.316"></a>
+<span class="sourceLineNo">316</span>    Procedure proc = new TestSingleStepProcedure();<a name="line.316"></a>
 <span class="sourceLineNo">317</span>    long procId = ProcedureTestingUtility.submitAndWait(procExecutor, proc, nonceGroup, nonce);<a name="line.317"></a>
 <span class="sourceLineNo">318</span><a name="line.318"></a>
 <span class="sourceLineNo">319</span>    // Restart (use a latch to prevent the step execution until we submitted proc2)<a name="line.319"></a>
@@ -329,7 +329,7 @@
 <span class="sourceLineNo">321</span>    procEnv.setWaitLatch(latch);<a name="line.321"></a>
 <span class="sourceLineNo">322</span>    restart();<a name="line.322"></a>
 <span class="sourceLineNo">323</span>    // Submit a procedure with the same nonce and expect the same procedure would return.<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    Procedure proc2 = new TestMultiStepProcedure();<a name="line.324"></a>
+<span class="sourceLineNo">324</span>    Procedure proc2 = new TestSingleStepProcedure();<a name="line.324"></a>
 <span class="sourceLineNo">325</span>    long procId2 = procExecutor.submitProcedure(proc2, nonceGroup, nonce);<a name="line.325"></a>
 <span class="sourceLineNo">326</span>    latch.countDown();<a name="line.326"></a>
 <span class="sourceLineNo">327</span>    procEnv.setWaitLatch(null);<a name="line.327"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestProcEnv.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestProcEnv.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestProcEnv.html
index 53fe897..9fdc021 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestProcEnv.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestProcEnv.html
@@ -321,7 +321,7 @@
 <span class="sourceLineNo">313</span>  public void testRunningProcWithSameNonce() throws Exception {<a name="line.313"></a>
 <span class="sourceLineNo">314</span>    final long nonceGroup = 456;<a name="line.314"></a>
 <span class="sourceLineNo">315</span>    final long nonce = 33333;<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    Procedure proc = new TestMultiStepProcedure();<a name="line.316"></a>
+<span class="sourceLineNo">316</span>    Procedure proc = new TestSingleStepProcedure();<a name="line.316"></a>
 <span class="sourceLineNo">317</span>    long procId = ProcedureTestingUtility.submitAndWait(procExecutor, proc, nonceGroup, nonce);<a name="line.317"></a>
 <span class="sourceLineNo">318</span><a name="line.318"></a>
 <span class="sourceLineNo">319</span>    // Restart (use a latch to prevent the step execution until we submitted proc2)<a name="line.319"></a>
@@ -329,7 +329,7 @@
 <span class="sourceLineNo">321</span>    procEnv.setWaitLatch(latch);<a name="line.321"></a>
 <span class="sourceLineNo">322</span>    restart();<a name="line.322"></a>
 <span class="sourceLineNo">323</span>    // Submit a procedure with the same nonce and expect the same procedure would return.<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    Procedure proc2 = new TestMultiStepProcedure();<a name="line.324"></a>
+<span class="sourceLineNo">324</span>    Procedure proc2 = new TestSingleStepProcedure();<a name="line.324"></a>
 <span class="sourceLineNo">325</span>    long procId2 = procExecutor.submitProcedure(proc2, nonceGroup, nonce);<a name="line.325"></a>
 <span class="sourceLineNo">326</span>    latch.countDown();<a name="line.326"></a>
 <span class="sourceLineNo">327</span>    procEnv.setWaitLatch(null);<a name="line.327"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestSingleStepProcedure.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestSingleStepProcedure.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestSingleStepProcedure.html
index 53fe897..9fdc021 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestSingleStepProcedure.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestSingleStepProcedure.html
@@ -321,7 +321,7 @@
 <span class="sourceLineNo">313</span>  public void testRunningProcWithSameNonce() throws Exception {<a name="line.313"></a>
 <span class="sourceLineNo">314</span>    final long nonceGroup = 456;<a name="line.314"></a>
 <span class="sourceLineNo">315</span>    final long nonce = 33333;<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    Procedure proc = new TestMultiStepProcedure();<a name="line.316"></a>
+<span class="sourceLineNo">316</span>    Procedure proc = new TestSingleStepProcedure();<a name="line.316"></a>
 <span class="sourceLineNo">317</span>    long procId = ProcedureTestingUtility.submitAndWait(procExecutor, proc, nonceGroup, nonce);<a name="line.317"></a>
 <span class="sourceLineNo">318</span><a name="line.318"></a>
 <span class="sourceLineNo">319</span>    // Restart (use a latch to prevent the step execution until we submitted proc2)<a name="line.319"></a>
@@ -329,7 +329,7 @@
 <span class="sourceLineNo">321</span>    procEnv.setWaitLatch(latch);<a name="line.321"></a>
 <span class="sourceLineNo">322</span>    restart();<a name="line.322"></a>
 <span class="sourceLineNo">323</span>    // Submit a procedure with the same nonce and expect the same procedure would return.<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    Procedure proc2 = new TestMultiStepProcedure();<a name="line.324"></a>
+<span class="sourceLineNo">324</span>    Procedure proc2 = new TestSingleStepProcedure();<a name="line.324"></a>
 <span class="sourceLineNo">325</span>    long procId2 = procExecutor.submitProcedure(proc2, nonceGroup, nonce);<a name="line.325"></a>
 <span class="sourceLineNo">326</span>    latch.countDown();<a name="line.326"></a>
 <span class="sourceLineNo">327</span>    procEnv.setWaitLatch(null);<a name="line.327"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestStateMachineProcedure.State.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestStateMachineProcedure.State.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestStateMachineProcedure.State.html
index 53fe897..9fdc021 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestStateMachineProcedure.State.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestStateMachineProcedure.State.html
@@ -321,7 +321,7 @@
 <span class="sourceLineNo">313</span>  public void testRunningProcWithSameNonce() throws Exception {<a name="line.313"></a>
 <span class="sourceLineNo">314</span>    final long nonceGroup = 456;<a name="line.314"></a>
 <span class="sourceLineNo">315</span>    final long nonce = 33333;<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    Procedure proc = new TestMultiStepProcedure();<a name="line.316"></a>
+<span class="sourceLineNo">316</span>    Procedure proc = new TestSingleStepProcedure();<a name="line.316"></a>
 <span class="sourceLineNo">317</span>    long procId = ProcedureTestingUtility.submitAndWait(procExecutor, proc, nonceGroup, nonce);<a name="line.317"></a>
 <span class="sourceLineNo">318</span><a name="line.318"></a>
 <span class="sourceLineNo">319</span>    // Restart (use a latch to prevent the step execution until we submitted proc2)<a name="line.319"></a>
@@ -329,7 +329,7 @@
 <span class="sourceLineNo">321</span>    procEnv.setWaitLatch(latch);<a name="line.321"></a>
 <span class="sourceLineNo">322</span>    restart();<a name="line.322"></a>
 <span class="sourceLineNo">323</span>    // Submit a procedure with the same nonce and expect the same procedure would return.<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    Procedure proc2 = new TestMultiStepProcedure();<a name="line.324"></a>
+<span class="sourceLineNo">324</span>    Procedure proc2 = new TestSingleStepProcedure();<a name="line.324"></a>
 <span class="sourceLineNo">325</span>    long procId2 = procExecutor.submitProcedure(proc2, nonceGroup, nonce);<a name="line.325"></a>
 <span class="sourceLineNo">326</span>    latch.countDown();<a name="line.326"></a>
 <span class="sourceLineNo">327</span>    procEnv.setWaitLatch(null);<a name="line.327"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestStateMachineProcedure.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestStateMachineProcedure.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestStateMachineProcedure.html
index 53fe897..9fdc021 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestStateMachineProcedure.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestStateMachineProcedure.html
@@ -321,7 +321,7 @@
 <span class="sourceLineNo">313</span>  public void testRunningProcWithSameNonce() throws Exception {<a name="line.313"></a>
 <span class="sourceLineNo">314</span>    final long nonceGroup = 456;<a name="line.314"></a>
 <span class="sourceLineNo">315</span>    final long nonce = 33333;<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    Procedure proc = new TestMultiStepProcedure();<a name="line.316"></a>
+<span class="sourceLineNo">316</span>    Procedure proc = new TestSingleStepProcedure();<a name="line.316"></a>
 <span class="sourceLineNo">317</span>    long procId = ProcedureTestingUtility.submitAndWait(procExecutor, proc, nonceGroup, nonce);<a name="line.317"></a>
 <span class="sourceLineNo">318</span><a name="line.318"></a>
 <span class="sourceLineNo">319</span>    // Restart (use a latch to prevent the step execution until we submitted proc2)<a name="line.319"></a>
@@ -329,7 +329,7 @@
 <span class="sourceLineNo">321</span>    procEnv.setWaitLatch(latch);<a name="line.321"></a>
 <span class="sourceLineNo">322</span>    restart();<a name="line.322"></a>
 <span class="sourceLineNo">323</span>    // Submit a procedure with the same nonce and expect the same procedure would return.<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    Procedure proc2 = new TestMultiStepProcedure();<a name="line.324"></a>
+<span class="sourceLineNo">324</span>    Procedure proc2 = new TestSingleStepProcedure();<a name="line.324"></a>
 <span class="sourceLineNo">325</span>    long procId2 = procExecutor.submitProcedure(proc2, nonceGroup, nonce);<a name="line.325"></a>
 <span class="sourceLineNo">326</span>    latch.countDown();<a name="line.326"></a>
 <span class="sourceLineNo">327</span>    procEnv.setWaitLatch(null);<a name="line.327"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.html
index 53fe897..9fdc021 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.html
@@ -321,7 +321,7 @@
 <span class="sourceLineNo">313</span>  public void testRunningProcWithSameNonce() throws Exception {<a name="line.313"></a>
 <span class="sourceLineNo">314</span>    final long nonceGroup = 456;<a name="line.314"></a>
 <span class="sourceLineNo">315</span>    final long nonce = 33333;<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    Procedure proc = new TestMultiStepProcedure();<a name="line.316"></a>
+<span class="sourceLineNo">316</span>    Procedure proc = new TestSingleStepProcedure();<a name="line.316"></a>
 <span class="sourceLineNo">317</span>    long procId = ProcedureTestingUtility.submitAndWait(procExecutor, proc, nonceGroup, nonce);<a name="line.317"></a>
 <span class="sourceLineNo">318</span><a name="line.318"></a>
 <span class="sourceLineNo">319</span>    // Restart (use a latch to prevent the step execution until we submitted proc2)<a name="line.319"></a>
@@ -329,7 +329,7 @@
 <span class="sourceLineNo">321</span>    procEnv.setWaitLatch(latch);<a name="line.321"></a>
 <span class="sourceLineNo">322</span>    restart();<a name="line.322"></a>
 <span class="sourceLineNo">323</span>    // Submit a procedure with the same nonce and expect the same procedure would return.<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    Procedure proc2 = new TestMultiStepProcedure();<a name="line.324"></a>
+<span class="sourceLineNo">324</span>    Procedure proc2 = new TestSingleStepProcedure();<a name="line.324"></a>
 <span class="sourceLineNo">325</span>    long procId2 = procExecutor.submitProcedure(proc2, nonceGroup, nonce);<a name="line.325"></a>
 <span class="sourceLineNo">326</span>    latch.countDown();<a name="line.326"></a>
 <span class="sourceLineNo">327</span>    procEnv.setWaitLatch(null);<a name="line.327"></a>


[44/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
index cd9c1d9..37cef3a 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/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.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.MarkRegionOfflineOpResult.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="strong">DisableTableProcedure.MarkRegionOfflineOpResult</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="strong">TableProcedureInterface.TableOperationType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.MarkRegionOfflineOpResult.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="strong">DisableTableProcedure.MarkRegionOfflineOpResult</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/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 10a28e7..2b9f8eb 100644
--- a/devapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -354,14 +354,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/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/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/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/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/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.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/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/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/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/KeepDeletedCells.html" title="enum in org.apache.hadoop.hbase"><span class="strong">KeepDeletedCells</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/Procedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/Procedure.html b/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/Procedure.html
index ee7f1bb..ee217cc 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/Procedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/class-use/Procedure.html
@@ -573,16 +573,6 @@
 <tbody>
 <tr class="altColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="strong">ProcedureStoreTracker.</span><code><strong><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#insert(org.apache.hadoop.hbase.procedure2.Procedure,%20org.apache.hadoop.hbase.procedure2.Procedure[])">insert</a></strong>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;proc,
-            <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>[]&nbsp;subprocs)</code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="strong">ProcedureStoreTracker.</span><code><strong><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#insert(org.apache.hadoop.hbase.procedure2.Procedure,%20org.apache.hadoop.hbase.procedure2.Procedure[])">insert</a></strong>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;proc,
-            <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>[]&nbsp;subprocs)</code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="strong">NoopProcedureStore.</span><code><strong><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/NoopProcedureStore.html#insert(org.apache.hadoop.hbase.procedure2.Procedure,%20org.apache.hadoop.hbase.procedure2.Procedure[])">insert</a></strong>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;proc,
             <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>[]&nbsp;subprocs)</code>&nbsp;</td>
 </tr>
@@ -607,13 +597,9 @@
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="strong">ProcedureStoreTracker.</span><code><strong><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#update(org.apache.hadoop.hbase.procedure2.Procedure)">update</a></strong>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;proc)</code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="strong">NoopProcedureStore.</span><code><strong><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/NoopProcedureStore.html#update(org.apache.hadoop.hbase.procedure2.Procedure)">update</a></strong>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;proc)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="strong">ProcedureStore.</span><code><strong><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStore.html#update(org.apache.hadoop.hbase.procedure2.Procedure)">update</a></strong>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;proc)</code>
 <div class="block">The specified procedure was executed,

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/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 7b6e61a..081e785 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
@@ -122,8 +122,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/539ad177/devapidocs/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html b/devapidocs/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html
index 6a0f532..1296db2 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html
@@ -99,7 +99,7 @@
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.52">ProcedureStoreTracker.BitSetNode</a>
+<pre>public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.51">ProcedureStoreTracker.BitSetNode</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>
@@ -325,7 +325,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>WORD_MASK</h4>
-<pre>private static final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.53">WORD_MASK</a></pre>
+<pre>private static final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.52">WORD_MASK</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.procedure2.store.ProcedureStoreTracker.BitSetNode.WORD_MASK">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -335,7 +335,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>ADDRESS_BITS_PER_WORD</h4>
-<pre>private static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.54">ADDRESS_BITS_PER_WORD</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.53">ADDRESS_BITS_PER_WORD</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.procedure2.store.ProcedureStoreTracker.BitSetNode.ADDRESS_BITS_PER_WORD">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -345,7 +345,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>BITS_PER_WORD</h4>
-<pre>private static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.55">BITS_PER_WORD</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.54">BITS_PER_WORD</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.procedure2.store.ProcedureStoreTracker.BitSetNode.BITS_PER_WORD">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -355,7 +355,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>MAX_NODE_SIZE</h4>
-<pre>private static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.56">MAX_NODE_SIZE</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.55">MAX_NODE_SIZE</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.procedure2.store.ProcedureStoreTracker.BitSetNode.MAX_NODE_SIZE">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -365,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>partial</h4>
-<pre>private final&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.58">partial</a></pre>
+<pre>private final&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.57">partial</a></pre>
 </li>
 </ul>
 <a name="updated">
@@ -374,7 +374,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>updated</h4>
-<pre>private&nbsp;long[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.59">updated</a></pre>
+<pre>private&nbsp;long[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.58">updated</a></pre>
 </li>
 </ul>
 <a name="deleted">
@@ -383,7 +383,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>deleted</h4>
-<pre>private&nbsp;long[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.60">deleted</a></pre>
+<pre>private&nbsp;long[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.59">deleted</a></pre>
 </li>
 </ul>
 <a name="start">
@@ -392,7 +392,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>start</h4>
-<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.61">start</a></pre>
+<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.60">start</a></pre>
 </li>
 </ul>
 </li>
@@ -409,7 +409,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>ProcedureStoreTracker.BitSetNode</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.84">ProcedureStoreTracker.BitSetNode</a>(long&nbsp;procId,
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.83">ProcedureStoreTracker.BitSetNode</a>(long&nbsp;procId,
                                 boolean&nbsp;partial)</pre>
 </li>
 </ul>
@@ -419,7 +419,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ProcedureStoreTracker.BitSetNode</h4>
-<pre>protected&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.99">ProcedureStoreTracker.BitSetNode</a>(long&nbsp;start,
+<pre>protected&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.98">ProcedureStoreTracker.BitSetNode</a>(long&nbsp;start,
                                 long[]&nbsp;updated,
                                 long[]&nbsp;deleted)</pre>
 </li>
@@ -438,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>dump</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.63">dump</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.62">dump</a>()</pre>
 </li>
 </ul>
 <a name="update(long)">
@@ -447,7 +447,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>update</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.106">update</a>(long&nbsp;procId)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.105">update</a>(long&nbsp;procId)</pre>
 </li>
 </ul>
 <a name="delete(long)">
@@ -456,7 +456,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>delete</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.110">delete</a>(long&nbsp;procId)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.109">delete</a>(long&nbsp;procId)</pre>
 </li>
 </ul>
 <a name="getStart()">
@@ -465,7 +465,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getStart</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.114">getStart</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.113">getStart</a>()</pre>
 </li>
 </ul>
 <a name="getEnd()">
@@ -474,7 +474,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getEnd</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.118">getEnd</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.117">getEnd</a>()</pre>
 </li>
 </ul>
 <a name="contains(long)">
@@ -483,7 +483,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>contains</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.122">contains</a>(long&nbsp;procId)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.121">contains</a>(long&nbsp;procId)</pre>
 </li>
 </ul>
 <a name="isDeleted(long)">
@@ -492,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>isDeleted</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html" title="enum in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker.DeleteState</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.126">isDeleted</a>(long&nbsp;procId)</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html" title="enum in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker.DeleteState</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.125">isDeleted</a>(long&nbsp;procId)</pre>
 </li>
 </ul>
 <a name="isUpdated(long)">
@@ -501,7 +501,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>isUpdated</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.135">isUpdated</a>(long&nbsp;procId)</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.134">isUpdated</a>(long&nbsp;procId)</pre>
 </li>
 </ul>
 <a name="isUpdated()">
@@ -510,7 +510,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>isUpdated</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.144">isUpdated</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.143">isUpdated</a>()</pre>
 </li>
 </ul>
 <a name="isEmpty()">
@@ -519,7 +519,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>isEmpty</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.154">isEmpty</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.153">isEmpty</a>()</pre>
 </li>
 </ul>
 <a name="resetUpdates()">
@@ -528,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>resetUpdates</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.164">resetUpdates</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.163">resetUpdates</a>()</pre>
 </li>
 </ul>
 <a name="undeleteAll()">
@@ -537,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>undeleteAll</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.170">undeleteAll</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.169">undeleteAll</a>()</pre>
 </li>
 </ul>
 <a name="unsetPartialFlag()">
@@ -546,7 +546,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>unsetPartialFlag</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.176">unsetPartialFlag</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.175">unsetPartialFlag</a>()</pre>
 </li>
 </ul>
 <a name="convert()">
@@ -555,7 +555,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>convert</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.protobuf.generated.ProcedureProtos.ProcedureStoreTracker.TrackerNode&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.186">convert</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.protobuf.generated.ProcedureProtos.ProcedureStoreTracker.TrackerNode&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.185">convert</a>()</pre>
 </li>
 </ul>
 <a name="convert(org.apache.hadoop.hbase.protobuf.generated.ProcedureProtos.ProcedureStoreTracker.TrackerNode)">
@@ -564,7 +564,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>convert</h4>
-<pre>public static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker.BitSetNode</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.197">convert</a>(org.apache.hadoop.hbase.protobuf.generated.ProcedureProtos.ProcedureStoreTracker.TrackerNode&nbsp;data)</pre>
+<pre>public static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker.BitSetNode</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.196">convert</a>(org.apache.hadoop.hbase.protobuf.generated.ProcedureProtos.ProcedureStoreTracker.TrackerNode&nbsp;data)</pre>
 </li>
 </ul>
 <a name="canGrow(long)">
@@ -573,7 +573,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>canGrow</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.212">canGrow</a>(long&nbsp;procId)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.211">canGrow</a>(long&nbsp;procId)</pre>
 </li>
 </ul>
 <a name="canMerge(org.apache.hadoop.hbase.procedure2.store.ProcedureStoreTracker.BitSetNode)">
@@ -582,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>canMerge</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.216">canMerge</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker.BitSetNode</a>&nbsp;rightNode)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.215">canMerge</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker.BitSetNode</a>&nbsp;rightNode)</pre>
 </li>
 </ul>
 <a name="grow(long)">
@@ -591,7 +591,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>grow</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.221">grow</a>(long&nbsp;procId)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.220">grow</a>(long&nbsp;procId)</pre>
 </li>
 </ul>
 <a name="merge(org.apache.hadoop.hbase.procedure2.store.ProcedureStoreTracker.BitSetNode)">
@@ -600,7 +600,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>merge</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.255">merge</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker.BitSetNode</a>&nbsp;rightNode)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.254">merge</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker.BitSetNode</a>&nbsp;rightNode)</pre>
 </li>
 </ul>
 <a name="toString()">
@@ -609,7 +609,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/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/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.280">toString</a>()</pre>
+<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/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.279">toString</a>()</pre>
 <dl>
 <dt><strong>Overrides:</strong></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
@@ -622,7 +622,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getMinProcId</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.287">getMinProcId</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.286">getMinProcId</a>()</pre>
 </li>
 </ul>
 <a name="getMaxProcId()">
@@ -631,7 +631,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaxProcId</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.307">getMaxProcId</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.306">getMaxProcId</a>()</pre>
 </li>
 </ul>
 <a name="getBitmapIndex(long)">
@@ -640,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>getBitmapIndex</h4>
-<pre>private&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.329">getBitmapIndex</a>(long&nbsp;procId)</pre>
+<pre>private&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.328">getBitmapIndex</a>(long&nbsp;procId)</pre>
 </li>
 </ul>
 <a name="updateState(long, boolean)">
@@ -649,7 +649,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>updateState</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.333">updateState</a>(long&nbsp;procId,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.332">updateState</a>(long&nbsp;procId,
                boolean&nbsp;isDeleted)</pre>
 </li>
 </ul>
@@ -659,7 +659,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>alignUp</h4>
-<pre>private static&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.350">alignUp</a>(long&nbsp;x)</pre>
+<pre>private static&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.349">alignUp</a>(long&nbsp;x)</pre>
 </li>
 </ul>
 <a name="alignDown(long)">
@@ -668,7 +668,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>alignDown</h4>
-<pre>private static&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.354">alignDown</a>(long&nbsp;x)</pre>
+<pre>private static&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html#line.353">alignDown</a>(long&nbsp;x)</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html b/devapidocs/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html
index 7f0c74c..6fb4f95 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html
@@ -108,7 +108,7 @@
 </dl>
 <hr>
 <br>
-<pre>public static enum <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.50">ProcedureStoreTracker.DeleteState</a>
+<pre>public static enum <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.49">ProcedureStoreTracker.DeleteState</a>
 extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang">Enum</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html" title="enum in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker.DeleteState</a>&gt;</pre>
 </li>
 </ul>
@@ -199,7 +199,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>YES</h4>
-<pre>public static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html" title="enum in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker.DeleteState</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html#line.50">YES</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html" title="enum in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker.DeleteState</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html#line.49">YES</a></pre>
 </li>
 </ul>
 <a name="NO">
@@ -208,7 +208,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>NO</h4>
-<pre>public static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html" title="enum in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker.DeleteState</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html#line.50">NO</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html" title="enum in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker.DeleteState</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html#line.49">NO</a></pre>
 </li>
 </ul>
 <a name="MAYBE">
@@ -217,7 +217,7 @@ the order they are declared.</div>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MAYBE</h4>
-<pre>public static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html" title="enum in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker.DeleteState</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html#line.50">MAYBE</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html" title="enum in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker.DeleteState</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html#line.49">MAYBE</a></pre>
 </li>
 </ul>
 </li>
@@ -234,7 +234,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>values</h4>
-<pre>public static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html" title="enum in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker.DeleteState</a>[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html#line.50">values</a>()</pre>
+<pre>public static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html" title="enum in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker.DeleteState</a>[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html#line.49">values</a>()</pre>
 <div class="block">Returns an array containing the constants of this enum type, in
 the order they are declared.  This method may be used to iterate
 over the constants as follows:
@@ -251,7 +251,7 @@ for (ProcedureStoreTracker.DeleteState c : ProcedureStoreTracker.DeleteState.val
 <ul class="blockListLast">
 <li class="blockList">
 <h4>valueOf</h4>
-<pre>public static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html" title="enum in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker.DeleteState</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html#line.50">valueOf</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>
+<pre>public static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html" title="enum in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker.DeleteState</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html#line.49">valueOf</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>
 <div class="block">Returns the enum constant of this type with the specified name.
 The string must match <i>exactly</i> an identifier used to declare an
 enum constant in this type.  (Extraneous whitespace characters are 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html b/devapidocs/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html
index 52340a3..54cfe05 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html
@@ -97,7 +97,7 @@
 <br>
 <pre><a href="../../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.Private.html" title="annotation in org.apache.hadoop.hbase.classification">@InterfaceAudience.Private</a>
 <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/procedure2/store/ProcedureStoreTracker.html#line.41">ProcedureStoreTracker</a>
+public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.40">ProcedureStoreTracker</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">Keeps track of live procedures.
 
@@ -235,8 +235,8 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#insert(org.apache.hadoop.hbase.procedure2.Procedure,%20org.apache.hadoop.hbase.procedure2.Procedure[])">insert</a></strong>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;proc,
-            <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>[]&nbsp;subprocs)</code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#insert(long,%20long[])">insert</a></strong>(long&nbsp;procId,
+            long[]&nbsp;subProcIds)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html" title="enum in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker.DeleteState</a></code></td>
@@ -295,10 +295,6 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#update(org.apache.hadoop.hbase.procedure2.Procedure)">update</a></strong>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;proc)</code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#writeTo(java.io.OutputStream)">writeTo</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;stream)</code>&nbsp;</td>
 </tr>
 </table>
@@ -329,7 +325,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>map</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html?is-external=true" title="class or interface in java.util">TreeMap</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>,<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker.BitSetNode</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.42">map</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html?is-external=true" title="class or interface in java.util">TreeMap</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>,<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker.BitSetNode</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.41">map</a></pre>
 </li>
 </ul>
 <a name="keepDeletes">
@@ -338,7 +334,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>keepDeletes</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.44">keepDeletes</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.43">keepDeletes</a></pre>
 </li>
 </ul>
 <a name="partial">
@@ -347,7 +343,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>partial</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.45">partial</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.44">partial</a></pre>
 </li>
 </ul>
 <a name="minUpdatedProcId">
@@ -356,7 +352,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>minUpdatedProcId</h4>
-<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.47">minUpdatedProcId</a></pre>
+<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.46">minUpdatedProcId</a></pre>
 </li>
 </ul>
 <a name="maxUpdatedProcId">
@@ -365,7 +361,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>maxUpdatedProcId</h4>
-<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.48">maxUpdatedProcId</a></pre>
+<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.47">maxUpdatedProcId</a></pre>
 </li>
 </ul>
 </li>
@@ -382,7 +378,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ProcedureStoreTracker</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.41">ProcedureStoreTracker</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.40">ProcedureStoreTracker</a>()</pre>
 </li>
 </ul>
 </li>
@@ -393,32 +389,23 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <!--   -->
 </a>
 <h3>Method Detail</h3>
-<a name="insert(org.apache.hadoop.hbase.procedure2.Procedure, org.apache.hadoop.hbase.procedure2.Procedure[])">
+<a name="insert(long)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>insert</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.359">insert</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;proc,
-          <a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>[]&nbsp;subprocs)</pre>
-</li>
-</ul>
-<a name="update(org.apache.hadoop.hbase.procedure2.Procedure)">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>update</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.368">update</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html" title="class in org.apache.hadoop.hbase.procedure2">Procedure</a>&nbsp;proc)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.358">insert</a>(long&nbsp;procId)</pre>
 </li>
 </ul>
-<a name="insert(long)">
+<a name="insert(long, long[])">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>insert</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.372">insert</a>(long&nbsp;procId)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.364">insert</a>(long&nbsp;procId,
+          long[]&nbsp;subProcIds)</pre>
 </li>
 </ul>
 <a name="update(long)">
@@ -427,7 +414,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>update</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.378">update</a>(long&nbsp;procId)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.371">update</a>(long&nbsp;procId)</pre>
 </li>
 </ul>
 <a name="delete(long)">
@@ -436,7 +423,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>delete</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.388">delete</a>(long&nbsp;procId)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.381">delete</a>(long&nbsp;procId)</pre>
 </li>
 </ul>
 <a name="trackProcIds(long)">
@@ -445,7 +432,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>trackProcIds</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.404">trackProcIds</a>(long&nbsp;procId)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.397">trackProcIds</a>(long&nbsp;procId)</pre>
 </li>
 </ul>
 <a name="getUpdatedMinProcId()">
@@ -454,7 +441,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getUpdatedMinProcId</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.409">getUpdatedMinProcId</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.402">getUpdatedMinProcId</a>()</pre>
 </li>
 </ul>
 <a name="getUpdatedMaxProcId()">
@@ -463,7 +450,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getUpdatedMaxProcId</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.413">getUpdatedMaxProcId</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.406">getUpdatedMaxProcId</a>()</pre>
 </li>
 </ul>
 <a name="setDeleted(long, boolean)">
@@ -473,7 +460,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <li class="blockList">
 <h4>setDeleted</h4>
 <pre><a href="../../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.Private.html" title="annotation in org.apache.hadoop.hbase.classification">@InterfaceAudience.Private</a>
-public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.418">setDeleted</a>(long&nbsp;procId,
+public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.411">setDeleted</a>(long&nbsp;procId,
                                         boolean&nbsp;isDeleted)</pre>
 </li>
 </ul>
@@ -483,7 +470,7 @@ public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>clear</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.424">clear</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.417">clear</a>()</pre>
 </li>
 </ul>
 <a name="isDeleted(long)">
@@ -492,7 +479,7 @@ public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>isDeleted</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html" title="enum in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker.DeleteState</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.429">isDeleted</a>(long&nbsp;procId)</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html" title="enum in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker.DeleteState</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.422">isDeleted</a>(long&nbsp;procId)</pre>
 </li>
 </ul>
 <a name="getMinProcId()">
@@ -501,7 +488,7 @@ public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getMinProcId</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.439">getMinProcId</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.432">getMinProcId</a>()</pre>
 </li>
 </ul>
 <a name="setKeepDeletes(boolean)">
@@ -510,7 +497,7 @@ public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>setKeepDeletes</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.445">setKeepDeletes</a>(boolean&nbsp;keepDeletes)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.438">setKeepDeletes</a>(boolean&nbsp;keepDeletes)</pre>
 </li>
 </ul>
 <a name="setPartialFlag(boolean)">
@@ -519,7 +506,7 @@ public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>setPartialFlag</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.458">setPartialFlag</a>(boolean&nbsp;isPartial)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.451">setPartialFlag</a>(boolean&nbsp;isPartial)</pre>
 </li>
 </ul>
 <a name="isEmpty()">
@@ -528,7 +515,7 @@ public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>isEmpty</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.467">isEmpty</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.460">isEmpty</a>()</pre>
 </li>
 </ul>
 <a name="isUpdated()">
@@ -537,7 +524,7 @@ public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>isUpdated</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.476">isUpdated</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.469">isUpdated</a>()</pre>
 </li>
 </ul>
 <a name="isTracking(long, long)">
@@ -546,7 +533,7 @@ public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>isTracking</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.485">isTracking</a>(long&nbsp;minId,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.478">isTracking</a>(long&nbsp;minId,
                  long&nbsp;maxId)</pre>
 </li>
 </ul>
@@ -556,7 +543,7 @@ public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>resetUpdates</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.490">resetUpdates</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.483">resetUpdates</a>()</pre>
 </li>
 </ul>
 <a name="undeleteAll()">
@@ -565,7 +552,7 @@ public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>undeleteAll</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.498">undeleteAll</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.491">undeleteAll</a>()</pre>
 </li>
 </ul>
 <a name="getOrCreateNode(long)">
@@ -574,7 +561,7 @@ public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getOrCreateNode</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker.BitSetNode</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.504">getOrCreateNode</a>(long&nbsp;procId)</pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker.BitSetNode</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.497">getOrCreateNode</a>(long&nbsp;procId)</pre>
 </li>
 </ul>
 <a name="growNode(org.apache.hadoop.hbase.procedure2.store.ProcedureStoreTracker.BitSetNode, long)">
@@ -583,7 +570,7 @@ public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>growNode</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker.BitSetNode</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.556">growNode</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker.BitSetNode</a>&nbsp;node,
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker.BitSetNode</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.549">growNode</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker.BitSetNode</a>&nbsp;node,
                                         long&nbsp;procId)</pre>
 </li>
 </ul>
@@ -593,7 +580,7 @@ public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>mergeNodes</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker.BitSetNode</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.563">mergeNodes</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker.BitSetNode</a>&nbsp;leftNode,
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker.BitSetNode</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.556">mergeNodes</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker.BitSetNode</a>&nbsp;leftNode,
                                           <a href="../../../../../../org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.BitSetNode.html" title="class in org.apache.hadoop.hbase.procedure2.store">ProcedureStoreTracker.BitSetNode</a>&nbsp;rightNode)</pre>
 </li>
 </ul>
@@ -603,7 +590,7 @@ public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>dump</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.570">dump</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.563">dump</a>()</pre>
 </li>
 </ul>
 <a name="writeTo(java.io.OutputStream)">
@@ -612,7 +599,7 @@ public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>writeTo</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.579">writeTo</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;stream)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.572">writeTo</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;stream)
              throws <a href="http://docs.oracle.com/javase/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>
@@ -624,7 +611,7 @@ public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockListLast">
 <li class="blockList">
 <h4>readFrom</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.588">readFrom</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html?is-external=true" title="class or interface in java.io">InputStream</a>&nbsp;stream)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.html#line.581">readFrom</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html?is-external=true" title="class or interface in java.io">InputStream</a>&nbsp;stream)
               throws <a href="http://docs.oracle.com/javase/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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.LeaseRecovery.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.LeaseRecovery.html b/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.LeaseRecovery.html
index 5b81414..ef262c0 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.LeaseRecovery.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.LeaseRecovery.html
@@ -36,7 +36,7 @@
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal"><span class="strong">Prev Class</span></a></li>
-<li>Next Class</li>
+<li><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.PushType.html" title="enum in org.apache.hadoop.hbase.procedure2.store.wal"><span class="strong">Next Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../../../index.html?org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.LeaseRecovery.html" target="_top">Frames</a></li>
@@ -174,7 +174,7 @@
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal"><span class="strong">Prev Class</span></a></li>
-<li>Next Class</li>
+<li><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.PushType.html" title="enum in org.apache.hadoop.hbase.procedure2.store.wal"><span class="strong">Next Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../../../index.html?org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.LeaseRecovery.html" target="_top">Frames</a></li>


[41/51] [partial] hbase-site git commit: Published site at 60d33ce34191533bb858852584bd9bddfeb16a23.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/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 5cae5e8..3fa47e5 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="servers">
+<a name="filter">
 <!--   -->
 </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.63">servers</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.63">filter</a></pre>
 </li>
 </ul>
-<a name="assignmentManager">
+<a name="metaLocation">
 <!--   -->
 </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.64">assignmentManager</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="deadServers">
+<a name="assignmentManager">
 <!--   -->
 </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.65">deadServers</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.65">assignmentManager</a></pre>
 </li>
 </ul>
-<a name="metaLocation">
+<a name="serverManager">
 <!--   -->
 </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.66">metaLocation</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.66">serverManager</a></pre>
 </li>
 </ul>
-<a name="serverManager">
+<a name="deadServers">
 <!--   -->
 </a>
 <ul class="blockList">
 <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.67">serverManager</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="format">
+<a name="catalogJanitorEnabled">
 <!--   -->
 </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.68">format</a></pre>
+<h4>catalogJanitorEnabled</h4>
+<pre>private final&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.68">catalogJanitorEnabled</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.69">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.69">frags</a></pre>
 </li>
 </ul>
-<a name="catalogJanitorEnabled">
+<a name="servers">
 <!--   -->
 </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.70">catalogJanitorEnabled</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="frags">
+<a name="format">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <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.71">frags</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.71">format</a></pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/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 74d40d2..aba0ffe 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_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.83">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.83">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.88">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.88">m_bcn__IsNotDefault</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.100">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.100">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.105">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.105">m_bcv__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.117">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.117">m_filter</a></pre>
 </li>
 </ul>
-<a name="m_bcn__IsNotDefault">
+<a name="m_filter__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockList">
 <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.122">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.122">m_filter__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.134">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.134">m_format</a></pre>
 </li>
 </ul>
-<a name="m_bcv__IsNotDefault">
+<a name="m_format__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <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.139">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.139">m_format__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="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.73">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.73">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.79">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.79">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.84">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.84">getBcn__IsNotDefault</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.90">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.90">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.96">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.96">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.101">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.101">getBcv__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.107">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.107">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.113">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.113">getFilter</a>()</pre>
 </li>
 </ul>
-<a name="getBcn__IsNotDefault()">
+<a name="getFilter__IsNotDefault()">
 <!--   -->
 </a>
 <ul class="blockList">
 <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.118">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.118">getFilter__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.124">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.124">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.130">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.130">getFormat</a>()</pre>
 </li>
 </ul>
-<a name="getBcv__IsNotDefault()">
+<a name="getFormat__IsNotDefault()">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <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.135">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.135">getFormat__IsNotDefault</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/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 7fa97c8..ceb488f 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="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.151">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.151">bcn</a></pre>
 </li>
 </ul>
-<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.158">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.158">bcv</a></pre>
 </li>
 </ul>
-<a name="bcn">
+<a name="filter">
 <!--   -->
 </a>
 <ul class="blockList">
 <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.165">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.165">filter</a></pre>
 </li>
 </ul>
-<a name="bcv">
+<a name="format">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <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.172">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.172">format</a></pre>
 </li>
 </ul>
 </li>
@@ -388,40 +388,40 @@ extends org.jamon.AbstractTemplateProxy</pre>
 </dl>
 </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.152">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.152">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="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.159">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.159">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="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.166">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.166">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="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.173">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.173">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="constructImpl(java.lang.Class)">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/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 35e8c8a..920ba6b 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="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.29">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.29">bcn</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.30">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.30">bcv</a></pre>
 </li>
 </ul>
-<a name="bcn">
+<a name="filter">
 <!--   -->
 </a>
 <ul class="blockList">
 <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.31">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.31">filter</a></pre>
 </li>
 </ul>
-<a name="bcv">
+<a name="format">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <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.32">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.32">format</a></pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/hbase/util/YammerHistogramUtils.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/YammerHistogramUtils.html b/devapidocs/org/apache/hadoop/hbase/util/YammerHistogramUtils.html
index d983d87..675a759 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/YammerHistogramUtils.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/YammerHistogramUtils.html
@@ -158,15 +158,15 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <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></code></td>
-<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/util/YammerHistogramUtils.html#getHistogramReport(com.yammer.metrics.core.Histogram)">getHistogramReport</a></strong>(com.yammer.metrics.core.Histogram&nbsp;hist)</code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/util/YammerHistogramUtils.html#getHistogramReport(com.codahale.metrics.Histogram)">getHistogramReport</a></strong>(com.codahale.metrics.Histogram&nbsp;hist)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <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></code></td>
-<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/util/YammerHistogramUtils.html#getShortHistogramReport(com.yammer.metrics.core.Histogram)">getShortHistogramReport</a></strong>(com.yammer.metrics.core.Histogram&nbsp;hist)</code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/util/YammerHistogramUtils.html#getShortHistogramReport(com.codahale.metrics.Histogram)">getShortHistogramReport</a></strong>(com.codahale.metrics.Histogram&nbsp;hist)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>static com.yammer.metrics.core.Histogram</code></td>
-<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/util/YammerHistogramUtils.html#newHistogram(com.yammer.metrics.stats.Sample)">newHistogram</a></strong>(com.yammer.metrics.stats.Sample&nbsp;sample)</code>
+<td class="colFirst"><code>static com.codahale.metrics.Histogram</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/util/YammerHistogramUtils.html#newHistogram(com.codahale.metrics.Reservoir)">newHistogram</a></strong>(com.codahale.metrics.Reservoir&nbsp;sample)</code>
 <div class="block">Create a new <code>Histogram</code> instance.</div>
 </td>
 </tr>
@@ -227,34 +227,34 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <!--   -->
 </a>
 <h3>Method Detail</h3>
-<a name="newHistogram(com.yammer.metrics.stats.Sample)">
+<a name="newHistogram(com.codahale.metrics.Reservoir)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>newHistogram</h4>
-<pre>public static&nbsp;com.yammer.metrics.core.Histogram&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/YammerHistogramUtils.html#line.43">newHistogram</a>(com.yammer.metrics.stats.Sample&nbsp;sample)</pre>
+<pre>public static&nbsp;com.codahale.metrics.Histogram&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/YammerHistogramUtils.html#line.43">newHistogram</a>(com.codahale.metrics.Reservoir&nbsp;sample)</pre>
 <div class="block">Create a new <code>Histogram</code> instance. These constructors are
  not public in 2.2.0, so we use reflection to find them.</div>
 </li>
 </ul>
-<a name="getShortHistogramReport(com.yammer.metrics.core.Histogram)">
+<a name="getShortHistogramReport(com.codahale.metrics.Histogram)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>getShortHistogramReport</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/util/YammerHistogramUtils.html#line.55">getShortHistogramReport</a>(com.yammer.metrics.core.Histogram&nbsp;hist)</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/util/YammerHistogramUtils.html#line.55">getShortHistogramReport</a>(com.codahale.metrics.Histogram&nbsp;hist)</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>an abbreviated summary of <code>hist</code>.</dd></dl>
 </li>
 </ul>
-<a name="getHistogramReport(com.yammer.metrics.core.Histogram)">
+<a name="getHistogramReport(com.codahale.metrics.Histogram)">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getHistogramReport</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/util/YammerHistogramUtils.html#line.66">getHistogramReport</a>(com.yammer.metrics.core.Histogram&nbsp;hist)</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/util/YammerHistogramUtils.html#line.66">getHistogramReport</a>(com.codahale.metrics.Histogram&nbsp;hist)</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>a summary of <code>hist</code>.</dd></dl>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/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 11f3db9..92eccd2 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
@@ -457,13 +457,13 @@
 <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.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/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/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/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.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/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/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>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/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 3500e78..65c8e39 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/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/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/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/WALFactory.Providers.html" title="enum in org.apache.hadoop.hbase.wal"><span class="strong">WALFactory.Providers</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/org/apache/hadoop/metrics2/lib/MutableHistogram.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/metrics2/lib/MutableHistogram.html b/devapidocs/org/apache/hadoop/metrics2/lib/MutableHistogram.html
index d8b3301..f52c991 100644
--- a/devapidocs/org/apache/hadoop/metrics2/lib/MutableHistogram.html
+++ b/devapidocs/org/apache/hadoop/metrics2/lib/MutableHistogram.html
@@ -160,8 +160,8 @@ implements <a href="../../../../../org/apache/hadoop/metrics2/MetricHistogram.ht
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/metrics2/lib/MutableHistogram.html#name">name</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>private com.yammer.metrics.stats.Sample</code></td>
-<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/metrics2/lib/MutableHistogram.html#sample">sample</a></strong></code>&nbsp;</td>
+<td class="colFirst"><code>private com.codahale.metrics.Reservoir</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/metrics2/lib/MutableHistogram.html#reservoir">reservoir</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a></code></td>
@@ -312,13 +312,13 @@ implements <a href="../../../../../org/apache/hadoop/metrics2/MetricHistogram.ht
 <pre>protected 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/metrics2/lib/MutableHistogram.html#line.45">desc</a></pre>
 </li>
 </ul>
-<a name="sample">
+<a name="reservoir">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>sample</h4>
-<pre>private final&nbsp;com.yammer.metrics.stats.Sample <a href="../../../../../src-html/org/apache/hadoop/metrics2/lib/MutableHistogram.html#line.46">sample</a></pre>
+<h4>reservoir</h4>
+<pre>private final&nbsp;com.codahale.metrics.Reservoir <a href="../../../../../src-html/org/apache/hadoop/metrics2/lib/MutableHistogram.html#line.46">reservoir</a></pre>
 </li>
 </ul>
 <a name="min">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/overview-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/overview-tree.html b/devapidocs/overview-tree.html
index 697bc62..633dc98 100644
--- a/devapidocs/overview-tree.html
+++ b/devapidocs/overview-tree.html
@@ -295,19 +295,6 @@
 <li type="circle">org.apache.hadoop.hbase.types.<a href="org/apache/hadoop/hbase/types/CopyOnWriteArrayMap.html" title="class in org.apache.hadoop.hbase.types"><span class="strong">CopyOnWriteArrayMap</span></a>&lt;K,V&gt; (implements java.util.concurrent.<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ConcurrentNavigableMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentNavigableMap</a>&lt;K,V&gt;, java.util.<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;K,V&gt;)</li>
 </ul>
 </li>
-<li type="circle">com.yammer.metrics.reporting.AbstractReporter
-<ul>
-<li type="circle">com.yammer.metrics.reporting.AbstractPollingReporter (implements java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a>)
-<ul>
-<li type="circle">com.yammer.metrics.reporting.ConsoleReporter (implements com.yammer.metrics.core.MetricProcessor&lt;T&gt;)
-<ul>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="strong">HFilePrettyPrinter.SimpleReporter</span></a></li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-</li>
 <li type="circle">org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/AbstractRpcClient.html" title="class in org.apache.hadoop.hbase.ipc"><span class="strong">AbstractRpcClient</span></a> (implements org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/RpcClient.html" title="interface in org.apache.hadoop.hbase.ipc">RpcClient</a>)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/AsyncRpcClient.html" title="class in org.apache.hadoop.hbase.ipc"><span class="strong">AsyncRpcClient</span></a></li>
@@ -1496,6 +1483,7 @@
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoderImpl.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="strong">HFileDataBlockEncoderImpl</span></a> (implements org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoder.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileDataBlockEncoder</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.WriterLength.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="strong">HFileOutputFormat2.WriterLength</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.KeyValueStatsCollector.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="strong">HFilePrettyPrinter.KeyValueStatsCollector</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.Builder.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="strong">HFilePrettyPrinter.SimpleReporter.Builder</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="strong">HFileReaderImpl</span></a> (implements org.apache.hadoop.conf.Configurable, org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/HFile.Reader.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFile.Reader</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.HFileScannerImpl.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="strong">HFileReaderImpl.HFileScannerImpl</span></a> (implements org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/HFileScanner.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileScanner</a>)
 <ul>
@@ -2603,6 +2591,11 @@
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StorefileRefresherChore.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">StorefileRefresherChore</span></a></li>
 </ul>
 </li>
+<li type="circle">com.codahale.metrics.ScheduledReporter (implements java.io.<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Closeable.html?is-external=true" title="class or interface in java.io">Closeable</a>, com.codahale.metrics.Reporter)
+<ul>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.SimpleReporter.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="strong">HFilePrettyPrinter.SimpleReporter</span></a></li>
+</ul>
+</li>
 <li type="circle">org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/ScopeWALEntryFilter.html" title="class in org.apache.hadoop.hbase.replication"><span class="strong">ScopeWALEntryFilter</span></a> (implements org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/WALEntryFilter.html" title="interface in org.apache.hadoop.hbase.replication">WALEntryFilter</a>)</li>
 <li type="circle">org.apache.hadoop.security.token.SecretManager&lt;T&gt;
 <ul>
@@ -4095,6 +4088,7 @@
 <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.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.store.<a href="org/apache/hadoop/hbase/procedure2/store/ProcedureStoreTracker.DeleteState.html" title="enum in org.apache.hadoop.hbase.procedure2.store"><span class="strong">ProcedureStoreTracker.DeleteState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure2.store.wal.<a href="org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.PushType.html" title="enum in org.apache.hadoop.hbase.procedure2.store.wal"><span class="strong">WALProcedureStore.PushType</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>
 <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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/src-html/org/apache/hadoop/hbase/ChoreService.ChoreServiceThreadFactory.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/ChoreService.ChoreServiceThreadFactory.html b/devapidocs/src-html/org/apache/hadoop/hbase/ChoreService.ChoreServiceThreadFactory.html
index 028e319..35c3df5 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/ChoreService.ChoreServiceThreadFactory.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/ChoreService.ChoreServiceThreadFactory.html
@@ -325,7 +325,7 @@
 <span class="sourceLineNo">317</span>   * in the middle of execution will be interrupted and shutdown. This service will be unusable<a name="line.317"></a>
 <span class="sourceLineNo">318</span>   * after this method has been called (i.e. future scheduling attempts will fail).<a name="line.318"></a>
 <span class="sourceLineNo">319</span>   */<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  public void shutdown() {<a name="line.320"></a>
+<span class="sourceLineNo">320</span>  public synchronized void shutdown() {<a name="line.320"></a>
 <span class="sourceLineNo">321</span>    scheduler.shutdownNow();<a name="line.321"></a>
 <span class="sourceLineNo">322</span>    if (LOG.isInfoEnabled()) {<a name="line.322"></a>
 <span class="sourceLineNo">323</span>      LOG.info("Chore service for: " + coreThreadPoolPrefix + " had " + scheduledChores.keySet()<a name="line.323"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/539ad177/devapidocs/src-html/org/apache/hadoop/hbase/ChoreService.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/ChoreService.html b/devapidocs/src-html/org/apache/hadoop/hbase/ChoreService.html
index 028e319..35c3df5 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/ChoreService.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/ChoreService.html
@@ -325,7 +325,7 @@
 <span class="sourceLineNo">317</span>   * in the middle of execution will be interrupted and shutdown. This service will be unusable<a name="line.317"></a>
 <span class="sourceLineNo">318</span>   * after this method has been called (i.e. future scheduling attempts will fail).<a name="line.318"></a>
 <span class="sourceLineNo">319</span>   */<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  public void shutdown() {<a name="line.320"></a>
+<span class="sourceLineNo">320</span>  public synchronized void shutdown() {<a name="line.320"></a>
 <span class="sourceLineNo">321</span>    scheduler.shutdownNow();<a name="line.321"></a>
 <span class="sourceLineNo">322</span>    if (LOG.isInfoEnabled()) {<a name="line.322"></a>
 <span class="sourceLineNo">323</span>      LOG.info("Chore service for: " + coreThreadPoolPrefix + " had " + scheduledChores.keySet()<a name="line.323"></a>