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/11/26 22:52:25 UTC

[01/24] hbase git commit: Published site at 0d72849581c1e5a50a2aa7757b909e5531b8d12c.

Repository: hbase
Updated Branches:
  refs/heads/asf-site a986dfe6e -> 2fa570dde


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

http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/xref/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html b/xref/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html
index e0b75b4..b41cf9c 100644
--- a/xref/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html
+++ b/xref/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html
@@ -36,23 +36,23 @@
 <a class="jxr_linenumber" name="26" href="#26">26</a>  
 <a class="jxr_linenumber" name="27" href="#27">27</a>  {
 <a class="jxr_linenumber" name="28" href="#28">28</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html">HRegionServer</a> regionServer;
-<a class="jxr_linenumber" name="29" href="#29">29</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String bcn;
-<a class="jxr_linenumber" name="30" href="#30">30</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String bcv;
-<a class="jxr_linenumber" name="31" href="#31">31</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String filter;
+<a class="jxr_linenumber" name="29" href="#29">29</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String bcv;
+<a class="jxr_linenumber" name="30" href="#30">30</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String filter;
+<a class="jxr_linenumber" name="31" href="#31">31</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String bcn;
 <a class="jxr_linenumber" name="32" href="#32">32</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String format;
 <a class="jxr_linenumber" name="33" href="#33">33</a>    <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl.ImplData __jamon_setOptionalArguments(org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl.ImplData p_implData)
 <a class="jxr_linenumber" name="34" href="#34">34</a>    {
-<a class="jxr_linenumber" name="35" href="#35">35</a>      <strong class="jxr_keyword">if</strong>(! p_implData.getBcn__IsNotDefault())
+<a class="jxr_linenumber" name="35" href="#35">35</a>      <strong class="jxr_keyword">if</strong>(! p_implData.getBcv__IsNotDefault())
 <a class="jxr_linenumber" name="36" href="#36">36</a>      {
-<a class="jxr_linenumber" name="37" href="#37">37</a>        p_implData.setBcn(<span class="jxr_string">""</span>);
+<a class="jxr_linenumber" name="37" href="#37">37</a>        p_implData.setBcv(<span class="jxr_string">""</span>);
 <a class="jxr_linenumber" name="38" href="#38">38</a>      }
-<a class="jxr_linenumber" name="39" href="#39">39</a>      <strong class="jxr_keyword">if</strong>(! p_implData.getBcv__IsNotDefault())
+<a class="jxr_linenumber" name="39" href="#39">39</a>      <strong class="jxr_keyword">if</strong>(! p_implData.getFilter__IsNotDefault())
 <a class="jxr_linenumber" name="40" href="#40">40</a>      {
-<a class="jxr_linenumber" name="41" href="#41">41</a>        p_implData.setBcv(<span class="jxr_string">""</span>);
+<a class="jxr_linenumber" name="41" href="#41">41</a>        p_implData.setFilter(<span class="jxr_string">"general"</span>);
 <a class="jxr_linenumber" name="42" href="#42">42</a>      }
-<a class="jxr_linenumber" name="43" href="#43">43</a>      <strong class="jxr_keyword">if</strong>(! p_implData.getFilter__IsNotDefault())
+<a class="jxr_linenumber" name="43" href="#43">43</a>      <strong class="jxr_keyword">if</strong>(! p_implData.getBcn__IsNotDefault())
 <a class="jxr_linenumber" name="44" href="#44">44</a>      {
-<a class="jxr_linenumber" name="45" href="#45">45</a>        p_implData.setFilter(<span class="jxr_string">"general"</span>);
+<a class="jxr_linenumber" name="45" href="#45">45</a>        p_implData.setBcn(<span class="jxr_string">""</span>);
 <a class="jxr_linenumber" name="46" href="#46">46</a>      }
 <a class="jxr_linenumber" name="47" href="#47">47</a>      <strong class="jxr_keyword">if</strong>(! p_implData.getFormat__IsNotDefault())
 <a class="jxr_linenumber" name="48" href="#48">48</a>      {
@@ -64,9 +64,9 @@
 <a class="jxr_linenumber" name="54" href="#54">54</a>    {
 <a class="jxr_linenumber" name="55" href="#55">55</a>      <strong class="jxr_keyword">super</strong>(p_templateManager, __jamon_setOptionalArguments(p_implData));
 <a class="jxr_linenumber" name="56" href="#56">56</a>      regionServer = p_implData.getRegionServer();
-<a class="jxr_linenumber" name="57" href="#57">57</a>      bcn = p_implData.getBcn();
-<a class="jxr_linenumber" name="58" href="#58">58</a>      bcv = p_implData.getBcv();
-<a class="jxr_linenumber" name="59" href="#59">59</a>      filter = p_implData.getFilter();
+<a class="jxr_linenumber" name="57" href="#57">57</a>      bcv = p_implData.getBcv();
+<a class="jxr_linenumber" name="58" href="#58">58</a>      filter = p_implData.getFilter();
+<a class="jxr_linenumber" name="59" href="#59">59</a>      bcn = p_implData.getBcn();
 <a class="jxr_linenumber" name="60" href="#60">60</a>      format = p_implData.getFormat();
 <a class="jxr_linenumber" name="61" href="#61">61</a>    }
 <a class="jxr_linenumber" name="62" href="#62">62</a>    
@@ -96,8 +96,8 @@
 <a class="jxr_linenumber" name="86" href="#86">86</a>        <em class="jxr_comment">// 41, 3</em>
 <a class="jxr_linenumber" name="87" href="#87">87</a>        {
 <a class="jxr_linenumber" name="88" href="#88">88</a>          org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl __jamon__<strong class="jxr_keyword">var</strong>_7 = <strong class="jxr_keyword">new</strong> org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl(<strong class="jxr_keyword">this</strong>.getTemplateManager());
-<a class="jxr_linenumber" name="89" href="#89">89</a>          __jamon__<strong class="jxr_keyword">var</strong>_7.setFormat(<span class="jxr_string">"json"</span> );
-<a class="jxr_linenumber" name="90" href="#90">90</a>          __jamon__<strong class="jxr_keyword">var</strong>_7.setFilter(filter);
+<a class="jxr_linenumber" name="89" href="#89">89</a>          __jamon__<strong class="jxr_keyword">var</strong>_7.setFilter(filter);
+<a class="jxr_linenumber" name="90" href="#90">90</a>          __jamon__<strong class="jxr_keyword">var</strong>_7.setFormat(<span class="jxr_string">"json"</span> );
 <a class="jxr_linenumber" name="91" href="#91">91</a>          __jamon__<strong class="jxr_keyword">var</strong>_7.renderNoFlush(jamonWriter);
 <a class="jxr_linenumber" name="92" href="#92">92</a>        }
 <a class="jxr_linenumber" name="93" href="#93">93</a>        <em class="jxr_comment">// 41, 68</em>


[21/24] hbase git commit: Published site at 0d72849581c1e5a50a2aa7757b909e5531b8d12c.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/devapidocs/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html b/devapidocs/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html
index 2f01f1b..29e4887 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/DefaultMemStore.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/regionserver/DefaultMemStore.html#line.68">DefaultMemStore</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.69">DefaultMemStore</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/regionserver/MemStore.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStore</a></pre>
 <div class="block">The MemStore holds in-memory modifications to the Store.  Modifications
@@ -376,7 +376,8 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#shouldSeek(org.apache.hadoop.hbase.client.Scan,%20long)">shouldSeek</a></strong>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#shouldSeek(org.apache.hadoop.hbase.client.Scan,%20org.apache.hadoop.hbase.regionserver.Store,%20long)">shouldSeek</a></strong>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
+                    <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a>&nbsp;store,
                     long&nbsp;oldestUnexpiredTS)</code>
 <div class="block">Check if this memstore may contain the required keys</div>
 </td>
@@ -448,7 +449,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.69">LOG</a></pre>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.70">LOG</a></pre>
 </li>
 </ul>
 <a name="USEMSLAB_KEY">
@@ -457,7 +458,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>USEMSLAB_KEY</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/regionserver/DefaultMemStore.html#line.70">USEMSLAB_KEY</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/regionserver/DefaultMemStore.html#line.71">USEMSLAB_KEY</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.DefaultMemStore.USEMSLAB_KEY">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -467,7 +468,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>USEMSLAB_DEFAULT</h4>
-<pre>private static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.71">USEMSLAB_DEFAULT</a></pre>
+<pre>private static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.72">USEMSLAB_DEFAULT</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.DefaultMemStore.USEMSLAB_DEFAULT">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -477,7 +478,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>MSLAB_CLASS_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/regionserver/DefaultMemStore.html#line.72">MSLAB_CLASS_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/regionserver/DefaultMemStore.html#line.73">MSLAB_CLASS_NAME</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.DefaultMemStore.MSLAB_CLASS_NAME">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -487,7 +488,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <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/regionserver/DefaultMemStore.html#line.74">conf</a></pre>
+<pre>private&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.75">conf</a></pre>
 </li>
 </ul>
 <a name="cellSet">
@@ -496,7 +497,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>cellSet</h4>
-<pre>volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSkipListSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSkipListSet</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.81">cellSet</a></pre>
+<pre>volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSkipListSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSkipListSet</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.82">cellSet</a></pre>
 </li>
 </ul>
 <a name="snapshot">
@@ -505,7 +506,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshot</h4>
-<pre>volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSkipListSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSkipListSet</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.84">snapshot</a></pre>
+<pre>volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSkipListSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSkipListSet</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.85">snapshot</a></pre>
 </li>
 </ul>
 <a name="comparator">
@@ -514,7 +515,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>comparator</h4>
-<pre>final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="class in org.apache.hadoop.hbase">CellComparator</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.86">comparator</a></pre>
+<pre>final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="class in org.apache.hadoop.hbase">CellComparator</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.87">comparator</a></pre>
 </li>
 </ul>
 <a name="size">
@@ -523,7 +524,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>size</h4>
-<pre>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/regionserver/DefaultMemStore.html#line.89">size</a></pre>
+<pre>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/regionserver/DefaultMemStore.html#line.90">size</a></pre>
 </li>
 </ul>
 <a name="snapshotSize">
@@ -532,7 +533,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshotSize</h4>
-<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.90">snapshotSize</a></pre>
+<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.91">snapshotSize</a></pre>
 </li>
 </ul>
 <a name="timeOfOldestEdit">
@@ -541,7 +542,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>timeOfOldestEdit</h4>
-<pre>volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.93">timeOfOldestEdit</a></pre>
+<pre>volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.94">timeOfOldestEdit</a></pre>
 </li>
 </ul>
 <a name="timeRangeTracker">
@@ -550,7 +551,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>timeRangeTracker</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.html" title="class in org.apache.hadoop.hbase.regionserver">TimeRangeTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.95">timeRangeTracker</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.html" title="class in org.apache.hadoop.hbase.regionserver">TimeRangeTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.96">timeRangeTracker</a></pre>
 </li>
 </ul>
 <a name="snapshotTimeRangeTracker">
@@ -559,7 +560,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshotTimeRangeTracker</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.html" title="class in org.apache.hadoop.hbase.regionserver">TimeRangeTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.96">snapshotTimeRangeTracker</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.html" title="class in org.apache.hadoop.hbase.regionserver">TimeRangeTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.97">snapshotTimeRangeTracker</a></pre>
 </li>
 </ul>
 <a name="allocator">
@@ -568,7 +569,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>allocator</h4>
-<pre>volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.98">allocator</a></pre>
+<pre>volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.99">allocator</a></pre>
 </li>
 </ul>
 <a name="snapshotAllocator">
@@ -577,7 +578,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshotAllocator</h4>
-<pre>volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.99">snapshotAllocator</a></pre>
+<pre>volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.100">snapshotAllocator</a></pre>
 </li>
 </ul>
 <a name="snapshotId">
@@ -586,7 +587,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshotId</h4>
-<pre>volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.100">snapshotId</a></pre>
+<pre>volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.101">snapshotId</a></pre>
 </li>
 </ul>
 <a name="tagsPresent">
@@ -595,7 +596,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>tagsPresent</h4>
-<pre>volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.101">tagsPresent</a></pre>
+<pre>volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.102">tagsPresent</a></pre>
 </li>
 </ul>
 <a name="FIXED_OVERHEAD">
@@ -604,7 +605,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>FIXED_OVERHEAD</h4>
-<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.906">FIXED_OVERHEAD</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.914">FIXED_OVERHEAD</a></pre>
 </li>
 </ul>
 <a name="DEEP_OVERHEAD">
@@ -613,7 +614,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockListLast">
 <li class="blockList">
 <h4>DEEP_OVERHEAD</h4>
-<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.909">DEEP_OVERHEAD</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.917">DEEP_OVERHEAD</a></pre>
 </li>
 </ul>
 </li>
@@ -630,7 +631,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>DefaultMemStore</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.106">DefaultMemStore</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.107">DefaultMemStore</a>()</pre>
 <div class="block">Default constructor. Used for tests.</div>
 </li>
 </ul>
@@ -640,7 +641,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockListLast">
 <li class="blockList">
 <h4>DefaultMemStore</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.114">DefaultMemStore</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.115">DefaultMemStore</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="class in org.apache.hadoop.hbase">CellComparator</a>&nbsp;c)</pre>
 <div class="block">Constructor.</div>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>c</code> - Comparator</dd></dl>
@@ -660,7 +661,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>dump</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.133">dump</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.134">dump</a>()</pre>
 </li>
 </ul>
 <a name="snapshot()">
@@ -669,7 +670,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshot</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSnapshot.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSnapshot</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.147">snapshot</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSnapshot.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSnapshot</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.148">snapshot</a>()</pre>
 <div class="block">Creates a snapshot of the current memstore.
  Snapshot must be cleared by call to <a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#clearSnapshot(long)"><code>clearSnapshot(long)</code></a></div>
 <dl>
@@ -684,7 +685,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>clearSnapshot</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.187">clearSnapshot</a>(long&nbsp;id)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.188">clearSnapshot</a>(long&nbsp;id)
                    throws <a href="../../../../../org/apache/hadoop/hbase/regionserver/UnexpectedStateException.html" title="class in org.apache.hadoop.hbase.regionserver">UnexpectedStateException</a></pre>
 <div class="block">The passed snapshot was successfully persisted; it can be let go.</div>
 <dl>
@@ -701,7 +702,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getFlushableSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.211">getFlushableSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.212">getFlushableSize</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore.html#getFlushableSize()">MemStore</a></code></strong></div>
 <div class="block">On flush, how much memory we will clear.
  Flush will first clear out the data in snapshot if any (It will take a second flush
@@ -719,7 +720,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getSnapshotSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.216">getSnapshotSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.217">getSnapshotSize</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore.html#getSnapshotSize()">MemStore</a></code></strong></div>
 <div class="block">Return the size of the snapshot(s) if any</div>
 <dl>
@@ -734,7 +735,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>add</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.226">add</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.227">add</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</pre>
 <div class="block">Write an update</div>
 <dl>
 <dt><strong>Specified by:</strong></dt>
@@ -749,7 +750,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>timeOfOldestEdit</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.232">timeOfOldestEdit</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.233">timeOfOldestEdit</a>()</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore.html#timeOfOldestEdit()">timeOfOldestEdit</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStore</a></code></dd>
@@ -762,7 +763,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>addToCellSet</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.236">addToCellSet</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;e)</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.237">addToCellSet</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;e)</pre>
 </li>
 </ul>
 <a name="removeFromCellSet(org.apache.hadoop.hbase.Cell)">
@@ -771,7 +772,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>removeFromCellSet</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.249">removeFromCellSet</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;e)</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.250">removeFromCellSet</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;e)</pre>
 </li>
 </ul>
 <a name="setOldestEditTimeToNow()">
@@ -780,7 +781,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>setOldestEditTimeToNow</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.255">setOldestEditTimeToNow</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.256">setOldestEditTimeToNow</a>()</pre>
 </li>
 </ul>
 <a name="internalAdd(org.apache.hadoop.hbase.Cell)">
@@ -789,7 +790,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>internalAdd</h4>
-<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.267">internalAdd</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;toAdd)</pre>
+<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.268">internalAdd</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;toAdd)</pre>
 <div class="block">Internal version of add() that doesn't clone Cells with the
  allocator, and doesn't take the lock.
 
@@ -802,7 +803,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>maybeCloneWithAllocator</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.274">maybeCloneWithAllocator</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.275">maybeCloneWithAllocator</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="rollback(org.apache.hadoop.hbase.Cell)">
@@ -811,7 +812,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>rollback</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.302">rollback</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/regionserver/DefaultMemStore.html#line.303">rollback</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</pre>
 <div class="block">Remove n key from the memstore. Only cells that have the same key and the
  same memstoreTS are removed.  It is ok to not update timeRangeTracker
  in this call. It is possible that we can optimize this method by using
@@ -829,7 +830,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>delete</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.329">delete</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;deleteCell)</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.330">delete</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;deleteCell)</pre>
 <div class="block">Write a delete</div>
 <dl>
 <dt><strong>Specified by:</strong></dt>
@@ -844,7 +845,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getNextRow</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.343">getNextRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.344">getNextRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</pre>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>cell</code> - Find the row that comes after this one.  If null, we return the
  first.</dd>
 <dt><span class="strong">Returns:</span></dt><dd>Next row or null if none found.</dd></dl>
@@ -856,7 +857,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getLowest</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.352">getLowest</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;a,
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.353">getLowest</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;a,
              <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;b)</pre>
 </li>
 </ul>
@@ -866,7 +867,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getNextRow</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.368">getNextRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key,
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.369">getNextRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key,
               <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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;set)</pre>
 </li>
 </ul>
@@ -876,7 +877,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>updateColumnValue</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.402">updateColumnValue</a>(byte[]&nbsp;row,
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.403">updateColumnValue</a>(byte[]&nbsp;row,
                      byte[]&nbsp;family,
                      byte[]&nbsp;qualifier,
                      long&nbsp;newValue,
@@ -902,7 +903,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>upsert</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.468">upsert</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;cells,
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.469">upsert</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;cells,
           long&nbsp;readpoint)</pre>
 <div class="block">Update or insert the specified KeyValues.
  <p>
@@ -929,7 +930,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>upsert</h4>
-<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.490">upsert</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.491">upsert</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
           long&nbsp;readpoint)</pre>
 <div class="block">Inserts the specified KeyValue into MemStore and deletes any existing
  versions of the same row/family/qualifier as the specified KeyValue.
@@ -950,23 +951,24 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>getScanners</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/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.547">getScanners</a>(long&nbsp;readPt)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.548">getScanners</a>(long&nbsp;readPt)</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore.html#getScanners(long)">getScanners</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStore</a></code></dd>
 <dt><span class="strong">Returns:</span></dt><dd>scanner on memstore and snapshot in this order.</dd></dl>
 </li>
 </ul>
-<a name="shouldSeek(org.apache.hadoop.hbase.client.Scan, long)">
+<a name="shouldSeek(org.apache.hadoop.hbase.client.Scan, org.apache.hadoop.hbase.regionserver.Store, long)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>shouldSeek</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.556">shouldSeek</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.559">shouldSeek</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
+                 <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a>&nbsp;store,
                  long&nbsp;oldestUnexpiredTS)</pre>
 <div class="block">Check if this memstore may contain the required keys</div>
-<dl><dt><span class="strong">Parameters:</span></dt><dd><code>scan</code> - </dd>
+<dl><dt><span class="strong">Parameters:</span></dt><dd><code>scan</code> - scan</dd><dd><code>store</code> - holds reference to cf</dd><dd><code>oldestUnexpiredTS</code> - </dd>
 <dt><span class="strong">Returns:</span></dt><dd>False if the key definitely does not exist in this Memstore</dd></dl>
 </li>
 </ul>
@@ -976,7 +978,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>heapSizeChange</h4>
-<pre>static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.920">heapSizeChange</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+<pre>static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.928">heapSizeChange</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
                   boolean&nbsp;notpresent)</pre>
 </li>
 </ul>
@@ -986,7 +988,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>keySize</h4>
-<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.925">keySize</a>()</pre>
+<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.933">keySize</a>()</pre>
 </li>
 </ul>
 <a name="heapSize()">
@@ -995,7 +997,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>heapSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.934">heapSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.942">heapSize</a>()</pre>
 <div class="block">Get the entire heap usage for this MemStore not including keys in the
  snapshot.</div>
 <dl>
@@ -1011,7 +1013,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockList">
 <li class="blockList">
 <h4>size</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.939">size</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.947">size</a>()</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore.html#size()">size</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStore</a></code></dd>
@@ -1024,7 +1026,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore
 <ul class="blockListLast">
 <li class="blockList">
 <h4>main</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.950">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>
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.958">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>
 <div class="block">Code to help figure if our approximation of object heap sizes is close
  enough.  See hbase-900.  Fills memstores then waits so user can heap
  dump and bring up resultant hprof in something like jprofiler which

http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/devapidocs/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html b/devapidocs/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html
index 774db75..0968883 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html
@@ -108,7 +108,7 @@
 </dl>
 <hr>
 <br>
-<pre>public static enum <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#line.615">ScanQueryMatcher.MatchCode</a>
+<pre>public static enum <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#line.620">ScanQueryMatcher.MatchCode</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/regionserver/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver">ScanQueryMatcher.MatchCode</a>&gt;</pre>
 <div class="block"><a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#match(org.apache.hadoop.hbase.Cell)"><code>ScanQueryMatcher.match(org.apache.hadoop.hbase.Cell)</code></a> return codes.  These instruct the scanner moving through
  memstores and StoreFiles what to do with the current KeyValue.
@@ -243,7 +243,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>INCLUDE</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver">ScanQueryMatcher.MatchCode</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html#line.619">INCLUDE</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver">ScanQueryMatcher.MatchCode</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html#line.624">INCLUDE</a></pre>
 <div class="block">Include KeyValue in the returned result</div>
 </li>
 </ul>
@@ -253,7 +253,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>SKIP</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver">ScanQueryMatcher.MatchCode</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html#line.624">SKIP</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver">ScanQueryMatcher.MatchCode</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html#line.629">SKIP</a></pre>
 <div class="block">Do not include KeyValue in the returned result</div>
 </li>
 </ul>
@@ -263,7 +263,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>NEXT</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver">ScanQueryMatcher.MatchCode</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html#line.629">NEXT</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver">ScanQueryMatcher.MatchCode</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html#line.634">NEXT</a></pre>
 <div class="block">Do not include, jump to next StoreFile or memstore (in time order)</div>
 </li>
 </ul>
@@ -273,7 +273,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>DONE</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver">ScanQueryMatcher.MatchCode</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html#line.634">DONE</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver">ScanQueryMatcher.MatchCode</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html#line.639">DONE</a></pre>
 <div class="block">Do not include, return current result</div>
 </li>
 </ul>
@@ -283,7 +283,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>SEEK_NEXT_ROW</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver">ScanQueryMatcher.MatchCode</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html#line.643">SEEK_NEXT_ROW</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver">ScanQueryMatcher.MatchCode</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html#line.648">SEEK_NEXT_ROW</a></pre>
 <div class="block">Done with the row, seek there.</div>
 </li>
 </ul>
@@ -293,7 +293,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>SEEK_NEXT_COL</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver">ScanQueryMatcher.MatchCode</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html#line.647">SEEK_NEXT_COL</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver">ScanQueryMatcher.MatchCode</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html#line.652">SEEK_NEXT_COL</a></pre>
 <div class="block">Done with column, seek to next.</div>
 </li>
 </ul>
@@ -303,7 +303,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>DONE_SCAN</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver">ScanQueryMatcher.MatchCode</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html#line.652">DONE_SCAN</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver">ScanQueryMatcher.MatchCode</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html#line.657">DONE_SCAN</a></pre>
 <div class="block">Done with scan, thanks to the row filter.</div>
 </li>
 </ul>
@@ -313,7 +313,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>SEEK_NEXT_USING_HINT</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver">ScanQueryMatcher.MatchCode</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html#line.657">SEEK_NEXT_USING_HINT</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver">ScanQueryMatcher.MatchCode</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html#line.662">SEEK_NEXT_USING_HINT</a></pre>
 </li>
 </ul>
 <a name="INCLUDE_AND_SEEK_NEXT_COL">
@@ -322,7 +322,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>INCLUDE_AND_SEEK_NEXT_COL</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver">ScanQueryMatcher.MatchCode</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html#line.662">INCLUDE_AND_SEEK_NEXT_COL</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver">ScanQueryMatcher.MatchCode</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html#line.667">INCLUDE_AND_SEEK_NEXT_COL</a></pre>
 <div class="block">Include KeyValue and done with column, seek to next.</div>
 </li>
 </ul>
@@ -332,7 +332,7 @@ the order they are declared.</div>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>INCLUDE_AND_SEEK_NEXT_ROW</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver">ScanQueryMatcher.MatchCode</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html#line.667">INCLUDE_AND_SEEK_NEXT_ROW</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver">ScanQueryMatcher.MatchCode</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html#line.672">INCLUDE_AND_SEEK_NEXT_ROW</a></pre>
 <div class="block">Include KeyValue and done with row, seek to next.</div>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/devapidocs/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html b/devapidocs/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html
index c2da5a9..5e5ab59 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html
@@ -696,7 +696,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>ScanQueryMatcher</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#line.235">ScanQueryMatcher</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#line.240">ScanQueryMatcher</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
                 <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html" title="class in org.apache.hadoop.hbase.regionserver">ScanInfo</a>&nbsp;scanInfo,
                 <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;byte[]&gt;&nbsp;columns,
                 long&nbsp;readPointToUse,
@@ -719,7 +719,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ScanQueryMatcher</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#line.249">ScanQueryMatcher</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#line.254">ScanQueryMatcher</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
                 <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html" title="class in org.apache.hadoop.hbase.regionserver">ScanInfo</a>&nbsp;scanInfo,
                 <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;byte[]&gt;&nbsp;columns,
                 long&nbsp;oldestUnexpiredTS,
@@ -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>instantiateDeleteTracker</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/DeleteTracker.html" title="interface in org.apache.hadoop.hbase.regionserver">DeleteTracker</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#line.214">instantiateDeleteTracker</a>()
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/DeleteTracker.html" title="interface in org.apache.hadoop.hbase.regionserver">DeleteTracker</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#line.219">instantiateDeleteTracker</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>
@@ -755,7 +755,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>hasNullColumnInQuery</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#line.260">hasNullColumnInQuery</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#line.265">hasNullColumnInQuery</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>whether there is an null column in the query</dd></dl>
 </li>
 </ul>
@@ -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>match</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver">ScanQueryMatcher.MatchCode</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#line.277">match</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver">ScanQueryMatcher.MatchCode</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#line.282">match</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)
                                  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">Determines if the caller should do one of several things:
  - seek/skip to the next row (MatchCode.SEEK_NEXT_ROW)
@@ -786,7 +786,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>checkPartialDropDeleteRange</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#line.470">checkPartialDropDeleteRange</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;curCell)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#line.475">checkPartialDropDeleteRange</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;curCell)</pre>
 <div class="block">Handle partial-drop-deletes. As we match keys in order, when we have a range from which
  we can drop deletes, we can set retainDeletesInOutput to false for the duration of this
  range only, and maintain consistency.</div>
@@ -798,7 +798,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>moreRowsMayExistAfter</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#line.495">moreRowsMayExistAfter</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#line.500">moreRowsMayExistAfter</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv)</pre>
 </li>
 </ul>
 <a name="setToNewRow(org.apache.hadoop.hbase.Cell)">
@@ -807,7 +807,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>setToNewRow</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#line.517">setToNewRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;curCell)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#line.522">setToNewRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;curCell)</pre>
 <div class="block">Set the row when there is change in row</div>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>curCell</code> - </dd></dl>
 </li>
@@ -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>reset</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#line.523">reset</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#line.528">reset</a>()</pre>
 </li>
 </ul>
 <a name="getStartKey()">
@@ -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>getStartKey</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#line.534">getStartKey</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#line.539">getStartKey</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>the start key</dd></dl>
 </li>
 </ul>
@@ -837,7 +837,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getFilter</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/filter/Filter.html" title="class in org.apache.hadoop.hbase.filter">Filter</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#line.542">getFilter</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/filter/Filter.html" title="class in org.apache.hadoop.hbase.filter">Filter</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#line.547">getFilter</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>the Filter</dd></dl>
 </li>
 </ul>
@@ -847,7 +847,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getNextKeyHint</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#line.546">getNextKeyHint</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv)
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#line.551">getNextKeyHint</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv)
                     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>
@@ -859,7 +859,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getKeyForNextColumn</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#line.554">getKeyForNextColumn</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#line.559">getKeyForNextColumn</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv)</pre>
 </li>
 </ul>
 <a name="getKeyForNextRow(org.apache.hadoop.hbase.Cell)">
@@ -868,7 +868,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getKeyForNextRow</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#line.564">getKeyForNextRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;c)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#line.569">getKeyForNextRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;c)</pre>
 </li>
 </ul>
 <a name="compareKeyForNextRow(org.apache.hadoop.hbase.Cell, org.apache.hadoop.hbase.Cell)">
@@ -877,7 +877,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>compareKeyForNextRow</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#line.573">compareKeyForNextRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;nextIndexed,
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#line.578">compareKeyForNextRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;nextIndexed,
                        <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv)</pre>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>nextIndexed</code> - the key of the next entry in the block index (if any)</dd><dd><code>kv</code> - The Cell we're using to calculate the seek key</dd>
 <dt><span class="strong">Returns:</span></dt><dd>result of the compare between the indexed key and the key portion of the passed cell</dd></dl>
@@ -889,7 +889,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>compareKeyForNextColumn</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#line.583">compareKeyForNextColumn</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;nextIndexed,
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#line.588">compareKeyForNextColumn</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;nextIndexed,
                           <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;currentCell)</pre>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>nextIndexed</code> - the key of the next entry in the block index (if any)</dd><dd><code>currentCell</code> - The Cell we're using to calculate the seek key</dd>
 <dt><span class="strong">Returns:</span></dt><dd>result of the compare between the indexed key and the key portion of the passed cell</dd></dl>
@@ -901,7 +901,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>checkColumn</h4>
-<pre>static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver">ScanQueryMatcher.MatchCode</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#line.597">checkColumn</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ColumnTracker.html" title="interface in org.apache.hadoop.hbase.regionserver">ColumnTracker</a>&nbsp;columnTracker,
+<pre>static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver">ScanQueryMatcher.MatchCode</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#line.602">checkColumn</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ColumnTracker.html" title="interface in org.apache.hadoop.hbase.regionserver">ColumnTracker</a>&nbsp;columnTracker,
                                      byte[]&nbsp;bytes,
                                      int&nbsp;offset,
                                      int&nbsp;length,

http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/Store.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/Store.html b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/Store.html
index 21fa757..1132728 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/Store.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/Store.html
@@ -842,17 +842,25 @@
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><span class="strong">DefaultMemStore.</span><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#shouldSeek(org.apache.hadoop.hbase.client.Scan,%20org.apache.hadoop.hbase.regionserver.Store,%20long)">shouldSeek</a></strong>(<a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
+                    <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a>&nbsp;store,
+                    long&nbsp;oldestUnexpiredTS)</code>
+<div class="block">Check if this memstore may contain the required keys</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="strong">NonLazyKeyValueScanner.</span><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/NonLazyKeyValueScanner.html#shouldUseScanner(org.apache.hadoop.hbase.client.Scan,%20org.apache.hadoop.hbase.regionserver.Store,%20long)">shouldUseScanner</a></strong>(<a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
                                 <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a>&nbsp;store,
                                 long&nbsp;oldestUnexpiredTS)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="strong">DefaultMemStore.MemStoreScanner.</span><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#shouldUseScanner(org.apache.hadoop.hbase.client.Scan,%20org.apache.hadoop.hbase.regionserver.Store,%20long)">shouldUseScanner</a></strong>(<a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
                                 <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a>&nbsp;store,
                                 long&nbsp;oldestUnexpiredTS)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="strong">KeyValueScanner.</span><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html#shouldUseScanner(org.apache.hadoop.hbase.client.Scan,%20org.apache.hadoop.hbase.regionserver.Store,%20long)">shouldUseScanner</a></strong>(<a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
                                 <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a>&nbsp;store,
@@ -861,7 +869,7 @@
  want to use based on criteria such as Bloom filters and timestamp ranges.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="strong">StoreFileScanner.</span><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#shouldUseScanner(org.apache.hadoop.hbase.client.Scan,%20org.apache.hadoop.hbase.regionserver.Store,%20long)">shouldUseScanner</a></strong>(<a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
                                 <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a>&nbsp;store,

http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/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 b4fb9ee..f48b25f 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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/ScannerContext.LimitScope.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">ScannerContext.LimitScope</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/devapidocs/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.Replicator.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.Replicator.html b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.Replicator.html
index 93866b5..b7abe07 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.Replicator.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.Replicator.html
@@ -103,7 +103,7 @@
 </dl>
 <hr>
 <br>
-<pre>protected class <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.300">HBaseInterClusterReplicationEndpoint.Replicator</a>
+<pre>protected class <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.306">HBaseInterClusterReplicationEndpoint.Replicator</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/concurrent/Callable.html?is-external=true" title="class or interface in java.util.concurrent">Callable</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;</pre>
 </li>
@@ -197,7 +197,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurren
 <ul class="blockList">
 <li class="blockList">
 <h4>entries</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/wal/WAL.Entry.html" title="class in org.apache.hadoop.hbase.wal">WAL.Entry</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.Replicator.html#line.301">entries</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;<a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.Entry.html" title="class in org.apache.hadoop.hbase.wal">WAL.Entry</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.Replicator.html#line.307">entries</a></pre>
 </li>
 </ul>
 <a name="ordinal">
@@ -206,7 +206,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurren
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ordinal</h4>
-<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.Replicator.html#line.302">ordinal</a></pre>
+<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.Replicator.html#line.308">ordinal</a></pre>
 </li>
 </ul>
 </li>
@@ -223,7 +223,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurren
 <ul class="blockListLast">
 <li class="blockList">
 <h4>HBaseInterClusterReplicationEndpoint.Replicator</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.Replicator.html#line.303">HBaseInterClusterReplicationEndpoint.Replicator</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/wal/WAL.Entry.html" title="class in org.apache.hadoop.hbase.wal">WAL.Entry</a>&gt;&nbsp;entries,
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.Replicator.html#line.309">HBaseInterClusterReplicationEndpoint.Replicator</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/wal/WAL.Entry.html" title="class in org.apache.hadoop.hbase.wal">WAL.Entry</a>&gt;&nbsp;entries,
                                                int&nbsp;ordinal)</pre>
 </li>
 </ul>
@@ -241,7 +241,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurren
 <ul class="blockListLast">
 <li class="blockList">
 <h4>call</h4>
-<pre>public&nbsp;<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>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.Replicator.html#line.309">call</a>()
+<pre>public&nbsp;<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>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.Replicator.html#line.315">call</a>()
              throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>


[13/24] hbase git commit: Published site at 0d72849581c1e5a50a2aa7757b909e5531b8d12c.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/devapidocs/src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html b/devapidocs/src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html
index fb9094c..a3bef30 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html
@@ -30,310 +30,316 @@
 <span class="sourceLineNo">022</span>import java.net.ConnectException;<a name="line.22"></a>
 <span class="sourceLineNo">023</span>import java.net.SocketTimeoutException;<a name="line.23"></a>
 <span class="sourceLineNo">024</span>import java.util.ArrayList;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import java.util.List;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.util.concurrent.Callable;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.util.concurrent.ExecutionException;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.util.concurrent.Future;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.util.concurrent.SynchronousQueue;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.util.concurrent.ThreadPoolExecutor;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.util.concurrent.TimeUnit;<a name="line.31"></a>
-<span class="sourceLineNo">032</span><a name="line.32"></a>
-<span class="sourceLineNo">033</span>import com.google.common.annotations.VisibleForTesting;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.commons.lang.StringUtils;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.commons.logging.Log;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.commons.logging.LogFactory;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.conf.Configuration;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.HConstants;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.HConnection;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.protobuf.ReplicationProtbufUtil;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.AdminService.BlockingInterface;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.wal.WAL.Entry;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.replication.HBaseReplicationEndpoint;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.replication.ReplicationPeer.PeerState;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.replication.regionserver.ReplicationSinkManager.SinkPeer;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.ipc.RemoteException;<a name="line.51"></a>
-<span class="sourceLineNo">052</span><a name="line.52"></a>
-<span class="sourceLineNo">053</span>/**<a name="line.53"></a>
-<span class="sourceLineNo">054</span> * A {@link org.apache.hadoop.hbase.replication.ReplicationEndpoint} <a name="line.54"></a>
-<span class="sourceLineNo">055</span> * implementation for replicating to another HBase cluster.<a name="line.55"></a>
-<span class="sourceLineNo">056</span> * For the slave cluster it selects a random number of peers<a name="line.56"></a>
-<span class="sourceLineNo">057</span> * using a replication ratio. For example, if replication ration = 0.1<a name="line.57"></a>
-<span class="sourceLineNo">058</span> * and slave cluster has 100 region servers, 10 will be selected.<a name="line.58"></a>
-<span class="sourceLineNo">059</span> * &lt;p&gt;<a name="line.59"></a>
-<span class="sourceLineNo">060</span> * A stream is considered down when we cannot contact a region server on the<a name="line.60"></a>
-<span class="sourceLineNo">061</span> * peer cluster for more than 55 seconds by default.<a name="line.61"></a>
-<span class="sourceLineNo">062</span> * &lt;/p&gt;<a name="line.62"></a>
-<span class="sourceLineNo">063</span> */<a name="line.63"></a>
-<span class="sourceLineNo">064</span>@InterfaceAudience.Private<a name="line.64"></a>
-<span class="sourceLineNo">065</span>public class HBaseInterClusterReplicationEndpoint extends HBaseReplicationEndpoint {<a name="line.65"></a>
-<span class="sourceLineNo">066</span><a name="line.66"></a>
-<span class="sourceLineNo">067</span>  private static final Log LOG = LogFactory.getLog(HBaseInterClusterReplicationEndpoint.class);<a name="line.67"></a>
-<span class="sourceLineNo">068</span>  private HConnection conn;<a name="line.68"></a>
+<span class="sourceLineNo">025</span>import java.util.Collections;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.util.List;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.util.concurrent.Callable;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.util.concurrent.CompletionService;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.util.concurrent.ExecutionException;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.concurrent.ExecutorCompletionService;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.util.concurrent.Future;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.util.concurrent.SynchronousQueue;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.util.concurrent.ThreadPoolExecutor;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.concurrent.TimeUnit;<a name="line.34"></a>
+<span class="sourceLineNo">035</span><a name="line.35"></a>
+<span class="sourceLineNo">036</span>import com.google.common.annotations.VisibleForTesting;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.commons.lang.StringUtils;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.commons.logging.Log;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.commons.logging.LogFactory;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.conf.Configuration;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.HConstants;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.HConnection;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.protobuf.ReplicationProtbufUtil;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.AdminService.BlockingInterface;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.wal.WAL.Entry;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.replication.HBaseReplicationEndpoint;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.replication.ReplicationPeer.PeerState;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.replication.regionserver.ReplicationSinkManager.SinkPeer;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.ipc.RemoteException;<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> * A {@link org.apache.hadoop.hbase.replication.ReplicationEndpoint} <a name="line.57"></a>
+<span class="sourceLineNo">058</span> * implementation for replicating to another HBase cluster.<a name="line.58"></a>
+<span class="sourceLineNo">059</span> * For the slave cluster it selects a random number of peers<a name="line.59"></a>
+<span class="sourceLineNo">060</span> * using a replication ratio. For example, if replication ration = 0.1<a name="line.60"></a>
+<span class="sourceLineNo">061</span> * and slave cluster has 100 region servers, 10 will be selected.<a name="line.61"></a>
+<span class="sourceLineNo">062</span> * &lt;p&gt;<a name="line.62"></a>
+<span class="sourceLineNo">063</span> * A stream is considered down when we cannot contact a region server on the<a name="line.63"></a>
+<span class="sourceLineNo">064</span> * peer cluster for more than 55 seconds by default.<a name="line.64"></a>
+<span class="sourceLineNo">065</span> * &lt;/p&gt;<a name="line.65"></a>
+<span class="sourceLineNo">066</span> */<a name="line.66"></a>
+<span class="sourceLineNo">067</span>@InterfaceAudience.Private<a name="line.67"></a>
+<span class="sourceLineNo">068</span>public class HBaseInterClusterReplicationEndpoint extends HBaseReplicationEndpoint {<a name="line.68"></a>
 <span class="sourceLineNo">069</span><a name="line.69"></a>
-<span class="sourceLineNo">070</span>  private Configuration conf;<a name="line.70"></a>
-<span class="sourceLineNo">071</span><a name="line.71"></a>
-<span class="sourceLineNo">072</span>  // How long should we sleep for each retry<a name="line.72"></a>
-<span class="sourceLineNo">073</span>  private long sleepForRetries;<a name="line.73"></a>
+<span class="sourceLineNo">070</span>  private static final Log LOG = LogFactory.getLog(HBaseInterClusterReplicationEndpoint.class);<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  private HConnection conn;<a name="line.71"></a>
+<span class="sourceLineNo">072</span><a name="line.72"></a>
+<span class="sourceLineNo">073</span>  private Configuration conf;<a name="line.73"></a>
 <span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span>  // Maximum number of retries before taking bold actions<a name="line.75"></a>
-<span class="sourceLineNo">076</span>  private int maxRetriesMultiplier;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>  // Socket timeouts require even bolder actions since we don't want to DDOS<a name="line.77"></a>
-<span class="sourceLineNo">078</span>  private int socketTimeoutMultiplier;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  //Metrics for this source<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  private MetricsSource metrics;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  // Handles connecting to peer region servers<a name="line.81"></a>
-<span class="sourceLineNo">082</span>  private ReplicationSinkManager replicationSinkMgr;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>  private boolean peersSelected = false;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  private ThreadPoolExecutor exec;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>  private int maxThreads;<a name="line.85"></a>
-<span class="sourceLineNo">086</span><a name="line.86"></a>
-<span class="sourceLineNo">087</span>  @Override<a name="line.87"></a>
-<span class="sourceLineNo">088</span>  public void init(Context context) throws IOException {<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    super.init(context);<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    this.conf = HBaseConfiguration.create(ctx.getConfiguration());<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    decorateConf();<a name="line.91"></a>
-<span class="sourceLineNo">092</span>    this.maxRetriesMultiplier = this.conf.getInt("replication.source.maxretriesmultiplier", 300);<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    this.socketTimeoutMultiplier = this.conf.getInt("replication.source.socketTimeoutMultiplier",<a name="line.93"></a>
-<span class="sourceLineNo">094</span>        maxRetriesMultiplier);<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    // TODO: This connection is replication specific or we should make it particular to<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    // replication and make replication specific settings such as compression or codec to use<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    // passing Cells.<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    this.conn = (HConnection) ConnectionFactory.createConnection(this.conf);<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    this.sleepForRetries =<a name="line.99"></a>
-<span class="sourceLineNo">100</span>        this.conf.getLong("replication.source.sleepforretries", 1000);<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    this.metrics = context.getMetrics();<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    // ReplicationQueueInfo parses the peerId out of the znode for us<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    this.replicationSinkMgr = new ReplicationSinkManager(conn, ctx.getPeerId(), this, this.conf);<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    // per sink thread pool<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    this.maxThreads = this.conf.getInt(HConstants.REPLICATION_SOURCE_MAXTHREADS_KEY,<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      HConstants.REPLICATION_SOURCE_MAXTHREADS_DEFAULT);<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    this.exec = new ThreadPoolExecutor(1, maxThreads, 60, TimeUnit.SECONDS,<a name="line.107"></a>
-<span class="sourceLineNo">108</span>      new SynchronousQueue&lt;Runnable&gt;());<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>  private void decorateConf() {<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    String replicationCodec = this.conf.get(HConstants.REPLICATION_CODEC_CONF_KEY);<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    if (StringUtils.isNotEmpty(replicationCodec)) {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      this.conf.set(HConstants.RPC_CODEC_CONF_KEY, replicationCodec);<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>  private void connectToPeers() {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    getRegionServers();<a name="line.119"></a>
+<span class="sourceLineNo">075</span>  // How long should we sleep for each retry<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  private long sleepForRetries;<a name="line.76"></a>
+<span class="sourceLineNo">077</span><a name="line.77"></a>
+<span class="sourceLineNo">078</span>  // Maximum number of retries before taking bold actions<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  private int maxRetriesMultiplier;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  // Socket timeouts require even bolder actions since we don't want to DDOS<a name="line.80"></a>
+<span class="sourceLineNo">081</span>  private int socketTimeoutMultiplier;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  //Metrics for this source<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  private MetricsSource metrics;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  // Handles connecting to peer region servers<a name="line.84"></a>
+<span class="sourceLineNo">085</span>  private ReplicationSinkManager replicationSinkMgr;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  private boolean peersSelected = false;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  private ThreadPoolExecutor exec;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  private int maxThreads;<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>  @Override<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  public void init(Context context) throws IOException {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    super.init(context);<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    this.conf = HBaseConfiguration.create(ctx.getConfiguration());<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    decorateConf();<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    this.maxRetriesMultiplier = this.conf.getInt("replication.source.maxretriesmultiplier", 300);<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    this.socketTimeoutMultiplier = this.conf.getInt("replication.source.socketTimeoutMultiplier",<a name="line.96"></a>
+<span class="sourceLineNo">097</span>        maxRetriesMultiplier);<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    // TODO: This connection is replication specific or we should make it particular to<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    // replication and make replication specific settings such as compression or codec to use<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    // passing Cells.<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    this.conn = (HConnection) ConnectionFactory.createConnection(this.conf);<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    this.sleepForRetries =<a name="line.102"></a>
+<span class="sourceLineNo">103</span>        this.conf.getLong("replication.source.sleepforretries", 1000);<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    this.metrics = context.getMetrics();<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    // ReplicationQueueInfo parses the peerId out of the znode for us<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    this.replicationSinkMgr = new ReplicationSinkManager(conn, ctx.getPeerId(), this, this.conf);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    // per sink thread pool<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    this.maxThreads = this.conf.getInt(HConstants.REPLICATION_SOURCE_MAXTHREADS_KEY,<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      HConstants.REPLICATION_SOURCE_MAXTHREADS_DEFAULT);<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    this.exec = new ThreadPoolExecutor(1, maxThreads, 60, TimeUnit.SECONDS,<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      new SynchronousQueue&lt;Runnable&gt;());<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>  private void decorateConf() {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    String replicationCodec = this.conf.get(HConstants.REPLICATION_CODEC_CONF_KEY);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    if (StringUtils.isNotEmpty(replicationCodec)) {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      this.conf.set(HConstants.RPC_CODEC_CONF_KEY, replicationCodec);<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    }<a name="line.118"></a>
+<span class="sourceLineNo">119</span>  }<a name="line.119"></a>
 <span class="sourceLineNo">120</span><a name="line.120"></a>
-<span class="sourceLineNo">121</span>    int sleepMultiplier = 1;<a name="line.121"></a>
-<span class="sourceLineNo">122</span><a name="line.122"></a>
-<span class="sourceLineNo">123</span>    // Connect to peer cluster first, unless we have to stop<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    while (this.isRunning() &amp;&amp; replicationSinkMgr.getSinks().size() == 0) {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      replicationSinkMgr.chooseSinks();<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      if (this.isRunning() &amp;&amp; replicationSinkMgr.getSinks().size() == 0) {<a name="line.126"></a>
-<span class="sourceLineNo">127</span>        if (sleepForRetries("Waiting for peers", sleepMultiplier)) {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>          sleepMultiplier++;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>        }<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      }<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    }<a name="line.131"></a>
-<span class="sourceLineNo">132</span>  }<a name="line.132"></a>
-<span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>  /**<a name="line.134"></a>
-<span class="sourceLineNo">135</span>   * Do the sleeping logic<a name="line.135"></a>
-<span class="sourceLineNo">136</span>   * @param msg Why we sleep<a name="line.136"></a>
-<span class="sourceLineNo">137</span>   * @param sleepMultiplier by how many times the default sleeping time is augmented<a name="line.137"></a>
-<span class="sourceLineNo">138</span>   * @return True if &lt;code&gt;sleepMultiplier&lt;/code&gt; is &amp;lt; &lt;code&gt;maxRetriesMultiplier&lt;/code&gt;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>   */<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  protected boolean sleepForRetries(String msg, int sleepMultiplier) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    try {<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      if (LOG.isTraceEnabled()) {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>        LOG.trace(msg + ", sleeping " + sleepForRetries + " times " + sleepMultiplier);<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      }<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      Thread.sleep(this.sleepForRetries * sleepMultiplier);<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    } catch (InterruptedException e) {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>      LOG.debug("Interrupted while sleeping between retries");<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    }<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    return sleepMultiplier &lt; maxRetriesMultiplier;<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>   * Do the shipping logic<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 boolean replicate(ReplicateContext replicateContext) {<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    List&lt;Entry&gt; entries = replicateContext.getEntries();<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    String walGroupId = replicateContext.getWalGroupId();<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    int sleepMultiplier = 1;<a name="line.159"></a>
-<span class="sourceLineNo">160</span><a name="line.160"></a>
-<span class="sourceLineNo">161</span>    if (!peersSelected &amp;&amp; this.isRunning()) {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      connectToPeers();<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      peersSelected = true;<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>    if (replicationSinkMgr.getSinks().size() == 0) {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      return false;<a name="line.167"></a>
+<span class="sourceLineNo">121</span>  private void connectToPeers() {<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    getRegionServers();<a name="line.122"></a>
+<span class="sourceLineNo">123</span><a name="line.123"></a>
+<span class="sourceLineNo">124</span>    int sleepMultiplier = 1;<a name="line.124"></a>
+<span class="sourceLineNo">125</span><a name="line.125"></a>
+<span class="sourceLineNo">126</span>    // Connect to peer cluster first, unless we have to stop<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    while (this.isRunning() &amp;&amp; replicationSinkMgr.getSinks().size() == 0) {<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      replicationSinkMgr.chooseSinks();<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      if (this.isRunning() &amp;&amp; replicationSinkMgr.getSinks().size() == 0) {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>        if (sleepForRetries("Waiting for peers", sleepMultiplier)) {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>          sleepMultiplier++;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>        }<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      }<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    }<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  }<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>   * Do the sleeping logic<a name="line.138"></a>
+<span class="sourceLineNo">139</span>   * @param msg Why we sleep<a name="line.139"></a>
+<span class="sourceLineNo">140</span>   * @param sleepMultiplier by how many times the default sleeping time is augmented<a name="line.140"></a>
+<span class="sourceLineNo">141</span>   * @return True if &lt;code&gt;sleepMultiplier&lt;/code&gt; is &amp;lt; &lt;code&gt;maxRetriesMultiplier&lt;/code&gt;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>   */<a name="line.142"></a>
+<span class="sourceLineNo">143</span>  protected boolean sleepForRetries(String msg, int sleepMultiplier) {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    try {<a name="line.144"></a>
+<span class="sourceLineNo">145</span>      if (LOG.isTraceEnabled()) {<a name="line.145"></a>
+<span class="sourceLineNo">146</span>        LOG.trace(msg + ", sleeping " + sleepForRetries + " times " + sleepMultiplier);<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      }<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      Thread.sleep(this.sleepForRetries * sleepMultiplier);<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    } catch (InterruptedException e) {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      LOG.debug("Interrupted while sleeping between retries");<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    }<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    return sleepMultiplier &lt; maxRetriesMultiplier;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  }<a name="line.153"></a>
+<span class="sourceLineNo">154</span><a name="line.154"></a>
+<span class="sourceLineNo">155</span>  /**<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   * Do the shipping logic<a name="line.156"></a>
+<span class="sourceLineNo">157</span>   */<a name="line.157"></a>
+<span class="sourceLineNo">158</span>  @Override<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  public boolean replicate(ReplicateContext replicateContext) {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    CompletionService&lt;Integer&gt; pool = new ExecutorCompletionService&lt;Integer&gt;(this.exec);<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    List&lt;Entry&gt; entries = replicateContext.getEntries();<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    String walGroupId = replicateContext.getWalGroupId();<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    int sleepMultiplier = 1;<a name="line.163"></a>
+<span class="sourceLineNo">164</span><a name="line.164"></a>
+<span class="sourceLineNo">165</span>    if (!peersSelected &amp;&amp; this.isRunning()) {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      connectToPeers();<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      peersSelected = true;<a name="line.167"></a>
 <span class="sourceLineNo">168</span>    }<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    // minimum of: configured threads, number of 100-waledit batches,<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    //  and number of current sinks<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    int n = Math.min(Math.min(this.maxThreads, entries.size()/100+1),<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      replicationSinkMgr.getSinks().size());<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    List&lt;List&lt;Entry&gt;&gt; entryLists = new ArrayList&lt;List&lt;Entry&gt;&gt;(n);<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    if (n == 1) {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      entryLists.add(entries);<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    } else {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      for (int i=0; i&lt;n; i++) {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>        entryLists.add(new ArrayList&lt;Entry&gt;(entries.size()/n+1));<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      }<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      // now group by region<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      for (Entry e : entries) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        entryLists.get(Math.abs(Bytes.hashCode(e.getKey().getEncodedRegionName())%n)).add(e);<a name="line.182"></a>
+<span class="sourceLineNo">169</span><a name="line.169"></a>
+<span class="sourceLineNo">170</span>    if (replicationSinkMgr.getSinks().size() == 0) {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      return false;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    }<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    // minimum of: configured threads, number of 100-waledit batches,<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    //  and number of current sinks<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    int n = Math.min(Math.min(this.maxThreads, entries.size()/100+1),<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      replicationSinkMgr.getSinks().size());<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    List&lt;List&lt;Entry&gt;&gt; entryLists = new ArrayList&lt;List&lt;Entry&gt;&gt;(n);<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    if (n == 1) {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      entryLists.add(entries);<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    } else {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      for (int i=0; i&lt;n; i++) {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>        entryLists.add(new ArrayList&lt;Entry&gt;(entries.size()/n+1));<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>    while (this.isRunning()) {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      if (!isPeerEnabled()) {<a name="line.186"></a>
-<span class="sourceLineNo">187</span>        if (sleepForRetries("Replication is disabled", sleepMultiplier)) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>          sleepMultiplier++;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>        }<a name="line.189"></a>
-<span class="sourceLineNo">190</span>        continue;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      }<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      try {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>        if (LOG.isTraceEnabled()) {<a name="line.193"></a>
-<span class="sourceLineNo">194</span>          LOG.trace("Replicating " + entries.size() +<a name="line.194"></a>
-<span class="sourceLineNo">195</span>              " entries of total size " + replicateContext.getSize());<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>        List&lt;Future&lt;Integer&gt;&gt; futures = new ArrayList&lt;Future&lt;Integer&gt;&gt;(entryLists.size());<a name="line.198"></a>
-<span class="sourceLineNo">199</span>        for (int i=0; i&lt;entryLists.size(); i++) {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>          if (!entryLists.get(i).isEmpty()) {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>            if (LOG.isTraceEnabled()) {<a name="line.201"></a>
-<span class="sourceLineNo">202</span>              LOG.trace("Submitting " + entryLists.get(i).size() +<a name="line.202"></a>
-<span class="sourceLineNo">203</span>                  " entries of total size " + replicateContext.getSize());<a name="line.203"></a>
-<span class="sourceLineNo">204</span>            }<a name="line.204"></a>
-<span class="sourceLineNo">205</span>            // RuntimeExceptions encountered here bubble up and are handled in ReplicationSource<a name="line.205"></a>
-<span class="sourceLineNo">206</span>            futures.add(exec.submit(createReplicator(entryLists.get(i), i)));<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>        IOException iox = null;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>        for (int index = futures.size() - 1; index &gt;= 0; index--) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>          try {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>            // wait for all futures, remove successful parts<a name="line.212"></a>
-<span class="sourceLineNo">213</span>            // (only the remaining parts will be retried)<a name="line.213"></a>
-<span class="sourceLineNo">214</span>            Future&lt;Integer&gt; f = futures.get(index);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>            entryLists.remove(f.get().intValue());<a name="line.215"></a>
-<span class="sourceLineNo">216</span>          } catch (InterruptedException ie) {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>            iox =  new IOException(ie);<a name="line.217"></a>
-<span class="sourceLineNo">218</span>          } catch (ExecutionException ee) {<a name="line.218"></a>
-<span class="sourceLineNo">219</span>            // cause must be an IOException<a name="line.219"></a>
-<span class="sourceLineNo">220</span>            iox = (IOException)ee.getCause();<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>        if (iox != null) {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>          // if we had any exceptions, try again<a name="line.224"></a>
-<span class="sourceLineNo">225</span>          throw iox;<a name="line.225"></a>
-<span class="sourceLineNo">226</span>        }<a name="line.226"></a>
-<span class="sourceLineNo">227</span>        // update metrics<a name="line.227"></a>
-<span class="sourceLineNo">228</span>        this.metrics.setAgeOfLastShippedOp(entries.get(entries.size() - 1).getKey().getWriteTime(),<a name="line.228"></a>
-<span class="sourceLineNo">229</span>          walGroupId);<a name="line.229"></a>
-<span class="sourceLineNo">230</span>        return true;<a name="line.230"></a>
-<span class="sourceLineNo">231</span><a name="line.231"></a>
-<span class="sourceLineNo">232</span>      } catch (IOException ioe) {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>        // Didn't ship anything, but must still age the last time we did<a name="line.233"></a>
-<span class="sourceLineNo">234</span>        this.metrics.refreshAgeOfLastShippedOp(walGroupId);<a name="line.234"></a>
-<span class="sourceLineNo">235</span>        if (ioe instanceof RemoteException) {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>          ioe = ((RemoteException) ioe).unwrapRemoteException();<a name="line.236"></a>
-<span class="sourceLineNo">237</span>          LOG.warn("Can't replicate because of an error on the remote cluster: ", ioe);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>          if (ioe instanceof TableNotFoundException) {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>            if (sleepForRetries("A table is missing in the peer cluster. "<a name="line.239"></a>
-<span class="sourceLineNo">240</span>                + "Replication cannot proceed without losing data.", sleepMultiplier)) {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>              sleepMultiplier++;<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>        } else {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>          if (ioe instanceof SocketTimeoutException) {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>            // This exception means we waited for more than 60s and nothing<a name="line.246"></a>
-<span class="sourceLineNo">247</span>            // happened, the cluster is alive and calling it right away<a name="line.247"></a>
-<span class="sourceLineNo">248</span>            // even for a test just makes things worse.<a name="line.248"></a>
-<span class="sourceLineNo">249</span>            sleepForRetries("Encountered a SocketTimeoutException. Since the " +<a name="line.249"></a>
-<span class="sourceLineNo">250</span>              "call to the remote cluster timed out, which is usually " +<a name="line.250"></a>
-<span class="sourceLineNo">251</span>              "caused by a machine failure or a massive slowdown",<a name="line.251"></a>
-<span class="sourceLineNo">252</span>              this.socketTimeoutMultiplier);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>          } else if (ioe instanceof ConnectException) {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>            LOG.warn("Peer is unavailable, rechecking all sinks: ", ioe);<a name="line.254"></a>
-<span class="sourceLineNo">255</span>            replicationSinkMgr.chooseSinks();<a name="line.255"></a>
-<span class="sourceLineNo">256</span>          } else {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>            LOG.warn("Can't replicate because of a local or network error: ", ioe);<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>        if (sleepForRetries("Since we are unable to replicate", sleepMultiplier)) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>          sleepMultiplier++;<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 false; // in case we exited before replicating<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>  protected boolean isPeerEnabled() {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    return ctx.getReplicationPeer().getPeerState() == PeerState.ENABLED;<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>  @Override<a name="line.272"></a>
-<span class="sourceLineNo">273</span>  protected void doStop() {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    disconnect(); //don't call super.doStop()<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    if (this.conn != null) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>      try {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>        this.conn.close();<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        this.conn = null;<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      } catch (IOException e) {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>        LOG.warn("Failed to close the connection");<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>    exec.shutdownNow();<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    notifyStopped();<a name="line.284"></a>
-<span class="sourceLineNo">285</span>  }<a name="line.285"></a>
-<span class="sourceLineNo">286</span><a name="line.286"></a>
-<span class="sourceLineNo">287</span>  // is this needed? Nobody else will call doStop() otherwise<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  @Override<a name="line.288"></a>
-<span class="sourceLineNo">289</span>  public State stopAndWait() {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    doStop();<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    return super.stopAndWait();<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>  @VisibleForTesting<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  protected Replicator createReplicator(List&lt;Entry&gt; entries, int ordinal) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    return new Replicator(entries, ordinal);<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>  @VisibleForTesting<a name="line.299"></a>
-<span class="sourceLineNo">300</span>  protected class Replicator implements Callable&lt;Integer&gt; {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    private List&lt;Entry&gt; entries;<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    private int ordinal;<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    public Replicator(List&lt;Entry&gt; entries, int ordinal) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>      this.entries = entries;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      this.ordinal = ordinal;<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>    @Override<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    public Integer call() throws IOException {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      SinkPeer sinkPeer = null;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      try {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>        sinkPeer = replicationSinkMgr.getReplicationSink();<a name="line.312"></a>
-<span class="sourceLineNo">313</span>        BlockingInterface rrs = sinkPeer.getRegionServer();<a name="line.313"></a>
-<span class="sourceLineNo">314</span>        ReplicationProtbufUtil.replicateWALEntry(rrs,<a name="line.314"></a>
-<span class="sourceLineNo">315</span>            entries.toArray(new Entry[entries.size()]));<a name="line.315"></a>
-<span class="sourceLineNo">316</span>        replicationSinkMgr.reportSinkSuccess(sinkPeer);<a name="line.316"></a>
-<span class="sourceLineNo">317</span>        return ordinal;<a name="line.317"></a>
-<span class="sourceLineNo">318</span><a name="line.318"></a>
-<span class="sourceLineNo">319</span>      } catch (IOException ioe) {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>        if (sinkPeer != null) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>          replicationSinkMgr.reportBadSink(sinkPeer);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>        }<a name="line.322"></a>
-<span class="sourceLineNo">323</span>        throw ioe;<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>  }<a name="line.327"></a>
-<span class="sourceLineNo">328</span>}<a name="line.328"></a>
+<span class="sourceLineNo">184</span>      // now group by region<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      for (Entry e : entries) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>        entryLists.get(Math.abs(Bytes.hashCode(e.getKey().getEncodedRegionName())%n)).add(e);<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>    while (this.isRunning()) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      if (!isPeerEnabled()) {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>        if (sleepForRetries("Replication is disabled", sleepMultiplier)) {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>          sleepMultiplier++;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>        }<a name="line.193"></a>
+<span class="sourceLineNo">194</span>        continue;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      }<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      try {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>        if (LOG.isTraceEnabled()) {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>          LOG.trace("Replicating " + entries.size() +<a name="line.198"></a>
+<span class="sourceLineNo">199</span>              " entries of total size " + replicateContext.getSize());<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>        int futures = 0;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>        for (int i=0; i&lt;entryLists.size(); i++) {<a name="line.203"></a>
+<span class="sourceLineNo">204</span>          if (!entryLists.get(i).isEmpty()) {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>            if (LOG.isTraceEnabled()) {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>              LOG.trace("Submitting " + entryLists.get(i).size() +<a name="line.206"></a>
+<span class="sourceLineNo">207</span>                  " entries of total size " + replicateContext.getSize());<a name="line.207"></a>
+<span class="sourceLineNo">208</span>            }<a name="line.208"></a>
+<span class="sourceLineNo">209</span>            // RuntimeExceptions encountered here bubble up and are handled in ReplicationSource<a name="line.209"></a>
+<span class="sourceLineNo">210</span>            pool.submit(createReplicator(entryLists.get(i), i));<a name="line.210"></a>
+<span class="sourceLineNo">211</span>            futures++;<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>        IOException iox = null;<a name="line.214"></a>
+<span class="sourceLineNo">215</span><a name="line.215"></a>
+<span class="sourceLineNo">216</span>        for (int i=0; i&lt;futures; i++) {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>          try {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>            // wait for all futures, remove successful parts<a name="line.218"></a>
+<span class="sourceLineNo">219</span>            // (only the remaining parts will be retried)<a name="line.219"></a>
+<span class="sourceLineNo">220</span>            Future&lt;Integer&gt; f = pool.take();<a name="line.220"></a>
+<span class="sourceLineNo">221</span>            entryLists.set(f.get().intValue(), Collections.&lt;Entry&gt;emptyList());<a name="line.221"></a>
+<span class="sourceLineNo">222</span>          } catch (InterruptedException ie) {<a name="line.222"></a>
+<span class="sourceLineNo">223</span>            iox =  new IOException(ie);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>          } catch (ExecutionException ee) {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>            // cause must be an IOException<a name="line.225"></a>
+<span class="sourceLineNo">226</span>            iox = (IOException)ee.getCause();<a name="line.226"></a>
+<span class="sourceLineNo">227</span>          }<a name="line.227"></a>
+<span class="sourceLineNo">228</span>        }<a name="line.228"></a>
+<span class="sourceLineNo">229</span>        if (iox != null) {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>          // if we had any exceptions, try again<a name="line.230"></a>
+<span class="sourceLineNo">231</span>          throw iox;<a name="line.231"></a>
+<span class="sourceLineNo">232</span>        }<a name="line.232"></a>
+<span class="sourceLineNo">233</span>        // update metrics<a name="line.233"></a>
+<span class="sourceLineNo">234</span>        this.metrics.setAgeOfLastShippedOp(entries.get(entries.size() - 1).getKey().getWriteTime(),<a name="line.234"></a>
+<span class="sourceLineNo">235</span>          walGroupId);<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        return true;<a name="line.236"></a>
+<span class="sourceLineNo">237</span><a name="line.237"></a>
+<span class="sourceLineNo">238</span>      } catch (IOException ioe) {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>        // Didn't ship anything, but must still age the last time we did<a name="line.239"></a>
+<span class="sourceLineNo">240</span>        this.metrics.refreshAgeOfLastShippedOp(walGroupId);<a name="line.240"></a>
+<span class="sourceLineNo">241</span>        if (ioe instanceof RemoteException) {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>          ioe = ((RemoteException) ioe).unwrapRemoteException();<a name="line.242"></a>
+<span class="sourceLineNo">243</span>          LOG.warn("Can't replicate because of an error on the remote cluster: ", ioe);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>          if (ioe instanceof TableNotFoundException) {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>            if (sleepForRetries("A table is missing in the peer cluster. "<a name="line.245"></a>
+<span class="sourceLineNo">246</span>                + "Replication cannot proceed without losing data.", sleepMultiplier)) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>              sleepMultiplier++;<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>        } else {<a name="line.250"></a>
+<span class="sourceLineNo">251</span>          if (ioe instanceof SocketTimeoutException) {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>            // This exception means we waited for more than 60s and nothing<a name="line.252"></a>
+<span class="sourceLineNo">253</span>            // happened, the cluster is alive and calling it right away<a name="line.253"></a>
+<span class="sourceLineNo">254</span>            // even for a test just makes things worse.<a name="line.254"></a>
+<span class="sourceLineNo">255</span>            sleepForRetries("Encountered a SocketTimeoutException. Since the " +<a name="line.255"></a>
+<span class="sourceLineNo">256</span>              "call to the remote cluster timed out, which is usually " +<a name="line.256"></a>
+<span class="sourceLineNo">257</span>              "caused by a machine failure or a massive slowdown",<a name="line.257"></a>
+<span class="sourceLineNo">258</span>              this.socketTimeoutMultiplier);<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          } else if (ioe instanceof ConnectException) {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>            LOG.warn("Peer is unavailable, rechecking all sinks: ", ioe);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>            replicationSinkMgr.chooseSinks();<a name="line.261"></a>
+<span class="sourceLineNo">262</span>          } else {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>            LOG.warn("Can't replicate because of a local or network error: ", ioe);<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>        if (sleepForRetries("Since we are unable to replicate", sleepMultiplier)) {<a name="line.266"></a>
+<span class="sourceLineNo">267</span>          sleepMultiplier++;<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>    return false; // in case we exited before replicating<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>  protected boolean isPeerEnabled() {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    return ctx.getReplicationPeer().getPeerState() == PeerState.ENABLED;<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>  protected void doStop() {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    disconnect(); //don't call super.doStop()<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    if (this.conn != null) {<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      try {<a name="line.282"></a>
+<span class="sourceLineNo">283</span>        this.conn.close();<a name="line.283"></a>
+<span class="sourceLineNo">284</span>        this.conn = null;<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      } catch (IOException e) {<a name="line.285"></a>
+<span class="sourceLineNo">286</span>        LOG.warn("Failed to close the connection");<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>    exec.shutdownNow();<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    notifyStopped();<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>  // is this needed? Nobody else will call doStop() otherwise<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  @Override<a name="line.294"></a>
+<span class="sourceLineNo">295</span>  public State stopAndWait() {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    doStop();<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    return super.stopAndWait();<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>  @VisibleForTesting<a name="line.300"></a>
+<span class="sourceLineNo">301</span>  protected Replicator createReplicator(List&lt;Entry&gt; entries, int ordinal) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    return new Replicator(entries, ordinal);<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>  @VisibleForTesting<a name="line.305"></a>
+<span class="sourceLineNo">306</span>  protected class Replicator implements Callable&lt;Integer&gt; {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    private List&lt;Entry&gt; entries;<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    private int ordinal;<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    public Replicator(List&lt;Entry&gt; entries, int ordinal) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      this.entries = entries;<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      this.ordinal = ordinal;<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 Integer call() throws IOException {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>      SinkPeer sinkPeer = null;<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      try {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>        sinkPeer = replicationSinkMgr.getReplicationSink();<a name="line.318"></a>
+<span class="sourceLineNo">319</span>        BlockingInterface rrs = sinkPeer.getRegionServer();<a name="line.319"></a>
+<span class="sourceLineNo">320</span>        ReplicationProtbufUtil.replicateWALEntry(rrs,<a name="line.320"></a>
+<span class="sourceLineNo">321</span>            entries.toArray(new Entry[entries.size()]));<a name="line.321"></a>
+<span class="sourceLineNo">322</span>        replicationSinkMgr.reportSinkSuccess(sinkPeer);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>        return ordinal;<a name="line.323"></a>
+<span class="sourceLineNo">324</span><a name="line.324"></a>
+<span class="sourceLineNo">325</span>      } catch (IOException ioe) {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>        if (sinkPeer != null) {<a name="line.326"></a>
+<span class="sourceLineNo">327</span>          replicationSinkMgr.reportBadSink(sinkPeer);<a name="line.327"></a>
+<span class="sourceLineNo">328</span>        }<a name="line.328"></a>
+<span class="sourceLineNo">329</span>        throw ioe;<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><a name="line.332"></a>
+<span class="sourceLineNo">333</span>  }<a name="line.333"></a>
+<span class="sourceLineNo">334</span>}<a name="line.334"></a>
 
 
 


[22/24] hbase git commit: Published site at 0d72849581c1e5a50a2aa7757b909e5531b8d12c.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/devapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index 1f53a4b..3ddacfc 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -78089,7 +78089,7 @@ service.</div>
 </dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/util/JvmPauseMonitor.html#shouldRun">shouldRun</a></span> - Variable in class org.apache.hadoop.hbase.util.<a href="./org/apache/hadoop/hbase/util/JvmPauseMonitor.html" title="class in org.apache.hadoop.hbase.util">JvmPauseMonitor</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#shouldSeek(org.apache.hadoop.hbase.client.Scan,%20long)">shouldSeek(Scan, long)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/DefaultMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">DefaultMemStore</a></dt>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#shouldSeek(org.apache.hadoop.hbase.client.Scan,%20org.apache.hadoop.hbase.regionserver.Store,%20long)">shouldSeek(Scan, Store, long)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/DefaultMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">DefaultMemStore</a></dt>
 <dd>
 <div class="block">Check if this memstore may contain the required keys</div>
 </dd>

http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/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 b7f9699..33f6ca6 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/InterfaceStability.Evolving.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="strong">InterfaceStability.Evolving</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
-<li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.Private.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="strong">InterfaceAudience.Private</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
-<li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.LimitedPrivate.html" title="annotation in org.apache.hadoop.hbase.classification"><span class="strong">InterfaceAudience.LimitedPrivate</span></a> (implements java.lang.annotation.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/Annotation.html?is-external=true" title="class or interface in java.lang.annotation">Annotation</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.classification.<a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceStability.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.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/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.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>
 </ul>
 </div>
 <!-- ======= START OF BOTTOM NAVBAR ====== -->

http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/devapidocs/org/apache/hadoop/hbase/client/class-use/Scan.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/class-use/Scan.html b/devapidocs/org/apache/hadoop/hbase/client/class-use/Scan.html
index 3f9c43f..23f629b 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/class-use/Scan.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/class-use/Scan.html
@@ -1677,7 +1677,8 @@ service.</div>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><span class="strong">DefaultMemStore.</span><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#shouldSeek(org.apache.hadoop.hbase.client.Scan,%20long)">shouldSeek</a></strong>(<a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
+<td class="colLast"><span class="strong">DefaultMemStore.</span><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#shouldSeek(org.apache.hadoop.hbase.client.Scan,%20org.apache.hadoop.hbase.regionserver.Store,%20long)">shouldSeek</a></strong>(<a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
+                    <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a>&nbsp;store,
                     long&nbsp;oldestUnexpiredTS)</code>
 <div class="block">Check if this memstore may contain the required keys</div>
 </td>

http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/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 d54b926..38b63b3 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
@@ -389,9 +389,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.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/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/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>

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

http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/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 ed83b5c..2a48c33 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -290,12 +290,12 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.MemoryType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="strong">Cacheable.MemoryType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.ExternalBlockCaches.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="strong">CacheConfig.ExternalBlockCaches</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="strong">BlockType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.Writer.State.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="strong">HFileBlock.Writer.State</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.BlockCategory.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="strong">BlockType.BlockCategory</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockPriority.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="strong">BlockPriority</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/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/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/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/blob/2fa570dd/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 4e4945a..1030aae 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
@@ -287,10 +287,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.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/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/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master"><span class="strong">RegionState.State</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.master"><span class="strong">MetricsMasterSourceFactoryImpl.FactoryStorage</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.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/SplitLogManager.ResubmitDirective.html" title="enum in org.apache.hadoop.hbase.master"><span class="strong">SplitLogManager.ResubmitDirective</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/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 333a03e..3d62dd4 100644
--- a/devapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -335,14 +335,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/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/KeepDeletedCells.html" title="enum in org.apache.hadoop.hbase"><span class="strong">KeepDeletedCells</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HConstants.Modify.html" title="enum in org.apache.hadoop.hbase"><span class="strong">HConstants.Modify</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HealthChecker.HealthCheckerExitStatus.html" title="enum in org.apache.hadoop.hbase"><span class="strong">HealthChecker.HealthCheckerExitStatus</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/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/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/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/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase"><span class="strong">MetaTableAccessor.QueryType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/KeepDeletedCells.html" title="enum in org.apache.hadoop.hbase"><span class="strong">KeepDeletedCells</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/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/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/Coprocessor.State.html" title="enum in org.apache.hadoop.hbase"><span class="strong">Coprocessor.State</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/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 de18f37..4902a1f 100644
--- a/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
@@ -173,11 +173,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.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/ThrottleType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="strong">ThrottleType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="strong">QuotaType</span></a></li>
-<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/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/OperationQuota.OperationType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="strong">OperationQuota.OperationType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/ThrottleType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="strong">ThrottleType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaScope.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="strong">QuotaScope</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="strong">QuotaType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/devapidocs/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html b/devapidocs/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html
index 4416370..54ddf69 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html
@@ -108,7 +108,7 @@
 </dl>
 <hr>
 <br>
-<pre>protected class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.570">DefaultMemStore.MemStoreScanner</a>
+<pre>protected class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line.578">DefaultMemStore.MemStoreScanner</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/NonLazyKeyValueScanner.html" title="class in org.apache.hadoop.hbase.regionserver">NonLazyKeyValueScanner</a></pre>
 </li>
 </ul>
@@ -335,7 +335,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/NonLazyKeyV
 <ul class="blockList">
 <li class="blockList">
 <h4>cellSetNextRow</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/regionserver/DefaultMemStore.MemStoreScanner.html#line.572">cellSetNextRow</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/regionserver/DefaultMemStore.MemStoreScanner.html#line.580">cellSetNextRow</a></pre>
 </li>
 </ul>
 <a name="snapshotNextRow">
@@ -344,7 +344,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/NonLazyKeyV
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshotNextRow</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/regionserver/DefaultMemStore.MemStoreScanner.html#line.573">snapshotNextRow</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/regionserver/DefaultMemStore.MemStoreScanner.html#line.581">snapshotNextRow</a></pre>
 </li>
 </ul>
 <a name="cellSetItRow">
@@ -353,7 +353,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/NonLazyKeyV
 <ul class="blockList">
 <li class="blockList">
 <h4>cellSetItRow</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/regionserver/DefaultMemStore.MemStoreScanner.html#line.576">cellSetItRow</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/regionserver/DefaultMemStore.MemStoreScanner.html#line.584">cellSetItRow</a></pre>
 </li>
 </ul>
 <a name="snapshotItRow">
@@ -362,7 +362,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/NonLazyKeyV
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshotItRow</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/regionserver/DefaultMemStore.MemStoreScanner.html#line.577">snapshotItRow</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/regionserver/DefaultMemStore.MemStoreScanner.html#line.585">snapshotItRow</a></pre>
 </li>
 </ul>
 <a name="cellSetIt">
@@ -371,7 +371,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/NonLazyKeyV
 <ul class="blockList">
 <li class="blockList">
 <h4>cellSetIt</h4>
-<pre>private&nbsp;<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;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.580">cellSetIt</a></pre>
+<pre>private&nbsp;<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;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.588">cellSetIt</a></pre>
 </li>
 </ul>
 <a name="snapshotIt">
@@ -380,7 +380,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/NonLazyKeyV
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshotIt</h4>
-<pre>private&nbsp;<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;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.581">snapshotIt</a></pre>
+<pre>private&nbsp;<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;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.589">snapshotIt</a></pre>
 </li>
 </ul>
 <a name="cellSetAtCreation">
@@ -389,7 +389,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/NonLazyKeyV
 <ul class="blockList">
 <li class="blockList">
 <h4>cellSetAtCreation</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSkipListSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSkipListSet</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.584">cellSetAtCreation</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSkipListSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSkipListSet</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.592">cellSetAtCreation</a></pre>
 </li>
 </ul>
 <a name="snapshotAtCreation">
@@ -398,7 +398,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/NonLazyKeyV
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshotAtCreation</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSkipListSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSkipListSet</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.585">snapshotAtCreation</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSkipListSet.html" title="class in org.apache.hadoop.hbase.regionserver">CellSkipListSet</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.593">snapshotAtCreation</a></pre>
 </li>
 </ul>
 <a name="theNext">
@@ -407,7 +407,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/NonLazyKeyV
 <ul class="blockList">
 <li class="blockList">
 <h4>theNext</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/regionserver/DefaultMemStore.MemStoreScanner.html#line.588">theNext</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/regionserver/DefaultMemStore.MemStoreScanner.html#line.596">theNext</a></pre>
 </li>
 </ul>
 <a name="allocatorAtCreation">
@@ -416,7 +416,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/NonLazyKeyV
 <ul class="blockList">
 <li class="blockList">
 <h4>allocatorAtCreation</h4>
-<pre>volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.591">allocatorAtCreation</a></pre>
+<pre>volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.599">allocatorAtCreation</a></pre>
 </li>
 </ul>
 <a name="snapshotAllocatorAtCreation">
@@ -425,7 +425,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/NonLazyKeyV
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshotAllocatorAtCreation</h4>
-<pre>volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.592">snapshotAllocatorAtCreation</a></pre>
+<pre>volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.600">snapshotAllocatorAtCreation</a></pre>
 </li>
 </ul>
 <a name="stopSkippingCellsIfNextRow">
@@ -434,7 +434,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/NonLazyKeyV
 <ul class="blockList">
 <li class="blockList">
 <h4>stopSkippingCellsIfNextRow</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.596">stopSkippingCellsIfNextRow</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.604">stopSkippingCellsIfNextRow</a></pre>
 </li>
 </ul>
 <a name="readPoint">
@@ -443,7 +443,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/NonLazyKeyV
 <ul class="blockListLast">
 <li class="blockList">
 <h4>readPoint</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.598">readPoint</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.606">readPoint</a></pre>
 </li>
 </ul>
 </li>
@@ -460,7 +460,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/NonLazyKeyV
 <ul class="blockListLast">
 <li class="blockList">
 <h4>DefaultMemStore.MemStoreScanner</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.621">DefaultMemStore.MemStoreScanner</a>(long&nbsp;readPoint)</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.629">DefaultMemStore.MemStoreScanner</a>(long&nbsp;readPoint)</pre>
 </li>
 </ul>
 </li>
@@ -477,7 +477,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/NonLazyKeyV
 <ul class="blockList">
 <li class="blockList">
 <h4>getNext</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.645">getNext</a>(<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;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;it)</pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.653">getNext</a>(<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;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;it)</pre>
 <div class="block">Lock on 'this' must be held by caller.</div>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>it</code> - </dd>
 <dt><span class="strong">Returns:</span></dt><dd>Next Cell</dd></dl>
@@ -489,7 +489,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/NonLazyKeyV
 <ul class="blockList">
 <li class="blockList">
 <h4>seek</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.681">seek</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.689">seek</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key)</pre>
 <div class="block">Set the scanner at the seek key.
   Must be called only once: there is no thread safety between the scanner
    and the memStore.</div>
@@ -503,7 +503,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/NonLazyKeyV
 <ul class="blockList">
 <li class="blockList">
 <h4>seekInSubLists</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.700">seekInSubLists</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key)</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.708">seekInSubLists</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key)</pre>
 <div class="block">(Re)initialize the iterators after a seek or a reseek.</div>
 </li>
 </ul>
@@ -513,7 +513,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/NonLazyKeyV
 <ul class="blockList">
 <li class="blockList">
 <h4>reseek</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.718">reseek</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.726">reseek</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key)</pre>
 <div class="block">Move forward on the sub-lists set previously by seek.</div>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>key</code> - seek value (should be non-null)</dd>
 <dt><span class="strong">Returns:</span></dt><dd>true if there is at least one KV to read, false otherwise</dd></dl>
@@ -525,7 +525,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/NonLazyKeyV
 <ul class="blockList">
 <li class="blockList">
 <h4>peek</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.739">peek</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.747">peek</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html#peek()">KeyValueScanner</a></code></strong></div>
 <div class="block">Look at the next Cell in this scanner, but do not iterate scanner.</div>
 <dl><dt><span class="strong">Returns:</span></dt><dd>the next Cell</dd></dl>
@@ -537,7 +537,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/NonLazyKeyV
 <ul class="blockList">
 <li class="blockList">
 <h4>next</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.745">next</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.753">next</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html#next()">KeyValueScanner</a></code></strong></div>
 <div class="block">Return the next Cell in this scanner, iterating the scanner</div>
 <dl><dt><span class="strong">Returns:</span></dt><dd>the next Cell</dd></dl>
@@ -549,7 +549,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/NonLazyKeyV
 <ul class="blockList">
 <li class="blockList">
 <h4>getLowest</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.773">getLowest</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;first,
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.781">getLowest</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;first,
              <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;second)</pre>
 </li>
 </ul>
@@ -559,7 +559,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/NonLazyKeyV
 <ul class="blockList">
 <li class="blockList">
 <h4>getHighest</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.789">getHighest</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;first,
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.797">getHighest</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;first,
               <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;second)</pre>
 </li>
 </ul>
@@ -569,7 +569,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/NonLazyKeyV
 <ul class="blockList">
 <li class="blockList">
 <h4>close</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.800">close</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.808">close</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html#close()">KeyValueScanner</a></code></strong></div>
 <div class="block">Close the KeyValue scanner.</div>
 </li>
@@ -580,7 +580,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/NonLazyKeyV
 <ul class="blockList">
 <li class="blockList">
 <h4>getSequenceID</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.825">getSequenceID</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.833">getSequenceID</a>()</pre>
 <div class="block">MemStoreScanner returns max value as sequence id because it will
  always have the latest data among all files.</div>
 </li>
@@ -591,7 +591,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/NonLazyKeyV
 <ul class="blockList">
 <li class="blockList">
 <h4>shouldUseScanner</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.830">shouldUseScanner</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.838">shouldUseScanner</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
                        <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a>&nbsp;store,
                        long&nbsp;oldestUnexpiredTS)</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html#shouldUseScanner(org.apache.hadoop.hbase.client.Scan,%20org.apache.hadoop.hbase.regionserver.Store,%20long)">KeyValueScanner</a></code></strong></div>
@@ -613,7 +613,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/NonLazyKeyV
 <ul class="blockList">
 <li class="blockList">
 <h4>backwardSeek</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.840">backwardSeek</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.848">backwardSeek</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key)</pre>
 <div class="block">Seek scanner to the given key first. If it returns false(means
  peek()==null) or scanner's peek row is bigger than row of given key, seek
  the scanner to the previous row of given key</div>
@@ -628,7 +628,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/NonLazyKeyV
 <ul class="blockList">
 <li class="blockList">
 <h4>seekToPreviousRow</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.854">seekToPreviousRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;originalKey)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.862">seekToPreviousRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;originalKey)</pre>
 <div class="block">Separately get the KeyValue before the specified key from kvset and
  snapshotset, and use the row of higher one as the previous row of
  specified key, then seek to the first KeyValue of previous row</div>
@@ -643,7 +643,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/NonLazyKeyV
 <ul class="blockListLast">
 <li class="blockList">
 <h4>seekToLastRow</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.887">seekToLastRow</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html#line.895">seekToLastRow</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html#seekToLastRow()">KeyValueScanner</a></code></strong></div>
 <div class="block">Seek the scanner at the first KeyValue of last row</div>
 <dl><dt><span class="strong">Returns:</span></dt><dd>true if scanner has values left, false if the underlying data is


[19/24] hbase git commit: Published site at 0d72849581c1e5a50a2aa7757b909e5531b8d12c.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/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 ceb488f..c066f34 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html
@@ -283,31 +283,31 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <!--   -->
 </a>
 <h3>Field Detail</h3>
-<a name="bcn">
+<a name="bcv">
 <!--   -->
 </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.151">bcn</a></pre>
+<h4>bcv</h4>
+<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.151">bcv</a></pre>
 </li>
 </ul>
-<a name="bcv">
+<a name="filter">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>bcv</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.158">bcv</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.158">filter</a></pre>
 </li>
 </ul>
-<a name="filter">
+<a name="bcn">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>filter</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.165">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.165">bcn</a></pre>
 </li>
 </ul>
 <a name="format">
@@ -388,31 +388,31 @@ extends org.jamon.AbstractTemplateProxy</pre>
 </dl>
 </li>
 </ul>
-<a name="setBcn(java.lang.String)">
+<a name="setBcv(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.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>
+<h4>setBcv</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.152">setBcv</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_bcv)</pre>
 </li>
 </ul>
-<a name="setBcv(java.lang.String)">
+<a name="setFilter(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.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>
+<h4>setFilter</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.159">setFilter</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_filter)</pre>
 </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.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>
+<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>
 </li>
 </ul>
 <a name="setFormat(java.lang.String)">

http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/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 920ba6b..f32b631 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html
@@ -224,31 +224,31 @@ 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="bcn">
+<a name="bcv">
 <!--   -->
 </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.29">bcn</a></pre>
+<h4>bcv</h4>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html#line.29">bcv</a></pre>
 </li>
 </ul>
-<a name="bcv">
+<a name="filter">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>bcv</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html#line.30">bcv</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.30">filter</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.31">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.31">bcn</a></pre>
 </li>
 </ul>
 <a name="format">

http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/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 4dc47a8..9772916 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/Bytes.LexicographicalComparerHolder.UnsafeComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="strong">Bytes.LexicographicalComparerHolder.UnsafeComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PrettyPrinter.Unit.html" title="enum in org.apache.hadoop.hbase.util"><span class="strong">PrettyPrinter.Unit</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/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/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/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/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/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/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/PoolMap.PoolType.html" title="enum in org.apache.hadoop.hbase.util"><span class="strong">PoolMap.PoolType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/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 41abfd2..04dfd20 100644
--- a/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
@@ -149,8 +149,8 @@
 <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/RegionGroupingProvider.Strategies.html" title="enum in org.apache.hadoop.hbase.wal"><span class="strong">RegionGroupingProvider.Strategies</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/WALKey.Version.html" title="enum in org.apache.hadoop.hbase.wal"><span class="strong">WALKey.Version</span></a></li>
 <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>
 </ul>
 </li>
 </ul>


[06/24] hbase git commit: Published site at 0d72849581c1e5a50a2aa7757b909e5531b8d12c.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/xref-test/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html
----------------------------------------------------------------------
diff --git a/xref-test/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html b/xref-test/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html
index 7a0fc70..bf0d5cc 100644
--- a/xref-test/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html
+++ b/xref-test/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html
@@ -71,1032 +71,1038 @@
 <a class="jxr_linenumber" name="61" href="#61">61</a>  <strong class="jxr_keyword">import</strong> com.google.common.collect.Iterables;
 <a class="jxr_linenumber" name="62" href="#62">62</a>  <strong class="jxr_keyword">import</strong> com.google.common.collect.Lists;
 <a class="jxr_linenumber" name="63" href="#63">63</a>  
-<a class="jxr_linenumber" name="64" href="#64">64</a>  <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> memstore test case */</em>
-<a class="jxr_linenumber" name="65" href="#65">65</a>  @Category({RegionServerTests.<strong class="jxr_keyword">class</strong>, MediumTests.<strong class="jxr_keyword">class</strong>})
-<a class="jxr_linenumber" name="66" href="#66">66</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html">TestDefaultMemStore</a> <strong class="jxr_keyword">extends</strong> TestCase {
-<a class="jxr_linenumber" name="67" href="#67">67</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Log LOG = LogFactory.getLog(TestDefaultMemStore.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="68" href="#68">68</a>    <strong class="jxr_keyword">private</strong> DefaultMemStore memstore;
-<a class="jxr_linenumber" name="69" href="#69">69</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> ROW_COUNT = 10;
-<a class="jxr_linenumber" name="70" href="#70">70</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> QUALIFIER_COUNT = ROW_COUNT;
-<a class="jxr_linenumber" name="71" href="#71">71</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> byte [] FAMILY = Bytes.toBytes(<span class="jxr_string">"column"</span>);
-<a class="jxr_linenumber" name="72" href="#72">72</a>    <strong class="jxr_keyword">private</strong> MultiVersionConcurrencyControl mvcc;
-<a class="jxr_linenumber" name="73" href="#73">73</a>    <strong class="jxr_keyword">private</strong> AtomicLong startSeqNum = <strong class="jxr_keyword">new</strong> AtomicLong(0);
-<a class="jxr_linenumber" name="74" href="#74">74</a>  
-<a class="jxr_linenumber" name="75" href="#75">75</a>    @Override
-<a class="jxr_linenumber" name="76" href="#76">76</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setUp() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="77" href="#77">77</a>      <strong class="jxr_keyword">super</strong>.setUp();
-<a class="jxr_linenumber" name="78" href="#78">78</a>      <strong class="jxr_keyword">this</strong>.mvcc = <strong class="jxr_keyword">new</strong> MultiVersionConcurrencyControl();
-<a class="jxr_linenumber" name="79" href="#79">79</a>      <strong class="jxr_keyword">this</strong>.memstore = <strong class="jxr_keyword">new</strong> DefaultMemStore();
-<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>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testPutSameKey() {
-<a class="jxr_linenumber" name="83" href="#83">83</a>      byte [] bytes = Bytes.toBytes(getName());
-<a class="jxr_linenumber" name="84" href="#84">84</a>      KeyValue kv = <strong class="jxr_keyword">new</strong> KeyValue(bytes, bytes, bytes, bytes);
-<a class="jxr_linenumber" name="85" href="#85">85</a>      <strong class="jxr_keyword">this</strong>.memstore.add(kv);
-<a class="jxr_linenumber" name="86" href="#86">86</a>      byte [] other = Bytes.toBytes(<span class="jxr_string">"somethingelse"</span>);
-<a class="jxr_linenumber" name="87" href="#87">87</a>      KeyValue samekey = <strong class="jxr_keyword">new</strong> KeyValue(bytes, bytes, bytes, other);
-<a class="jxr_linenumber" name="88" href="#88">88</a>      <strong class="jxr_keyword">this</strong>.memstore.add(samekey);
-<a class="jxr_linenumber" name="89" href="#89">89</a>      Cell found = <strong class="jxr_keyword">this</strong>.memstore.cellSet.first();
-<a class="jxr_linenumber" name="90" href="#90">90</a>      assertEquals(1, <strong class="jxr_keyword">this</strong>.memstore.cellSet.size());
-<a class="jxr_linenumber" name="91" href="#91">91</a>      assertTrue(
-<a class="jxr_linenumber" name="92" href="#92">92</a>        Bytes.toString(found.getValueArray(), found.getValueOffset(), found.getValueLength()),
-<a class="jxr_linenumber" name="93" href="#93">93</a>        CellUtil.matchingValue(samekey, found));
-<a class="jxr_linenumber" name="94" href="#94">94</a>    }
-<a class="jxr_linenumber" name="95" href="#95">95</a>  
-<a class="jxr_linenumber" name="96" href="#96">96</a>    <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="97" href="#97">97</a>  <em class="jxr_javadoccomment">   * Test memstore snapshot happening while scanning.</em>
-<a class="jxr_linenumber" name="98" href="#98">98</a>  <em class="jxr_javadoccomment">   * @throws IOException</em>
-<a class="jxr_linenumber" name="99" href="#99">99</a>  <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="100" href="#100">100</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testScanAcrossSnapshot() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="101" href="#101">101</a>     <strong class="jxr_keyword">int</strong> rowCount = addRows(<strong class="jxr_keyword">this</strong>.memstore);
-<a class="jxr_linenumber" name="102" href="#102">102</a>     List&lt;KeyValueScanner&gt; memstorescanners = <strong class="jxr_keyword">this</strong>.memstore.getScanners(0);
-<a class="jxr_linenumber" name="103" href="#103">103</a>     Scan scan = <strong class="jxr_keyword">new</strong> Scan();
-<a class="jxr_linenumber" name="104" href="#104">104</a>     List&lt;Cell&gt; result = <strong class="jxr_keyword">new</strong> ArrayList&lt;Cell&gt;();
-<a class="jxr_linenumber" name="105" href="#105">105</a>     Configuration conf = HBaseConfiguration.create();
-<a class="jxr_linenumber" name="106" href="#106">106</a>     ScanInfo scanInfo =
-<a class="jxr_linenumber" name="107" href="#107">107</a>         <strong class="jxr_keyword">new</strong> ScanInfo(conf, <strong class="jxr_keyword">null</strong>, 0, 1, HConstants.LATEST_TIMESTAMP, KeepDeletedCells.FALSE, 0,
-<a class="jxr_linenumber" name="108" href="#108">108</a>             <strong class="jxr_keyword">this</strong>.memstore.comparator);
-<a class="jxr_linenumber" name="109" href="#109">109</a>     ScanType scanType = ScanType.USER_SCAN;
-<a class="jxr_linenumber" name="110" href="#110">110</a>     StoreScanner s = <strong class="jxr_keyword">new</strong> StoreScanner(scan, scanInfo, scanType, <strong class="jxr_keyword">null</strong>, memstorescanners);
-<a class="jxr_linenumber" name="111" href="#111">111</a>     <strong class="jxr_keyword">int</strong> count = 0;
-<a class="jxr_linenumber" name="112" href="#112">112</a>     <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="113" href="#113">113</a>       <strong class="jxr_keyword">while</strong> (s.next(result)) {
-<a class="jxr_linenumber" name="114" href="#114">114</a>         LOG.info(result);
-<a class="jxr_linenumber" name="115" href="#115">115</a>         count++;
-<a class="jxr_linenumber" name="116" href="#116">116</a>         <em class="jxr_comment">// Row count is same as column count.</em>
-<a class="jxr_linenumber" name="117" href="#117">117</a>         assertEquals(rowCount, result.size());
-<a class="jxr_linenumber" name="118" href="#118">118</a>         result.clear();
-<a class="jxr_linenumber" name="119" href="#119">119</a>       }
-<a class="jxr_linenumber" name="120" href="#120">120</a>     } <strong class="jxr_keyword">finally</strong> {
-<a class="jxr_linenumber" name="121" href="#121">121</a>       s.close();
-<a class="jxr_linenumber" name="122" href="#122">122</a>     }
-<a class="jxr_linenumber" name="123" href="#123">123</a>     assertEquals(rowCount, count);
-<a class="jxr_linenumber" name="124" href="#124">124</a>     <strong class="jxr_keyword">for</strong> (KeyValueScanner scanner : memstorescanners) {
-<a class="jxr_linenumber" name="125" href="#125">125</a>       scanner.close();
-<a class="jxr_linenumber" name="126" href="#126">126</a>     }
-<a class="jxr_linenumber" name="127" href="#127">127</a> 
-<a class="jxr_linenumber" name="128" href="#128">128</a>     memstorescanners = <strong class="jxr_keyword">this</strong>.memstore.getScanners(mvcc.getReadPoint());
-<a class="jxr_linenumber" name="129" href="#129">129</a>     <em class="jxr_comment">// Now assert can count same number even if a snapshot mid-scan.</em>
-<a class="jxr_linenumber" name="130" href="#130">130</a>     s = <strong class="jxr_keyword">new</strong> StoreScanner(scan, scanInfo, scanType, <strong class="jxr_keyword">null</strong>, memstorescanners);
-<a class="jxr_linenumber" name="131" href="#131">131</a>     count = 0;
-<a class="jxr_linenumber" name="132" href="#132">132</a>     <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="133" href="#133">133</a>       <strong class="jxr_keyword">while</strong> (s.next(result)) {
-<a class="jxr_linenumber" name="134" href="#134">134</a>         LOG.info(result);
-<a class="jxr_linenumber" name="135" href="#135">135</a>         <em class="jxr_comment">// Assert the stuff is coming out in right order.</em>
-<a class="jxr_linenumber" name="136" href="#136">136</a>         assertTrue(CellUtil.matchingRow(result.get(0), Bytes.toBytes(count)));
-<a class="jxr_linenumber" name="137" href="#137">137</a>         count++;
-<a class="jxr_linenumber" name="138" href="#138">138</a>         <em class="jxr_comment">// Row count is same as column count.</em>
-<a class="jxr_linenumber" name="139" href="#139">139</a>         assertEquals(rowCount, result.size());
-<a class="jxr_linenumber" name="140" href="#140">140</a>         <strong class="jxr_keyword">if</strong> (count == 2) {
-<a class="jxr_linenumber" name="141" href="#141">141</a>           <strong class="jxr_keyword">this</strong>.memstore.snapshot();
-<a class="jxr_linenumber" name="142" href="#142">142</a>           LOG.info(<span class="jxr_string">"Snapshotted"</span>);
-<a class="jxr_linenumber" name="143" href="#143">143</a>         }
-<a class="jxr_linenumber" name="144" href="#144">144</a>         result.clear();
-<a class="jxr_linenumber" name="145" href="#145">145</a>       }
-<a class="jxr_linenumber" name="146" href="#146">146</a>     } <strong class="jxr_keyword">finally</strong> {
-<a class="jxr_linenumber" name="147" href="#147">147</a>       s.close();
-<a class="jxr_linenumber" name="148" href="#148">148</a>     }
-<a class="jxr_linenumber" name="149" href="#149">149</a>     assertEquals(rowCount, count);
-<a class="jxr_linenumber" name="150" href="#150">150</a>     <strong class="jxr_keyword">for</strong> (KeyValueScanner scanner : memstorescanners) {
-<a class="jxr_linenumber" name="151" href="#151">151</a>       scanner.close();
-<a class="jxr_linenumber" name="152" href="#152">152</a>     }
-<a class="jxr_linenumber" name="153" href="#153">153</a>     memstorescanners = <strong class="jxr_keyword">this</strong>.memstore.getScanners(mvcc.getReadPoint());
-<a class="jxr_linenumber" name="154" href="#154">154</a>     <em class="jxr_comment">// Assert that new values are seen in kvset as we scan.</em>
-<a class="jxr_linenumber" name="155" href="#155">155</a>     <strong class="jxr_keyword">long</strong> ts = System.currentTimeMillis();
-<a class="jxr_linenumber" name="156" href="#156">156</a>     s = <strong class="jxr_keyword">new</strong> StoreScanner(scan, scanInfo, scanType, <strong class="jxr_keyword">null</strong>, memstorescanners);
-<a class="jxr_linenumber" name="157" href="#157">157</a>     count = 0;
-<a class="jxr_linenumber" name="158" href="#158">158</a>     <strong class="jxr_keyword">int</strong> snapshotIndex = 5;
-<a class="jxr_linenumber" name="159" href="#159">159</a>     <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="160" href="#160">160</a>       <strong class="jxr_keyword">while</strong> (s.next(result)) {
-<a class="jxr_linenumber" name="161" href="#161">161</a>         LOG.info(result);
-<a class="jxr_linenumber" name="162" href="#162">162</a>         <em class="jxr_comment">// Assert the stuff is coming out in right order.</em>
-<a class="jxr_linenumber" name="163" href="#163">163</a>         assertTrue(CellUtil.matchingRow(result.get(0), Bytes.toBytes(count)));
-<a class="jxr_linenumber" name="164" href="#164">164</a>         <em class="jxr_comment">// Row count is same as column count.</em>
-<a class="jxr_linenumber" name="165" href="#165">165</a>         assertEquals(<span class="jxr_string">"count="</span> + count + <span class="jxr_string">", result="</span> + result, rowCount, result.size());
-<a class="jxr_linenumber" name="166" href="#166">166</a>         count++;
-<a class="jxr_linenumber" name="167" href="#167">167</a>         <strong class="jxr_keyword">if</strong> (count == snapshotIndex) {
-<a class="jxr_linenumber" name="168" href="#168">168</a>           MemStoreSnapshot snapshot = <strong class="jxr_keyword">this</strong>.memstore.snapshot();
-<a class="jxr_linenumber" name="169" href="#169">169</a>           <strong class="jxr_keyword">this</strong>.memstore.clearSnapshot(snapshot.getId());
-<a class="jxr_linenumber" name="170" href="#170">170</a>           <em class="jxr_comment">// Added more rows into kvset.  But the scanner wont see these rows.</em>
-<a class="jxr_linenumber" name="171" href="#171">171</a>           addRows(<strong class="jxr_keyword">this</strong>.memstore, ts);
-<a class="jxr_linenumber" name="172" href="#172">172</a>           LOG.info(<span class="jxr_string">"Snapshotted, cleared it and then added values (which wont be seen)"</span>);
-<a class="jxr_linenumber" name="173" href="#173">173</a>         }
-<a class="jxr_linenumber" name="174" href="#174">174</a>         result.clear();
-<a class="jxr_linenumber" name="175" href="#175">175</a>       }
-<a class="jxr_linenumber" name="176" href="#176">176</a>     } <strong class="jxr_keyword">finally</strong> {
-<a class="jxr_linenumber" name="177" href="#177">177</a>       s.close();
-<a class="jxr_linenumber" name="178" href="#178">178</a>     }
-<a class="jxr_linenumber" name="179" href="#179">179</a>     assertEquals(rowCount, count);
-<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>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="183" href="#183">183</a> <em class="jxr_javadoccomment">   * A simple test which verifies the 3 possible states when scanning across snapshot.</em>
-<a class="jxr_linenumber" name="184" href="#184">184</a> <em class="jxr_javadoccomment">   * @throws IOException</em>
-<a class="jxr_linenumber" name="185" href="#185">185</a> <em class="jxr_javadoccomment">   * @throws CloneNotSupportedException</em>
-<a class="jxr_linenumber" name="186" href="#186">186</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="187" href="#187">187</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testScanAcrossSnapshot2() <strong class="jxr_keyword">throws</strong> IOException, CloneNotSupportedException {
-<a class="jxr_linenumber" name="188" href="#188">188</a>     <em class="jxr_comment">// we are going to the scanning across snapshot with two kvs</em>
-<a class="jxr_linenumber" name="189" href="#189">189</a>     <em class="jxr_comment">// kv1 should always be returned before kv2</em>
-<a class="jxr_linenumber" name="190" href="#190">190</a>     <strong class="jxr_keyword">final</strong> byte[] one = Bytes.toBytes(1);
-<a class="jxr_linenumber" name="191" href="#191">191</a>     <strong class="jxr_keyword">final</strong> byte[] two = Bytes.toBytes(2);
-<a class="jxr_linenumber" name="192" href="#192">192</a>     <strong class="jxr_keyword">final</strong> byte[] f = Bytes.toBytes(<span class="jxr_string">"f"</span>);
-<a class="jxr_linenumber" name="193" href="#193">193</a>     <strong class="jxr_keyword">final</strong> byte[] q = Bytes.toBytes(<span class="jxr_string">"q"</span>);
-<a class="jxr_linenumber" name="194" href="#194">194</a>     <strong class="jxr_keyword">final</strong> byte[] v = Bytes.toBytes(3);
-<a class="jxr_linenumber" name="195" href="#195">195</a> 
-<a class="jxr_linenumber" name="196" href="#196">196</a>     <strong class="jxr_keyword">final</strong> KeyValue kv1 = <strong class="jxr_keyword">new</strong> KeyValue(one, f, q, v);
-<a class="jxr_linenumber" name="197" href="#197">197</a>     <strong class="jxr_keyword">final</strong> KeyValue kv2 = <strong class="jxr_keyword">new</strong> KeyValue(two, f, q, v);
+<a class="jxr_linenumber" name="64" href="#64">64</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.mock;
+<a class="jxr_linenumber" name="65" href="#65">65</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.mockito.Mockito.when;
+<a class="jxr_linenumber" name="66" href="#66">66</a>  
+<a class="jxr_linenumber" name="67" href="#67">67</a>  <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> memstore test case */</em>
+<a class="jxr_linenumber" name="68" href="#68">68</a>  @Category({RegionServerTests.<strong class="jxr_keyword">class</strong>, MediumTests.<strong class="jxr_keyword">class</strong>})
+<a class="jxr_linenumber" name="69" href="#69">69</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html">TestDefaultMemStore</a> <strong class="jxr_keyword">extends</strong> TestCase {
+<a class="jxr_linenumber" name="70" href="#70">70</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Log LOG = LogFactory.getLog(TestDefaultMemStore.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="71" href="#71">71</a>    <strong class="jxr_keyword">private</strong> DefaultMemStore memstore;
+<a class="jxr_linenumber" name="72" href="#72">72</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> ROW_COUNT = 10;
+<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> <strong class="jxr_keyword">int</strong> QUALIFIER_COUNT = ROW_COUNT;
+<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> byte [] FAMILY = Bytes.toBytes(<span class="jxr_string">"column"</span>);
+<a class="jxr_linenumber" name="75" href="#75">75</a>    <strong class="jxr_keyword">private</strong> MultiVersionConcurrencyControl mvcc;
+<a class="jxr_linenumber" name="76" href="#76">76</a>    <strong class="jxr_keyword">private</strong> AtomicLong startSeqNum = <strong class="jxr_keyword">new</strong> AtomicLong(0);
+<a class="jxr_linenumber" name="77" href="#77">77</a>  
+<a class="jxr_linenumber" name="78" href="#78">78</a>    @Override
+<a class="jxr_linenumber" name="79" href="#79">79</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setUp() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="80" href="#80">80</a>      <strong class="jxr_keyword">super</strong>.setUp();
+<a class="jxr_linenumber" name="81" href="#81">81</a>      <strong class="jxr_keyword">this</strong>.mvcc = <strong class="jxr_keyword">new</strong> MultiVersionConcurrencyControl();
+<a class="jxr_linenumber" name="82" href="#82">82</a>      <strong class="jxr_keyword">this</strong>.memstore = <strong class="jxr_keyword">new</strong> DefaultMemStore();
+<a class="jxr_linenumber" name="83" href="#83">83</a>    }
+<a class="jxr_linenumber" name="84" href="#84">84</a>  
+<a class="jxr_linenumber" name="85" href="#85">85</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testPutSameKey() {
+<a class="jxr_linenumber" name="86" href="#86">86</a>      byte [] bytes = Bytes.toBytes(getName());
+<a class="jxr_linenumber" name="87" href="#87">87</a>      KeyValue kv = <strong class="jxr_keyword">new</strong> KeyValue(bytes, bytes, bytes, bytes);
+<a class="jxr_linenumber" name="88" href="#88">88</a>      <strong class="jxr_keyword">this</strong>.memstore.add(kv);
+<a class="jxr_linenumber" name="89" href="#89">89</a>      byte [] other = Bytes.toBytes(<span class="jxr_string">"somethingelse"</span>);
+<a class="jxr_linenumber" name="90" href="#90">90</a>      KeyValue samekey = <strong class="jxr_keyword">new</strong> KeyValue(bytes, bytes, bytes, other);
+<a class="jxr_linenumber" name="91" href="#91">91</a>      <strong class="jxr_keyword">this</strong>.memstore.add(samekey);
+<a class="jxr_linenumber" name="92" href="#92">92</a>      Cell found = <strong class="jxr_keyword">this</strong>.memstore.cellSet.first();
+<a class="jxr_linenumber" name="93" href="#93">93</a>      assertEquals(1, <strong class="jxr_keyword">this</strong>.memstore.cellSet.size());
+<a class="jxr_linenumber" name="94" href="#94">94</a>      assertTrue(
+<a class="jxr_linenumber" name="95" href="#95">95</a>        Bytes.toString(found.getValueArray(), found.getValueOffset(), found.getValueLength()),
+<a class="jxr_linenumber" name="96" href="#96">96</a>        CellUtil.matchingValue(samekey, found));
+<a class="jxr_linenumber" name="97" href="#97">97</a>    }
+<a class="jxr_linenumber" name="98" href="#98">98</a>  
+<a class="jxr_linenumber" name="99" href="#99">99</a>    <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="100" href="#100">100</a> <em class="jxr_javadoccomment">   * Test memstore snapshot happening while scanning.</em>
+<a class="jxr_linenumber" name="101" href="#101">101</a> <em class="jxr_javadoccomment">   * @throws IOException</em>
+<a class="jxr_linenumber" name="102" href="#102">102</a> <em class="jxr_javadoccomment">   */</em>
+<a class="jxr_linenumber" name="103" href="#103">103</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testScanAcrossSnapshot() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="104" href="#104">104</a>     <strong class="jxr_keyword">int</strong> rowCount = addRows(<strong class="jxr_keyword">this</strong>.memstore);
+<a class="jxr_linenumber" name="105" href="#105">105</a>     List&lt;KeyValueScanner&gt; memstorescanners = <strong class="jxr_keyword">this</strong>.memstore.getScanners(0);
+<a class="jxr_linenumber" name="106" href="#106">106</a>     Scan scan = <strong class="jxr_keyword">new</strong> Scan();
+<a class="jxr_linenumber" name="107" href="#107">107</a>     List&lt;Cell&gt; result = <strong class="jxr_keyword">new</strong> ArrayList&lt;Cell&gt;();
+<a class="jxr_linenumber" name="108" href="#108">108</a>     Configuration conf = HBaseConfiguration.create();
+<a class="jxr_linenumber" name="109" href="#109">109</a>     ScanInfo scanInfo =
+<a class="jxr_linenumber" name="110" href="#110">110</a>         <strong class="jxr_keyword">new</strong> ScanInfo(conf, <strong class="jxr_keyword">null</strong>, 0, 1, HConstants.LATEST_TIMESTAMP, KeepDeletedCells.FALSE, 0,
+<a class="jxr_linenumber" name="111" href="#111">111</a>             <strong class="jxr_keyword">this</strong>.memstore.comparator);
+<a class="jxr_linenumber" name="112" href="#112">112</a>     ScanType scanType = ScanType.USER_SCAN;
+<a class="jxr_linenumber" name="113" href="#113">113</a>     StoreScanner s = <strong class="jxr_keyword">new</strong> StoreScanner(scan, scanInfo, scanType, <strong class="jxr_keyword">null</strong>, memstorescanners);
+<a class="jxr_linenumber" name="114" href="#114">114</a>     <strong class="jxr_keyword">int</strong> count = 0;
+<a class="jxr_linenumber" name="115" href="#115">115</a>     <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="116" href="#116">116</a>       <strong class="jxr_keyword">while</strong> (s.next(result)) {
+<a class="jxr_linenumber" name="117" href="#117">117</a>         LOG.info(result);
+<a class="jxr_linenumber" name="118" href="#118">118</a>         count++;
+<a class="jxr_linenumber" name="119" href="#119">119</a>         <em class="jxr_comment">// Row count is same as column count.</em>
+<a class="jxr_linenumber" name="120" href="#120">120</a>         assertEquals(rowCount, result.size());
+<a class="jxr_linenumber" name="121" href="#121">121</a>         result.clear();
+<a class="jxr_linenumber" name="122" href="#122">122</a>       }
+<a class="jxr_linenumber" name="123" href="#123">123</a>     } <strong class="jxr_keyword">finally</strong> {
+<a class="jxr_linenumber" name="124" href="#124">124</a>       s.close();
+<a class="jxr_linenumber" name="125" href="#125">125</a>     }
+<a class="jxr_linenumber" name="126" href="#126">126</a>     assertEquals(rowCount, count);
+<a class="jxr_linenumber" name="127" href="#127">127</a>     <strong class="jxr_keyword">for</strong> (KeyValueScanner scanner : memstorescanners) {
+<a class="jxr_linenumber" name="128" href="#128">128</a>       scanner.close();
+<a class="jxr_linenumber" name="129" href="#129">129</a>     }
+<a class="jxr_linenumber" name="130" href="#130">130</a> 
+<a class="jxr_linenumber" name="131" href="#131">131</a>     memstorescanners = <strong class="jxr_keyword">this</strong>.memstore.getScanners(mvcc.getReadPoint());
+<a class="jxr_linenumber" name="132" href="#132">132</a>     <em class="jxr_comment">// Now assert can count same number even if a snapshot mid-scan.</em>
+<a class="jxr_linenumber" name="133" href="#133">133</a>     s = <strong class="jxr_keyword">new</strong> StoreScanner(scan, scanInfo, scanType, <strong class="jxr_keyword">null</strong>, memstorescanners);
+<a class="jxr_linenumber" name="134" href="#134">134</a>     count = 0;
+<a class="jxr_linenumber" name="135" href="#135">135</a>     <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="136" href="#136">136</a>       <strong class="jxr_keyword">while</strong> (s.next(result)) {
+<a class="jxr_linenumber" name="137" href="#137">137</a>         LOG.info(result);
+<a class="jxr_linenumber" name="138" href="#138">138</a>         <em class="jxr_comment">// Assert the stuff is coming out in right order.</em>
+<a class="jxr_linenumber" name="139" href="#139">139</a>         assertTrue(CellUtil.matchingRow(result.get(0), Bytes.toBytes(count)));
+<a class="jxr_linenumber" name="140" href="#140">140</a>         count++;
+<a class="jxr_linenumber" name="141" href="#141">141</a>         <em class="jxr_comment">// Row count is same as column count.</em>
+<a class="jxr_linenumber" name="142" href="#142">142</a>         assertEquals(rowCount, result.size());
+<a class="jxr_linenumber" name="143" href="#143">143</a>         <strong class="jxr_keyword">if</strong> (count == 2) {
+<a class="jxr_linenumber" name="144" href="#144">144</a>           <strong class="jxr_keyword">this</strong>.memstore.snapshot();
+<a class="jxr_linenumber" name="145" href="#145">145</a>           LOG.info(<span class="jxr_string">"Snapshotted"</span>);
+<a class="jxr_linenumber" name="146" href="#146">146</a>         }
+<a class="jxr_linenumber" name="147" href="#147">147</a>         result.clear();
+<a class="jxr_linenumber" name="148" href="#148">148</a>       }
+<a class="jxr_linenumber" name="149" href="#149">149</a>     } <strong class="jxr_keyword">finally</strong> {
+<a class="jxr_linenumber" name="150" href="#150">150</a>       s.close();
+<a class="jxr_linenumber" name="151" href="#151">151</a>     }
+<a class="jxr_linenumber" name="152" href="#152">152</a>     assertEquals(rowCount, count);
+<a class="jxr_linenumber" name="153" href="#153">153</a>     <strong class="jxr_keyword">for</strong> (KeyValueScanner scanner : memstorescanners) {
+<a class="jxr_linenumber" name="154" href="#154">154</a>       scanner.close();
+<a class="jxr_linenumber" name="155" href="#155">155</a>     }
+<a class="jxr_linenumber" name="156" href="#156">156</a>     memstorescanners = <strong class="jxr_keyword">this</strong>.memstore.getScanners(mvcc.getReadPoint());
+<a class="jxr_linenumber" name="157" href="#157">157</a>     <em class="jxr_comment">// Assert that new values are seen in kvset as we scan.</em>
+<a class="jxr_linenumber" name="158" href="#158">158</a>     <strong class="jxr_keyword">long</strong> ts = System.currentTimeMillis();
+<a class="jxr_linenumber" name="159" href="#159">159</a>     s = <strong class="jxr_keyword">new</strong> StoreScanner(scan, scanInfo, scanType, <strong class="jxr_keyword">null</strong>, memstorescanners);
+<a class="jxr_linenumber" name="160" href="#160">160</a>     count = 0;
+<a class="jxr_linenumber" name="161" href="#161">161</a>     <strong class="jxr_keyword">int</strong> snapshotIndex = 5;
+<a class="jxr_linenumber" name="162" href="#162">162</a>     <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="163" href="#163">163</a>       <strong class="jxr_keyword">while</strong> (s.next(result)) {
+<a class="jxr_linenumber" name="164" href="#164">164</a>         LOG.info(result);
+<a class="jxr_linenumber" name="165" href="#165">165</a>         <em class="jxr_comment">// Assert the stuff is coming out in right order.</em>
+<a class="jxr_linenumber" name="166" href="#166">166</a>         assertTrue(CellUtil.matchingRow(result.get(0), Bytes.toBytes(count)));
+<a class="jxr_linenumber" name="167" href="#167">167</a>         <em class="jxr_comment">// Row count is same as column count.</em>
+<a class="jxr_linenumber" name="168" href="#168">168</a>         assertEquals(<span class="jxr_string">"count="</span> + count + <span class="jxr_string">", result="</span> + result, rowCount, result.size());
+<a class="jxr_linenumber" name="169" href="#169">169</a>         count++;
+<a class="jxr_linenumber" name="170" href="#170">170</a>         <strong class="jxr_keyword">if</strong> (count == snapshotIndex) {
+<a class="jxr_linenumber" name="171" href="#171">171</a>           MemStoreSnapshot snapshot = <strong class="jxr_keyword">this</strong>.memstore.snapshot();
+<a class="jxr_linenumber" name="172" href="#172">172</a>           <strong class="jxr_keyword">this</strong>.memstore.clearSnapshot(snapshot.getId());
+<a class="jxr_linenumber" name="173" href="#173">173</a>           <em class="jxr_comment">// Added more rows into kvset.  But the scanner wont see these rows.</em>
+<a class="jxr_linenumber" name="174" href="#174">174</a>           addRows(<strong class="jxr_keyword">this</strong>.memstore, ts);
+<a class="jxr_linenumber" name="175" href="#175">175</a>           LOG.info(<span class="jxr_string">"Snapshotted, cleared it and then added values (which wont be seen)"</span>);
+<a class="jxr_linenumber" name="176" href="#176">176</a>         }
+<a class="jxr_linenumber" name="177" href="#177">177</a>         result.clear();
+<a class="jxr_linenumber" name="178" href="#178">178</a>       }
+<a class="jxr_linenumber" name="179" href="#179">179</a>     } <strong class="jxr_keyword">finally</strong> {
+<a class="jxr_linenumber" name="180" href="#180">180</a>       s.close();
+<a class="jxr_linenumber" name="181" href="#181">181</a>     }
+<a class="jxr_linenumber" name="182" href="#182">182</a>     assertEquals(rowCount, count);
+<a class="jxr_linenumber" name="183" href="#183">183</a>   }
+<a class="jxr_linenumber" name="184" href="#184">184</a> 
+<a class="jxr_linenumber" name="185" href="#185">185</a>   <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="186" href="#186">186</a> <em class="jxr_javadoccomment">   * A simple test which verifies the 3 possible states when scanning across snapshot.</em>
+<a class="jxr_linenumber" name="187" href="#187">187</a> <em class="jxr_javadoccomment">   * @throws IOException</em>
+<a class="jxr_linenumber" name="188" href="#188">188</a> <em class="jxr_javadoccomment">   * @throws CloneNotSupportedException</em>
+<a class="jxr_linenumber" name="189" href="#189">189</a> <em class="jxr_javadoccomment">   */</em>
+<a class="jxr_linenumber" name="190" href="#190">190</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testScanAcrossSnapshot2() <strong class="jxr_keyword">throws</strong> IOException, CloneNotSupportedException {
+<a class="jxr_linenumber" name="191" href="#191">191</a>     <em class="jxr_comment">// we are going to the scanning across snapshot with two kvs</em>
+<a class="jxr_linenumber" name="192" href="#192">192</a>     <em class="jxr_comment">// kv1 should always be returned before kv2</em>
+<a class="jxr_linenumber" name="193" href="#193">193</a>     <strong class="jxr_keyword">final</strong> byte[] one = Bytes.toBytes(1);
+<a class="jxr_linenumber" name="194" href="#194">194</a>     <strong class="jxr_keyword">final</strong> byte[] two = Bytes.toBytes(2);
+<a class="jxr_linenumber" name="195" href="#195">195</a>     <strong class="jxr_keyword">final</strong> byte[] f = Bytes.toBytes(<span class="jxr_string">"f"</span>);
+<a class="jxr_linenumber" name="196" href="#196">196</a>     <strong class="jxr_keyword">final</strong> byte[] q = Bytes.toBytes(<span class="jxr_string">"q"</span>);
+<a class="jxr_linenumber" name="197" href="#197">197</a>     <strong class="jxr_keyword">final</strong> byte[] v = Bytes.toBytes(3);
 <a class="jxr_linenumber" name="198" href="#198">198</a> 
-<a class="jxr_linenumber" name="199" href="#199">199</a>     <em class="jxr_comment">// use case 1: both kvs in kvset</em>
-<a class="jxr_linenumber" name="200" href="#200">200</a>     <strong class="jxr_keyword">this</strong>.memstore.add(kv1.clone());
-<a class="jxr_linenumber" name="201" href="#201">201</a>     <strong class="jxr_keyword">this</strong>.memstore.add(kv2.clone());
-<a class="jxr_linenumber" name="202" href="#202">202</a>     verifyScanAcrossSnapshot2(kv1, kv2);
-<a class="jxr_linenumber" name="203" href="#203">203</a> 
-<a class="jxr_linenumber" name="204" href="#204">204</a>     <em class="jxr_comment">// use case 2: both kvs in snapshot</em>
-<a class="jxr_linenumber" name="205" href="#205">205</a>     <strong class="jxr_keyword">this</strong>.memstore.snapshot();
-<a class="jxr_linenumber" name="206" href="#206">206</a>     verifyScanAcrossSnapshot2(kv1, kv2);
-<a class="jxr_linenumber" name="207" href="#207">207</a> 
-<a class="jxr_linenumber" name="208" href="#208">208</a>     <em class="jxr_comment">// use case 3: first in snapshot second in kvset</em>
-<a class="jxr_linenumber" name="209" href="#209">209</a>     <strong class="jxr_keyword">this</strong>.memstore = <strong class="jxr_keyword">new</strong> DefaultMemStore();
-<a class="jxr_linenumber" name="210" href="#210">210</a>     <strong class="jxr_keyword">this</strong>.memstore.add(kv1.clone());
-<a class="jxr_linenumber" name="211" href="#211">211</a>     <strong class="jxr_keyword">this</strong>.memstore.snapshot();
-<a class="jxr_linenumber" name="212" href="#212">212</a>     <strong class="jxr_keyword">this</strong>.memstore.add(kv2.clone());
-<a class="jxr_linenumber" name="213" href="#213">213</a>     verifyScanAcrossSnapshot2(kv1, kv2);
-<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>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> verifyScanAcrossSnapshot2(KeyValue kv1, KeyValue kv2)
-<a class="jxr_linenumber" name="217" href="#217">217</a>       <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="218" href="#218">218</a>     List&lt;KeyValueScanner&gt; memstorescanners = <strong class="jxr_keyword">this</strong>.memstore.getScanners(mvcc.getReadPoint());
-<a class="jxr_linenumber" name="219" href="#219">219</a>     assertEquals(1, memstorescanners.size());
-<a class="jxr_linenumber" name="220" href="#220">220</a>     <strong class="jxr_keyword">final</strong> KeyValueScanner scanner = memstorescanners.get(0);
-<a class="jxr_linenumber" name="221" href="#221">221</a>     scanner.seek(KeyValueUtil.createFirstOnRow(HConstants.EMPTY_START_ROW));
-<a class="jxr_linenumber" name="222" href="#222">222</a>     assertEquals(kv1, scanner.next());
-<a class="jxr_linenumber" name="223" href="#223">223</a>     assertEquals(kv2, scanner.next());
-<a class="jxr_linenumber" name="224" href="#224">224</a>     assertNull(scanner.next());
-<a class="jxr_linenumber" name="225" href="#225">225</a>   }
-<a class="jxr_linenumber" name="226" href="#226">226</a> 
-<a class="jxr_linenumber" name="227" href="#227">227</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> assertScannerResults(KeyValueScanner scanner, KeyValue[] expected)
-<a class="jxr_linenumber" name="228" href="#228">228</a>       <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="229" href="#229">229</a>     scanner.seek(KeyValueUtil.createFirstOnRow(<strong class="jxr_keyword">new</strong> byte[]{}));
-<a class="jxr_linenumber" name="230" href="#230">230</a>     List&lt;Cell&gt; returned = Lists.newArrayList();
-<a class="jxr_linenumber" name="231" href="#231">231</a> 
-<a class="jxr_linenumber" name="232" href="#232">232</a>     <strong class="jxr_keyword">while</strong> (<strong class="jxr_keyword">true</strong>) {
-<a class="jxr_linenumber" name="233" href="#233">233</a>       Cell next = scanner.next();
-<a class="jxr_linenumber" name="234" href="#234">234</a>       <strong class="jxr_keyword">if</strong> (next == <strong class="jxr_keyword">null</strong>) <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="235" href="#235">235</a>       returned.add(next);
-<a class="jxr_linenumber" name="236" href="#236">236</a>     }
-<a class="jxr_linenumber" name="237" href="#237">237</a> 
-<a class="jxr_linenumber" name="238" href="#238">238</a>     assertTrue(
-<a class="jxr_linenumber" name="239" href="#239">239</a>         <span class="jxr_string">"Got:\n"</span> + Joiner.on(<span class="jxr_string">"\n"</span>).join(returned) +
-<a class="jxr_linenumber" name="240" href="#240">240</a>         <span class="jxr_string">"\nExpected:\n"</span> + Joiner.on(<span class="jxr_string">"\n"</span>).join(expected),
-<a class="jxr_linenumber" name="241" href="#241">241</a>         Iterables.elementsEqual(Arrays.asList(expected), returned));
-<a class="jxr_linenumber" name="242" href="#242">242</a>     assertNull(scanner.peek());
-<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>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testMemstoreConcurrentControl() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="246" href="#246">246</a>     <strong class="jxr_keyword">final</strong> byte[] row = Bytes.toBytes(1);
-<a class="jxr_linenumber" name="247" href="#247">247</a>     <strong class="jxr_keyword">final</strong> byte[] f = Bytes.toBytes(<span class="jxr_string">"family"</span>);
-<a class="jxr_linenumber" name="248" href="#248">248</a>     <strong class="jxr_keyword">final</strong> byte[] q1 = Bytes.toBytes(<span class="jxr_string">"q1"</span>);
-<a class="jxr_linenumber" name="249" href="#249">249</a>     <strong class="jxr_keyword">final</strong> byte[] q2 = Bytes.toBytes(<span class="jxr_string">"q2"</span>);
-<a class="jxr_linenumber" name="250" href="#250">250</a>     <strong class="jxr_keyword">final</strong> byte[] v = Bytes.toBytes(<span class="jxr_string">"value"</span>);
-<a class="jxr_linenumber" name="251" href="#251">251</a> 
-<a class="jxr_linenumber" name="252" href="#252">252</a>     MultiVersionConcurrencyControl.WriteEntry w =
-<a class="jxr_linenumber" name="253" href="#253">253</a>         mvcc.begin();
+<a class="jxr_linenumber" name="199" href="#199">199</a>     <strong class="jxr_keyword">final</strong> KeyValue kv1 = <strong class="jxr_keyword">new</strong> KeyValue(one, f, q, v);
+<a class="jxr_linenumber" name="200" href="#200">200</a>     <strong class="jxr_keyword">final</strong> KeyValue kv2 = <strong class="jxr_keyword">new</strong> KeyValue(two, f, q, v);
+<a class="jxr_linenumber" name="201" href="#201">201</a> 
+<a class="jxr_linenumber" name="202" href="#202">202</a>     <em class="jxr_comment">// use case 1: both kvs in kvset</em>
+<a class="jxr_linenumber" name="203" href="#203">203</a>     <strong class="jxr_keyword">this</strong>.memstore.add(kv1.clone());
+<a class="jxr_linenumber" name="204" href="#204">204</a>     <strong class="jxr_keyword">this</strong>.memstore.add(kv2.clone());
+<a class="jxr_linenumber" name="205" href="#205">205</a>     verifyScanAcrossSnapshot2(kv1, kv2);
+<a class="jxr_linenumber" name="206" href="#206">206</a> 
+<a class="jxr_linenumber" name="207" href="#207">207</a>     <em class="jxr_comment">// use case 2: both kvs in snapshot</em>
+<a class="jxr_linenumber" name="208" href="#208">208</a>     <strong class="jxr_keyword">this</strong>.memstore.snapshot();
+<a class="jxr_linenumber" name="209" href="#209">209</a>     verifyScanAcrossSnapshot2(kv1, kv2);
+<a class="jxr_linenumber" name="210" href="#210">210</a> 
+<a class="jxr_linenumber" name="211" href="#211">211</a>     <em class="jxr_comment">// use case 3: first in snapshot second in kvset</em>
+<a class="jxr_linenumber" name="212" href="#212">212</a>     <strong class="jxr_keyword">this</strong>.memstore = <strong class="jxr_keyword">new</strong> DefaultMemStore();
+<a class="jxr_linenumber" name="213" href="#213">213</a>     <strong class="jxr_keyword">this</strong>.memstore.add(kv1.clone());
+<a class="jxr_linenumber" name="214" href="#214">214</a>     <strong class="jxr_keyword">this</strong>.memstore.snapshot();
+<a class="jxr_linenumber" name="215" href="#215">215</a>     <strong class="jxr_keyword">this</strong>.memstore.add(kv2.clone());
+<a class="jxr_linenumber" name="216" href="#216">216</a>     verifyScanAcrossSnapshot2(kv1, kv2);
+<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>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> verifyScanAcrossSnapshot2(KeyValue kv1, KeyValue kv2)
+<a class="jxr_linenumber" name="220" href="#220">220</a>       <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="221" href="#221">221</a>     List&lt;KeyValueScanner&gt; memstorescanners = <strong class="jxr_keyword">this</strong>.memstore.getScanners(mvcc.getReadPoint());
+<a class="jxr_linenumber" name="222" href="#222">222</a>     assertEquals(1, memstorescanners.size());
+<a class="jxr_linenumber" name="223" href="#223">223</a>     <strong class="jxr_keyword">final</strong> KeyValueScanner scanner = memstorescanners.get(0);
+<a class="jxr_linenumber" name="224" href="#224">224</a>     scanner.seek(KeyValueUtil.createFirstOnRow(HConstants.EMPTY_START_ROW));
+<a class="jxr_linenumber" name="225" href="#225">225</a>     assertEquals(kv1, scanner.next());
+<a class="jxr_linenumber" name="226" href="#226">226</a>     assertEquals(kv2, scanner.next());
+<a class="jxr_linenumber" name="227" href="#227">227</a>     assertNull(scanner.next());
+<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>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> assertScannerResults(KeyValueScanner scanner, KeyValue[] expected)
+<a class="jxr_linenumber" name="231" href="#231">231</a>       <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="232" href="#232">232</a>     scanner.seek(KeyValueUtil.createFirstOnRow(<strong class="jxr_keyword">new</strong> byte[]{}));
+<a class="jxr_linenumber" name="233" href="#233">233</a>     List&lt;Cell&gt; returned = Lists.newArrayList();
+<a class="jxr_linenumber" name="234" href="#234">234</a> 
+<a class="jxr_linenumber" name="235" href="#235">235</a>     <strong class="jxr_keyword">while</strong> (<strong class="jxr_keyword">true</strong>) {
+<a class="jxr_linenumber" name="236" href="#236">236</a>       Cell next = scanner.next();
+<a class="jxr_linenumber" name="237" href="#237">237</a>       <strong class="jxr_keyword">if</strong> (next == <strong class="jxr_keyword">null</strong>) <strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="238" href="#238">238</a>       returned.add(next);
+<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>     assertTrue(
+<a class="jxr_linenumber" name="242" href="#242">242</a>         <span class="jxr_string">"Got:\n"</span> + Joiner.on(<span class="jxr_string">"\n"</span>).join(returned) +
+<a class="jxr_linenumber" name="243" href="#243">243</a>         <span class="jxr_string">"\nExpected:\n"</span> + Joiner.on(<span class="jxr_string">"\n"</span>).join(expected),
+<a class="jxr_linenumber" name="244" href="#244">244</a>         Iterables.elementsEqual(Arrays.asList(expected), returned));
+<a class="jxr_linenumber" name="245" href="#245">245</a>     assertNull(scanner.peek());
+<a class="jxr_linenumber" name="246" href="#246">246</a>   }
+<a class="jxr_linenumber" name="247" href="#247">247</a> 
+<a class="jxr_linenumber" name="248" href="#248">248</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testMemstoreConcurrentControl() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="249" href="#249">249</a>     <strong class="jxr_keyword">final</strong> byte[] row = Bytes.toBytes(1);
+<a class="jxr_linenumber" name="250" href="#250">250</a>     <strong class="jxr_keyword">final</strong> byte[] f = Bytes.toBytes(<span class="jxr_string">"family"</span>);
+<a class="jxr_linenumber" name="251" href="#251">251</a>     <strong class="jxr_keyword">final</strong> byte[] q1 = Bytes.toBytes(<span class="jxr_string">"q1"</span>);
+<a class="jxr_linenumber" name="252" href="#252">252</a>     <strong class="jxr_keyword">final</strong> byte[] q2 = Bytes.toBytes(<span class="jxr_string">"q2"</span>);
+<a class="jxr_linenumber" name="253" href="#253">253</a>     <strong class="jxr_keyword">final</strong> byte[] v = Bytes.toBytes(<span class="jxr_string">"value"</span>);
 <a class="jxr_linenumber" name="254" href="#254">254</a> 
-<a class="jxr_linenumber" name="255" href="#255">255</a>     KeyValue kv1 = <strong class="jxr_keyword">new</strong> KeyValue(row, f, q1, v);
-<a class="jxr_linenumber" name="256" href="#256">256</a>     kv1.setSequenceId(w.getWriteNumber());
-<a class="jxr_linenumber" name="257" href="#257">257</a>     memstore.add(kv1);
-<a class="jxr_linenumber" name="258" href="#258">258</a> 
-<a class="jxr_linenumber" name="259" href="#259">259</a>     KeyValueScanner s = <strong class="jxr_keyword">this</strong>.memstore.getScanners(mvcc.getReadPoint()).get(0);
-<a class="jxr_linenumber" name="260" href="#260">260</a>     assertScannerResults(s, <strong class="jxr_keyword">new</strong> KeyValue[]{});
+<a class="jxr_linenumber" name="255" href="#255">255</a>     MultiVersionConcurrencyControl.WriteEntry w =
+<a class="jxr_linenumber" name="256" href="#256">256</a>         mvcc.begin();
+<a class="jxr_linenumber" name="257" href="#257">257</a> 
+<a class="jxr_linenumber" name="258" href="#258">258</a>     KeyValue kv1 = <strong class="jxr_keyword">new</strong> KeyValue(row, f, q1, v);
+<a class="jxr_linenumber" name="259" href="#259">259</a>     kv1.setSequenceId(w.getWriteNumber());
+<a class="jxr_linenumber" name="260" href="#260">260</a>     memstore.add(kv1);
 <a class="jxr_linenumber" name="261" href="#261">261</a> 
-<a class="jxr_linenumber" name="262" href="#262">262</a>     mvcc.completeAndWait(w);
-<a class="jxr_linenumber" name="263" href="#263">263</a> 
-<a class="jxr_linenumber" name="264" href="#264">264</a>     s = <strong class="jxr_keyword">this</strong>.memstore.getScanners(mvcc.getReadPoint()).get(0);
-<a class="jxr_linenumber" name="265" href="#265">265</a>     assertScannerResults(s, <strong class="jxr_keyword">new</strong> KeyValue[]{kv1});
+<a class="jxr_linenumber" name="262" href="#262">262</a>     KeyValueScanner s = <strong class="jxr_keyword">this</strong>.memstore.getScanners(mvcc.getReadPoint()).get(0);
+<a class="jxr_linenumber" name="263" href="#263">263</a>     assertScannerResults(s, <strong class="jxr_keyword">new</strong> KeyValue[]{});
+<a class="jxr_linenumber" name="264" href="#264">264</a> 
+<a class="jxr_linenumber" name="265" href="#265">265</a>     mvcc.completeAndWait(w);
 <a class="jxr_linenumber" name="266" href="#266">266</a> 
-<a class="jxr_linenumber" name="267" href="#267">267</a>     w = mvcc.begin();
-<a class="jxr_linenumber" name="268" href="#268">268</a>     KeyValue kv2 = <strong class="jxr_keyword">new</strong> KeyValue(row, f, q2, v);
-<a class="jxr_linenumber" name="269" href="#269">269</a>     kv2.setSequenceId(w.getWriteNumber());
-<a class="jxr_linenumber" name="270" href="#270">270</a>     memstore.add(kv2);
-<a class="jxr_linenumber" name="271" href="#271">271</a> 
-<a class="jxr_linenumber" name="272" href="#272">272</a>     s = <strong class="jxr_keyword">this</strong>.memstore.getScanners(mvcc.getReadPoint()).get(0);
-<a class="jxr_linenumber" name="273" href="#273">273</a>     assertScannerResults(s, <strong class="jxr_keyword">new</strong> KeyValue[]{kv1});
+<a class="jxr_linenumber" name="267" href="#267">267</a>     s = <strong class="jxr_keyword">this</strong>.memstore.getScanners(mvcc.getReadPoint()).get(0);
+<a class="jxr_linenumber" name="268" href="#268">268</a>     assertScannerResults(s, <strong class="jxr_keyword">new</strong> KeyValue[]{kv1});
+<a class="jxr_linenumber" name="269" href="#269">269</a> 
+<a class="jxr_linenumber" name="270" href="#270">270</a>     w = mvcc.begin();
+<a class="jxr_linenumber" name="271" href="#271">271</a>     KeyValue kv2 = <strong class="jxr_keyword">new</strong> KeyValue(row, f, q2, v);
+<a class="jxr_linenumber" name="272" href="#272">272</a>     kv2.setSequenceId(w.getWriteNumber());
+<a class="jxr_linenumber" name="273" href="#273">273</a>     memstore.add(kv2);
 <a class="jxr_linenumber" name="274" href="#274">274</a> 
-<a class="jxr_linenumber" name="275" href="#275">275</a>     mvcc.completeAndWait(w);
-<a class="jxr_linenumber" name="276" href="#276">276</a> 
-<a class="jxr_linenumber" name="277" href="#277">277</a>     s = <strong class="jxr_keyword">this</strong>.memstore.getScanners(mvcc.getReadPoint()).get(0);
-<a class="jxr_linenumber" name="278" href="#278">278</a>     assertScannerResults(s, <strong class="jxr_keyword">new</strong> KeyValue[]{kv1, kv2});
-<a class="jxr_linenumber" name="279" href="#279">279</a>   }
-<a class="jxr_linenumber" name="280" href="#280">280</a> 
-<a class="jxr_linenumber" name="281" href="#281">281</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="282" href="#282">282</a> <em class="jxr_javadoccomment">   * Regression test for HBASE-2616, HBASE-2670.</em>
-<a class="jxr_linenumber" name="283" href="#283">283</a> <em class="jxr_javadoccomment">   * When we insert a higher-memstoreTS version of a cell but with</em>
-<a class="jxr_linenumber" name="284" href="#284">284</a> <em class="jxr_javadoccomment">   * the same timestamp, we still need to provide consistent reads</em>
-<a class="jxr_linenumber" name="285" href="#285">285</a> <em class="jxr_javadoccomment">   * for the same scanner.</em>
-<a class="jxr_linenumber" name="286" href="#286">286</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="287" href="#287">287</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testMemstoreEditsVisibilityWithSameKey() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="288" href="#288">288</a>     <strong class="jxr_keyword">final</strong> byte[] row = Bytes.toBytes(1);
-<a class="jxr_linenumber" name="289" href="#289">289</a>     <strong class="jxr_keyword">final</strong> byte[] f = Bytes.toBytes(<span class="jxr_string">"family"</span>);
-<a class="jxr_linenumber" name="290" href="#290">290</a>     <strong class="jxr_keyword">final</strong> byte[] q1 = Bytes.toBytes(<span class="jxr_string">"q1"</span>);
-<a class="jxr_linenumber" name="291" href="#291">291</a>     <strong class="jxr_keyword">final</strong> byte[] q2 = Bytes.toBytes(<span class="jxr_string">"q2"</span>);
-<a class="jxr_linenumber" name="292" href="#292">292</a>     <strong class="jxr_keyword">final</strong> byte[] v1 = Bytes.toBytes(<span class="jxr_string">"value1"</span>);
-<a class="jxr_linenumber" name="293" href="#293">293</a>     <strong class="jxr_keyword">final</strong> byte[] v2 = Bytes.toBytes(<span class="jxr_string">"value2"</span>);
-<a class="jxr_linenumber" name="294" href="#294">294</a> 
-<a class="jxr_linenumber" name="295" href="#295">295</a>     <em class="jxr_comment">// INSERT 1: Write both columns val1</em>
-<a class="jxr_linenumber" name="296" href="#296">296</a>     MultiVersionConcurrencyControl.WriteEntry w =
-<a class="jxr_linenumber" name="297" href="#297">297</a>         mvcc.begin();
-<a class="jxr_linenumber" name="298" href="#298">298</a> 
-<a class="jxr_linenumber" name="299" href="#299">299</a>     KeyValue kv11 = <strong class="jxr_keyword">new</strong> KeyValue(row, f, q1, v1);
-<a class="jxr_linenumber" name="300" href="#300">300</a>     kv11.setSequenceId(w.getWriteNumber());
-<a class="jxr_linenumber" name="301" href="#301">301</a>     memstore.add(kv11);
-<a class="jxr_linenumber" name="302" href="#302">302</a> 
-<a class="jxr_linenumber" name="303" href="#303">303</a>     KeyValue kv12 = <strong class="jxr_keyword">new</strong> KeyValue(row, f, q2, v1);
-<a class="jxr_linenumber" name="304" href="#304">304</a>     kv12.setSequenceId(w.getWriteNumber());
-<a class="jxr_linenumber" name="305" href="#305">305</a>     memstore.add(kv12);
-<a class="jxr_linenumber" name="306" href="#306">306</a>     mvcc.completeAndWait(w);
-<a class="jxr_linenumber" name="307" href="#307">307</a> 
-<a class="jxr_linenumber" name="308" href="#308">308</a>     <em class="jxr_comment">// BEFORE STARTING INSERT 2, SEE FIRST KVS</em>
-<a class="jxr_linenumber" name="309" href="#309">309</a>     KeyValueScanner s = <strong class="jxr_keyword">this</strong>.memstore.getScanners(mvcc.getReadPoint()).get(0);
-<a class="jxr_linenumber" name="310" href="#310">310</a>     assertScannerResults(s, <strong class="jxr_keyword">new</strong> KeyValue[]{kv11, kv12});
-<a class="jxr_linenumber" name="311" href="#311">311</a> 
-<a class="jxr_linenumber" name="312" href="#312">312</a>     <em class="jxr_comment">// START INSERT 2: Write both columns val2</em>
-<a class="jxr_linenumber" name="313" href="#313">313</a>     w = mvcc.begin();
-<a class="jxr_linenumber" name="314" href="#314">314</a>     KeyValue kv21 = <strong class="jxr_keyword">new</strong> KeyValue(row, f, q1, v2);
-<a class="jxr_linenumber" name="315" href="#315">315</a>     kv21.setSequenceId(w.getWriteNumber());
-<a class="jxr_linenumber" name="316" href="#316">316</a>     memstore.add(kv21);
-<a class="jxr_linenumber" name="317" href="#317">317</a> 
-<a class="jxr_linenumber" name="318" href="#318">318</a>     KeyValue kv22 = <strong class="jxr_keyword">new</strong> KeyValue(row, f, q2, v2);
-<a class="jxr_linenumber" name="319" href="#319">319</a>     kv22.setSequenceId(w.getWriteNumber());
-<a class="jxr_linenumber" name="320" href="#320">320</a>     memstore.add(kv22);
-<a class="jxr_linenumber" name="321" href="#321">321</a> 
-<a class="jxr_linenumber" name="322" href="#322">322</a>     <em class="jxr_comment">// BEFORE COMPLETING INSERT 2, SEE FIRST KVS</em>
-<a class="jxr_linenumber" name="323" href="#323">323</a>     s = <strong class="jxr_keyword">this</strong>.memstore.getScanners(mvcc.getReadPoint()).get(0);
-<a class="jxr_linenumber" name="324" href="#324">324</a>     assertScannerResults(s, <strong class="jxr_keyword">new</strong> KeyValue[]{kv11, kv12});
-<a class="jxr_linenumber" name="325" href="#325">325</a> 
-<a class="jxr_linenumber" name="326" href="#326">326</a>     <em class="jxr_comment">// COMPLETE INSERT 2</em>
-<a class="jxr_linenumber" name="327" href="#327">327</a>     mvcc.completeAndWait(w);
+<a class="jxr_linenumber" name="275" href="#275">275</a>     s = <strong class="jxr_keyword">this</strong>.memstore.getScanners(mvcc.getReadPoint()).get(0);
+<a class="jxr_linenumber" name="276" href="#276">276</a>     assertScannerResults(s, <strong class="jxr_keyword">new</strong> KeyValue[]{kv1});
+<a class="jxr_linenumber" name="277" href="#277">277</a> 
+<a class="jxr_linenumber" name="278" href="#278">278</a>     mvcc.completeAndWait(w);
+<a class="jxr_linenumber" name="279" href="#279">279</a> 
+<a class="jxr_linenumber" name="280" href="#280">280</a>     s = <strong class="jxr_keyword">this</strong>.memstore.getScanners(mvcc.getReadPoint()).get(0);
+<a class="jxr_linenumber" name="281" href="#281">281</a>     assertScannerResults(s, <strong class="jxr_keyword">new</strong> KeyValue[]{kv1, kv2});
+<a class="jxr_linenumber" name="282" href="#282">282</a>   }
+<a class="jxr_linenumber" name="283" href="#283">283</a> 
+<a class="jxr_linenumber" name="284" href="#284">284</a>   <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="285" href="#285">285</a> <em class="jxr_javadoccomment">   * Regression test for HBASE-2616, HBASE-2670.</em>
+<a class="jxr_linenumber" name="286" href="#286">286</a> <em class="jxr_javadoccomment">   * When we insert a higher-memstoreTS version of a cell but with</em>
+<a class="jxr_linenumber" name="287" href="#287">287</a> <em class="jxr_javadoccomment">   * the same timestamp, we still need to provide consistent reads</em>
+<a class="jxr_linenumber" name="288" href="#288">288</a> <em class="jxr_javadoccomment">   * for the same scanner.</em>
+<a class="jxr_linenumber" name="289" href="#289">289</a> <em class="jxr_javadoccomment">   */</em>
+<a class="jxr_linenumber" name="290" href="#290">290</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testMemstoreEditsVisibilityWithSameKey() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="291" href="#291">291</a>     <strong class="jxr_keyword">final</strong> byte[] row = Bytes.toBytes(1);
+<a class="jxr_linenumber" name="292" href="#292">292</a>     <strong class="jxr_keyword">final</strong> byte[] f = Bytes.toBytes(<span class="jxr_string">"family"</span>);
+<a class="jxr_linenumber" name="293" href="#293">293</a>     <strong class="jxr_keyword">final</strong> byte[] q1 = Bytes.toBytes(<span class="jxr_string">"q1"</span>);
+<a class="jxr_linenumber" name="294" href="#294">294</a>     <strong class="jxr_keyword">final</strong> byte[] q2 = Bytes.toBytes(<span class="jxr_string">"q2"</span>);
+<a class="jxr_linenumber" name="295" href="#295">295</a>     <strong class="jxr_keyword">final</strong> byte[] v1 = Bytes.toBytes(<span class="jxr_string">"value1"</span>);
+<a class="jxr_linenumber" name="296" href="#296">296</a>     <strong class="jxr_keyword">final</strong> byte[] v2 = Bytes.toBytes(<span class="jxr_string">"value2"</span>);
+<a class="jxr_linenumber" name="297" href="#297">297</a> 
+<a class="jxr_linenumber" name="298" href="#298">298</a>     <em class="jxr_comment">// INSERT 1: Write both columns val1</em>
+<a class="jxr_linenumber" name="299" href="#299">299</a>     MultiVersionConcurrencyControl.WriteEntry w =
+<a class="jxr_linenumber" name="300" href="#300">300</a>         mvcc.begin();
+<a class="jxr_linenumber" name="301" href="#301">301</a> 
+<a class="jxr_linenumber" name="302" href="#302">302</a>     KeyValue kv11 = <strong class="jxr_keyword">new</strong> KeyValue(row, f, q1, v1);
+<a class="jxr_linenumber" name="303" href="#303">303</a>     kv11.setSequenceId(w.getWriteNumber());
+<a class="jxr_linenumber" name="304" href="#304">304</a>     memstore.add(kv11);
+<a class="jxr_linenumber" name="305" href="#305">305</a> 
+<a class="jxr_linenumber" name="306" href="#306">306</a>     KeyValue kv12 = <strong class="jxr_keyword">new</strong> KeyValue(row, f, q2, v1);
+<a class="jxr_linenumber" name="307" href="#307">307</a>     kv12.setSequenceId(w.getWriteNumber());
+<a class="jxr_linenumber" name="308" href="#308">308</a>     memstore.add(kv12);
+<a class="jxr_linenumber" name="309" href="#309">309</a>     mvcc.completeAndWait(w);
+<a class="jxr_linenumber" name="310" href="#310">310</a> 
+<a class="jxr_linenumber" name="311" href="#311">311</a>     <em class="jxr_comment">// BEFORE STARTING INSERT 2, SEE FIRST KVS</em>
+<a class="jxr_linenumber" name="312" href="#312">312</a>     KeyValueScanner s = <strong class="jxr_keyword">this</strong>.memstore.getScanners(mvcc.getReadPoint()).get(0);
+<a class="jxr_linenumber" name="313" href="#313">313</a>     assertScannerResults(s, <strong class="jxr_keyword">new</strong> KeyValue[]{kv11, kv12});
+<a class="jxr_linenumber" name="314" href="#314">314</a> 
+<a class="jxr_linenumber" name="315" href="#315">315</a>     <em class="jxr_comment">// START INSERT 2: Write both columns val2</em>
+<a class="jxr_linenumber" name="316" href="#316">316</a>     w = mvcc.begin();
+<a class="jxr_linenumber" name="317" href="#317">317</a>     KeyValue kv21 = <strong class="jxr_keyword">new</strong> KeyValue(row, f, q1, v2);
+<a class="jxr_linenumber" name="318" href="#318">318</a>     kv21.setSequenceId(w.getWriteNumber());
+<a class="jxr_linenumber" name="319" href="#319">319</a>     memstore.add(kv21);
+<a class="jxr_linenumber" name="320" href="#320">320</a> 
+<a class="jxr_linenumber" name="321" href="#321">321</a>     KeyValue kv22 = <strong class="jxr_keyword">new</strong> KeyValue(row, f, q2, v2);
+<a class="jxr_linenumber" name="322" href="#322">322</a>     kv22.setSequenceId(w.getWriteNumber());
+<a class="jxr_linenumber" name="323" href="#323">323</a>     memstore.add(kv22);
+<a class="jxr_linenumber" name="324" href="#324">324</a> 
+<a class="jxr_linenumber" name="325" href="#325">325</a>     <em class="jxr_comment">// BEFORE COMPLETING INSERT 2, SEE FIRST KVS</em>
+<a class="jxr_linenumber" name="326" href="#326">326</a>     s = <strong class="jxr_keyword">this</strong>.memstore.getScanners(mvcc.getReadPoint()).get(0);
+<a class="jxr_linenumber" name="327" href="#327">327</a>     assertScannerResults(s, <strong class="jxr_keyword">new</strong> KeyValue[]{kv11, kv12});
 <a class="jxr_linenumber" name="328" href="#328">328</a> 
-<a class="jxr_linenumber" name="329" href="#329">329</a>     <em class="jxr_comment">// NOW SHOULD SEE NEW KVS IN ADDITION TO OLD KVS.</em>
-<a class="jxr_linenumber" name="330" href="#330">330</a>     <em class="jxr_comment">// See HBASE-1485 for discussion about what we should do with</em>
-<a class="jxr_linenumber" name="331" href="#331">331</a>     <em class="jxr_comment">// the duplicate-TS inserts</em>
-<a class="jxr_linenumber" name="332" href="#332">332</a>     s = <strong class="jxr_keyword">this</strong>.memstore.getScanners(mvcc.getReadPoint()).get(0);
-<a class="jxr_linenumber" name="333" href="#333">333</a>     assertScannerResults(s, <strong class="jxr_keyword">new</strong> KeyValue[]{kv21, kv11, kv22, kv12});
-<a class="jxr_linenumber" name="334" href="#334">334</a>   }
-<a class="jxr_linenumber" name="335" href="#335">335</a> 
-<a class="jxr_linenumber" name="336" href="#336">336</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="337" href="#337">337</a> <em class="jxr_javadoccomment">   * When we insert a higher-memstoreTS deletion of a cell but with</em>
-<a class="jxr_linenumber" name="338" href="#338">338</a> <em class="jxr_javadoccomment">   * the same timestamp, we still need to provide consistent reads</em>
-<a class="jxr_linenumber" name="339" href="#339">339</a> <em class="jxr_javadoccomment">   * for the same scanner.</em>
-<a class="jxr_linenumber" name="340" href="#340">340</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="341" href="#341">341</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testMemstoreDeletesVisibilityWithSameKey() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="342" href="#342">342</a>     <strong class="jxr_keyword">final</strong> byte[] row = Bytes.toBytes(1);
-<a class="jxr_linenumber" name="343" href="#343">343</a>     <strong class="jxr_keyword">final</strong> byte[] f = Bytes.toBytes(<span class="jxr_string">"family"</span>);
-<a class="jxr_linenumber" name="344" href="#344">344</a>     <strong class="jxr_keyword">final</strong> byte[] q1 = Bytes.toBytes(<span class="jxr_string">"q1"</span>);
-<a class="jxr_linenumber" name="345" href="#345">345</a>     <strong class="jxr_keyword">final</strong> byte[] q2 = Bytes.toBytes(<span class="jxr_string">"q2"</span>);
-<a class="jxr_linenumber" name="346" href="#346">346</a>     <strong class="jxr_keyword">final</strong> byte[] v1 = Bytes.toBytes(<span class="jxr_string">"value1"</span>);
-<a class="jxr_linenumber" name="347" href="#347">347</a>     <em class="jxr_comment">// INSERT 1: Write both columns val1</em>
-<a class="jxr_linenumber" name="348" href="#348">348</a>     MultiVersionConcurrencyControl.WriteEntry w =
-<a class="jxr_linenumber" name="349" href="#349">349</a>         mvcc.begin();
-<a class="jxr_linenumber" name="350" href="#350">350</a> 
-<a class="jxr_linenumber" name="351" href="#351">351</a>     KeyValue kv11 = <strong class="jxr_keyword">new</strong> KeyValue(row, f, q1, v1);
-<a class="jxr_linenumber" name="352" href="#352">352</a>     kv11.setSequenceId(w.getWriteNumber());
-<a class="jxr_linenumber" name="353" href="#353">353</a>     memstore.add(kv11);
-<a class="jxr_linenumber" name="354" href="#354">354</a> 
-<a class="jxr_linenumber" name="355" href="#355">355</a>     KeyValue kv12 = <strong class="jxr_keyword">new</strong> KeyValue(row, f, q2, v1);
-<a class="jxr_linenumber" name="356" href="#356">356</a>     kv12.setSequenceId(w.getWriteNumber());
-<a class="jxr_linenumber" name="357" href="#357">357</a>     memstore.add(kv12);
-<a class="jxr_linenumber" name="358" href="#358">358</a>     mvcc.completeAndWait(w);
-<a class="jxr_linenumber" name="359" href="#359">359</a> 
-<a class="jxr_linenumber" name="360" href="#360">360</a>     <em class="jxr_comment">// BEFORE STARTING INSERT 2, SEE FIRST KVS</em>
-<a class="jxr_linenumber" name="361" href="#361">361</a>     KeyValueScanner s = <strong class="jxr_keyword">this</strong>.memstore.getScanners(mvcc.getReadPoint()).get(0);
-<a class="jxr_linenumber" name="362" href="#362">362</a>     assertScannerResults(s, <strong class="jxr_keyword">new</strong> KeyValue[]{kv11, kv12});
-<a class="jxr_linenumber" name="363" href="#363">363</a> 
-<a class="jxr_linenumber" name="364" href="#364">364</a>     <em class="jxr_comment">// START DELETE: Insert delete for one of the columns</em>
-<a class="jxr_linenumber" name="365" href="#365">365</a>     w = mvcc.begin();
-<a class="jxr_linenumber" name="366" href="#366">366</a>     KeyValue kvDel = <strong class="jxr_keyword">new</strong> KeyValue(row, f, q2, kv11.getTimestamp(),
-<a class="jxr_linenumber" name="367" href="#367">367</a>         KeyValue.Type.DeleteColumn);
-<a class="jxr_linenumber" name="368" href="#368">368</a>     kvDel.setSequenceId(w.getWriteNumber());
-<a class="jxr_linenumber" name="369" href="#369">369</a>     memstore.add(kvDel);
-<a class="jxr_linenumber" name="370" href="#370">370</a> 
-<a class="jxr_linenumber" name="371" href="#371">371</a>     <em class="jxr_comment">// BEFORE COMPLETING DELETE, SEE FIRST KVS</em>
-<a class="jxr_linenumber" name="372" href="#372">372</a>     s = <strong class="jxr_keyword">this</strong>.memstore.getScanners(mvcc.getReadPoint()).get(0);
-<a class="jxr_linenumber" name="373" href="#373">373</a>     assertScannerResults(s, <strong class="jxr_keyword">new</strong> KeyValue[]{kv11, kv12});
-<a class="jxr_linenumber" name="374" href="#374">374</a> 
-<a class="jxr_linenumber" name="375" href="#375">375</a>     <em class="jxr_comment">// COMPLETE DELETE</em>
-<a class="jxr_linenumber" name="376" href="#376">376</a>     mvcc.completeAndWait(w);
+<a class="jxr_linenumber" name="329" href="#329">329</a>     <em class="jxr_comment">// COMPLETE INSERT 2</em>
+<a class="jxr_linenumber" name="330" href="#330">330</a>     mvcc.completeAndWait(w);
+<a class="jxr_linenumber" name="331" href="#331">331</a> 
+<a class="jxr_linenumber" name="332" href="#332">332</a>     <em class="jxr_comment">// NOW SHOULD SEE NEW KVS IN ADDITION TO OLD KVS.</em>
+<a class="jxr_linenumber" name="333" href="#333">333</a>     <em class="jxr_comment">// See HBASE-1485 for discussion about what we should do with</em>
+<a class="jxr_linenumber" name="334" href="#334">334</a>     <em class="jxr_comment">// the duplicate-TS inserts</em>
+<a class="jxr_linenumber" name="335" href="#335">335</a>     s = <strong class="jxr_keyword">this</strong>.memstore.getScanners(mvcc.getReadPoint()).get(0);
+<a class="jxr_linenumber" name="336" href="#336">336</a>     assertScannerResults(s, <strong class="jxr_keyword">new</strong> KeyValue[]{kv21, kv11, kv22, kv12});
+<a class="jxr_linenumber" name="337" href="#337">337</a>   }
+<a class="jxr_linenumber" name="338" href="#338">338</a> 
+<a class="jxr_linenumber" name="339" href="#339">339</a>   <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="340" href="#340">340</a> <em class="jxr_javadoccomment">   * When we insert a higher-memstoreTS deletion of a cell but with</em>
+<a class="jxr_linenumber" name="341" href="#341">341</a> <em class="jxr_javadoccomment">   * the same timestamp, we still need to provide consistent reads</em>
+<a class="jxr_linenumber" name="342" href="#342">342</a> <em class="jxr_javadoccomment">   * for the same scanner.</em>
+<a class="jxr_linenumber" name="343" href="#343">343</a> <em class="jxr_javadoccomment">   */</em>
+<a class="jxr_linenumber" name="344" href="#344">344</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testMemstoreDeletesVisibilityWithSameKey() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="345" href="#345">345</a>     <strong class="jxr_keyword">final</strong> byte[] row = Bytes.toBytes(1);
+<a class="jxr_linenumber" name="346" href="#346">346</a>     <strong class="jxr_keyword">final</strong> byte[] f = Bytes.toBytes(<span class="jxr_string">"family"</span>);
+<a class="jxr_linenumber" name="347" href="#347">347</a>     <strong class="jxr_keyword">final</strong> byte[] q1 = Bytes.toBytes(<span class="jxr_string">"q1"</span>);
+<a class="jxr_linenumber" name="348" href="#348">348</a>     <strong class="jxr_keyword">final</strong> byte[] q2 = Bytes.toBytes(<span class="jxr_string">"q2"</span>);
+<a class="jxr_linenumber" name="349" href="#349">349</a>     <strong class="jxr_keyword">final</strong> byte[] v1 = Bytes.toBytes(<span class="jxr_string">"value1"</span>);
+<a class="jxr_linenumber" name="350" href="#350">350</a>     <em class="jxr_comment">// INSERT 1: Write both columns val1</em>
+<a class="jxr_linenumber" name="351" href="#351">351</a>     MultiVersionConcurrencyControl.WriteEntry w =
+<a class="jxr_linenumber" name="352" href="#352">352</a>         mvcc.begin();
+<a class="jxr_linenumber" name="353" href="#353">353</a> 
+<a class="jxr_linenumber" name="354" href="#354">354</a>     KeyValue kv11 = <strong class="jxr_keyword">new</strong> KeyValue(row, f, q1, v1);
+<a class="jxr_linenumber" name="355" href="#355">355</a>     kv11.setSequenceId(w.getWriteNumber());
+<a class="jxr_linenumber" name="356" href="#356">356</a>     memstore.add(kv11);
+<a class="jxr_linenumber" name="357" href="#357">357</a> 
+<a class="jxr_linenumber" name="358" href="#358">358</a>     KeyValue kv12 = <strong class="jxr_keyword">new</strong> KeyValue(row, f, q2, v1);
+<a class="jxr_linenumber" name="359" href="#359">359</a>     kv12.setSequenceId(w.getWriteNumber());
+<a class="jxr_linenumber" name="360" href="#360">360</a>     memstore.add(kv12);
+<a class="jxr_linenumber" name="361" href="#361">361</a>     mvcc.completeAndWait(w);
+<a class="jxr_linenumber" name="362" href="#362">362</a> 
+<a class="jxr_linenumber" name="363" href="#363">363</a>     <em class="jxr_comment">// BEFORE STARTING INSERT 2, SEE FIRST KVS</em>
+<a class="jxr_linenumber" name="364" href="#364">364</a>     KeyValueScanner s = <strong class="jxr_keyword">this</strong>.memstore.getScanners(mvcc.getReadPoint()).get(0);
+<a class="jxr_linenumber" name="365" href="#365">365</a>     assertScannerResults(s, <strong class="jxr_keyword">new</strong> KeyValue[]{kv11, kv12});
+<a class="jxr_linenumber" name="366" href="#366">366</a> 
+<a class="jxr_linenumber" name="367" href="#367">367</a>     <em class="jxr_comment">// START DELETE: Insert delete for one of the columns</em>
+<a class="jxr_linenumber" name="368" href="#368">368</a>     w = mvcc.begin();
+<a class="jxr_linenumber" name="369" href="#369">369</a>     KeyValue kvDel = <strong class="jxr_keyword">new</strong> KeyValue(row, f, q2, kv11.getTimestamp(),
+<a class="jxr_linenumber" name="370" href="#370">370</a>         KeyValue.Type.DeleteColumn);
+<a class="jxr_linenumber" name="371" href="#371">371</a>     kvDel.setSequenceId(w.getWriteNumber());
+<a class="jxr_linenumber" name="372" href="#372">372</a>     memstore.add(kvDel);
+<a class="jxr_linenumber" name="373" href="#373">373</a> 
+<a class="jxr_linenumber" name="374" href="#374">374</a>     <em class="jxr_comment">// BEFORE COMPLETING DELETE, SEE FIRST KVS</em>
+<a class="jxr_linenumber" name="375" href="#375">375</a>     s = <strong class="jxr_keyword">this</strong>.memstore.getScanners(mvcc.getReadPoint()).get(0);
+<a class="jxr_linenumber" name="376" href="#376">376</a>     assertScannerResults(s, <strong class="jxr_keyword">new</strong> KeyValue[]{kv11, kv12});
 <a class="jxr_linenumber" name="377" href="#377">377</a> 
-<a class="jxr_linenumber" name="378" href="#378">378</a>     <em class="jxr_comment">// NOW WE SHOULD SEE DELETE</em>
-<a class="jxr_linenumber" name="379" href="#379">379</a>     s = <strong class="jxr_keyword">this</strong>.memstore.getScanners(mvcc.getReadPoint()).get(0);
-<a class="jxr_linenumber" name="380" href="#380">380</a>     assertScannerResults(s, <strong class="jxr_keyword">new</strong> KeyValue[]{kv11, kvDel, kv12});
-<a class="jxr_linenumber" name="381" href="#381">381</a>   }
-<a class="jxr_linenumber" name="382" href="#382">382</a> 
-<a class="jxr_linenumber" name="383" href="#383">383</a> 
-<a class="jxr_linenumber" name="384" href="#384">384</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html">ReadOwnWritesTester</a> <strong class="jxr_keyword">extends</strong> Thread {
-<a class="jxr_linenumber" name="385" href="#385">385</a>     <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> NUM_TRIES = 1000;
+<a class="jxr_linenumber" name="378" href="#378">378</a>     <em class="jxr_comment">// COMPLETE DELETE</em>
+<a class="jxr_linenumber" name="379" href="#379">379</a>     mvcc.completeAndWait(w);
+<a class="jxr_linenumber" name="380" href="#380">380</a> 
+<a class="jxr_linenumber" name="381" href="#381">381</a>     <em class="jxr_comment">// NOW WE SHOULD SEE DELETE</em>
+<a class="jxr_linenumber" name="382" href="#382">382</a>     s = <strong class="jxr_keyword">this</strong>.memstore.getScanners(mvcc.getReadPoint()).get(0);
+<a class="jxr_linenumber" name="383" href="#383">383</a>     assertScannerResults(s, <strong class="jxr_keyword">new</strong> KeyValue[]{kv11, kvDel, kv12});
+<a class="jxr_linenumber" name="384" href="#384">384</a>   }
+<a class="jxr_linenumber" name="385" href="#385">385</a> 
 <a class="jxr_linenumber" name="386" href="#386">386</a> 
-<a class="jxr_linenumber" name="387" href="#387">387</a>     <strong class="jxr_keyword">final</strong> byte[] row;
-<a class="jxr_linenumber" name="388" href="#388">388</a> 
-<a class="jxr_linenumber" name="389" href="#389">389</a>     <strong class="jxr_keyword">final</strong> byte[] f = Bytes.toBytes(<span class="jxr_string">"family"</span>);
-<a class="jxr_linenumber" name="390" href="#390">390</a>     <strong class="jxr_keyword">final</strong> byte[] q1 = Bytes.toBytes(<span class="jxr_string">"q1"</span>);
+<a class="jxr_linenumber" name="387" href="#387">387</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html">ReadOwnWritesTester</a> <strong class="jxr_keyword">extends</strong> Thread {
+<a class="jxr_linenumber" name="388" href="#388">388</a>     <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> NUM_TRIES = 1000;
+<a class="jxr_linenumber" name="389" href="#389">389</a> 
+<a class="jxr_linenumber" name="390" href="#390">390</a>     <strong class="jxr_keyword">final</strong> byte[] row;
 <a class="jxr_linenumber" name="391" href="#391">391</a> 
-<a class="jxr_linenumber" name="392" href="#392">392</a>     <strong class="jxr_keyword">final</strong> MultiVersionConcurrencyControl mvcc;
-<a class="jxr_linenumber" name="393" href="#393">393</a>     <strong class="jxr_keyword">final</strong> MemStore memstore;
-<a class="jxr_linenumber" name="394" href="#394">394</a>     <strong class="jxr_keyword">final</strong> AtomicLong startSeqNum;
-<a class="jxr_linenumber" name="395" href="#395">395</a> 
-<a class="jxr_linenumber" name="396" href="#396">396</a>     AtomicReference&lt;Throwable&gt; caughtException;
-<a class="jxr_linenumber" name="397" href="#397">397</a> 
+<a class="jxr_linenumber" name="392" href="#392">392</a>     <strong class="jxr_keyword">final</strong> byte[] f = Bytes.toBytes(<span class="jxr_string">"family"</span>);
+<a class="jxr_linenumber" name="393" href="#393">393</a>     <strong class="jxr_keyword">final</strong> byte[] q1 = Bytes.toBytes(<span class="jxr_string">"q1"</span>);
+<a class="jxr_linenumber" name="394" href="#394">394</a> 
+<a class="jxr_linenumber" name="395" href="#395">395</a>     <strong class="jxr_keyword">final</strong> MultiVersionConcurrencyControl mvcc;
+<a class="jxr_linenumber" name="396" href="#396">396</a>     <strong class="jxr_keyword">final</strong> MemStore memstore;
+<a class="jxr_linenumber" name="397" href="#397">397</a>     <strong class="jxr_keyword">final</strong> AtomicLong startSeqNum;
 <a class="jxr_linenumber" name="398" href="#398">398</a> 
-<a class="jxr_linenumber" name="399" href="#399">399</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html">ReadOwnWritesTester</a>(<strong class="jxr_keyword">int</strong> id,
-<a class="jxr_linenumber" name="400" href="#400">400</a>                                MemStore memstore,
-<a class="jxr_linenumber" name="401" href="#401">401</a>                                MultiVersionConcurrencyControl mvcc,
-<a class="jxr_linenumber" name="402" href="#402">402</a>                                AtomicReference&lt;Throwable&gt; caughtException,
-<a class="jxr_linenumber" name="403" href="#403">403</a>                                AtomicLong startSeqNum)
-<a class="jxr_linenumber" name="404" href="#404">404</a>     {
-<a class="jxr_linenumber" name="405" href="#405">405</a>       <strong class="jxr_keyword">this</strong>.mvcc = mvcc;
-<a class="jxr_linenumber" name="406" href="#406">406</a>       <strong class="jxr_keyword">this</strong>.memstore = memstore;
-<a class="jxr_linenumber" name="407" href="#407">407</a>       <strong class="jxr_keyword">this</strong>.caughtException = caughtException;
-<a class="jxr_linenumber" name="408" href="#408">408</a>       row = Bytes.toBytes(id);
-<a class="jxr_linenumber" name="409" href="#409">409</a>       <strong class="jxr_keyword">this</strong>.startSeqNum = startSeqNum;
-<a class="jxr_linenumber" name="410" href="#410">410</a>     }
-<a class="jxr_linenumber" name="411" href="#411">411</a> 
-<a class="jxr_linenumber" name="412" href="#412">412</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> run() {
-<a class="jxr_linenumber" name="413" href="#413">413</a>       <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="414" href="#414">414</a>         internalRun();
-<a class="jxr_linenumber" name="415" href="#415">415</a>       } <strong class="jxr_keyword">catch</strong> (Throwable t) {
-<a class="jxr_linenumber" name="416" href="#416">416</a>         caughtException.compareAndSet(<strong class="jxr_keyword">null</strong>, t);
-<a class="jxr_linenumber" name="417" href="#417">417</a>       }
-<a class="jxr_linenumber" name="418" href="#418">418</a>     }
-<a class="jxr_linenumber" name="419" href="#419">419</a> 
-<a class="jxr_linenumber" name="420" href="#420">420</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> internalRun() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="421" href="#421">421</a>       <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">long</strong> i = 0; i &lt; NUM_TRIES &amp;&amp; caughtException.get() == <strong class="jxr_keyword">null</strong>; i++) {
-<a class="jxr_linenumber" name="422" href="#422">422</a>         MultiVersionConcurrencyControl.WriteEntry w =
-<a class="jxr_linenumber" name="423" href="#423">423</a>             mvcc.begin();
-<a class="jxr_linenumber" name="424" href="#424">424</a> 
-<a class="jxr_linenumber" name="425" href="#425">425</a>         <em class="jxr_comment">// Insert the sequence value (i)</em>
-<a class="jxr_linenumber" name="426" href="#426">426</a>         byte[] v = Bytes.toBytes(i);
+<a class="jxr_linenumber" name="399" href="#399">399</a>     AtomicReference&lt;Throwable&gt; caughtException;
+<a class="jxr_linenumber" name="400" href="#400">400</a> 
+<a class="jxr_linenumber" name="401" href="#401">401</a> 
+<a class="jxr_linenumber" name="402" href="#402">402</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html">ReadOwnWritesTester</a>(<strong class="jxr_keyword">int</strong> id,
+<a class="jxr_linenumber" name="403" href="#403">403</a>                                MemStore memstore,
+<a class="jxr_linenumber" name="404" href="#404">404</a>                                MultiVersionConcurrencyControl mvcc,
+<a class="jxr_linenumber" name="405" href="#405">405</a>                                AtomicReference&lt;Throwable&gt; caughtException,
+<a class="jxr_linenumber" name="406" href="#406">406</a>                                AtomicLong startSeqNum)
+<a class="jxr_linenumber" name="407" href="#407">407</a>     {
+<a class="jxr_linenumber" name="408" href="#408">408</a>       <strong class="jxr_keyword">this</strong>.mvcc = mvcc;
+<a class="jxr_linenumber" name="409" href="#409">409</a>       <strong class="jxr_keyword">this</strong>.memstore = memstore;
+<a class="jxr_linenumber" name="410" href="#410">410</a>       <strong class="jxr_keyword">this</strong>.caughtException = caughtException;
+<a class="jxr_linenumber" name="411" href="#411">411</a>       row = Bytes.toBytes(id);
+<a class="jxr_linenumber" name="412" href="#412">412</a>       <strong class="jxr_keyword">this</strong>.startSeqNum = startSeqNum;
+<a class="jxr_linenumber" name="413" href="#413">413</a>     }
+<a class="jxr_linenumber" name="414" href="#414">414</a> 
+<a class="jxr_linenumber" name="415" href="#415">415</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> run() {
+<a class="jxr_linenumber" name="416" href="#416">416</a>       <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="417" href="#417">417</a>         internalRun();
+<a class="jxr_linenumber" name="418" href="#418">418</a>       } <strong class="jxr_keyword">catch</strong> (Throwable t) {
+<a class="jxr_linenumber" name="419" href="#419">419</a>         caughtException.compareAndSet(<strong class="jxr_keyword">null</strong>, t);
+<a class="jxr_linenumber" name="420" href="#420">420</a>       }
+<a class="jxr_linenumber" name="421" href="#421">421</a>     }
+<a class="jxr_linenumber" name="422" href="#422">422</a> 
+<a class="jxr_linenumber" name="423" href="#423">423</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> internalRun() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="424" href="#424">424</a>       <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">long</strong> i = 0; i &lt; NUM_TRIES &amp;&amp; caughtException.get() == <strong class="jxr_keyword">null</strong>; i++) {
+<a class="jxr_linenumber" name="425" href="#425">425</a>         MultiVersionConcurrencyControl.WriteEntry w =
+<a class="jxr_linenumber" name="426" href="#426">426</a>             mvcc.begin();
 <a class="jxr_linenumber" name="427" href="#427">427</a> 
-<a class="jxr_linenumber" name="428" href="#428">428</a>         KeyValue kv = <strong class="jxr_keyword">new</strong> KeyValue(row, f, q1, i, v);
-<a class="jxr_linenumber" name="429" href="#429">429</a>         kv.setSequenceId(w.getWriteNumber());
-<a class="jxr_linenumber" name="430" href="#430">430</a>         memstore.add(kv);
-<a class="jxr_linenumber" name="431" href="#431">431</a>         mvcc.completeAndWait(w);
-<a class="jxr_linenumber" name="432" href="#432">432</a> 
-<a class="jxr_linenumber" name="433" href="#433">433</a>         <em class="jxr_comment">// Assert that we can read back</em>
-<a class="jxr_linenumber" name="434" href="#434">434</a>         KeyValueScanner s = <strong class="jxr_keyword">this</strong>.memstore.getScanners(mvcc.getReadPoint()).get(0);
-<a class="jxr_linenumber" name="435" href="#435">435</a>         s.seek(kv);
-<a class="jxr_linenumber" name="436" href="#436">436</a> 
-<a class="jxr_linenumber" name="437" href="#437">437</a>         Cell ret = s.next();
-<a class="jxr_linenumber" name="438" href="#438">438</a>         assertNotNull(<span class="jxr_string">"Didnt find own write at all"</span>, ret);
-<a class="jxr_linenumber" name="439" href="#439">439</a>         assertEquals(<span class="jxr_string">"Didnt read own writes"</span>,
-<a class="jxr_linenumber" name="440" href="#440">440</a>                      kv.getTimestamp(), ret.getTimestamp());
-<a class="jxr_linenumber" name="441" href="#441">441</a>       }
-<a class="jxr_linenumber" name="442" href="#442">442</a>     }
-<a class="jxr_linenumber" name="443" href="#443">443</a>   }
-<a class="jxr

<TRUNCATED>

[10/24] hbase git commit: Published site at 0d72849581c1e5a50a2aa7757b909e5531b8d12c.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/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 e7606f1..710f604 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -505,15 +505,15 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ClusterManager.ServiceType.html" title="enum in org.apache.hadoop.hbase"><span class="strong">ClusterManager.ServiceType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/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/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/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/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>
 <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/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/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/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/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/RESTApiClusterManager.Service.html" title="enum in org.apache.hadoop.hbase"><span class="strong">RESTApiClusterManager.Service</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/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/blob/2fa570dd/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.EnvironmentEdgeForMemstoreTest.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.EnvironmentEdgeForMemstoreTest.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.EnvironmentEdgeForMemstoreTest.html
index ba291a9..48ab2d2 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.EnvironmentEdgeForMemstoreTest.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.EnvironmentEdgeForMemstoreTest.html
@@ -103,7 +103,7 @@
 </dl>
 <hr>
 <br>
-<pre>private class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.976">TestDefaultMemStore.EnvironmentEdgeForMemstoreTest</a>
+<pre>private class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.982">TestDefaultMemStore.EnvironmentEdgeForMemstoreTest</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.util.EnvironmentEdge</pre>
 </li>
@@ -198,7 +198,7 @@ implements org.apache.hadoop.hbase.util.EnvironmentEdge</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>t</h4>
-<pre>long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.EnvironmentEdgeForMemstoreTest.html#line.977">t</a></pre>
+<pre>long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.EnvironmentEdgeForMemstoreTest.html#line.983">t</a></pre>
 </li>
 </ul>
 </li>
@@ -215,7 +215,7 @@ implements org.apache.hadoop.hbase.util.EnvironmentEdge</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestDefaultMemStore.EnvironmentEdgeForMemstoreTest</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.EnvironmentEdgeForMemstoreTest.html#line.976">TestDefaultMemStore.EnvironmentEdgeForMemstoreTest</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.EnvironmentEdgeForMemstoreTest.html#line.982">TestDefaultMemStore.EnvironmentEdgeForMemstoreTest</a>()</pre>
 </li>
 </ul>
 </li>
@@ -232,7 +232,7 @@ implements org.apache.hadoop.hbase.util.EnvironmentEdge</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>currentTime</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.EnvironmentEdgeForMemstoreTest.html#line.979">currentTime</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.EnvironmentEdgeForMemstoreTest.html#line.985">currentTime</a>()</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code>currentTime</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.util.EnvironmentEdge</code></dd>
@@ -245,7 +245,7 @@ implements org.apache.hadoop.hbase.util.EnvironmentEdge</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>setCurrentTimeMillis</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.EnvironmentEdgeForMemstoreTest.html#line.982">setCurrentTimeMillis</a>(long&nbsp;t)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.EnvironmentEdgeForMemstoreTest.html#line.988">setCurrentTimeMillis</a>(long&nbsp;t)</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.ReadOwnWritesTester.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.ReadOwnWritesTester.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.ReadOwnWritesTester.html
index e29a6a1..1fb8a70 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.ReadOwnWritesTester.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.ReadOwnWritesTester.html
@@ -108,7 +108,7 @@
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.384">TestDefaultMemStore.ReadOwnWritesTester</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.387">TestDefaultMemStore.ReadOwnWritesTester</a>
 extends <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></pre>
 </li>
 </ul>
@@ -261,7 +261,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>NUM_TRIES</h4>
-<pre>static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.ReadOwnWritesTester.html#line.385">NUM_TRIES</a></pre>
+<pre>static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.ReadOwnWritesTester.html#line.388">NUM_TRIES</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.TestDefaultMemStore.ReadOwnWritesTester.NUM_TRIES">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -271,7 +271,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>row</h4>
-<pre>final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.ReadOwnWritesTester.html#line.387">row</a></pre>
+<pre>final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.ReadOwnWritesTester.html#line.390">row</a></pre>
 </li>
 </ul>
 <a name="f">
@@ -280,7 +280,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>f</h4>
-<pre>final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.ReadOwnWritesTester.html#line.389">f</a></pre>
+<pre>final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.ReadOwnWritesTester.html#line.392">f</a></pre>
 </li>
 </ul>
 <a name="q1">
@@ -289,7 +289,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>q1</h4>
-<pre>final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.ReadOwnWritesTester.html#line.390">q1</a></pre>
+<pre>final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.ReadOwnWritesTester.html#line.393">q1</a></pre>
 </li>
 </ul>
 <a name="mvcc">
@@ -298,7 +298,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>mvcc</h4>
-<pre>final&nbsp;org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.ReadOwnWritesTester.html#line.392">mvcc</a></pre>
+<pre>final&nbsp;org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.ReadOwnWritesTester.html#line.395">mvcc</a></pre>
 </li>
 </ul>
 <a name="memstore">
@@ -307,7 +307,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>memstore</h4>
-<pre>final&nbsp;org.apache.hadoop.hbase.regionserver.MemStore <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.ReadOwnWritesTester.html#line.393">memstore</a></pre>
+<pre>final&nbsp;org.apache.hadoop.hbase.regionserver.MemStore <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.ReadOwnWritesTester.html#line.396">memstore</a></pre>
 </li>
 </ul>
 <a name="startSeqNum">
@@ -316,7 +316,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>startSeqNum</h4>
-<pre>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/regionserver/TestDefaultMemStore.ReadOwnWritesTester.html#line.394">startSeqNum</a></pre>
+<pre>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/regionserver/TestDefaultMemStore.ReadOwnWritesTester.html#line.397">startSeqNum</a></pre>
 </li>
 </ul>
 <a name="caughtException">
@@ -325,7 +325,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>caughtException</h4>
-<pre><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/regionserver/TestDefaultMemStore.ReadOwnWritesTester.html#line.396">caughtException</a></pre>
+<pre><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/regionserver/TestDefaultMemStore.ReadOwnWritesTester.html#line.399">caughtException</a></pre>
 </li>
 </ul>
 </li>
@@ -342,7 +342,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestDefaultMemStore.ReadOwnWritesTester</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.ReadOwnWritesTester.html#line.399">TestDefaultMemStore.ReadOwnWritesTester</a>(int&nbsp;id,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.ReadOwnWritesTester.html#line.402">TestDefaultMemStore.ReadOwnWritesTester</a>(int&nbsp;id,
                                        org.apache.hadoop.hbase.regionserver.MemStore&nbsp;memstore,
                                        org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl&nbsp;mvcc,
                                        <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;&nbsp;caughtException,
@@ -363,7 +363,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.ReadOwnWritesTester.html#line.412">run</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.ReadOwnWritesTester.html#line.415">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>
@@ -378,7 +378,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>internalRun</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.ReadOwnWritesTester.html#line.420">internalRun</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.ReadOwnWritesTester.html#line.423">internalRun</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>

http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html
index eb285b6..ea943aa 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html
@@ -109,7 +109,7 @@
 </dl>
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.66">TestDefaultMemStore</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.69">TestDefaultMemStore</a>
 extends junit.framework.TestCase</pre>
 <div class="block">memstore test case</div>
 </li>
@@ -434,7 +434,7 @@ extends junit.framework.TestCase</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/regionserver/TestDefaultMemStore.html#line.67">LOG</a></pre>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.70">LOG</a></pre>
 </li>
 </ul>
 <a name="memstore">
@@ -443,7 +443,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>memstore</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.DefaultMemStore <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.68">memstore</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.DefaultMemStore <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.71">memstore</a></pre>
 </li>
 </ul>
 <a name="ROW_COUNT">
@@ -452,7 +452,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>ROW_COUNT</h4>
-<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.69">ROW_COUNT</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.72">ROW_COUNT</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.TestDefaultMemStore.ROW_COUNT">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -462,7 +462,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>QUALIFIER_COUNT</h4>
-<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.70">QUALIFIER_COUNT</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.73">QUALIFIER_COUNT</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.TestDefaultMemStore.QUALIFIER_COUNT">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -472,7 +472,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>FAMILY</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.71">FAMILY</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.74">FAMILY</a></pre>
 </li>
 </ul>
 <a name="mvcc">
@@ -481,7 +481,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>mvcc</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.72">mvcc</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.75">mvcc</a></pre>
 </li>
 </ul>
 <a name="startSeqNum">
@@ -490,7 +490,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>startSeqNum</h4>
-<pre>private&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/regionserver/TestDefaultMemStore.html#line.73">startSeqNum</a></pre>
+<pre>private&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/regionserver/TestDefaultMemStore.html#line.76">startSeqNum</a></pre>
 </li>
 </ul>
 </li>
@@ -507,7 +507,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestDefaultMemStore</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.66">TestDefaultMemStore</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.69">TestDefaultMemStore</a>()</pre>
 </li>
 </ul>
 </li>
@@ -524,7 +524,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>setUp</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.76">setUp</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.79">setUp</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><strong>Overrides:</strong></dt>
@@ -539,7 +539,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>testPutSameKey</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.82">testPutSameKey</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.85">testPutSameKey</a>()</pre>
 </li>
 </ul>
 <a name="testScanAcrossSnapshot()">
@@ -548,7 +548,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanAcrossSnapshot</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.100">testScanAcrossSnapshot</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.103">testScanAcrossSnapshot</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">Test memstore snapshot happening while scanning.</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -561,7 +561,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanAcrossSnapshot2</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.187">testScanAcrossSnapshot2</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.190">testScanAcrossSnapshot2</a>()
                              throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                     <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/CloneNotSupportedException.html?is-external=true" title="class or interface in java.lang">CloneNotSupportedException</a></pre>
 <div class="block">A simple test which verifies the 3 possible states when scanning across snapshot.</div>
@@ -576,7 +576,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>verifyScanAcrossSnapshot2</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.216">verifyScanAcrossSnapshot2</a>(org.apache.hadoop.hbase.KeyValue&nbsp;kv1,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.219">verifyScanAcrossSnapshot2</a>(org.apache.hadoop.hbase.KeyValue&nbsp;kv1,
                              org.apache.hadoop.hbase.KeyValue&nbsp;kv2)
                                 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>
@@ -589,7 +589,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>assertScannerResults</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.227">assertScannerResults</a>(org.apache.hadoop.hbase.regionserver.KeyValueScanner&nbsp;scanner,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.230">assertScannerResults</a>(org.apache.hadoop.hbase.regionserver.KeyValueScanner&nbsp;scanner,
                         org.apache.hadoop.hbase.KeyValue[]&nbsp;expected)
                            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>
@@ -602,7 +602,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>testMemstoreConcurrentControl</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.245">testMemstoreConcurrentControl</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.248">testMemstoreConcurrentControl</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>
@@ -614,7 +614,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>testMemstoreEditsVisibilityWithSameKey</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.287">testMemstoreEditsVisibilityWithSameKey</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.290">testMemstoreEditsVisibilityWithSameKey</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">Regression test for HBASE-2616, HBASE-2670.
  When we insert a higher-memstoreTS version of a cell but with
@@ -630,7 +630,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>testMemstoreDeletesVisibilityWithSameKey</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.341">testMemstoreDeletesVisibilityWithSameKey</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.344">testMemstoreDeletesVisibilityWithSameKey</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">When we insert a higher-memstoreTS deletion of a cell but with
  the same timestamp, we still need to provide consistent reads
@@ -645,7 +645,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>testReadOwnWritesUnderConcurrency</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.445">testReadOwnWritesUnderConcurrency</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.448">testReadOwnWritesUnderConcurrency</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>
@@ -657,7 +657,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>testSnapshotting</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.470">testSnapshotting</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.473">testSnapshotting</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">Test memstore snapshots</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -670,7 +670,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>testMultipleVersionsSimple</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.480">testMultipleVersionsSimple</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.483">testMultipleVersionsSimple</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>
@@ -682,7 +682,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>testGetNextRow</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.507">testGetNextRow</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.510">testGetNextRow</a>()
                     throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Test getNextRow from memstore</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -696,7 +696,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>testGet_memstoreAndSnapShot</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.554">testGet_memstoreAndSnapShot</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.557">testGet_memstoreAndSnapShot</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>
@@ -708,7 +708,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>testGetWithDelete</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.581">testGetWithDelete</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.584">testGetWithDelete</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>
@@ -720,7 +720,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>testGetWithDeleteColumn</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.615">testGetWithDeleteColumn</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.618">testGetWithDeleteColumn</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>
@@ -732,7 +732,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>testGetWithDeleteFamily</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.652">testGetWithDeleteFamily</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.655">testGetWithDeleteFamily</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>
@@ -744,7 +744,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>testKeepDeleteInmemstore</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.691">testKeepDeleteInmemstore</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.694">testKeepDeleteInmemstore</a>()</pre>
 </li>
 </ul>
 <a name="testRetainsDeleteVersion()">
@@ -753,7 +753,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>testRetainsDeleteVersion</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.704">testRetainsDeleteVersion</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.707">testRetainsDeleteVersion</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>
@@ -765,7 +765,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>testRetainsDeleteColumn</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.716">testRetainsDeleteColumn</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.719">testRetainsDeleteColumn</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>
@@ -777,7 +777,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>testRetainsDeleteFamily</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.728">testRetainsDeleteFamily</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.731">testRetainsDeleteFamily</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>
@@ -789,11 +789,11 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>testMultipleTimestamps</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.748">testMultipleTimestamps</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>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.751">testMultipleTimestamps</a>()
+                            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Test to ensure correctness when using Memstore with multiple timestamps</div>
 <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>
+<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="testUpsertMSLAB()">
@@ -802,7 +802,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>testUpsertMSLAB</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.790">testUpsertMSLAB</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.796">testUpsertMSLAB</a>()
                      throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Test a pathological pattern that shows why we can't currently
  use the MSLAB for upsert workloads. This test inserts data
@@ -825,7 +825,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>makeQualifier</h4>
-<pre>private static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.822">makeQualifier</a>(int&nbsp;i1,
+<pre>private static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.828">makeQualifier</a>(int&nbsp;i1,
                    int&nbsp;i2)</pre>
 </li>
 </ul>
@@ -835,7 +835,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>testUpsertMemstoreSize</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.832">testUpsertMemstoreSize</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.838">testUpsertMemstoreSize</a>()
                             throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Add keyvalues with a fixed memstoreTs, and checks that memstore size is decreased
  as older keyvalues are deleted from the memstore.</div>
@@ -849,7 +849,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>testUpdateToTimeOfOldestEdit</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.871">testUpdateToTimeOfOldestEdit</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.877">testUpdateToTimeOfOldestEdit</a>()
                                   throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Tests that the timeOfOldestEdit is updated correctly for the
  various edit operations in memstore.</div>
@@ -863,7 +863,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>testShouldFlush</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.913">testShouldFlush</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.919">testShouldFlush</a>()
                      throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Tests the HRegion.shouldFlush method - adds an edit in the memstore
  and checks that shouldFlush returns true, and another where it disables
@@ -879,7 +879,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>checkShouldFlush</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.922">checkShouldFlush</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.928">checkShouldFlush</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                     boolean&nbsp;expected)
                        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>
@@ -892,7 +892,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>testShouldFlushMeta</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.945">testShouldFlushMeta</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.951">testShouldFlushMeta</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>
@@ -904,7 +904,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>addRows</h4>
-<pre>private&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.993">addRows</a>(org.apache.hadoop.hbase.regionserver.MemStore&nbsp;hmc)</pre>
+<pre>private&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.999">addRows</a>(org.apache.hadoop.hbase.regionserver.MemStore&nbsp;hmc)</pre>
 <div class="block">Adds <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#ROW_COUNT"><code>ROW_COUNT</code></a> rows and <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#QUALIFIER_COUNT"><code>QUALIFIER_COUNT</code></a></div>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>hmc</code> - Instance to add rows to.</dd>
 <dt><span class="strong">Returns:</span></dt><dd>How many rows we added.</dd>
@@ -918,7 +918,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>addRows</h4>
-<pre>private&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.1003">addRows</a>(org.apache.hadoop.hbase.regionserver.MemStore&nbsp;hmc,
+<pre>private&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.1009">addRows</a>(org.apache.hadoop.hbase.regionserver.MemStore&nbsp;hmc,
           long&nbsp;ts)</pre>
 <div class="block">Adds <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#ROW_COUNT"><code>ROW_COUNT</code></a> rows and <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#QUALIFIER_COUNT"><code>QUALIFIER_COUNT</code></a></div>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>hmc</code> - Instance to add rows to.</dd>
@@ -933,7 +933,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>runSnapshot</h4>
-<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.1016">runSnapshot</a>(org.apache.hadoop.hbase.regionserver.DefaultMemStore&nbsp;hmc)
+<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.1022">runSnapshot</a>(org.apache.hadoop.hbase.regionserver.DefaultMemStore&nbsp;hmc)
                   throws org.apache.hadoop.hbase.regionserver.UnexpectedStateException</pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code>org.apache.hadoop.hbase.regionserver.UnexpectedStateException</code></dd></dl>
@@ -945,7 +945,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>isExpectedRowWithoutTimestamps</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.1028">isExpectedRowWithoutTimestamps</a>(int&nbsp;rowIndex,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.1034">isExpectedRowWithoutTimestamps</a>(int&nbsp;rowIndex,
                                   <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;&nbsp;kvs)</pre>
 </li>
 </ul>
@@ -955,7 +955,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>addRows</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.1042">addRows</a>(int&nbsp;count,
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.1048">addRows</a>(int&nbsp;count,
            org.apache.hadoop.hbase.regionserver.MemStore&nbsp;mem)</pre>
 </li>
 </ul>
@@ -965,7 +965,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>doScan</h4>
-<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.1062">doScan</a>(org.apache.hadoop.hbase.regionserver.MemStore&nbsp;ms,
+<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.1068">doScan</a>(org.apache.hadoop.hbase.regionserver.MemStore&nbsp;ms,
           int&nbsp;iteration)
             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>
@@ -978,7 +978,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>main</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#line.1076">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/regionserver/TestDefaultMemStore.html#line.1082">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/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/blob/2fa570dd/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
index d940553..e26d658 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -539,9 +539,9 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">TestCacheOnWriteInSchema.CacheOnWriteType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">TestAtomicOperation.TestStep</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DataBlockEncodingTool.Manipulation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">DataBlockEncodingTool.Manipulation</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">TestCacheOnWriteInSchema.CacheOnWriteType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
index c583b6a..99cb6ec 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
@@ -120,8 +120,8 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/FaultyFSLog.FailureType.html" title="enum in org.apache.hadoop.hbase.wal"><span class="strong">FaultyFSLog.FailureType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/IOTestProvider.AllowedOperations.html" title="enum in org.apache.hadoop.hbase.wal"><span class="strong">IOTestProvider.AllowedOperations</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/FaultyFSLog.FailureType.html" title="enum in org.apache.hadoop.hbase.wal"><span class="strong">FaultyFSLog.FailureType</span></a></li>
 </ul>
 </li>
 </ul>


[02/24] hbase git commit: Published site at 0d72849581c1e5a50a2aa7757b909e5531b8d12c.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/xref/org/apache/hadoop/hbase/tmpl/common/TaskMonitorTmpl.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/hadoop/hbase/tmpl/common/TaskMonitorTmpl.html b/xref/org/apache/hadoop/hbase/tmpl/common/TaskMonitorTmpl.html
index 3bc49af..95ba14f 100644
--- a/xref/org/apache/hadoop/hbase/tmpl/common/TaskMonitorTmpl.html
+++ b/xref/org/apache/hadoop/hbase/tmpl/common/TaskMonitorTmpl.html
@@ -24,8 +24,8 @@
 <a class="jxr_linenumber" name="14" href="#14">14</a>    signature = <span class="jxr_string">"E1689F04F06BAD5E628913C375AEB2C0"</span>,
 <a class="jxr_linenumber" name="15" href="#15">15</a>    optionalArguments = {
 <a class="jxr_linenumber" name="16" href="#16">16</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"format"</span>, type = <span class="jxr_string">"String"</span>),
-<a class="jxr_linenumber" name="17" href="#17">17</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"filter"</span>, type = <span class="jxr_string">"String"</span>),
-<a class="jxr_linenumber" name="18" href="#18">18</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"taskMonitor"</span>, type = <span class="jxr_string">"TaskMonitor"</span>)})
+<a class="jxr_linenumber" name="17" href="#17">17</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"taskMonitor"</span>, type = <span class="jxr_string">"TaskMonitor"</span>),
+<a class="jxr_linenumber" name="18" href="#18">18</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"filter"</span>, type = <span class="jxr_string">"String"</span>)})
 <a class="jxr_linenumber" name="19" href="#19">19</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../../org/apache/hadoop/hbase/tmpl/common/TaskMonitorTmpl.html">TaskMonitorTmpl</a>
 <a class="jxr_linenumber" name="20" href="#20">20</a>    <strong class="jxr_keyword">extends</strong> org.jamon.AbstractTemplateProxy
 <a class="jxr_linenumber" name="21" href="#21">21</a>  {
@@ -72,40 +72,40 @@
 <a class="jxr_linenumber" name="62" href="#62">62</a>        <strong class="jxr_keyword">return</strong> m_format__IsNotDefault;
 <a class="jxr_linenumber" name="63" href="#63">63</a>      }
 <a class="jxr_linenumber" name="64" href="#64">64</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_format__IsNotDefault;
-<a class="jxr_linenumber" name="65" href="#65">65</a>      <em class="jxr_comment">// 26, 1</em>
-<a class="jxr_linenumber" name="66" href="#66">66</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setFilter(String filter)
+<a class="jxr_linenumber" name="65" href="#65">65</a>      <em class="jxr_comment">// 25, 1</em>
+<a class="jxr_linenumber" name="66" href="#66">66</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setTaskMonitor(<a href="../../../../../../org/apache/hadoop/hbase/monitoring/TaskMonitor.html">TaskMonitor</a> taskMonitor)
 <a class="jxr_linenumber" name="67" href="#67">67</a>      {
-<a class="jxr_linenumber" name="68" href="#68">68</a>        <em class="jxr_comment">// 26, 1</em>
-<a class="jxr_linenumber" name="69" href="#69">69</a>        m_filter = filter;
-<a class="jxr_linenumber" name="70" href="#70">70</a>        m_filter__IsNotDefault = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="68" href="#68">68</a>        <em class="jxr_comment">// 25, 1</em>
+<a class="jxr_linenumber" name="69" href="#69">69</a>        m_taskMonitor = taskMonitor;
+<a class="jxr_linenumber" name="70" href="#70">70</a>        m_taskMonitor__IsNotDefault = <strong class="jxr_keyword">true</strong>;
 <a class="jxr_linenumber" name="71" href="#71">71</a>      }
-<a class="jxr_linenumber" name="72" href="#72">72</a>      <strong class="jxr_keyword">public</strong> String getFilter()
+<a class="jxr_linenumber" name="72" href="#72">72</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/hadoop/hbase/monitoring/TaskMonitor.html">TaskMonitor</a> getTaskMonitor()
 <a class="jxr_linenumber" name="73" href="#73">73</a>      {
-<a class="jxr_linenumber" name="74" href="#74">74</a>        <strong class="jxr_keyword">return</strong> m_filter;
+<a class="jxr_linenumber" name="74" href="#74">74</a>        <strong class="jxr_keyword">return</strong> m_taskMonitor;
 <a class="jxr_linenumber" name="75" href="#75">75</a>      }
-<a class="jxr_linenumber" name="76" href="#76">76</a>      <strong class="jxr_keyword">private</strong> String m_filter;
-<a class="jxr_linenumber" name="77" href="#77">77</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getFilter__IsNotDefault()
+<a class="jxr_linenumber" name="76" href="#76">76</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/hadoop/hbase/monitoring/TaskMonitor.html">TaskMonitor</a> m_taskMonitor;
+<a class="jxr_linenumber" name="77" href="#77">77</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getTaskMonitor__IsNotDefault()
 <a class="jxr_linenumber" name="78" href="#78">78</a>      {
-<a class="jxr_linenumber" name="79" href="#79">79</a>        <strong class="jxr_keyword">return</strong> m_filter__IsNotDefault;
+<a class="jxr_linenumber" name="79" href="#79">79</a>        <strong class="jxr_keyword">return</strong> m_taskMonitor__IsNotDefault;
 <a class="jxr_linenumber" name="80" href="#80">80</a>      }
-<a class="jxr_linenumber" name="81" href="#81">81</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_filter__IsNotDefault;
-<a class="jxr_linenumber" name="82" href="#82">82</a>      <em class="jxr_comment">// 25, 1</em>
-<a class="jxr_linenumber" name="83" href="#83">83</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setTaskMonitor(<a href="../../../../../../org/apache/hadoop/hbase/monitoring/TaskMonitor.html">TaskMonitor</a> taskMonitor)
+<a class="jxr_linenumber" name="81" href="#81">81</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_taskMonitor__IsNotDefault;
+<a class="jxr_linenumber" name="82" href="#82">82</a>      <em class="jxr_comment">// 26, 1</em>
+<a class="jxr_linenumber" name="83" href="#83">83</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setFilter(String filter)
 <a class="jxr_linenumber" name="84" href="#84">84</a>      {
-<a class="jxr_linenumber" name="85" href="#85">85</a>        <em class="jxr_comment">// 25, 1</em>
-<a class="jxr_linenumber" name="86" href="#86">86</a>        m_taskMonitor = taskMonitor;
-<a class="jxr_linenumber" name="87" href="#87">87</a>        m_taskMonitor__IsNotDefault = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="85" href="#85">85</a>        <em class="jxr_comment">// 26, 1</em>
+<a class="jxr_linenumber" name="86" href="#86">86</a>        m_filter = filter;
+<a class="jxr_linenumber" name="87" href="#87">87</a>        m_filter__IsNotDefault = <strong class="jxr_keyword">true</strong>;
 <a class="jxr_linenumber" name="88" href="#88">88</a>      }
-<a class="jxr_linenumber" name="89" href="#89">89</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/hadoop/hbase/monitoring/TaskMonitor.html">TaskMonitor</a> getTaskMonitor()
+<a class="jxr_linenumber" name="89" href="#89">89</a>      <strong class="jxr_keyword">public</strong> String getFilter()
 <a class="jxr_linenumber" name="90" href="#90">90</a>      {
-<a class="jxr_linenumber" name="91" href="#91">91</a>        <strong class="jxr_keyword">return</strong> m_taskMonitor;
+<a class="jxr_linenumber" name="91" href="#91">91</a>        <strong class="jxr_keyword">return</strong> m_filter;
 <a class="jxr_linenumber" name="92" href="#92">92</a>      }
-<a class="jxr_linenumber" name="93" href="#93">93</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/hadoop/hbase/monitoring/TaskMonitor.html">TaskMonitor</a> m_taskMonitor;
-<a class="jxr_linenumber" name="94" href="#94">94</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getTaskMonitor__IsNotDefault()
+<a class="jxr_linenumber" name="93" href="#93">93</a>      <strong class="jxr_keyword">private</strong> String m_filter;
+<a class="jxr_linenumber" name="94" href="#94">94</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getFilter__IsNotDefault()
 <a class="jxr_linenumber" name="95" href="#95">95</a>      {
-<a class="jxr_linenumber" name="96" href="#96">96</a>        <strong class="jxr_keyword">return</strong> m_taskMonitor__IsNotDefault;
+<a class="jxr_linenumber" name="96" href="#96">96</a>        <strong class="jxr_keyword">return</strong> m_filter__IsNotDefault;
 <a class="jxr_linenumber" name="97" href="#97">97</a>      }
-<a class="jxr_linenumber" name="98" href="#98">98</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_taskMonitor__IsNotDefault;
+<a class="jxr_linenumber" name="98" href="#98">98</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_filter__IsNotDefault;
 <a class="jxr_linenumber" name="99" href="#99">99</a>    }
 <a class="jxr_linenumber" name="100" href="#100">100</a>   @Override
 <a class="jxr_linenumber" name="101" href="#101">101</a>   <strong class="jxr_keyword">protected</strong> org.jamon.AbstractTemplateProxy.ImplData makeImplData()
@@ -124,17 +124,17 @@
 <a class="jxr_linenumber" name="114" href="#114">114</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
 <a class="jxr_linenumber" name="115" href="#115">115</a>   }
 <a class="jxr_linenumber" name="116" href="#116">116</a>   
-<a class="jxr_linenumber" name="117" href="#117">117</a>   <strong class="jxr_keyword">protected</strong> String filter;
-<a class="jxr_linenumber" name="118" href="#118">118</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl setFilter(String p_filter)
+<a class="jxr_linenumber" name="117" href="#117">117</a>   <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/hadoop/hbase/monitoring/TaskMonitor.html">TaskMonitor</a> taskMonitor;
+<a class="jxr_linenumber" name="118" href="#118">118</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl setTaskMonitor(<a href="../../../../../../org/apache/hadoop/hbase/monitoring/TaskMonitor.html">TaskMonitor</a> p_taskMonitor)
 <a class="jxr_linenumber" name="119" href="#119">119</a>   {
-<a class="jxr_linenumber" name="120" href="#120">120</a>     (getImplData()).setFilter(p_filter);
+<a class="jxr_linenumber" name="120" href="#120">120</a>     (getImplData()).setTaskMonitor(p_taskMonitor);
 <a class="jxr_linenumber" name="121" href="#121">121</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
 <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">protected</strong> <a href="../../../../../../org/apache/hadoop/hbase/monitoring/TaskMonitor.html">TaskMonitor</a> taskMonitor;
-<a class="jxr_linenumber" name="125" href="#125">125</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl setTaskMonitor(<a href="../../../../../../org/apache/hadoop/hbase/monitoring/TaskMonitor.html">TaskMonitor</a> p_taskMonitor)
+<a class="jxr_linenumber" name="124" href="#124">124</a>   <strong class="jxr_keyword">protected</strong> String filter;
+<a class="jxr_linenumber" name="125" href="#125">125</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl setFilter(String p_filter)
 <a class="jxr_linenumber" name="126" href="#126">126</a>   {
-<a class="jxr_linenumber" name="127" href="#127">127</a>     (getImplData()).setTaskMonitor(p_taskMonitor);
+<a class="jxr_linenumber" name="127" href="#127">127</a>     (getImplData()).setFilter(p_filter);
 <a class="jxr_linenumber" name="128" href="#128">128</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
 <a class="jxr_linenumber" name="129" href="#129">129</a>   }
 <a class="jxr_linenumber" name="130" href="#130">130</a>   

http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/xref/org/apache/hadoop/hbase/tmpl/common/TaskMonitorTmplImpl.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/hadoop/hbase/tmpl/common/TaskMonitorTmplImpl.html b/xref/org/apache/hadoop/hbase/tmpl/common/TaskMonitorTmplImpl.html
index c8eee7a..ff6d16d 100644
--- a/xref/org/apache/hadoop/hbase/tmpl/common/TaskMonitorTmplImpl.html
+++ b/xref/org/apache/hadoop/hbase/tmpl/common/TaskMonitorTmplImpl.html
@@ -26,21 +26,21 @@
 <a class="jxr_linenumber" name="16" href="#16">16</a>  
 <a class="jxr_linenumber" name="17" href="#17">17</a>  {
 <a class="jxr_linenumber" name="18" href="#18">18</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String format;
-<a class="jxr_linenumber" name="19" href="#19">19</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String filter;
-<a class="jxr_linenumber" name="20" href="#20">20</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../../org/apache/hadoop/hbase/monitoring/TaskMonitor.html">TaskMonitor</a> taskMonitor;
+<a class="jxr_linenumber" name="19" href="#19">19</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../../org/apache/hadoop/hbase/monitoring/TaskMonitor.html">TaskMonitor</a> taskMonitor;
+<a class="jxr_linenumber" name="20" href="#20">20</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String filter;
 <a class="jxr_linenumber" name="21" href="#21">21</a>    <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl.ImplData __jamon_setOptionalArguments(org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl.ImplData p_implData)
 <a class="jxr_linenumber" name="22" href="#22">22</a>    {
 <a class="jxr_linenumber" name="23" href="#23">23</a>      <strong class="jxr_keyword">if</strong>(! p_implData.getFormat__IsNotDefault())
 <a class="jxr_linenumber" name="24" href="#24">24</a>      {
 <a class="jxr_linenumber" name="25" href="#25">25</a>        p_implData.setFormat(<span class="jxr_string">"html"</span>);
 <a class="jxr_linenumber" name="26" href="#26">26</a>      }
-<a class="jxr_linenumber" name="27" href="#27">27</a>      <strong class="jxr_keyword">if</strong>(! p_implData.getFilter__IsNotDefault())
+<a class="jxr_linenumber" name="27" href="#27">27</a>      <strong class="jxr_keyword">if</strong>(! p_implData.getTaskMonitor__IsNotDefault())
 <a class="jxr_linenumber" name="28" href="#28">28</a>      {
-<a class="jxr_linenumber" name="29" href="#29">29</a>        p_implData.setFilter(<span class="jxr_string">"general"</span>);
+<a class="jxr_linenumber" name="29" href="#29">29</a>        p_implData.setTaskMonitor(TaskMonitor.get());
 <a class="jxr_linenumber" name="30" href="#30">30</a>      }
-<a class="jxr_linenumber" name="31" href="#31">31</a>      <strong class="jxr_keyword">if</strong>(! p_implData.getTaskMonitor__IsNotDefault())
+<a class="jxr_linenumber" name="31" href="#31">31</a>      <strong class="jxr_keyword">if</strong>(! p_implData.getFilter__IsNotDefault())
 <a class="jxr_linenumber" name="32" href="#32">32</a>      {
-<a class="jxr_linenumber" name="33" href="#33">33</a>        p_implData.setTaskMonitor(TaskMonitor.get());
+<a class="jxr_linenumber" name="33" href="#33">33</a>        p_implData.setFilter(<span class="jxr_string">"general"</span>);
 <a class="jxr_linenumber" name="34" href="#34">34</a>      }
 <a class="jxr_linenumber" name="35" href="#35">35</a>      <strong class="jxr_keyword">return</strong> p_implData;
 <a class="jxr_linenumber" name="36" href="#36">36</a>    }
@@ -48,8 +48,8 @@
 <a class="jxr_linenumber" name="38" href="#38">38</a>    {
 <a class="jxr_linenumber" name="39" href="#39">39</a>      <strong class="jxr_keyword">super</strong>(p_templateManager, __jamon_setOptionalArguments(p_implData));
 <a class="jxr_linenumber" name="40" href="#40">40</a>      format = p_implData.getFormat();
-<a class="jxr_linenumber" name="41" href="#41">41</a>      filter = p_implData.getFilter();
-<a class="jxr_linenumber" name="42" href="#42">42</a>      taskMonitor = p_implData.getTaskMonitor();
+<a class="jxr_linenumber" name="41" href="#41">41</a>      taskMonitor = p_implData.getTaskMonitor();
+<a class="jxr_linenumber" name="42" href="#42">42</a>      filter = p_implData.getFilter();
 <a class="jxr_linenumber" name="43" href="#43">43</a>    }
 <a class="jxr_linenumber" name="44" href="#44">44</a>    
 <a class="jxr_linenumber" name="45" href="#45">45</a>    @Override <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> renderNoFlush(<strong class="jxr_keyword">final</strong> java.io.Writer jamonWriter)

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

http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/xref/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html b/xref/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
index 8367aeb..cc455be 100644
--- a/xref/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
+++ b/xref/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
@@ -70,14 +70,14 @@
 <a class="jxr_linenumber" name="60" href="#60">60</a>  
 <a class="jxr_linenumber" name="61" href="#61">61</a>  {
 <a class="jxr_linenumber" name="62" href="#62">62</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html">HMaster</a> master;
-<a class="jxr_linenumber" name="63" href="#63">63</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html">ServerName</a> metaLocation;
+<a class="jxr_linenumber" name="63" href="#63">63</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html">AssignmentManager</a> assignmentManager;
 <a class="jxr_linenumber" name="64" href="#64">64</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> List&lt;ServerName&gt; servers;
-<a class="jxr_linenumber" name="65" href="#65">65</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Map&lt;String,Integer&gt; frags;
-<a class="jxr_linenumber" name="66" href="#66">66</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">boolean</strong> catalogJanitorEnabled;
-<a class="jxr_linenumber" name="67" href="#67">67</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html">AssignmentManager</a> assignmentManager;
-<a class="jxr_linenumber" name="68" href="#68">68</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String filter;
-<a class="jxr_linenumber" name="69" href="#69">69</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html">ServerManager</a> serverManager;
-<a class="jxr_linenumber" name="70" href="#70">70</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Set&lt;ServerName&gt; deadServers;
+<a class="jxr_linenumber" name="65" href="#65">65</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String filter;
+<a class="jxr_linenumber" name="66" href="#66">66</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Set&lt;ServerName&gt; deadServers;
+<a class="jxr_linenumber" name="67" href="#67">67</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Map&lt;String,Integer&gt; frags;
+<a class="jxr_linenumber" name="68" href="#68">68</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html">ServerManager</a> serverManager;
+<a class="jxr_linenumber" name="69" href="#69">69</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">boolean</strong> catalogJanitorEnabled;
+<a class="jxr_linenumber" name="70" href="#70">70</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html">ServerName</a> metaLocation;
 <a class="jxr_linenumber" name="71" href="#71">71</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String format;
 <a class="jxr_linenumber" name="72" href="#72">72</a>    <em class="jxr_comment">// 68, 1</em>
 <a class="jxr_linenumber" name="73" href="#73">73</a>    
@@ -108,37 +108,37 @@
 <a class="jxr_linenumber" name="98" href="#98">98</a>  
 <a class="jxr_linenumber" name="99" href="#99">99</a>    <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl.ImplData __jamon_setOptionalArguments(org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl.ImplData p_implData)
 <a class="jxr_linenumber" name="100" href="#100">100</a>   {
-<a class="jxr_linenumber" name="101" href="#101">101</a>     <strong class="jxr_keyword">if</strong>(! p_implData.getMetaLocation__IsNotDefault())
+<a class="jxr_linenumber" name="101" href="#101">101</a>     <strong class="jxr_keyword">if</strong>(! p_implData.getAssignmentManager__IsNotDefault())
 <a class="jxr_linenumber" name="102" href="#102">102</a>     {
-<a class="jxr_linenumber" name="103" href="#103">103</a>       p_implData.setMetaLocation(<strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="103" href="#103">103</a>       p_implData.setAssignmentManager(<strong class="jxr_keyword">null</strong>);
 <a class="jxr_linenumber" name="104" href="#104">104</a>     }
 <a class="jxr_linenumber" name="105" href="#105">105</a>     <strong class="jxr_keyword">if</strong>(! p_implData.getServers__IsNotDefault())
 <a class="jxr_linenumber" name="106" href="#106">106</a>     {
 <a class="jxr_linenumber" name="107" href="#107">107</a>       p_implData.setServers(<strong class="jxr_keyword">null</strong>);
 <a class="jxr_linenumber" name="108" href="#108">108</a>     }
-<a class="jxr_linenumber" name="109" href="#109">109</a>     <strong class="jxr_keyword">if</strong>(! p_implData.getFrags__IsNotDefault())
+<a class="jxr_linenumber" name="109" href="#109">109</a>     <strong class="jxr_keyword">if</strong>(! p_implData.getFilter__IsNotDefault())
 <a class="jxr_linenumber" name="110" href="#110">110</a>     {
-<a class="jxr_linenumber" name="111" href="#111">111</a>       p_implData.setFrags(<strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="111" href="#111">111</a>       p_implData.setFilter(<span class="jxr_string">"general"</span>);
 <a class="jxr_linenumber" name="112" href="#112">112</a>     }
-<a class="jxr_linenumber" name="113" href="#113">113</a>     <strong class="jxr_keyword">if</strong>(! p_implData.getCatalogJanitorEnabled__IsNotDefault())
+<a class="jxr_linenumber" name="113" href="#113">113</a>     <strong class="jxr_keyword">if</strong>(! p_implData.getDeadServers__IsNotDefault())
 <a class="jxr_linenumber" name="114" href="#114">114</a>     {
-<a class="jxr_linenumber" name="115" href="#115">115</a>       p_implData.setCatalogJanitorEnabled(<strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="115" href="#115">115</a>       p_implData.setDeadServers(<strong class="jxr_keyword">null</strong>);
 <a class="jxr_linenumber" name="116" href="#116">116</a>     }
-<a class="jxr_linenumber" name="117" href="#117">117</a>     <strong class="jxr_keyword">if</strong>(! p_implData.getAssignmentManager__IsNotDefault())
+<a class="jxr_linenumber" name="117" href="#117">117</a>     <strong class="jxr_keyword">if</strong>(! p_implData.getFrags__IsNotDefault())
 <a class="jxr_linenumber" name="118" href="#118">118</a>     {
-<a class="jxr_linenumber" name="119" href="#119">119</a>       p_implData.setAssignmentManager(<strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="119" href="#119">119</a>       p_implData.setFrags(<strong class="jxr_keyword">null</strong>);
 <a class="jxr_linenumber" name="120" href="#120">120</a>     }
-<a class="jxr_linenumber" name="121" href="#121">121</a>     <strong class="jxr_keyword">if</strong>(! p_implData.getFilter__IsNotDefault())
+<a class="jxr_linenumber" name="121" href="#121">121</a>     <strong class="jxr_keyword">if</strong>(! p_implData.getServerManager__IsNotDefault())
 <a class="jxr_linenumber" name="122" href="#122">122</a>     {
-<a class="jxr_linenumber" name="123" href="#123">123</a>       p_implData.setFilter(<span class="jxr_string">"general"</span>);
+<a class="jxr_linenumber" name="123" href="#123">123</a>       p_implData.setServerManager(<strong class="jxr_keyword">null</strong>);
 <a class="jxr_linenumber" name="124" href="#124">124</a>     }
-<a class="jxr_linenumber" name="125" href="#125">125</a>     <strong class="jxr_keyword">if</strong>(! p_implData.getServerManager__IsNotDefault())
+<a class="jxr_linenumber" name="125" href="#125">125</a>     <strong class="jxr_keyword">if</strong>(! p_implData.getCatalogJanitorEnabled__IsNotDefault())
 <a class="jxr_linenumber" name="126" href="#126">126</a>     {
-<a class="jxr_linenumber" name="127" href="#127">127</a>       p_implData.setServerManager(<strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="127" href="#127">127</a>       p_implData.setCatalogJanitorEnabled(<strong class="jxr_keyword">true</strong>);
 <a class="jxr_linenumber" name="128" href="#128">128</a>     }
-<a class="jxr_linenumber" name="129" href="#129">129</a>     <strong class="jxr_keyword">if</strong>(! p_implData.getDeadServers__IsNotDefault())
+<a class="jxr_linenumber" name="129" href="#129">129</a>     <strong class="jxr_keyword">if</strong>(! p_implData.getMetaLocation__IsNotDefault())
 <a class="jxr_linenumber" name="130" href="#130">130</a>     {
-<a class="jxr_linenumber" name="131" href="#131">131</a>       p_implData.setDeadServers(<strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="131" href="#131">131</a>       p_implData.setMetaLocation(<strong class="jxr_keyword">null</strong>);
 <a class="jxr_linenumber" name="132" href="#132">132</a>     }
 <a class="jxr_linenumber" name="133" href="#133">133</a>     <strong class="jxr_keyword">if</strong>(! p_implData.getFormat__IsNotDefault())
 <a class="jxr_linenumber" name="134" href="#134">134</a>     {
@@ -150,14 +150,14 @@
 <a class="jxr_linenumber" name="140" href="#140">140</a>   {
 <a class="jxr_linenumber" name="141" href="#141">141</a>     <strong class="jxr_keyword">super</strong>(p_templateManager, __jamon_setOptionalArguments(p_implData));
 <a class="jxr_linenumber" name="142" href="#142">142</a>     master = p_implData.getMaster();
-<a class="jxr_linenumber" name="143" href="#143">143</a>     metaLocation = p_implData.getMetaLocation();
+<a class="jxr_linenumber" name="143" href="#143">143</a>     assignmentManager = p_implData.getAssignmentManager();
 <a class="jxr_linenumber" name="144" href="#144">144</a>     servers = p_implData.getServers();
-<a class="jxr_linenumber" name="145" href="#145">145</a>     frags = p_implData.getFrags();
-<a class="jxr_linenumber" name="146" href="#146">146</a>     catalogJanitorEnabled = p_implData.getCatalogJanitorEnabled();
-<a class="jxr_linenumber" name="147" href="#147">147</a>     assignmentManager = p_implData.getAssignmentManager();
-<a class="jxr_linenumber" name="148" href="#148">148</a>     filter = p_implData.getFilter();
-<a class="jxr_linenumber" name="149" href="#149">149</a>     serverManager = p_implData.getServerManager();
-<a class="jxr_linenumber" name="150" href="#150">150</a>     deadServers = p_implData.getDeadServers();
+<a class="jxr_linenumber" name="145" href="#145">145</a>     filter = p_implData.getFilter();
+<a class="jxr_linenumber" name="146" href="#146">146</a>     deadServers = p_implData.getDeadServers();
+<a class="jxr_linenumber" name="147" href="#147">147</a>     frags = p_implData.getFrags();
+<a class="jxr_linenumber" name="148" href="#148">148</a>     serverManager = p_implData.getServerManager();
+<a class="jxr_linenumber" name="149" href="#149">149</a>     catalogJanitorEnabled = p_implData.getCatalogJanitorEnabled();
+<a class="jxr_linenumber" name="150" href="#150">150</a>     metaLocation = p_implData.getMetaLocation();
 <a class="jxr_linenumber" name="151" href="#151">151</a>     format = p_implData.getFormat();
 <a class="jxr_linenumber" name="152" href="#152">152</a>   }
 <a class="jxr_linenumber" name="153" href="#153">153</a>   
@@ -172,8 +172,8 @@
 <a class="jxr_linenumber" name="162" href="#162">162</a>       <em class="jxr_comment">// 60, 3</em>
 <a class="jxr_linenumber" name="163" href="#163">163</a>       {
 <a class="jxr_linenumber" name="164" href="#164">164</a>         org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl __jamon__<strong class="jxr_keyword">var</strong>_0 = <strong class="jxr_keyword">new</strong> org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl(<strong class="jxr_keyword">this</strong>.getTemplateManager());
-<a class="jxr_linenumber" name="165" href="#165">165</a>         __jamon__<strong class="jxr_keyword">var</strong>_0.setFormat(<span class="jxr_string">"json"</span> );
-<a class="jxr_linenumber" name="166" href="#166">166</a>         __jamon__<strong class="jxr_keyword">var</strong>_0.setFilter(filter);
+<a class="jxr_linenumber" name="165" href="#165">165</a>         __jamon__<strong class="jxr_keyword">var</strong>_0.setFilter(filter);
+<a class="jxr_linenumber" name="166" href="#166">166</a>         __jamon__<strong class="jxr_keyword">var</strong>_0.setFormat(<span class="jxr_string">"json"</span> );
 <a class="jxr_linenumber" name="167" href="#167">167</a>         __jamon__<strong class="jxr_keyword">var</strong>_0.renderNoFlush(jamonWriter);
 <a class="jxr_linenumber" name="168" href="#168">168</a>       }
 <a class="jxr_linenumber" name="169" href="#169">169</a>       <em class="jxr_comment">// 60, 68</em>


[15/24] hbase git commit: Published site at 0d72849581c1e5a50a2aa7757b909e5531b8d12c.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html
index bddf5c5..80b5066 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html
@@ -168,513 +168,518 @@
 <span class="sourceLineNo">160</span>  public ScanQueryMatcher(Scan scan, ScanInfo scanInfo, NavigableSet&lt;byte[]&gt; columns,<a name="line.160"></a>
 <span class="sourceLineNo">161</span>      ScanType scanType, long readPointToUse, long earliestPutTs, long oldestUnexpiredTS,<a name="line.161"></a>
 <span class="sourceLineNo">162</span>      long now, RegionCoprocessorHost regionCoprocessorHost) throws IOException {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    this.tr = scan.getTimeRange();<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    this.rowComparator = scanInfo.getComparator();<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    this.regionCoprocessorHost = regionCoprocessorHost;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    this.deletes =  instantiateDeleteTracker();<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    this.stopRow = scan.getStopRow();<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    this.startKey = CellUtil.createFirstDeleteFamilyCellOnRow(scan.getStartRow(),<a name="line.168"></a>
-<span class="sourceLineNo">169</span>        scanInfo.getFamily());<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    this.filter = scan.getFilter();<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    this.earliestPutTs = earliestPutTs;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    this.oldestUnexpiredTS = oldestUnexpiredTS;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    this.now = now;<a name="line.173"></a>
-<span class="sourceLineNo">174</span><a name="line.174"></a>
-<span class="sourceLineNo">175</span>    this.maxReadPointToTrackVersions = readPointToUse;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    this.timeToPurgeDeletes = scanInfo.getTimeToPurgeDeletes();<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    this.ttl = oldestUnexpiredTS;<a name="line.177"></a>
-<span class="sourceLineNo">178</span><a name="line.178"></a>
-<span class="sourceLineNo">179</span>    /* how to deal with deletes */<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    this.isUserScan = scanType == ScanType.USER_SCAN;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    // keep deleted cells: if compaction or raw scan<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    this.keepDeletedCells = scan.isRaw() ? KeepDeletedCells.TRUE :<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      isUserScan ? KeepDeletedCells.FALSE : scanInfo.getKeepDeletedCells();<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    // retain deletes: if minor compaction or raw scanisDone<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    this.retainDeletesInOutput = scanType == ScanType.COMPACT_RETAIN_DELETES || scan.isRaw();<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    // seePastDeleteMarker: user initiated scans<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    this.seePastDeleteMarkers =<a name="line.187"></a>
-<span class="sourceLineNo">188</span>        scanInfo.getKeepDeletedCells() != KeepDeletedCells.FALSE &amp;&amp; isUserScan;<a name="line.188"></a>
-<span class="sourceLineNo">189</span><a name="line.189"></a>
-<span class="sourceLineNo">190</span>    int maxVersions =<a name="line.190"></a>
-<span class="sourceLineNo">191</span>        scan.isRaw() ? scan.getMaxVersions() : Math.min(scan.getMaxVersions(),<a name="line.191"></a>
-<span class="sourceLineNo">192</span>          scanInfo.getMaxVersions());<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>    // Single branch to deal with two types of reads (columns vs all in family)<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    if (columns == null || columns.size() == 0) {<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      // there is always a null column in the wildcard column query.<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      hasNullColumn = true;<a name="line.197"></a>
+<span class="sourceLineNo">163</span>    TimeRange timeRange = scan.getColumnFamilyTimeRange().get(scanInfo.getFamily());<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    if (timeRange == null) {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      this.tr = scan.getTimeRange();<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    } else {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      this.tr = timeRange;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    }<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    this.rowComparator = scanInfo.getComparator();<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    this.regionCoprocessorHost = regionCoprocessorHost;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    this.deletes =  instantiateDeleteTracker();<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    this.stopRow = scan.getStopRow();<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    this.startKey = CellUtil.createFirstDeleteFamilyCellOnRow(scan.getStartRow(),<a name="line.173"></a>
+<span class="sourceLineNo">174</span>        scanInfo.getFamily());<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    this.filter = scan.getFilter();<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    this.earliestPutTs = earliestPutTs;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    this.oldestUnexpiredTS = oldestUnexpiredTS;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    this.now = now;<a name="line.178"></a>
+<span class="sourceLineNo">179</span><a name="line.179"></a>
+<span class="sourceLineNo">180</span>    this.maxReadPointToTrackVersions = readPointToUse;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    this.timeToPurgeDeletes = scanInfo.getTimeToPurgeDeletes();<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    this.ttl = oldestUnexpiredTS;<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span>    /* how to deal with deletes */<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    this.isUserScan = scanType == ScanType.USER_SCAN;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    // keep deleted cells: if compaction or raw scan<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    this.keepDeletedCells = scan.isRaw() ? KeepDeletedCells.TRUE :<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      isUserScan ? KeepDeletedCells.FALSE : scanInfo.getKeepDeletedCells();<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    // retain deletes: if minor compaction or raw scanisDone<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    this.retainDeletesInOutput = scanType == ScanType.COMPACT_RETAIN_DELETES || scan.isRaw();<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    // seePastDeleteMarker: user initiated scans<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    this.seePastDeleteMarkers =<a name="line.192"></a>
+<span class="sourceLineNo">193</span>        scanInfo.getKeepDeletedCells() != KeepDeletedCells.FALSE &amp;&amp; isUserScan;<a name="line.193"></a>
+<span class="sourceLineNo">194</span><a name="line.194"></a>
+<span class="sourceLineNo">195</span>    int maxVersions =<a name="line.195"></a>
+<span class="sourceLineNo">196</span>        scan.isRaw() ? scan.getMaxVersions() : Math.min(scan.getMaxVersions(),<a name="line.196"></a>
+<span class="sourceLineNo">197</span>          scanInfo.getMaxVersions());<a name="line.197"></a>
 <span class="sourceLineNo">198</span><a name="line.198"></a>
-<span class="sourceLineNo">199</span>      // use a specialized scan for wildcard column tracker.<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      this.columns = new ScanWildcardColumnTracker(<a name="line.200"></a>
-<span class="sourceLineNo">201</span>          scanInfo.getMinVersions(), maxVersions, oldestUnexpiredTS);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    } else {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      // whether there is null column in the explicit column query<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      hasNullColumn = (columns.first().length == 0);<a name="line.204"></a>
-<span class="sourceLineNo">205</span><a name="line.205"></a>
-<span class="sourceLineNo">206</span>      // We can share the ExplicitColumnTracker, diff is we reset<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      // between rows, not between storefiles.<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      this.columns = new ExplicitColumnTracker(columns, scanInfo.getMinVersions(), maxVersions,<a name="line.208"></a>
-<span class="sourceLineNo">209</span>          oldestUnexpiredTS);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    }<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    this.isReversed = scan.isReversed();<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>  private DeleteTracker instantiateDeleteTracker() throws IOException {<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    DeleteTracker tracker = new ScanDeleteTracker();<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    if (regionCoprocessorHost != null) {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      tracker = regionCoprocessorHost.postInstantiateDeleteTracker(tracker);<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    }<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    return tracker;<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>  /**<a name="line.222"></a>
-<span class="sourceLineNo">223</span>   * Construct a QueryMatcher for a scan that drop deletes from a limited range of rows.<a name="line.223"></a>
-<span class="sourceLineNo">224</span>   * @param scan<a name="line.224"></a>
-<span class="sourceLineNo">225</span>   * @param scanInfo The store's immutable scan info<a name="line.225"></a>
-<span class="sourceLineNo">226</span>   * @param columns<a name="line.226"></a>
-<span class="sourceLineNo">227</span>   * @param earliestPutTs Earliest put seen in any of the store files.<a name="line.227"></a>
-<span class="sourceLineNo">228</span>   * @param oldestUnexpiredTS the oldest timestamp we are interested in, based on TTL<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   * @param now the current server time<a name="line.229"></a>
-<span class="sourceLineNo">230</span>   * @param dropDeletesFromRow The inclusive left bound of the range; can be EMPTY_START_ROW.<a name="line.230"></a>
-<span class="sourceLineNo">231</span>   * @param dropDeletesToRow The exclusive right bound of the range; can be EMPTY_END_ROW.<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   * @param regionCoprocessorHost <a name="line.232"></a>
-<span class="sourceLineNo">233</span>   * @throws IOException <a name="line.233"></a>
-<span class="sourceLineNo">234</span>   */<a name="line.234"></a>
-<span class="sourceLineNo">235</span>  public ScanQueryMatcher(Scan scan, ScanInfo scanInfo, NavigableSet&lt;byte[]&gt; columns,<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      long readPointToUse, long earliestPutTs, long oldestUnexpiredTS, long now,<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      byte[] dropDeletesFromRow, byte[] dropDeletesToRow,<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      RegionCoprocessorHost regionCoprocessorHost) throws IOException {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    this(scan, scanInfo, columns, ScanType.COMPACT_RETAIN_DELETES, readPointToUse, earliestPutTs,<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        oldestUnexpiredTS, now, regionCoprocessorHost);<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    Preconditions.checkArgument((dropDeletesFromRow != null) &amp;&amp; (dropDeletesToRow != null));<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    this.dropDeletesFromRow = dropDeletesFromRow;<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    this.dropDeletesToRow = dropDeletesToRow;<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>   * Constructor for tests<a name="line.247"></a>
-<span class="sourceLineNo">248</span>   */<a name="line.248"></a>
-<span class="sourceLineNo">249</span>  ScanQueryMatcher(Scan scan, ScanInfo scanInfo,<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      NavigableSet&lt;byte[]&gt; columns, long oldestUnexpiredTS, long now) throws IOException {<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    this(scan, scanInfo, columns, ScanType.USER_SCAN,<a name="line.251"></a>
-<span class="sourceLineNo">252</span>          Long.MAX_VALUE, /* max Readpoint to track versions */<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        HConstants.LATEST_TIMESTAMP, oldestUnexpiredTS, now, null);<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>  /**<a name="line.256"></a>
-<span class="sourceLineNo">257</span>   *<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   * @return  whether there is an null column in the query<a name="line.258"></a>
-<span class="sourceLineNo">259</span>   */<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  public boolean hasNullColumnInQuery() {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    return hasNullColumn;<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>   * Determines if the caller should do one of several things:<a name="line.265"></a>
-<span class="sourceLineNo">266</span>   * - seek/skip to the next row (MatchCode.SEEK_NEXT_ROW)<a name="line.266"></a>
-<span class="sourceLineNo">267</span>   * - seek/skip to the next column (MatchCode.SEEK_NEXT_COL)<a name="line.267"></a>
-<span class="sourceLineNo">268</span>   * - include the current KeyValue (MatchCode.INCLUDE)<a name="line.268"></a>
-<span class="sourceLineNo">269</span>   * - ignore the current KeyValue (MatchCode.SKIP)<a name="line.269"></a>
-<span class="sourceLineNo">270</span>   * - got to the next row (MatchCode.DONE)<a name="line.270"></a>
-<span class="sourceLineNo">271</span>   *<a name="line.271"></a>
-<span class="sourceLineNo">272</span>   * @param cell KeyValue to check<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   * @return The match code instance.<a name="line.273"></a>
-<span class="sourceLineNo">274</span>   * @throws IOException in case there is an internal consistency problem<a name="line.274"></a>
-<span class="sourceLineNo">275</span>   *      caused by a data corruption.<a name="line.275"></a>
-<span class="sourceLineNo">276</span>   */<a name="line.276"></a>
-<span class="sourceLineNo">277</span>  public MatchCode match(Cell cell) throws IOException {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    if (filter != null &amp;&amp; filter.filterAllRemaining()) {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      return MatchCode.DONE_SCAN;<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    }<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    int ret = this.rowComparator.compareRows(curCell, cell);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    if (!this.isReversed) {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      if (ret &lt;= -1) {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>        return MatchCode.DONE;<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      } else if (ret &gt;= 1) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>        // could optimize this, if necessary?<a name="line.286"></a>
-<span class="sourceLineNo">287</span>        // Could also be called SEEK_TO_CURRENT_ROW, but this<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        // should be rare/never happens.<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        return MatchCode.SEEK_NEXT_ROW;<a name="line.289"></a>
-<span class="sourceLineNo">290</span>      }<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    } else {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      if (ret &lt;= -1) {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        return MatchCode.SEEK_NEXT_ROW;<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      } else if (ret &gt;= 1) {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>        return MatchCode.DONE;<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><a name="line.298"></a>
-<span class="sourceLineNo">299</span>    // optimize case.<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    if (this.stickyNextRow)<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      return MatchCode.SEEK_NEXT_ROW;<a name="line.301"></a>
-<span class="sourceLineNo">302</span><a name="line.302"></a>
-<span class="sourceLineNo">303</span>    if (this.columns.done()) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>      stickyNextRow = true;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      return MatchCode.SEEK_NEXT_ROW;<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    }<a name="line.306"></a>
+<span class="sourceLineNo">199</span>    // Single branch to deal with two types of reads (columns vs all in family)<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    if (columns == null || columns.size() == 0) {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      // there is always a null column in the wildcard column query.<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      hasNullColumn = true;<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>      // use a specialized scan for wildcard column tracker.<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      this.columns = new ScanWildcardColumnTracker(<a name="line.205"></a>
+<span class="sourceLineNo">206</span>          scanInfo.getMinVersions(), maxVersions, oldestUnexpiredTS);<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    } else {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      // whether there is null column in the explicit column query<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      hasNullColumn = (columns.first().length == 0);<a name="line.209"></a>
+<span class="sourceLineNo">210</span><a name="line.210"></a>
+<span class="sourceLineNo">211</span>      // We can share the ExplicitColumnTracker, diff is we reset<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      // between rows, not between storefiles.<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      this.columns = new ExplicitColumnTracker(columns, scanInfo.getMinVersions(), maxVersions,<a name="line.213"></a>
+<span class="sourceLineNo">214</span>          oldestUnexpiredTS);<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    }<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    this.isReversed = scan.isReversed();<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 DeleteTracker instantiateDeleteTracker() throws IOException {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    DeleteTracker tracker = new ScanDeleteTracker();<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    if (regionCoprocessorHost != null) {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      tracker = regionCoprocessorHost.postInstantiateDeleteTracker(tracker);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    }<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    return tracker;<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>   * Construct a QueryMatcher for a scan that drop deletes from a limited range of rows.<a name="line.228"></a>
+<span class="sourceLineNo">229</span>   * @param scan<a name="line.229"></a>
+<span class="sourceLineNo">230</span>   * @param scanInfo The store's immutable scan info<a name="line.230"></a>
+<span class="sourceLineNo">231</span>   * @param columns<a name="line.231"></a>
+<span class="sourceLineNo">232</span>   * @param earliestPutTs Earliest put seen in any of the store files.<a name="line.232"></a>
+<span class="sourceLineNo">233</span>   * @param oldestUnexpiredTS the oldest timestamp we are interested in, based on TTL<a name="line.233"></a>
+<span class="sourceLineNo">234</span>   * @param now the current server time<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   * @param dropDeletesFromRow The inclusive left bound of the range; can be EMPTY_START_ROW.<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   * @param dropDeletesToRow The exclusive right bound of the range; can be EMPTY_END_ROW.<a name="line.236"></a>
+<span class="sourceLineNo">237</span>   * @param regionCoprocessorHost <a name="line.237"></a>
+<span class="sourceLineNo">238</span>   * @throws IOException <a name="line.238"></a>
+<span class="sourceLineNo">239</span>   */<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  public ScanQueryMatcher(Scan scan, ScanInfo scanInfo, NavigableSet&lt;byte[]&gt; columns,<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      long readPointToUse, long earliestPutTs, long oldestUnexpiredTS, long now,<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      byte[] dropDeletesFromRow, byte[] dropDeletesToRow,<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      RegionCoprocessorHost regionCoprocessorHost) throws IOException {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    this(scan, scanInfo, columns, ScanType.COMPACT_RETAIN_DELETES, readPointToUse, earliestPutTs,<a name="line.244"></a>
+<span class="sourceLineNo">245</span>        oldestUnexpiredTS, now, regionCoprocessorHost);<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    Preconditions.checkArgument((dropDeletesFromRow != null) &amp;&amp; (dropDeletesToRow != null));<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    this.dropDeletesFromRow = dropDeletesFromRow;<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    this.dropDeletesToRow = dropDeletesToRow;<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>   * Constructor for tests<a name="line.252"></a>
+<span class="sourceLineNo">253</span>   */<a name="line.253"></a>
+<span class="sourceLineNo">254</span>  ScanQueryMatcher(Scan scan, ScanInfo scanInfo,<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      NavigableSet&lt;byte[]&gt; columns, long oldestUnexpiredTS, long now) throws IOException {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    this(scan, scanInfo, columns, ScanType.USER_SCAN,<a name="line.256"></a>
+<span class="sourceLineNo">257</span>          Long.MAX_VALUE, /* max Readpoint to track versions */<a name="line.257"></a>
+<span class="sourceLineNo">258</span>        HConstants.LATEST_TIMESTAMP, oldestUnexpiredTS, now, null);<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>   *<a name="line.262"></a>
+<span class="sourceLineNo">263</span>   * @return  whether there is an null column in the query<a name="line.263"></a>
+<span class="sourceLineNo">264</span>   */<a name="line.264"></a>
+<span class="sourceLineNo">265</span>  public boolean hasNullColumnInQuery() {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    return hasNullColumn;<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>   * Determines if the caller should do one of several things:<a name="line.270"></a>
+<span class="sourceLineNo">271</span>   * - seek/skip to the next row (MatchCode.SEEK_NEXT_ROW)<a name="line.271"></a>
+<span class="sourceLineNo">272</span>   * - seek/skip to the next column (MatchCode.SEEK_NEXT_COL)<a name="line.272"></a>
+<span class="sourceLineNo">273</span>   * - include the current KeyValue (MatchCode.INCLUDE)<a name="line.273"></a>
+<span class="sourceLineNo">274</span>   * - ignore the current KeyValue (MatchCode.SKIP)<a name="line.274"></a>
+<span class="sourceLineNo">275</span>   * - got to the next row (MatchCode.DONE)<a name="line.275"></a>
+<span class="sourceLineNo">276</span>   *<a name="line.276"></a>
+<span class="sourceLineNo">277</span>   * @param cell KeyValue to check<a name="line.277"></a>
+<span class="sourceLineNo">278</span>   * @return The match code instance.<a name="line.278"></a>
+<span class="sourceLineNo">279</span>   * @throws IOException in case there is an internal consistency problem<a name="line.279"></a>
+<span class="sourceLineNo">280</span>   *      caused by a data corruption.<a name="line.280"></a>
+<span class="sourceLineNo">281</span>   */<a name="line.281"></a>
+<span class="sourceLineNo">282</span>  public MatchCode match(Cell cell) throws IOException {<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      if (filter != null &amp;&amp; filter.filterAllRemaining()) {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      return MatchCode.DONE_SCAN;<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    }<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    int ret = this.rowComparator.compareRows(curCell, cell);<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    if (!this.isReversed) {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      if (ret &lt;= -1) {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>        return MatchCode.DONE;<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      } else if (ret &gt;= 1) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        // could optimize this, if necessary?<a name="line.291"></a>
+<span class="sourceLineNo">292</span>        // Could also be called SEEK_TO_CURRENT_ROW, but this<a name="line.292"></a>
+<span class="sourceLineNo">293</span>        // should be rare/never happens.<a name="line.293"></a>
+<span class="sourceLineNo">294</span>        return MatchCode.SEEK_NEXT_ROW;<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      }<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    } else {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      if (ret &lt;= -1) {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        return MatchCode.SEEK_NEXT_ROW;<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      } else if (ret &gt;= 1) {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        return MatchCode.DONE;<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>    // optimize case.<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    if (this.stickyNextRow)<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      return MatchCode.SEEK_NEXT_ROW;<a name="line.306"></a>
 <span class="sourceLineNo">307</span><a name="line.307"></a>
-<span class="sourceLineNo">308</span>    long timestamp = cell.getTimestamp();<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    // check for early out based on timestamp alone<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    if (columns.isDone(timestamp)) {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      return columns.getNextRowOrNextColumn(cell);<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    }<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    // check if the cell is expired by cell TTL<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    if (HStore.isCellTTLExpired(cell, this.oldestUnexpiredTS, this.now)) {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>      return MatchCode.SKIP;<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    }    <a name="line.316"></a>
-<span class="sourceLineNo">317</span><a name="line.317"></a>
-<span class="sourceLineNo">318</span>    /*<a name="line.318"></a>
-<span class="sourceLineNo">319</span>     * The delete logic is pretty complicated now.<a name="line.319"></a>
-<span class="sourceLineNo">320</span>     * This is corroborated by the following:<a name="line.320"></a>
-<span class="sourceLineNo">321</span>     * 1. The store might be instructed to keep deleted rows around.<a name="line.321"></a>
-<span class="sourceLineNo">322</span>     * 2. A scan can optionally see past a delete marker now.<a name="line.322"></a>
-<span class="sourceLineNo">323</span>     * 3. If deleted rows are kept, we have to find out when we can<a name="line.323"></a>
-<span class="sourceLineNo">324</span>     *    remove the delete markers.<a name="line.324"></a>
-<span class="sourceLineNo">325</span>     * 4. Family delete markers are always first (regardless of their TS)<a name="line.325"></a>
-<span class="sourceLineNo">326</span>     * 5. Delete markers should not be counted as version<a name="line.326"></a>
-<span class="sourceLineNo">327</span>     * 6. Delete markers affect puts of the *same* TS<a name="line.327"></a>
-<span class="sourceLineNo">328</span>     * 7. Delete marker need to be version counted together with puts<a name="line.328"></a>
-<span class="sourceLineNo">329</span>     *    they affect<a name="line.329"></a>
-<span class="sourceLineNo">330</span>     */<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    byte typeByte = cell.getTypeByte();<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    long mvccVersion = cell.getSequenceId();<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    if (CellUtil.isDelete(cell)) {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      if (keepDeletedCells == KeepDeletedCells.FALSE<a name="line.334"></a>
-<span class="sourceLineNo">335</span>          || (keepDeletedCells == KeepDeletedCells.TTL &amp;&amp; timestamp &lt; ttl)) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        // first ignore delete markers if the scanner can do so, and the<a name="line.336"></a>
-<span class="sourceLineNo">337</span>        // range does not include the marker<a name="line.337"></a>
-<span class="sourceLineNo">338</span>        //<a name="line.338"></a>
-<span class="sourceLineNo">339</span>        // during flushes and compactions also ignore delete markers newer<a name="line.339"></a>
-<span class="sourceLineNo">340</span>        // than the readpoint of any open scanner, this prevents deleted<a name="line.340"></a>
-<span class="sourceLineNo">341</span>        // rows that could still be seen by a scanner from being collected<a name="line.341"></a>
-<span class="sourceLineNo">342</span>        boolean includeDeleteMarker = seePastDeleteMarkers ?<a name="line.342"></a>
-<span class="sourceLineNo">343</span>            tr.withinTimeRange(timestamp) :<a name="line.343"></a>
-<span class="sourceLineNo">344</span>            tr.withinOrAfterTimeRange(timestamp);<a name="line.344"></a>
-<span class="sourceLineNo">345</span>        if (includeDeleteMarker<a name="line.345"></a>
-<span class="sourceLineNo">346</span>            &amp;&amp; mvccVersion &lt;= maxReadPointToTrackVersions) {<a name="line.346"></a>
-<span class="sourceLineNo">347</span>          this.deletes.add(cell);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>        }<a name="line.348"></a>
-<span class="sourceLineNo">349</span>        // Can't early out now, because DelFam come before any other keys<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>      if ((!isUserScan)<a name="line.352"></a>
-<span class="sourceLineNo">353</span>          &amp;&amp; timeToPurgeDeletes &gt; 0<a name="line.353"></a>
-<span class="sourceLineNo">354</span>          &amp;&amp; (EnvironmentEdgeManager.currentTime() - timestamp) <a name="line.354"></a>
-<span class="sourceLineNo">355</span>            &lt;= timeToPurgeDeletes) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>        return MatchCode.INCLUDE;<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      } else if (retainDeletesInOutput || mvccVersion &gt; maxReadPointToTrackVersions) {<a name="line.357"></a>
-<span class="sourceLineNo">358</span>        // always include or it is not time yet to check whether it is OK<a name="line.358"></a>
-<span class="sourceLineNo">359</span>        // to purge deltes or not<a name="line.359"></a>
-<span class="sourceLineNo">360</span>        if (!isUserScan) {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>          // if this is not a user scan (compaction), we can filter this deletemarker right here<a name="line.361"></a>
-<span class="sourceLineNo">362</span>          // otherwise (i.e. a "raw" scan) we fall through to normal version and timerange checking<a name="line.362"></a>
-<span class="sourceLineNo">363</span>          return MatchCode.INCLUDE;<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        }<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      } else if (keepDeletedCells == KeepDeletedCells.TRUE<a name="line.365"></a>
-<span class="sourceLineNo">366</span>          || (keepDeletedCells == KeepDeletedCells.TTL &amp;&amp; timestamp &gt;= ttl)) {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        if (timestamp &lt; earliestPutTs) {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>          // keeping delete rows, but there are no puts older than<a name="line.368"></a>
-<span class="sourceLineNo">369</span>          // this delete in the store files.<a name="line.369"></a>
-<span class="sourceLineNo">370</span>          return columns.getNextRowOrNextColumn(cell);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>        }<a name="line.371"></a>
-<span class="sourceLineNo">372</span>        // else: fall through and do version counting on the<a name="line.372"></a>
-<span class="sourceLineNo">373</span>        // delete markers<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      } else {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>        return MatchCode.SKIP;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      }<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      // note the following next else if...<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      // delete marker are not subject to other delete markers<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    } else if (!this.deletes.isEmpty()) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      DeleteResult deleteResult = deletes.isDeleted(cell);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      switch (deleteResult) {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>        case FAMILY_DELETED:<a name="line.382"></a>
-<span class="sourceLineNo">383</span>        case COLUMN_DELETED:<a name="line.383"></a>
-<span class="sourceLineNo">384</span>          return columns.getNextRowOrNextColumn(cell);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>        case VERSION_DELETED:<a name="line.385"></a>
-<span class="sourceLineNo">386</span>        case FAMILY_VERSION_DELETED:<a name="line.386"></a>
-<span class="sourceLineNo">387</span>          return MatchCode.SKIP;<a name="line.387"></a>
-<span class="sourceLineNo">388</span>        case NOT_DELETED:<a name="line.388"></a>
-<span class="sourceLineNo">389</span>          break;<a name="line.389"></a>
-<span class="sourceLineNo">390</span>        default:<a name="line.390"></a>
-<span class="sourceLineNo">391</span>          throw new RuntimeException("UNEXPECTED");<a name="line.391"></a>
-<span class="sourceLineNo">392</span>        }<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    }<a name="line.393"></a>
-<span class="sourceLineNo">394</span><a name="line.394"></a>
-<span class="sourceLineNo">395</span>    int timestampComparison = tr.compare(timestamp);<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    if (timestampComparison &gt;= 1) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      return MatchCode.SKIP;<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    } else if (timestampComparison &lt;= -1) {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      return columns.getNextRowOrNextColumn(cell);<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>    // STEP 1: Check if the column is part of the requested columns<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    MatchCode colChecker = columns.checkColumn(cell, typeByte);<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    if (colChecker == MatchCode.INCLUDE) {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      ReturnCode filterResponse = ReturnCode.SKIP;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      // STEP 2: Yes, the column is part of the requested columns. Check if filter is present<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      if (filter != null) {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>        // STEP 3: Filter the key value and return if it filters out<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        filterResponse = filter.filterKeyValue(cell);<a name="line.409"></a>
-<span class="sourceLineNo">410</span>        switch (filterResponse) {<a name="line.410"></a>
-<span class="sourceLineNo">411</span>        case SKIP:<a name="line.411"></a>
-<span class="sourceLineNo">412</span>          return MatchCode.SKIP;<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        case NEXT_COL:<a name="line.413"></a>
-<span class="sourceLineNo">414</span>          return columns.getNextRowOrNextColumn(cell);<a name="line.414"></a>
-<span class="sourceLineNo">415</span>        case NEXT_ROW:<a name="line.415"></a>
-<span class="sourceLineNo">416</span>          stickyNextRow = true;<a name="line.416"></a>
-<span class="sourceLineNo">417</span>          return MatchCode.SEEK_NEXT_ROW;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>        case SEEK_NEXT_USING_HINT:<a name="line.418"></a>
-<span class="sourceLineNo">419</span>          return MatchCode.SEEK_NEXT_USING_HINT;<a name="line.419"></a>
-<span class="sourceLineNo">420</span>        default:<a name="line.420"></a>
-<span class="sourceLineNo">421</span>          //It means it is either include or include and seek next<a name="line.421"></a>
-<span class="sourceLineNo">422</span>          break;<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>      /*<a name="line.425"></a>
-<span class="sourceLineNo">426</span>       * STEP 4: Reaching this step means the column is part of the requested columns and either<a name="line.426"></a>
-<span class="sourceLineNo">427</span>       * the filter is null or the filter has returned INCLUDE or INCLUDE_AND_NEXT_COL response.<a name="line.427"></a>
-<span class="sourceLineNo">428</span>       * Now check the number of versions needed. This method call returns SKIP, INCLUDE,<a name="line.428"></a>
-<span class="sourceLineNo">429</span>       * INCLUDE_AND_SEEK_NEXT_ROW, INCLUDE_AND_SEEK_NEXT_COL.<a name="line.429"></a>
-<span class="sourceLineNo">430</span>       *<a name="line.430"></a>
-<span class="sourceLineNo">431</span>       * FilterResponse            ColumnChecker               Desired behavior<a name="line.431"></a>
-<span class="sourceLineNo">432</span>       * INCLUDE                   SKIP                        row has already been included, SKIP.<a name="line.432"></a>
-<span class="sourceLineNo">433</span>       * INCLUDE                   INCLUDE                     INCLUDE<a name="line.433"></a>
-<span class="sourceLineNo">434</span>       * INCLUDE                   INCLUDE_AND_SEEK_NEXT_COL   INCLUDE_AND_SEEK_NEXT_COL<a name="line.434"></a>
-<span class="sourceLineNo">435</span>       * INCLUDE                   INCLUDE_AND_SEEK_NEXT_ROW   INCLUDE_AND_SEEK_NEXT_ROW<a name="line.435"></a>
-<span class="sourceLineNo">436</span>       * INCLUDE_AND_SEEK_NEXT_COL SKIP                        row has already been included, SKIP.<a name="line.436"></a>
-<span class="sourceLineNo">437</span>       * INCLUDE_AND_SEEK_NEXT_COL INCLUDE                     INCLUDE_AND_SEEK_NEXT_COL<a name="line.437"></a>
-<span class="sourceLineNo">438</span>       * INCLUDE_AND_SEEK_NEXT_COL INCLUDE_AND_SEEK_NEXT_COL   INCLUDE_AND_SEEK_NEXT_COL<a name="line.438"></a>
-<span class="sourceLineNo">439</span>       * INCLUDE_AND_SEEK_NEXT_COL INCLUDE_AND_SEEK_NEXT_ROW   INCLUDE_AND_SEEK_NEXT_ROW<a name="line.439"></a>
-<span class="sourceLineNo">440</span>       *<a name="line.440"></a>
-<span class="sourceLineNo">441</span>       * In all the above scenarios, we return the column checker return value except for<a name="line.441"></a>
-<span class="sourceLineNo">442</span>       * FilterResponse (INCLUDE_AND_SEEK_NEXT_COL) and ColumnChecker(INCLUDE)<a name="line.442"></a>
-<span class="sourceLineNo">443</span>       */<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      colChecker = columns.checkVersions(cell, timestamp, typeByte,<a name="line.444"></a>
-<span class="sourceLineNo">445</span>          mvccVersion &gt; maxReadPointToTrackVersions);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      //Optimize with stickyNextRow<a name="line.446"></a>
-<span class="sourceLineNo">447</span>      boolean seekNextRowFromEssential = filterResponse == ReturnCode.INCLUDE_AND_SEEK_NEXT_ROW &amp;&amp;<a name="line.447"></a>
-<span class="sourceLineNo">448</span>          filter.isFamilyEssential(cell.getFamilyArray());<a name="line.448"></a>
-<span class="sourceLineNo">449</span>      if (colChecker == MatchCode.INCLUDE_AND_SEEK_NEXT_ROW || seekNextRowFromEssential) {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>        stickyNextRow = true;<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      }<a name="line.451"></a>
-<span class="sourceLineNo">452</span>      if (filterResponse == ReturnCode.INCLUDE_AND_SEEK_NEXT_ROW) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>        if (colChecker != MatchCode.SKIP) {<a name="line.453"></a>
-<span class="sourceLineNo">454</span>          return MatchCode.INCLUDE_AND_SEEK_NEXT_ROW;<a name="line.454"></a>
-<span class="sourceLineNo">455</span>        }<a name="line.455"></a>
-<span class="sourceLineNo">456</span>        return MatchCode.SEEK_NEXT_ROW;<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      }<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      return (filterResponse == ReturnCode.INCLUDE_AND_NEXT_COL &amp;&amp;<a name="line.458"></a>
-<span class="sourceLineNo">459</span>          colChecker == MatchCode.INCLUDE) ? MatchCode.INCLUDE_AND_SEEK_NEXT_COL<a name="line.459"></a>
-<span class="sourceLineNo">460</span>          : colChecker;<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    }<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    stickyNextRow = (colChecker == MatchCode.SEEK_NEXT_ROW) ? true<a name="line.462"></a>
-<span class="sourceLineNo">463</span>        : stickyNextRow;<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    return colChecker;<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>  /** Handle partial-drop-deletes. As we match keys in order, when we have a range from which<a name="line.467"></a>
-<span class="sourceLineNo">468</span>   * we can drop deletes, we can set retainDeletesInOutput to false for the duration of this<a name="line.468"></a>
-<span class="sourceLineNo">469</span>   * range only, and maintain consistency. */<a name="line.469"></a>
-<span class="sourceLineNo">470</span>  private void checkPartialDropDeleteRange(Cell curCell) {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    // If partial-drop-deletes are used, initially, dropDeletesFromRow and dropDeletesToRow<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    // are both set, and the matcher is set to retain deletes. We assume ordered keys. When<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    // dropDeletesFromRow is leq current kv, we start dropping deletes and reset<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    // dropDeletesFromRow; thus the 2nd "if" starts to apply.<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    if ((dropDeletesFromRow != null)<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        &amp;&amp; (Arrays.equals(dropDeletesFromRow, HConstants.EMPTY_START_ROW) ||<a name="line.476"></a>
-<span class="sourceLineNo">477</span>            (CellComparator.COMPARATOR.compareRows(curCell, dropDeletesFromRow, 0,<a name="line.477"></a>
-<span class="sourceLineNo">478</span>                dropDeletesFromRow.length) &gt;= 0))) {<a name="line.478"></a>
-<span class="sourceLineNo">479</span>      retainDeletesInOutput = false;<a name="line.479"></a>
-<span class="sourceLineNo">480</span>      dropDeletesFromRow = null;<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    }<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    // If dropDeletesFromRow is null and dropDeletesToRow is set, we are inside the partial-<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    // drop-deletes range. When dropDeletesToRow is leq current kv, we stop dropping deletes,<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    // and reset dropDeletesToRow so that we don't do any more compares.<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    if ((dropDeletesFromRow == null)<a name="line.485"></a>
-<span class="sourceLineNo">486</span>        &amp;&amp; (dropDeletesToRow != null)<a name="line.486"></a>
-<span class="sourceLineNo">487</span>        &amp;&amp; !Arrays.equals(dropDeletesToRow, HConstants.EMPTY_END_ROW)<a name="line.487"></a>
-<span class="sourceLineNo">488</span>        &amp;&amp; (CellComparator.COMPARATOR<a name="line.488"></a>
-<span class="sourceLineNo">489</span>            .compareRows(curCell, dropDeletesToRow, 0, dropDeletesToRow.length) &gt;= 0)) {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>      retainDeletesInOutput = true;<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      dropDeletesToRow = null;<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>  public boolean moreRowsMayExistAfter(Cell kv) {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    if (this.isReversed) {<a name="line.496"></a>
-<span class="sourceLineNo">497</span>      if (rowComparator.compareRows(kv, stopRow, 0, stopRow.length) &lt;= 0) {<a name="line.497"></a>
-<span class="sourceLineNo">498</span>        return false;<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      } else {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>        return true;<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>    if (!Bytes.equals(stopRow , HConstants.EMPTY_END_ROW) &amp;&amp;<a name="line.503"></a>
-<span class="sourceLineNo">504</span>        rowComparator.compareRows(kv, stopRow, 0, stopRow.length) &gt;= 0) {<a name="line.504"></a>
-<span class="sourceLineNo">505</span>      // KV &gt;= STOPROW<a name="line.505"></a>
-<span class="sourceLineNo">506</span>      // then NO there is nothing left.<a name="line.506"></a>
-<span class="sourceLineNo">507</span>      return false;<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    } else {<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      return true;<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    }<a name="line.510"></a>
-<span class="sourceLineNo">511</span>  }<a name="line.511"></a>
-<span class="sourceLineNo">512</span><a name="line.512"></a>
-<span class="sourceLineNo">513</span>  /**<a name="line.513"></a>
-<span class="sourceLineNo">514</span>   * Set the row when there is change in row<a name="line.514"></a>
-<span class="sourceLineNo">515</span>   * @param curCell<a name="line.515"></a>
-<span class="sourceLineNo">516</span>   */<a name="line.516"></a>
-<span class="sourceLineNo">517</span>  public void setToNewRow(Cell curCell) {<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    checkPartialDropDeleteRange(curCell);<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    this.curCell = curCell;<a name="line.519"></a>
-<span class="sourceLineNo">520</span>    reset();<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>  public void reset() {<a name="line.523"></a>
-<span class="sourceLineNo">524</span>    this.deletes.reset();<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    this.columns.reset();<a name="line.525"></a>
-<span class="sourceLineNo">526</span><a name="line.526"></a>
-<span class="sourceLineNo">527</span>    stickyNextRow = false;<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>   * @return the start key<a name="line.532"></a>
-<span class="sourceLineNo">533</span>   */<a name="line.533"></a>
-<span class="sourceLineNo">534</span>  public Cell getStartKey() {<a name="line.534"></a>
-<span class="sourceLineNo">535</span>    return this.startKey;<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>   * @return the Filter<a name="line.540"></a>
-<span class="sourceLineNo">541</span>   */<a name="line.541"></a>
-<span class="sourceLineNo">542</span>  Filter getFilter() {<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    return this.filter;<a name="line.543"></a>
-<span class="sourceLineNo">544</span>  }<a name="line.544"></a>
-<span class="sourceLineNo">545</span><a name="line.545"></a>
-<span class="sourceLineNo">546</span>  public Cell getNextKeyHint(Cell kv) throws IOException {<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    if (filter == null) {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>      return null;<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    } else {<a name="line.549"></a>
-<span class="sourceLineNo">550</span>      return filter.getNextCellHint(kv);<a name="line.550"></a>
-<span class="sourceLineNo">551</span>    }<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 Cell getKeyForNextColumn(Cell kv) {<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    ColumnCount nextColumn = columns.getColumnHint();<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    if (nextColumn == null) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      return CellUtil.createLastOnRowCol(kv);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>    } else {<a name="line.558"></a>
-<span class="sourceLineNo">559</span>      return CellUtil.createFirstOnRowCol(kv, nextColumn.getBuffer(), nextColumn.getOffset(),<a name="line.559"></a>
-<span class="sourceLineNo">560</span>          nextColumn.getLength());<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>  public Cell getKeyForNextRow(Cell c) {<a name="line.564"></a>
-<span class="sourceLineNo">565</span>    return CellUtil.createLastOnRow(c);<a name="line.565"></a>
-<span class="sourceLineNo">566</span>  }<a name="line.566"></a>
-<span class="sourceLineNo">567</span><a name="line.567"></a>
-<span class="sourceLineNo">568</span>  /**<a name="line.568"></a>
-<span class="sourceLineNo">569</span>   * @param nextIndexed the key of the next entry in the block index (if any)<a name="line.569"></a>
-<span class="sourceLineNo">570</span>   * @param kv The Cell we're using to calculate the seek key<a name="line.570"></a>
-<span class="sourceLineNo">571</span>   * @return result of the compare between the indexed key and the key portion of the passed cell<a name="line.571"></a>
-<span class="sourceLineNo">572</span>   */<a name="line.572"></a>
-<span class="sourceLineNo">573</span>  public int compareKeyForNextRow(Cell nextIndexed, Cell kv) {<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    return rowComparator.compareKeyBasedOnColHint(nextIndexed, kv, 0, 0, null, 0, 0,<a name="line.574"></a>
-<span class="sourceLineNo">575</span>        HConstants.OLDEST_TIMESTAMP, Type.Minimum.getCode());<a name="line.575"></a>
-<span class="sourceLineNo">576</span>  }<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>   * @param nextIndexed the key of the next entry in the block index (if any)<a name="line.579"></a>
-<span class="sourceLineNo">580</span>   * @param currentCell The Cell we're using to calculate the seek key<a name="line.580"></a>
-<span class="sourceLineNo">581</span>   * @return result of the compare between the indexed key and the key portion of the passed cell<a name="line.581"></a>
-<span class="sourceLineNo">582</span>   */<a name="line.582"></a>
-<span class="sourceLineNo">583</span>  public int compareKeyForNextColumn(Cell nextIndexed, Cell currentCell) {<a name="line.583"></a>
-<span class="sourceLineNo">584</span>    ColumnCount nextColumn = columns.getColumnHint();<a name="line.584"></a>
-<span class="sourceLineNo">585</span>    if (nextColumn == null) {<a name="line.585"></a>
-<span class="sourceLineNo">586</span>      return rowComparator.compareKeyBasedOnColHint(nextIndexed, currentCell, 0, 0, null, 0, 0,<a name="line.586"></a>
-<span class="sourceLineNo">587</span>          HConstants.OLDEST_TIMESTAMP, Type.Minimum.getCode());<a name="line.587"></a>
-<span class="sourceLineNo">588</span>    } else {<a name="line.588"></a>
-<span class="sourceLineNo">589</span>      return rowComparator.compareKeyBasedOnColHint(nextIndexed, currentCell,<a name="line.589"></a>
-<span class="sourceLineNo">590</span>          currentCell.getFamilyOffset(), currentCell.getFamilyLength(), nextColumn.getBuffer(),<a name="line.590"></a>
-<span class="sourceLineNo">591</span>          nextColumn.getOffset(), nextColumn.getLength(), HConstants.LATEST_TIMESTAMP,<a name="line.591"></a>
-<span class="sourceLineNo">592</span>          Type.Maximum.getCode());<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    }<a name="line.593"></a>
-<span class="sourceLineNo">594</span>  }<a name="line.594"></a>
-<span class="sourceLineNo">595</span><a name="line.595"></a>
-<span class="sourceLineNo">596</span>  //Used only for testing purposes<a name="line.596"></a>
-<span class="sourceLineNo">597</span>  static MatchCode checkColumn(ColumnTracker columnTracker, byte[] bytes, int offset,<a name="line.597"></a>
-<span class="sourceLineNo">598</span>      int length, long ttl, byte type, boolean ignoreCount) throws IOException {<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    KeyValue kv = KeyValueUtil.createFirstOnRow(HConstants.EMPTY_BYTE_ARRAY, 0, 0,<a name="line.599"></a>
-<span class="sourceLineNo">600</span>        HConstants.EMPTY_BYTE_ARRAY, 0, 0, bytes, offset, length);<a name="line.600"></a>
-<span class="sourceLineNo">601</span>    MatchCode matchCode = columnTracker.checkColumn(kv, type);<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    if (matchCode == MatchCode.INCLUDE) {<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      return columnTracker.checkVersions(kv, ttl, type, ignoreCount);<a name="line.603"></a>
-<span class="sourceLineNo">604</span>    }<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    return matchCode;<a name="line.605"></a>
-<span class="sourceLineNo">606</span>  }<a name="line.606"></a>
-<span class="sourceLineNo">607</span><a name="line.607"></a>
-<span class="sourceLineNo">608</span>  /**<a name="line.608"></a>
-<span class="sourceLineNo">609</span>   * {@link #match} return codes.  These instruct the scanner moving through<a name="line.609"></a>
-<span class="sourceLineNo">610</span>   * memstores and StoreFiles what to do with the current KeyValue.<a name="line.610"></a>
-<span class="sourceLineNo">611</span>   * &lt;p&gt;<a name="line.611"></a>
-<span class="sourceLineNo">612</span>   * Additionally, this contains "early-out" language to tell the scanner to<a name="line.612"></a>
-<span class="sourceLineNo">613</span>   * move on to the next File (memstore or Storefile), or to return immediately.<a name="line.613"></a>
-<span class="sourceLineNo">614</span>   */<a name="line.614"></a>
-<span class="sourceLineNo">615</span>  public static enum MatchCode {<a name="line.615"></a>
-<span class="sourceLineNo">616</span>    /**<a name="line.616"></a>
-<span class="sourceLineNo">617</span>     * Include KeyValue in the returned result<a name="line.617"></a>
-<span class="sourceLineNo">618</span>     */<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    INCLUDE,<a name="line.619"></a>
-<span class="sourceLineNo">620</span><a name="line.620"></a>
+<span class="sourceLineNo">308</span>    if (this.columns.done()) {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      stickyNextRow = true;<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      return MatchCode.SEEK_NEXT_ROW;<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>    long timestamp = cell.getTimestamp();<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    // check for early out based on timestamp alone<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    if (columns.isDone(timestamp)) {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>      return columns.getNextRowOrNextColumn(cell);<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    }<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    // check if the cell is expired by cell TTL<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    if (HStore.isCellTTLExpired(cell, this.oldestUnexpiredTS, this.now)) {<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      return MatchCode.SKIP;<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>     * The delete logic is pretty complicated now.<a name="line.324"></a>
+<span class="sourceLineNo">325</span>     * This is corroborated by the following:<a name="line.325"></a>
+<span class="sourceLineNo">326</span>     * 1. The store might be instructed to keep deleted rows around.<a name="line.326"></a>
+<span class="sourceLineNo">327</span>     * 2. A scan can optionally see past a delete marker now.<a name="line.327"></a>
+<span class="sourceLineNo">328</span>     * 3. If deleted rows are kept, we have to find out when we can<a name="line.328"></a>
+<span class="sourceLineNo">329</span>     *    remove the delete markers.<a name="line.329"></a>
+<span class="sourceLineNo">330</span>     * 4. Family delete markers are always first (regardless of their TS)<a name="line.330"></a>
+<span class="sourceLineNo">331</span>     * 5. Delete markers should not be counted as version<a name="line.331"></a>
+<span class="sourceLineNo">332</span>     * 6. Delete markers affect puts of the *same* TS<a name="line.332"></a>
+<span class="sourceLineNo">333</span>     * 7. Delete marker need to be version counted together with puts<a name="line.333"></a>
+<span class="sourceLineNo">334</span>     *    they affect<a name="line.334"></a>
+<span class="sourceLineNo">335</span>     */<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    byte typeByte = cell.getTypeByte();<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    long mvccVersion = cell.getSequenceId();<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    if (CellUtil.isDelete(cell)) {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      if (keepDeletedCells == KeepDeletedCells.FALSE<a name="line.339"></a>
+<span class="sourceLineNo">340</span>          || (keepDeletedCells == KeepDeletedCells.TTL &amp;&amp; timestamp &lt; ttl)) {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>        // first ignore delete markers if the scanner can do so, and the<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        // range does not include the marker<a name="line.342"></a>
+<span class="sourceLineNo">343</span>        //<a name="line.343"></a>
+<span class="sourceLineNo">344</span>        // during flushes and compactions also ignore delete markers newer<a name="line.344"></a>
+<span class="sourceLineNo">345</span>        // than the readpoint of any open scanner, this prevents deleted<a name="line.345"></a>
+<span class="sourceLineNo">346</span>        // rows that could still be seen by a scanner from being collected<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        boolean includeDeleteMarker = seePastDeleteMarkers ?<a name="line.347"></a>
+<span class="sourceLineNo">348</span>            tr.withinTimeRange(timestamp) :<a name="line.348"></a>
+<span class="sourceLineNo">349</span>            tr.withinOrAfterTimeRange(timestamp);<a name="line.349"></a>
+<span class="sourceLineNo">350</span>        if (includeDeleteMarker<a name="line.350"></a>
+<span class="sourceLineNo">351</span>            &amp;&amp; mvccVersion &lt;= maxReadPointToTrackVersions) {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>          this.deletes.add(cell);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>        }<a name="line.353"></a>
+<span class="sourceLineNo">354</span>        // Can't early out now, because DelFam come before any other keys<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>      if ((!isUserScan)<a name="line.357"></a>
+<span class="sourceLineNo">358</span>          &amp;&amp; timeToPurgeDeletes &gt; 0<a name="line.358"></a>
+<span class="sourceLineNo">359</span>          &amp;&amp; (EnvironmentEdgeManager.currentTime() - timestamp) <a name="line.359"></a>
+<span class="sourceLineNo">360</span>            &lt;= timeToPurgeDeletes) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>        return MatchCode.INCLUDE;<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      } else if (retainDeletesInOutput || mvccVersion &gt; maxReadPointToTrackVersions) {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>        // always include or it is not time yet to check whether it is OK<a name="line.363"></a>
+<span class="sourceLineNo">364</span>        // to purge deltes or not<a name="line.364"></a>
+<span class="sourceLineNo">365</span>        if (!isUserScan) {<a name="line.365"></a>
+<span class="sourceLineNo">366</span>          // if this is not a user scan (compaction), we can filter this deletemarker right here<a name="line.366"></a>
+<span class="sourceLineNo">367</span>          // otherwise (i.e. a "raw" scan) we fall through to normal version and timerange checking<a name="line.367"></a>
+<span class="sourceLineNo">368</span>          return MatchCode.INCLUDE;<a name="line.368"></a>
+<span class="sourceLineNo">369</span>        }<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      } else if (keepDeletedCells == KeepDeletedCells.TRUE<a name="line.370"></a>
+<span class="sourceLineNo">371</span>          || (keepDeletedCells == KeepDeletedCells.TTL &amp;&amp; timestamp &gt;= ttl)) {<a name="line.371"></a>
+<span class="sourceLineNo">372</span>        if (timestamp &lt; earliestPutTs) {<a name="line.372"></a>
+<span class="sourceLineNo">373</span>          // keeping delete rows, but there are no puts older than<a name="line.373"></a>
+<span class="sourceLineNo">374</span>          // this delete in the store files.<a name="line.374"></a>
+<span class="sourceLineNo">375</span>          return columns.getNextRowOrNextColumn(cell);<a name="line.375"></a>
+<span class="sourceLineNo">376</span>        }<a name="line.376"></a>
+<span class="sourceLineNo">377</span>        // else: fall through and do version counting on the<a name="line.377"></a>
+<span class="sourceLineNo">378</span>        // delete markers<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      } else {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>        return MatchCode.SKIP;<a name="line.380"></a>
+<span class="sourceLineNo">381</span>      }<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      // note the following next else if...<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      // delete marker are not subject to other delete markers<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    } else if (!this.deletes.isEmpty()) {<a name="line.384"></a>
+<span class="sourceLineNo">385</span>      DeleteResult deleteResult = deletes.isDeleted(cell);<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      switch (deleteResult) {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>        case FAMILY_DELETED:<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        case COLUMN_DELETED:<a name="line.388"></a>
+<span class="sourceLineNo">389</span>          return columns.getNextRowOrNextColumn(cell);<a name="line.389"></a>
+<span class="sourceLineNo">390</span>        case VERSION_DELETED:<a name="line.390"></a>
+<span class="sourceLineNo">391</span>        case FAMILY_VERSION_DELETED:<a name="line.391"></a>
+<span class="sourceLineNo">392</span>          return MatchCode.SKIP;<a name="line.392"></a>
+<span class="sourceLineNo">393</span>        case NOT_DELETED:<a name="line.393"></a>
+<span class="sourceLineNo">394</span>          break;<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        default:<a name="line.395"></a>
+<span class="sourceLineNo">396</span>          throw new RuntimeException("UNEXPECTED");<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>    int timestampComparison = tr.compare(timestamp);<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    if (timestampComparison &gt;= 1) {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      return MatchCode.SKIP;<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    } else if (timestampComparison &lt;= -1) {<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      return columns.getNextRowOrNextColumn(cell);<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>    // STEP 1: Check if the column is part of the requested columns<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    MatchCode colChecker = columns.checkColumn(cell, typeByte);<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    if (colChecker == MatchCode.INCLUDE) {<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      ReturnCode filterResponse = ReturnCode.SKIP;<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      // STEP 2: Yes, the column is part of the requested columns. Check if filter is present<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      if (filter != null) {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        // STEP 3: Filter the key value and return if it filters out<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        filterResponse = filter.filterKeyValue(cell);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        switch (filterResponse) {<a name="line.415"></a>
+<span class="sourceLineNo">416</span>        case SKIP:<a name="line.416"></a>
+<span class="sourceLineNo">417</span>          return MatchCode.SKIP;<a name="line.417"></a>
+<span class="sourceLineNo">418</span>        case NEXT_COL:<a name="line.418"></a>
+<span class="sourceLineNo">419</span>          return columns.getNextRowOrNextColumn(cell);<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        case NEXT_ROW:<a name="line.420"></a>
+<span class="sourceLineNo">421</span>          stickyNextRow = true;<a name="line.421"></a>
+<span class="sourceLineNo">422</span>          return MatchCode.SEEK_NEXT_ROW;<a name="line.422"></a>
+<span class="sourceLineNo">423</span>        case SEEK_NEXT_USING_HINT:<a name="line.423"></a>
+<span class="sourceLineNo">424</span>          return MatchCode.SEEK_NEXT_USING_HINT;<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        default:<a name="line.425"></a>
+<span class="sourceLineNo">426</span>          //It means it is either include or include and seek next<a name="line.426"></a>
+<span class="sourceLineNo">427</span>          break;<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>       * STEP 4: Reaching this step means the column is part of the requested columns and either<a name="line.431"></a>
+<span class="sourceLineNo">432</span>       * the filter is null or the filter has returned INCLUDE or INCLUDE_AND_NEXT_COL response.<a name="line.432"></a>
+<span class="sourceLineNo">433</span>       * Now check the number of versions needed. This method call returns SKIP, INCLUDE,<a name="line.433"></a>
+<span class="sourceLineNo">434</span>       * INCLUDE_AND_SEEK_NEXT_ROW, INCLUDE_AND_SEEK_NEXT_COL.<a name="line.434"></a>
+<span class="sourceLineNo">435</span>       *<a name="line.435"></a>
+<span class="sourceLineNo">436</span>       * FilterResponse            ColumnChecker               Desired behavior<a name="line.436"></a>
+<span class="sourceLineNo">437</span>       * INCLUDE                   SKIP                        row has already been included, SKIP.<a name="line.437"></a>
+<span class="sourceLineNo">438</span>       * INCLUDE                   INCLUDE                     INCLUDE<a name="line.438"></a>
+<span class="sourceLineNo">439</span>       * INCLUDE                   INCLUDE_AND_SEEK_NEXT_COL   INCLUDE_AND_SEEK_NEXT_COL<a name="line.439"></a>
+<span class="sourceLineNo">440</span>       * INCLUDE                   INCLUDE_AND_SEEK_NEXT_ROW   INCLUDE_AND_SEEK_NEXT_ROW<a name="line.440"></a>
+<span class="sourceLineNo">441</span>       * INCLUDE_AND_SEEK_NEXT_COL SKIP                        row has already been included, SKIP.<a name="line.441"></a>
+<span class="sourceLineNo">442</span>       * INCLUDE_AND_SEEK_NEXT_COL INCLUDE                     INCLUDE_AND_SEEK_NEXT_COL<a name="line.442"></a>
+<span class="sourceLineNo">443</span>       * INCLUDE_AND_SEEK_NEXT_COL INCLUDE_AND_SEEK_NEXT_COL   INCLUDE_AND_SEEK_NEXT_COL<a name="line.443"></a>
+<span class="sourceLineNo">444</span>       * INCLUDE_AND_SEEK_NEXT_COL INCLUDE_AND_SEEK_NEXT_ROW   INCLUDE_AND_SEEK_NEXT_ROW<a name="line.444"></a>
+<span class="sourceLineNo">445</span>       *<a name="line.445"></a>
+<span class="sourceLineNo">446</span>       * In all the above scenarios, we return the column checker return value except for<a name="line.446"></a>
+<span class="sourceLineNo">447</span>       * FilterResponse (INCLUDE_AND_SEEK_NEXT_COL) and ColumnChecker(INCLUDE)<a name="line.447"></a>
+<span class="sourceLineNo">448</span>       */<a name="line.448"></a>
+<span class="sourceLineNo">449</span>      colChecker = columns.checkVersions(cell, timestamp, typeByte,<a name="line.449"></a>
+<span class="sourceLineNo">450</span>          mvccVersion &gt; maxReadPointToTrackVersions);<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      //Optimize with stickyNextRow<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      boolean seekNextRowFromEssential = filterResponse == ReturnCode.INCLUDE_AND_SEEK_NEXT_ROW &amp;&amp;<a name="line.452"></a>
+<span class="sourceLineNo">453</span>          filter.isFamilyEssential(cell.getFamilyArray());<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      if (colChecker == MatchCode.INCLUDE_AND_SEEK_NEXT_ROW || seekNextRowFromEssential) {<a name="line.454"></a>
+<span class="sourceLineNo">455</span>        stickyNextRow = true;<a name="line.455"></a>
+<span class="sourceLineNo">456</span>      }<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      if (filterResponse == ReturnCode.INCLUDE_AND_SEEK_NEXT_ROW) {<a name="line.457"></a>
+<span class="sourceLineNo">458</span>        if (colChecker != MatchCode.SKIP) {<a name="line.458"></a>
+<span class="sourceLineNo">459</span>          return MatchCode.INCLUDE_AND_SEEK_NEXT_ROW;<a name="line.459"></a>
+<span class="sourceLineNo">460</span>        }<a name="line.460"></a>
+<span class="sourceLineNo">461</span>        return MatchCode.SEEK_NEXT_ROW;<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      }<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      return (filterResponse == ReturnCode.INCLUDE_AND_NEXT_COL &amp;&amp;<a name="line.463"></a>
+<span class="sourceLineNo">464</span>          colChecker == MatchCode.INCLUDE) ? MatchCode.INCLUDE_AND_SEEK_NEXT_COL<a name="line.464"></a>
+<span class="sourceLineNo">465</span>          : colChecker;<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    }<a name="line.466"></a>
+<span class="sourceLineNo">467</span>    stickyNextRow = (colChecker == MatchCode.SEEK_NEXT_ROW) ? true<a name="line.467"></a>
+<span class="sourceLineNo">468</span>        : stickyNextRow;<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    return colChecker;<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>  /** Handle partial-drop-deletes. As we match keys in order, when we have a range from which<a name="line.472"></a>
+<span class="sourceLineNo">473</span>   * we can drop deletes, we can set retainDeletesInOutput to false for the duration of this<a name="line.473"></a>
+<span class="sourceLineNo">474</span>   * range only, and maintain consistency. */<a name="line.474"></a>
+<span class="sourceLineNo">475</span>  private void checkPartialDropDeleteRange(Cell curCell) {<a name="line.475"></a>
+<span class="sourceLineNo">476</span>    // If partial-drop-deletes are used, initially, dropDeletesFromRow and dropDeletesToRow<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    // are both set, and the matcher is set to retain deletes. We assume ordered keys. When<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    // dropDeletesFromRow is leq current kv, we start dropping deletes and reset<a name="line.478"></a>
+<span class="sourceLineNo">479</span>    // dropDeletesFromRow; thus the 2nd "if" starts to apply.<a name="line.479"></a>
+<span class="sourceLineNo">480</span>    if ((dropDeletesFromRow != null)<a name="line.480"></a>
+<span class="sourceLineNo">481</span>        &amp;&amp; (Arrays.equals(dropDeletesFromRow, HConstants.EMPTY_START_ROW) ||<a name="line.481"></a>
+<span class="sourceLineNo">482</span>            (CellComparator.COMPARATOR.compareRows(curCell, dropDeletesFromRow, 0,<a name="line.482"></a>
+<span class="sourceLineNo">483</span>                dropDeletesFromRow.length) &gt;= 0))) {<a name="line.483"></a>
+<span class="sourceLineNo">484</span>      retainDeletesInOutput = false;<a name="line.484"></a>
+<span class="sourceLineNo">485</span>      dropDeletesFromRow = null;<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    }<a name="line.486"></a>
+<span class="sourceLineNo">487</span>    // If dropDeletesFromRow is null and dropDeletesToRow is set, we are inside the partial-<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    // drop-deletes range. When dropDeletesToRow is leq current kv, we stop dropping deletes,<a name="line.488"></a>
+<span class="sourceLineNo">489</span>    // and reset dropDeletesToRow so that we don't do any more compares.<a name="line.489"></a>
+<span class="sourceLineNo">490</span>    if ((dropDeletesFromRow == null)<a name="line.490"></a>
+<span class="sourceLineNo">491</span>        &amp;&amp; (dropDeletesToRow != null)<a name="line.491"></a>
+<span class="sourceLineNo">492</span>        &amp;&amp; !Arrays.equals(dropDeletesToRow, HConstants.EMPTY_END_ROW)<a name="line.492"></a>
+<span class="sourceLineNo">493</span>        &amp;&amp; (CellComparator.COMPARATOR<a name="line.493"></a>
+<span class="sourceLineNo">494</span>            .compareRows(curCell, dropDeletesToRow, 0, dropDeletesToRow.length) &gt;= 0)) {<a name="line.494"></a>
+<span class="sourceLineNo">495</span>      retainDeletesInOutput = true;<a name="line.495"></a>
+<span class="sourceLineNo">496</span>      dropDeletesToRow = null;<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>  public boolean moreRowsMayExistAfter(Cell kv) {<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    if (this.isReversed) {<a name="line.501"></a>
+<span class="sourceLineNo">502</span>      if (rowComparator.compareRows(kv, stopRow, 0, stopRow.length) &lt;= 0) {<a name="line.502"></a>
+<span class="sourceLineNo">503</span>        return false;<a name="line.503"></a>
+<span class="sourceLineNo">504</span>      } else {<a name="line.504"></a>
+<span class="sourceLineNo">505</span>        return true;<a name="line.505"></a>
+<span class="sourceLineNo">506</span>      }<a name="line.506"></a>
+<span class="sourceLineNo">507</span>    }<a name="line.507"></a>
+<span class="sourceLineNo">508</span>    if (!Bytes.equals(stopRow , HConstants.EMPTY_END_ROW) &amp;&amp;<a name="line.508"></a>
+<span class="sourceLineNo">509</span>        rowComparator.compareRows(kv, stopRow, 0, stopRow.length) &gt;= 0) {<a name="line.509"></a>
+<span class="sourceLineNo">510</span>      // KV &gt;= STOPROW<a name="line.510"></a>
+<span class="sourceLineNo">511</span>      // then NO there is nothing left.<a name="line.511"></a>
+<span class="sourceLineNo">512</span>      return false;<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    } else {<a name="line.513"></a>
+<span class="sourceLineNo">514</span>      return true;<a name="line.514"></a>
+<span class="sourceLineNo">515</span>    }<a name="line.515"></a>
+<span class="sourceLineNo">516</span>  }<a name="line.516"></a>
+<span class="sourceLineNo">517</span><a name="line.517"></a>
+<span class="sourceLineNo">518</span>  /**<a name="line.518"></a>
+<span class="sourceLineNo">519</span>   * Set the row when there is change in row<a name="line.519"></a>
+<span class="sourceLineNo">520</span>   * @param curCell<a name="line.520"></a>
+<span class="sourceLineNo">521</span>   */<a name="line.521"></a>
+<span class="sourceLineNo">522</span>  public void setToNewRow(Cell curCell) {<a name="line.522"></a>
+<span class="sourceLineNo">523</span>    checkPartialDropDeleteRange(curCell);<a name="line.523"></a>
+<span class="sourceLineNo">524</span>    this.curCell = curCell;<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    reset();<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>  public void reset() {<a name="line.528"></a>
+<span class="sourceLineNo">529</span>    this.deletes.reset();<a name="line.529"></a>
+<span class="sourceLineNo">530</span>    this.columns.reset();<a name="line.530"></a>
+<span class="sourceLineNo">531</span><a name="line.531"></a>
+<span class="sourceLineNo">532</span>    stickyNextRow = false;<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>   *<a name="line.536"></a>
+<span class="sourceLineNo">537</span>   * @return the start key<a name="line.537"></a>
+<span class="sourceLineNo">538</span>   */<a name="line.538"></a>
+<span class="sourceLineNo">539</span>  public Cell getStartKey() {<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    return this.startKey;<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>  /**<a name="line.543"></a>
+<span class="sourceLineNo">544</span>   *<a name="line.544"></a>
+<span class="sourceLineNo">545</span>   * @return the Filter<a name="line.545"></a>
+<span class="sourceLineNo">546</span>   */<a name="line.546"></a>
+<span class="sourceLineNo">547</span>  Filter getFilter() {<a name="line.547"></a>
+<span class="sourceLineNo">548</span>    return this.filter;<a name="line.548"></a>
+<span class="sourceLineNo">549</span>  }<a name="line.549"></a>
+<span class="sourceLineNo">550</span><a name="line.550"></a>
+<span class="sourceLineNo">551</span>  public Cell getNextKeyHint(Cell kv) throws IOException {<a name="line.551"></a>
+<span class="sourceLineNo">552</span>    if (filter == null) {<a name="line.552"></a>
+<span class="sourceLineNo">553</span>      return null;<a name="line.553"></a>
+<span class="sourceLineNo">554</span>    } else {<a name="line.554"></a>
+<span class="sourceLineNo">555</span>      return filter.getNextCellHint(kv);<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    }<a name="line.556"></a>
+<span class="sourceLineNo">557</span>  }<a name="line.557"></a>
+<span class="sourceLineNo">558</span><a name="line.558"></a>
+<span class="sourceLineNo">559</span>  public Cell getKeyForNextColumn(Cell kv) {<a name="line.559"></a>
+<span class="sourceLineNo">560</span>    ColumnCount nextColumn = columns.getColumnHint();<a name="line.560"></a>
+<span class="sourceLineNo">561</span>    if (nextColumn == null) {<a name="line.561"></a>
+<span class="sourceLineNo">562</span>      return CellUtil.createLastOnRowCol(kv);<a name="line.562"></a>
+<span class="sourceLineNo">563</span>    } else {<a name="line.563"></a>
+<span class="sourceLineNo">564</span>      return CellUtil.createFirstOnRowCol(kv, nextColumn.getBuffer(), nextColumn.getOffset(),<a name="line.564"></a>
+<span class="sourceLineNo">565</span>          nextColumn.getLength());<a name="line.565"></a>
+<span class="sourceLineNo">566</span>    }<a name="line.566"></a>
+<span class="sourceLineNo">567</span>  }<a name="line.567"></a>
+<span class="sourceLineNo">568</span><a name="line.568"></a>
+<span class="sourceLineNo">569</span>  public Cell getKeyForNextRow(Cell c) {<a name="line.569"></a>
+<span class="sourceLineNo">570</span>    return CellUtil.createLastOnRow(c);<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">573</span>  /**<a name="line.573"></a>
+<span class="sourceLineNo">574</span>   * @param nextIndexed the key of the next entry in the block index (if any)<a name="line.574"></a>
+<span class="sourceLineNo">575</span>   * @param kv The Cell we're using to calculate the seek key<a name="line.575"></a>
+<span class="sourceLineNo">576</span>   * @return result of the compare between the indexed key and the key portion of the passed cell<a name="line.576"></a>
+<span class="sourceLineNo">577</span>   */<a name="line.577"></a>
+<span class="sourceLineNo">578</span>  public int compareKeyForNextRow(Cell nextIndexed, Cell kv) {<a name="line.578"></a>
+<span class="sourceLin

<TRUNCATED>

[07/24] hbase git commit: Published site at 0d72849581c1e5a50a2aa7757b909e5531b8d12c.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html
index 1c3da8c..abc212d 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html
@@ -69,1032 +69,1038 @@
 <span class="sourceLineNo">061</span>import com.google.common.collect.Iterables;<a name="line.61"></a>
 <span class="sourceLineNo">062</span>import com.google.common.collect.Lists;<a name="line.62"></a>
 <span class="sourceLineNo">063</span><a name="line.63"></a>
-<span class="sourceLineNo">064</span>/** memstore test case */<a name="line.64"></a>
-<span class="sourceLineNo">065</span>@Category({RegionServerTests.class, MediumTests.class})<a name="line.65"></a>
-<span class="sourceLineNo">066</span>public class TestDefaultMemStore extends TestCase {<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  private static final Log LOG = LogFactory.getLog(TestDefaultMemStore.class);<a name="line.67"></a>
-<span class="sourceLineNo">068</span>  private DefaultMemStore memstore;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  private static final int ROW_COUNT = 10;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  private static final int QUALIFIER_COUNT = ROW_COUNT;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  private static final byte [] FAMILY = Bytes.toBytes("column");<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  private MultiVersionConcurrencyControl mvcc;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>  private AtomicLong startSeqNum = new AtomicLong(0);<a name="line.73"></a>
-<span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span>  @Override<a name="line.75"></a>
-<span class="sourceLineNo">076</span>  public void setUp() throws Exception {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    super.setUp();<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    this.mvcc = new MultiVersionConcurrencyControl();<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    this.memstore = new DefaultMemStore();<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 void testPutSameKey() {<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    byte [] bytes = Bytes.toBytes(getName());<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    KeyValue kv = new KeyValue(bytes, bytes, bytes, bytes);<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    this.memstore.add(kv);<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    byte [] other = Bytes.toBytes("somethingelse");<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    KeyValue samekey = new KeyValue(bytes, bytes, bytes, other);<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    this.memstore.add(samekey);<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    Cell found = this.memstore.cellSet.first();<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    assertEquals(1, this.memstore.cellSet.size());<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    assertTrue(<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      Bytes.toString(found.getValueArray(), found.getValueOffset(), found.getValueLength()),<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      CellUtil.matchingValue(samekey, found));<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>   * Test memstore snapshot happening while scanning.<a name="line.97"></a>
-<span class="sourceLineNo">098</span>   * @throws IOException<a name="line.98"></a>
-<span class="sourceLineNo">099</span>   */<a name="line.99"></a>
-<span class="sourceLineNo">100</span>  public void testScanAcrossSnapshot() throws IOException {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    int rowCount = addRows(this.memstore);<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    List&lt;KeyValueScanner&gt; memstorescanners = this.memstore.getScanners(0);<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    Scan scan = new Scan();<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    List&lt;Cell&gt; result = new ArrayList&lt;Cell&gt;();<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    Configuration conf = HBaseConfiguration.create();<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    ScanInfo scanInfo =<a name="line.106"></a>
-<span class="sourceLineNo">107</span>        new ScanInfo(conf, null, 0, 1, HConstants.LATEST_TIMESTAMP, KeepDeletedCells.FALSE, 0,<a name="line.107"></a>
-<span class="sourceLineNo">108</span>            this.memstore.comparator);<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    ScanType scanType = ScanType.USER_SCAN;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    StoreScanner s = new StoreScanner(scan, scanInfo, scanType, null, memstorescanners);<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    int count = 0;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    try {<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      while (s.next(result)) {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>        LOG.info(result);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>        count++;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>        // Row count is same as column count.<a name="line.116"></a>
-<span class="sourceLineNo">117</span>        assertEquals(rowCount, result.size());<a name="line.117"></a>
-<span class="sourceLineNo">118</span>        result.clear();<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      }<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    } finally {<a name="line.120"></a>
-<span class="sourceLineNo">121</span>      s.close();<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    }<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    assertEquals(rowCount, count);<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    for (KeyValueScanner scanner : memstorescanners) {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      scanner.close();<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>    memstorescanners = this.memstore.getScanners(mvcc.getReadPoint());<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    // Now assert can count same number even if a snapshot mid-scan.<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    s = new StoreScanner(scan, scanInfo, scanType, null, memstorescanners);<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    count = 0;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    try {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      while (s.next(result)) {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>        LOG.info(result);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>        // Assert the stuff is coming out in right order.<a name="line.135"></a>
-<span class="sourceLineNo">136</span>        assertTrue(CellUtil.matchingRow(result.get(0), Bytes.toBytes(count)));<a name="line.136"></a>
-<span class="sourceLineNo">137</span>        count++;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>        // Row count is same as column count.<a name="line.138"></a>
-<span class="sourceLineNo">139</span>        assertEquals(rowCount, result.size());<a name="line.139"></a>
-<span class="sourceLineNo">140</span>        if (count == 2) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>          this.memstore.snapshot();<a name="line.141"></a>
-<span class="sourceLineNo">142</span>          LOG.info("Snapshotted");<a name="line.142"></a>
-<span class="sourceLineNo">143</span>        }<a name="line.143"></a>
-<span class="sourceLineNo">144</span>        result.clear();<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      }<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    } finally {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>      s.close();<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    }<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    assertEquals(rowCount, count);<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    for (KeyValueScanner scanner : memstorescanners) {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      scanner.close();<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    }<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    memstorescanners = this.memstore.getScanners(mvcc.getReadPoint());<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    // Assert that new values are seen in kvset as we scan.<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    long ts = System.currentTimeMillis();<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    s = new StoreScanner(scan, scanInfo, scanType, null, memstorescanners);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    count = 0;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    int snapshotIndex = 5;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    try {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      while (s.next(result)) {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        LOG.info(result);<a name="line.161"></a>
-<span class="sourceLineNo">162</span>        // Assert the stuff is coming out in right order.<a name="line.162"></a>
-<span class="sourceLineNo">163</span>        assertTrue(CellUtil.matchingRow(result.get(0), Bytes.toBytes(count)));<a name="line.163"></a>
-<span class="sourceLineNo">164</span>        // Row count is same as column count.<a name="line.164"></a>
-<span class="sourceLineNo">165</span>        assertEquals("count=" + count + ", result=" + result, rowCount, result.size());<a name="line.165"></a>
-<span class="sourceLineNo">166</span>        count++;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        if (count == snapshotIndex) {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>          MemStoreSnapshot snapshot = this.memstore.snapshot();<a name="line.168"></a>
-<span class="sourceLineNo">169</span>          this.memstore.clearSnapshot(snapshot.getId());<a name="line.169"></a>
-<span class="sourceLineNo">170</span>          // Added more rows into kvset.  But the scanner wont see these rows.<a name="line.170"></a>
-<span class="sourceLineNo">171</span>          addRows(this.memstore, ts);<a name="line.171"></a>
-<span class="sourceLineNo">172</span>          LOG.info("Snapshotted, cleared it and then added values (which wont be seen)");<a name="line.172"></a>
-<span class="sourceLineNo">173</span>        }<a name="line.173"></a>
-<span class="sourceLineNo">174</span>        result.clear();<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      }<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    } finally {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      s.close();<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    }<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    assertEquals(rowCount, count);<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 simple test which verifies the 3 possible states when scanning across snapshot.<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   * @throws IOException<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   * @throws CloneNotSupportedException<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   */<a name="line.186"></a>
-<span class="sourceLineNo">187</span>  public void testScanAcrossSnapshot2() throws IOException, CloneNotSupportedException {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    // we are going to the scanning across snapshot with two kvs<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    // kv1 should always be returned before kv2<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    final byte[] one = Bytes.toBytes(1);<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    final byte[] two = Bytes.toBytes(2);<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    final byte[] f = Bytes.toBytes("f");<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    final byte[] q = Bytes.toBytes("q");<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    final byte[] v = Bytes.toBytes(3);<a name="line.194"></a>
-<span class="sourceLineNo">195</span><a name="line.195"></a>
-<span class="sourceLineNo">196</span>    final KeyValue kv1 = new KeyValue(one, f, q, v);<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    final KeyValue kv2 = new KeyValue(two, f, q, v);<a name="line.197"></a>
+<span class="sourceLineNo">064</span>import static org.mockito.Mockito.mock;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import static org.mockito.Mockito.when;<a name="line.65"></a>
+<span class="sourceLineNo">066</span><a name="line.66"></a>
+<span class="sourceLineNo">067</span>/** memstore test case */<a name="line.67"></a>
+<span class="sourceLineNo">068</span>@Category({RegionServerTests.class, MediumTests.class})<a name="line.68"></a>
+<span class="sourceLineNo">069</span>public class TestDefaultMemStore extends TestCase {<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  private static final Log LOG = LogFactory.getLog(TestDefaultMemStore.class);<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  private DefaultMemStore memstore;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  private static final int ROW_COUNT = 10;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  private static final int QUALIFIER_COUNT = ROW_COUNT;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  private static final byte [] FAMILY = Bytes.toBytes("column");<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  private MultiVersionConcurrencyControl mvcc;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  private AtomicLong startSeqNum = new AtomicLong(0);<a name="line.76"></a>
+<span class="sourceLineNo">077</span><a name="line.77"></a>
+<span class="sourceLineNo">078</span>  @Override<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  public void setUp() throws Exception {<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    super.setUp();<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    this.mvcc = new MultiVersionConcurrencyControl();<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    this.memstore = new DefaultMemStore();<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  }<a name="line.83"></a>
+<span class="sourceLineNo">084</span><a name="line.84"></a>
+<span class="sourceLineNo">085</span>  public void testPutSameKey() {<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    byte [] bytes = Bytes.toBytes(getName());<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    KeyValue kv = new KeyValue(bytes, bytes, bytes, bytes);<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    this.memstore.add(kv);<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    byte [] other = Bytes.toBytes("somethingelse");<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    KeyValue samekey = new KeyValue(bytes, bytes, bytes, other);<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    this.memstore.add(samekey);<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    Cell found = this.memstore.cellSet.first();<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    assertEquals(1, this.memstore.cellSet.size());<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    assertTrue(<a name="line.94"></a>
+<span class="sourceLineNo">095</span>      Bytes.toString(found.getValueArray(), found.getValueOffset(), found.getValueLength()),<a name="line.95"></a>
+<span class="sourceLineNo">096</span>      CellUtil.matchingValue(samekey, found));<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>  /**<a name="line.99"></a>
+<span class="sourceLineNo">100</span>   * Test memstore snapshot happening while scanning.<a name="line.100"></a>
+<span class="sourceLineNo">101</span>   * @throws IOException<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   */<a name="line.102"></a>
+<span class="sourceLineNo">103</span>  public void testScanAcrossSnapshot() throws IOException {<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    int rowCount = addRows(this.memstore);<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    List&lt;KeyValueScanner&gt; memstorescanners = this.memstore.getScanners(0);<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    Scan scan = new Scan();<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    List&lt;Cell&gt; result = new ArrayList&lt;Cell&gt;();<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    Configuration conf = HBaseConfiguration.create();<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    ScanInfo scanInfo =<a name="line.109"></a>
+<span class="sourceLineNo">110</span>        new ScanInfo(conf, null, 0, 1, HConstants.LATEST_TIMESTAMP, KeepDeletedCells.FALSE, 0,<a name="line.110"></a>
+<span class="sourceLineNo">111</span>            this.memstore.comparator);<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    ScanType scanType = ScanType.USER_SCAN;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    StoreScanner s = new StoreScanner(scan, scanInfo, scanType, null, memstorescanners);<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    int count = 0;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    try {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      while (s.next(result)) {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>        LOG.info(result);<a name="line.117"></a>
+<span class="sourceLineNo">118</span>        count++;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>        // Row count is same as column count.<a name="line.119"></a>
+<span class="sourceLineNo">120</span>        assertEquals(rowCount, result.size());<a name="line.120"></a>
+<span class="sourceLineNo">121</span>        result.clear();<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      }<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    } finally {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>      s.close();<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    }<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    assertEquals(rowCount, count);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    for (KeyValueScanner scanner : memstorescanners) {<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      scanner.close();<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    }<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>    memstorescanners = this.memstore.getScanners(mvcc.getReadPoint());<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    // Now assert can count same number even if a snapshot mid-scan.<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    s = new StoreScanner(scan, scanInfo, scanType, null, memstorescanners);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    count = 0;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    try {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      while (s.next(result)) {<a name="line.136"></a>
+<span class="sourceLineNo">137</span>        LOG.info(result);<a name="line.137"></a>
+<span class="sourceLineNo">138</span>        // Assert the stuff is coming out in right order.<a name="line.138"></a>
+<span class="sourceLineNo">139</span>        assertTrue(CellUtil.matchingRow(result.get(0), Bytes.toBytes(count)));<a name="line.139"></a>
+<span class="sourceLineNo">140</span>        count++;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>        // Row count is same as column count.<a name="line.141"></a>
+<span class="sourceLineNo">142</span>        assertEquals(rowCount, result.size());<a name="line.142"></a>
+<span class="sourceLineNo">143</span>        if (count == 2) {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>          this.memstore.snapshot();<a name="line.144"></a>
+<span class="sourceLineNo">145</span>          LOG.info("Snapshotted");<a name="line.145"></a>
+<span class="sourceLineNo">146</span>        }<a name="line.146"></a>
+<span class="sourceLineNo">147</span>        result.clear();<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      }<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    } finally {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      s.close();<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    }<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    assertEquals(rowCount, count);<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    for (KeyValueScanner scanner : memstorescanners) {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      scanner.close();<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    }<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    memstorescanners = this.memstore.getScanners(mvcc.getReadPoint());<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    // Assert that new values are seen in kvset as we scan.<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    long ts = System.currentTimeMillis();<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    s = new StoreScanner(scan, scanInfo, scanType, null, memstorescanners);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    count = 0;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    int snapshotIndex = 5;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    try {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      while (s.next(result)) {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        LOG.info(result);<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        // Assert the stuff is coming out in right order.<a name="line.165"></a>
+<span class="sourceLineNo">166</span>        assertTrue(CellUtil.matchingRow(result.get(0), Bytes.toBytes(count)));<a name="line.166"></a>
+<span class="sourceLineNo">167</span>        // Row count is same as column count.<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        assertEquals("count=" + count + ", result=" + result, rowCount, result.size());<a name="line.168"></a>
+<span class="sourceLineNo">169</span>        count++;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>        if (count == snapshotIndex) {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>          MemStoreSnapshot snapshot = this.memstore.snapshot();<a name="line.171"></a>
+<span class="sourceLineNo">172</span>          this.memstore.clearSnapshot(snapshot.getId());<a name="line.172"></a>
+<span class="sourceLineNo">173</span>          // Added more rows into kvset.  But the scanner wont see these rows.<a name="line.173"></a>
+<span class="sourceLineNo">174</span>          addRows(this.memstore, ts);<a name="line.174"></a>
+<span class="sourceLineNo">175</span>          LOG.info("Snapshotted, cleared it and then added values (which wont be seen)");<a name="line.175"></a>
+<span class="sourceLineNo">176</span>        }<a name="line.176"></a>
+<span class="sourceLineNo">177</span>        result.clear();<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      }<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    } finally {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      s.close();<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    }<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    assertEquals(rowCount, count);<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 simple test which verifies the 3 possible states when scanning across snapshot.<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   * @throws IOException<a name="line.187"></a>
+<span class="sourceLineNo">188</span>   * @throws CloneNotSupportedException<a name="line.188"></a>
+<span class="sourceLineNo">189</span>   */<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  public void testScanAcrossSnapshot2() throws IOException, CloneNotSupportedException {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    // we are going to the scanning across snapshot with two kvs<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    // kv1 should always be returned before kv2<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    final byte[] one = Bytes.toBytes(1);<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    final byte[] two = Bytes.toBytes(2);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    final byte[] f = Bytes.toBytes("f");<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    final byte[] q = Bytes.toBytes("q");<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    final byte[] v = Bytes.toBytes(3);<a name="line.197"></a>
 <span class="sourceLineNo">198</span><a name="line.198"></a>
-<span class="sourceLineNo">199</span>    // use case 1: both kvs in kvset<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    this.memstore.add(kv1.clone());<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    this.memstore.add(kv2.clone());<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    verifyScanAcrossSnapshot2(kv1, kv2);<a name="line.202"></a>
-<span class="sourceLineNo">203</span><a name="line.203"></a>
-<span class="sourceLineNo">204</span>    // use case 2: both kvs in snapshot<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    this.memstore.snapshot();<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    verifyScanAcrossSnapshot2(kv1, kv2);<a name="line.206"></a>
-<span class="sourceLineNo">207</span><a name="line.207"></a>
-<span class="sourceLineNo">208</span>    // use case 3: first in snapshot second in kvset<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    this.memstore = new DefaultMemStore();<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    this.memstore.add(kv1.clone());<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    this.memstore.snapshot();<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    this.memstore.add(kv2.clone());<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    verifyScanAcrossSnapshot2(kv1, kv2);<a name="line.213"></a>
-<span class="sourceLineNo">214</span>  }<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>  private void verifyScanAcrossSnapshot2(KeyValue kv1, KeyValue kv2)<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      throws IOException {<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    List&lt;KeyValueScanner&gt; memstorescanners = this.memstore.getScanners(mvcc.getReadPoint());<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    assertEquals(1, memstorescanners.size());<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    final KeyValueScanner scanner = memstorescanners.get(0);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    scanner.seek(KeyValueUtil.createFirstOnRow(HConstants.EMPTY_START_ROW));<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    assertEquals(kv1, scanner.next());<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    assertEquals(kv2, scanner.next());<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    assertNull(scanner.next());<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  }<a name="line.225"></a>
-<span class="sourceLineNo">226</span><a name="line.226"></a>
-<span class="sourceLineNo">227</span>  private void assertScannerResults(KeyValueScanner scanner, KeyValue[] expected)<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      throws IOException {<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    scanner.seek(KeyValueUtil.createFirstOnRow(new byte[]{}));<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    List&lt;Cell&gt; returned = Lists.newArrayList();<a name="line.230"></a>
-<span class="sourceLineNo">231</span><a name="line.231"></a>
-<span class="sourceLineNo">232</span>    while (true) {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      Cell next = scanner.next();<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      if (next == null) break;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      returned.add(next);<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    }<a name="line.236"></a>
-<span class="sourceLineNo">237</span><a name="line.237"></a>
-<span class="sourceLineNo">238</span>    assertTrue(<a name="line.238"></a>
-<span class="sourceLineNo">239</span>        "Got:\n" + Joiner.on("\n").join(returned) +<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        "\nExpected:\n" + Joiner.on("\n").join(expected),<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        Iterables.elementsEqual(Arrays.asList(expected), returned));<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    assertNull(scanner.peek());<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>  public void testMemstoreConcurrentControl() throws IOException {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    final byte[] row = Bytes.toBytes(1);<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    final byte[] f = Bytes.toBytes("family");<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    final byte[] q1 = Bytes.toBytes("q1");<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    final byte[] q2 = Bytes.toBytes("q2");<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    final byte[] v = Bytes.toBytes("value");<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>    MultiVersionConcurrencyControl.WriteEntry w =<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        mvcc.begin();<a name="line.253"></a>
+<span class="sourceLineNo">199</span>    final KeyValue kv1 = new KeyValue(one, f, q, v);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    final KeyValue kv2 = new KeyValue(two, f, q, v);<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span>    // use case 1: both kvs in kvset<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    this.memstore.add(kv1.clone());<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    this.memstore.add(kv2.clone());<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    verifyScanAcrossSnapshot2(kv1, kv2);<a name="line.205"></a>
+<span class="sourceLineNo">206</span><a name="line.206"></a>
+<span class="sourceLineNo">207</span>    // use case 2: both kvs in snapshot<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    this.memstore.snapshot();<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    verifyScanAcrossSnapshot2(kv1, kv2);<a name="line.209"></a>
+<span class="sourceLineNo">210</span><a name="line.210"></a>
+<span class="sourceLineNo">211</span>    // use case 3: first in snapshot second in kvset<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    this.memstore = new DefaultMemStore();<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    this.memstore.add(kv1.clone());<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    this.memstore.snapshot();<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    this.memstore.add(kv2.clone());<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    verifyScanAcrossSnapshot2(kv1, kv2);<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 verifyScanAcrossSnapshot2(KeyValue kv1, KeyValue kv2)<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      throws IOException {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    List&lt;KeyValueScanner&gt; memstorescanners = this.memstore.getScanners(mvcc.getReadPoint());<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    assertEquals(1, memstorescanners.size());<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    final KeyValueScanner scanner = memstorescanners.get(0);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    scanner.seek(KeyValueUtil.createFirstOnRow(HConstants.EMPTY_START_ROW));<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    assertEquals(kv1, scanner.next());<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    assertEquals(kv2, scanner.next());<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    assertNull(scanner.next());<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>  private void assertScannerResults(KeyValueScanner scanner, KeyValue[] expected)<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      throws IOException {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    scanner.seek(KeyValueUtil.createFirstOnRow(new byte[]{}));<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    List&lt;Cell&gt; returned = Lists.newArrayList();<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span>    while (true) {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      Cell next = scanner.next();<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      if (next == null) break;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      returned.add(next);<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>    assertTrue(<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        "Got:\n" + Joiner.on("\n").join(returned) +<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        "\nExpected:\n" + Joiner.on("\n").join(expected),<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        Iterables.elementsEqual(Arrays.asList(expected), returned));<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    assertNull(scanner.peek());<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 void testMemstoreConcurrentControl() throws IOException {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    final byte[] row = Bytes.toBytes(1);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    final byte[] f = Bytes.toBytes("family");<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    final byte[] q1 = Bytes.toBytes("q1");<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    final byte[] q2 = Bytes.toBytes("q2");<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    final byte[] v = Bytes.toBytes("value");<a name="line.253"></a>
 <span class="sourceLineNo">254</span><a name="line.254"></a>
-<span class="sourceLineNo">255</span>    KeyValue kv1 = new KeyValue(row, f, q1, v);<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    kv1.setSequenceId(w.getWriteNumber());<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    memstore.add(kv1);<a name="line.257"></a>
-<span class="sourceLineNo">258</span><a name="line.258"></a>
-<span class="sourceLineNo">259</span>    KeyValueScanner s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    assertScannerResults(s, new KeyValue[]{});<a name="line.260"></a>
+<span class="sourceLineNo">255</span>    MultiVersionConcurrencyControl.WriteEntry w =<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        mvcc.begin();<a name="line.256"></a>
+<span class="sourceLineNo">257</span><a name="line.257"></a>
+<span class="sourceLineNo">258</span>    KeyValue kv1 = new KeyValue(row, f, q1, v);<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    kv1.setSequenceId(w.getWriteNumber());<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    memstore.add(kv1);<a name="line.260"></a>
 <span class="sourceLineNo">261</span><a name="line.261"></a>
-<span class="sourceLineNo">262</span>    mvcc.completeAndWait(w);<a name="line.262"></a>
-<span class="sourceLineNo">263</span><a name="line.263"></a>
-<span class="sourceLineNo">264</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    assertScannerResults(s, new KeyValue[]{kv1});<a name="line.265"></a>
+<span class="sourceLineNo">262</span>    KeyValueScanner s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    assertScannerResults(s, new KeyValue[]{});<a name="line.263"></a>
+<span class="sourceLineNo">264</span><a name="line.264"></a>
+<span class="sourceLineNo">265</span>    mvcc.completeAndWait(w);<a name="line.265"></a>
 <span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>    w = mvcc.begin();<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    KeyValue kv2 = new KeyValue(row, f, q2, v);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    kv2.setSequenceId(w.getWriteNumber());<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    memstore.add(kv2);<a name="line.270"></a>
-<span class="sourceLineNo">271</span><a name="line.271"></a>
-<span class="sourceLineNo">272</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    assertScannerResults(s, new KeyValue[]{kv1});<a name="line.273"></a>
+<span class="sourceLineNo">267</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    assertScannerResults(s, new KeyValue[]{kv1});<a name="line.268"></a>
+<span class="sourceLineNo">269</span><a name="line.269"></a>
+<span class="sourceLineNo">270</span>    w = mvcc.begin();<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    KeyValue kv2 = new KeyValue(row, f, q2, v);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    kv2.setSequenceId(w.getWriteNumber());<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    memstore.add(kv2);<a name="line.273"></a>
 <span class="sourceLineNo">274</span><a name="line.274"></a>
-<span class="sourceLineNo">275</span>    mvcc.completeAndWait(w);<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    assertScannerResults(s, new KeyValue[]{kv1, kv2});<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>   * Regression test for HBASE-2616, HBASE-2670.<a name="line.282"></a>
-<span class="sourceLineNo">283</span>   * When we insert a higher-memstoreTS version of a cell but with<a name="line.283"></a>
-<span class="sourceLineNo">284</span>   * the same timestamp, we still need to provide consistent reads<a name="line.284"></a>
-<span class="sourceLineNo">285</span>   * for the same scanner.<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   */<a name="line.286"></a>
-<span class="sourceLineNo">287</span>  public void testMemstoreEditsVisibilityWithSameKey() throws IOException {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    final byte[] row = Bytes.toBytes(1);<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    final byte[] f = Bytes.toBytes("family");<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    final byte[] q1 = Bytes.toBytes("q1");<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    final byte[] q2 = Bytes.toBytes("q2");<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    final byte[] v1 = Bytes.toBytes("value1");<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    final byte[] v2 = Bytes.toBytes("value2");<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>    // INSERT 1: Write both columns val1<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    MultiVersionConcurrencyControl.WriteEntry w =<a name="line.296"></a>
-<span class="sourceLineNo">297</span>        mvcc.begin();<a name="line.297"></a>
-<span class="sourceLineNo">298</span><a name="line.298"></a>
-<span class="sourceLineNo">299</span>    KeyValue kv11 = new KeyValue(row, f, q1, v1);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    kv11.setSequenceId(w.getWriteNumber());<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    memstore.add(kv11);<a name="line.301"></a>
-<span class="sourceLineNo">302</span><a name="line.302"></a>
-<span class="sourceLineNo">303</span>    KeyValue kv12 = new KeyValue(row, f, q2, v1);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    kv12.setSequenceId(w.getWriteNumber());<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    memstore.add(kv12);<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    mvcc.completeAndWait(w);<a name="line.306"></a>
-<span class="sourceLineNo">307</span><a name="line.307"></a>
-<span class="sourceLineNo">308</span>    // BEFORE STARTING INSERT 2, SEE FIRST KVS<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    KeyValueScanner s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    assertScannerResults(s, new KeyValue[]{kv11, kv12});<a name="line.310"></a>
-<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span>    // START INSERT 2: Write both columns val2<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    w = mvcc.begin();<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    KeyValue kv21 = new KeyValue(row, f, q1, v2);<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    kv21.setSequenceId(w.getWriteNumber());<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    memstore.add(kv21);<a name="line.316"></a>
-<span class="sourceLineNo">317</span><a name="line.317"></a>
-<span class="sourceLineNo">318</span>    KeyValue kv22 = new KeyValue(row, f, q2, v2);<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    kv22.setSequenceId(w.getWriteNumber());<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    memstore.add(kv22);<a name="line.320"></a>
-<span class="sourceLineNo">321</span><a name="line.321"></a>
-<span class="sourceLineNo">322</span>    // BEFORE COMPLETING INSERT 2, SEE FIRST KVS<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    assertScannerResults(s, new KeyValue[]{kv11, kv12});<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>    // COMPLETE INSERT 2<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    mvcc.completeAndWait(w);<a name="line.327"></a>
+<span class="sourceLineNo">275</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    assertScannerResults(s, new KeyValue[]{kv1});<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>    mvcc.completeAndWait(w);<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    assertScannerResults(s, new KeyValue[]{kv1, kv2});<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>   * Regression test for HBASE-2616, HBASE-2670.<a name="line.285"></a>
+<span class="sourceLineNo">286</span>   * When we insert a higher-memstoreTS version of a cell but with<a name="line.286"></a>
+<span class="sourceLineNo">287</span>   * the same timestamp, we still need to provide consistent reads<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * for the same scanner.<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   */<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  public void testMemstoreEditsVisibilityWithSameKey() throws IOException {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    final byte[] row = Bytes.toBytes(1);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    final byte[] f = Bytes.toBytes("family");<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    final byte[] q1 = Bytes.toBytes("q1");<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    final byte[] q2 = Bytes.toBytes("q2");<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    final byte[] v1 = Bytes.toBytes("value1");<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    final byte[] v2 = Bytes.toBytes("value2");<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>    // INSERT 1: Write both columns val1<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    MultiVersionConcurrencyControl.WriteEntry w =<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        mvcc.begin();<a name="line.300"></a>
+<span class="sourceLineNo">301</span><a name="line.301"></a>
+<span class="sourceLineNo">302</span>    KeyValue kv11 = new KeyValue(row, f, q1, v1);<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    kv11.setSequenceId(w.getWriteNumber());<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    memstore.add(kv11);<a name="line.304"></a>
+<span class="sourceLineNo">305</span><a name="line.305"></a>
+<span class="sourceLineNo">306</span>    KeyValue kv12 = new KeyValue(row, f, q2, v1);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    kv12.setSequenceId(w.getWriteNumber());<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    memstore.add(kv12);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    mvcc.completeAndWait(w);<a name="line.309"></a>
+<span class="sourceLineNo">310</span><a name="line.310"></a>
+<span class="sourceLineNo">311</span>    // BEFORE STARTING INSERT 2, SEE FIRST KVS<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    KeyValueScanner s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    assertScannerResults(s, new KeyValue[]{kv11, kv12});<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>    // START INSERT 2: Write both columns val2<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    w = mvcc.begin();<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    KeyValue kv21 = new KeyValue(row, f, q1, v2);<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    kv21.setSequenceId(w.getWriteNumber());<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    memstore.add(kv21);<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>    KeyValue kv22 = new KeyValue(row, f, q2, v2);<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    kv22.setSequenceId(w.getWriteNumber());<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    memstore.add(kv22);<a name="line.323"></a>
+<span class="sourceLineNo">324</span><a name="line.324"></a>
+<span class="sourceLineNo">325</span>    // BEFORE COMPLETING INSERT 2, SEE FIRST KVS<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    assertScannerResults(s, new KeyValue[]{kv11, kv12});<a name="line.327"></a>
 <span class="sourceLineNo">328</span><a name="line.328"></a>
-<span class="sourceLineNo">329</span>    // NOW SHOULD SEE NEW KVS IN ADDITION TO OLD KVS.<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    // See HBASE-1485 for discussion about what we should do with<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    // the duplicate-TS inserts<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    assertScannerResults(s, new KeyValue[]{kv21, kv11, kv22, kv12});<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  }<a name="line.334"></a>
-<span class="sourceLineNo">335</span><a name="line.335"></a>
-<span class="sourceLineNo">336</span>  /**<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   * When we insert a higher-memstoreTS deletion of a cell but with<a name="line.337"></a>
-<span class="sourceLineNo">338</span>   * the same timestamp, we still need to provide consistent reads<a name="line.338"></a>
-<span class="sourceLineNo">339</span>   * for the same scanner.<a name="line.339"></a>
-<span class="sourceLineNo">340</span>   */<a name="line.340"></a>
-<span class="sourceLineNo">341</span>  public void testMemstoreDeletesVisibilityWithSameKey() throws IOException {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    final byte[] row = Bytes.toBytes(1);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    final byte[] f = Bytes.toBytes("family");<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    final byte[] q1 = Bytes.toBytes("q1");<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    final byte[] q2 = Bytes.toBytes("q2");<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    final byte[] v1 = Bytes.toBytes("value1");<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    // INSERT 1: Write both columns val1<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    MultiVersionConcurrencyControl.WriteEntry w =<a name="line.348"></a>
-<span class="sourceLineNo">349</span>        mvcc.begin();<a name="line.349"></a>
-<span class="sourceLineNo">350</span><a name="line.350"></a>
-<span class="sourceLineNo">351</span>    KeyValue kv11 = new KeyValue(row, f, q1, v1);<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    kv11.setSequenceId(w.getWriteNumber());<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    memstore.add(kv11);<a name="line.353"></a>
-<span class="sourceLineNo">354</span><a name="line.354"></a>
-<span class="sourceLineNo">355</span>    KeyValue kv12 = new KeyValue(row, f, q2, v1);<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    kv12.setSequenceId(w.getWriteNumber());<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    memstore.add(kv12);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    mvcc.completeAndWait(w);<a name="line.358"></a>
-<span class="sourceLineNo">359</span><a name="line.359"></a>
-<span class="sourceLineNo">360</span>    // BEFORE STARTING INSERT 2, SEE FIRST KVS<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    KeyValueScanner s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    assertScannerResults(s, new KeyValue[]{kv11, kv12});<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>    // START DELETE: Insert delete for one of the columns<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    w = mvcc.begin();<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    KeyValue kvDel = new KeyValue(row, f, q2, kv11.getTimestamp(),<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        KeyValue.Type.DeleteColumn);<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    kvDel.setSequenceId(w.getWriteNumber());<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    memstore.add(kvDel);<a name="line.369"></a>
-<span class="sourceLineNo">370</span><a name="line.370"></a>
-<span class="sourceLineNo">371</span>    // BEFORE COMPLETING DELETE, SEE FIRST KVS<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    assertScannerResults(s, new KeyValue[]{kv11, kv12});<a name="line.373"></a>
-<span class="sourceLineNo">374</span><a name="line.374"></a>
-<span class="sourceLineNo">375</span>    // COMPLETE DELETE<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    mvcc.completeAndWait(w);<a name="line.376"></a>
+<span class="sourceLineNo">329</span>    // COMPLETE INSERT 2<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    mvcc.completeAndWait(w);<a name="line.330"></a>
+<span class="sourceLineNo">331</span><a name="line.331"></a>
+<span class="sourceLineNo">332</span>    // NOW SHOULD SEE NEW KVS IN ADDITION TO OLD KVS.<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    // See HBASE-1485 for discussion about what we should do with<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    // the duplicate-TS inserts<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    assertScannerResults(s, new KeyValue[]{kv21, kv11, kv22, kv12});<a name="line.336"></a>
+<span class="sourceLineNo">337</span>  }<a name="line.337"></a>
+<span class="sourceLineNo">338</span><a name="line.338"></a>
+<span class="sourceLineNo">339</span>  /**<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   * When we insert a higher-memstoreTS deletion of a cell but with<a name="line.340"></a>
+<span class="sourceLineNo">341</span>   * the same timestamp, we still need to provide consistent reads<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   * for the same scanner.<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   */<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  public void testMemstoreDeletesVisibilityWithSameKey() throws IOException {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    final byte[] row = Bytes.toBytes(1);<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    final byte[] f = Bytes.toBytes("family");<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    final byte[] q1 = Bytes.toBytes("q1");<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    final byte[] q2 = Bytes.toBytes("q2");<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    final byte[] v1 = Bytes.toBytes("value1");<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    // INSERT 1: Write both columns val1<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    MultiVersionConcurrencyControl.WriteEntry w =<a name="line.351"></a>
+<span class="sourceLineNo">352</span>        mvcc.begin();<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>    KeyValue kv11 = new KeyValue(row, f, q1, v1);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    kv11.setSequenceId(w.getWriteNumber());<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    memstore.add(kv11);<a name="line.356"></a>
+<span class="sourceLineNo">357</span><a name="line.357"></a>
+<span class="sourceLineNo">358</span>    KeyValue kv12 = new KeyValue(row, f, q2, v1);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    kv12.setSequenceId(w.getWriteNumber());<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    memstore.add(kv12);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    mvcc.completeAndWait(w);<a name="line.361"></a>
+<span class="sourceLineNo">362</span><a name="line.362"></a>
+<span class="sourceLineNo">363</span>    // BEFORE STARTING INSERT 2, SEE FIRST KVS<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    KeyValueScanner s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    assertScannerResults(s, new KeyValue[]{kv11, kv12});<a name="line.365"></a>
+<span class="sourceLineNo">366</span><a name="line.366"></a>
+<span class="sourceLineNo">367</span>    // START DELETE: Insert delete for one of the columns<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    w = mvcc.begin();<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    KeyValue kvDel = new KeyValue(row, f, q2, kv11.getTimestamp(),<a name="line.369"></a>
+<span class="sourceLineNo">370</span>        KeyValue.Type.DeleteColumn);<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    kvDel.setSequenceId(w.getWriteNumber());<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    memstore.add(kvDel);<a name="line.372"></a>
+<span class="sourceLineNo">373</span><a name="line.373"></a>
+<span class="sourceLineNo">374</span>    // BEFORE COMPLETING DELETE, SEE FIRST KVS<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    assertScannerResults(s, new KeyValue[]{kv11, kv12});<a name="line.376"></a>
 <span class="sourceLineNo">377</span><a name="line.377"></a>
-<span class="sourceLineNo">378</span>    // NOW WE SHOULD SEE DELETE<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    assertScannerResults(s, new KeyValue[]{kv11, kvDel, kv12});<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  }<a name="line.381"></a>
-<span class="sourceLineNo">382</span><a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>  private static class ReadOwnWritesTester extends Thread {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    static final int NUM_TRIES = 1000;<a name="line.385"></a>
+<span class="sourceLineNo">378</span>    // COMPLETE DELETE<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    mvcc.completeAndWait(w);<a name="line.379"></a>
+<span class="sourceLineNo">380</span><a name="line.380"></a>
+<span class="sourceLineNo">381</span>    // NOW WE SHOULD SEE DELETE<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    assertScannerResults(s, new KeyValue[]{kv11, kvDel, kv12});<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><a name="line.386"></a>
-<span class="sourceLineNo">387</span>    final byte[] row;<a name="line.387"></a>
-<span class="sourceLineNo">388</span><a name="line.388"></a>
-<span class="sourceLineNo">389</span>    final byte[] f = Bytes.toBytes("family");<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    final byte[] q1 = Bytes.toBytes("q1");<a name="line.390"></a>
+<span class="sourceLineNo">387</span>  private static class ReadOwnWritesTester extends Thread {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    static final int NUM_TRIES = 1000;<a name="line.388"></a>
+<span class="sourceLineNo">389</span><a name="line.389"></a>
+<span class="sourceLineNo">390</span>    final byte[] row;<a name="line.390"></a>
 <span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span>    final MultiVersionConcurrencyControl mvcc;<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    final MemStore memstore;<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    final AtomicLong startSeqNum;<a name="line.394"></a>
-<span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>    AtomicReference&lt;Throwable&gt; caughtException;<a name="line.396"></a>
-<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">392</span>    final byte[] f = Bytes.toBytes("family");<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    final byte[] q1 = Bytes.toBytes("q1");<a name="line.393"></a>
+<span class="sourceLineNo">394</span><a name="line.394"></a>
+<span class="sourceLineNo">395</span>    final MultiVersionConcurrencyControl mvcc;<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    final MemStore memstore;<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    final AtomicLong startSeqNum;<a name="line.397"></a>
 <span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>    public ReadOwnWritesTester(int id,<a name="line.399"></a>
-<span class="sourceLineNo">400</span>                               MemStore memstore,<a name="line.400"></a>
-<span class="sourceLineNo">401</span>                               MultiVersionConcurrencyControl mvcc,<a name="line.401"></a>
-<span class="sourceLineNo">402</span>                               AtomicReference&lt;Throwable&gt; caughtException,<a name="line.402"></a>
-<span class="sourceLineNo">403</span>                               AtomicLong startSeqNum)<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      this.mvcc = mvcc;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      this.memstore = memstore;<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      this.caughtException = caughtException;<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      row = Bytes.toBytes(id);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>      this.startSeqNum = startSeqNum;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    }<a name="line.410"></a>
-<span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>    public void run() {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      try {<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        internalRun();<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      } catch (Throwable t) {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        caughtException.compareAndSet(null, t);<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>    private void internalRun() throws IOException {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      for (long i = 0; i &lt; NUM_TRIES &amp;&amp; caughtException.get() == null; i++) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        MultiVersionConcurrencyControl.WriteEntry w =<a name="line.422"></a>
-<span class="sourceLineNo">423</span>            mvcc.begin();<a name="line.423"></a>
-<span class="sourceLineNo">424</span><a name="line.424"></a>
-<span class="sourceLineNo">425</span>        // Insert the sequence value (i)<a name="line.425"></a>
-<span class="sourceLineNo">426</span>        byte[] v = Bytes.toBytes(i);<a name="line.426"></a>
+<span class="sourceLineNo">399</span>    AtomicReference&lt;Throwable&gt; caughtException;<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 ReadOwnWritesTester(int id,<a name="line.402"></a>
+<span class="sourceLineNo">403</span>                               MemStore memstore,<a name="line.403"></a>
+<span class="sourceLineNo">404</span>                               MultiVersionConcurrencyControl mvcc,<a name="line.404"></a>
+<span class="sourceLineNo">405</span>                               AtomicReference&lt;Throwable&gt; caughtException,<a name="line.405"></a>
+<span class="sourceLineNo">406</span>                               AtomicLong startSeqNum)<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      this.mvcc = mvcc;<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      this.memstore = memstore;<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      this.caughtException = caughtException;<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      row = Bytes.toBytes(id);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      this.startSeqNum = startSeqNum;<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>    public void run() {<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      try {<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        internalRun();<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      } catch (Throwable t) {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>        caughtException.compareAndSet(null, t);<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 void internalRun() throws IOException {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      for (long i = 0; i &lt; NUM_TRIES &amp;&amp; caughtException.get() == null; i++) {<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        MultiVersionConcurrencyControl.WriteEntry w =<a name="line.425"></a>
+<span class="sourceLineNo">426</span>            mvcc.begin();<a name="line.426"></a>
 <span class="sourceLineNo">427</span><a name="line.427"></a>
-<span class="sourceLineNo">428</span>        KeyValue kv = new KeyValue(row, f, q1, i, v);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>        kv.setSequenceId(w.getWriteNumber());<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        memstore.add(kv);<a name="line.430"></a>
-<span class="sourceLineNo">431</span>        mvcc.completeAndWait(w);<a name="line.431"></a>
-<span class="sourceLineNo">432</span><a name="line.432"></a>
-<span class="sourceLineNo">433</span>        // Assert that we can read back<a name="line.433"></a>
-<span class="sourceLineNo">434</span>        KeyValueScanner s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.434"></a>
-<span class="sourceLineNo">435</span>        s.seek(kv);<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>        Cell ret = s.next();<a name="line.437"></a>
-<span class="sourceLineNo">438</span>        assertNotNull("Didnt find own write at all", ret);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>        assertEquals("Didnt read own writes",<a name="line.439"></a>
-<span class="sourceLineNo">440</span>                     kv.getTimestamp(), ret.getTimestamp());<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>  }<a name="line.443"></a>
-<span class="sourceLineNo">444</span><a name="line.444"></a>
-<span class="sourceLineNo">445</span>  public void testReadOwnWritesUnderConcurrency() throws Throwable {<a name="line.445"></a>
-<span class="sourceLineNo">446</span><a name="line.446"></a>
-<span class="sourceLineNo">447</span>    int NUM_THREADS = 8;<a name="line.447"></a>
-<span class="sourceLineNo">448</span><a name="line.448"></a>
-<span class="sourceLineNo">449</span>    ReadOwnWritesTester threads[] = new ReadOwnWritesTester[NUM_THREADS];<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    AtomicReference&lt;Throwable&gt; caught = new AtomicReference&lt;Throwable&gt;();<a name="line.450"></a>
+<span class="sourceLineNo">428</span>        // Insert the sequence value (i)<a name="line.428"></a>
+<span class="sourceLineNo">429</span>        byte[] v = Bytes.toBytes(i);<a name="line.429"></a>
+<span class="sourceLineNo">430</span><a name="line.430"></a>
+<span class="sourceLineNo">431</span>        KeyValue kv = new KeyValue(row, f, q1, i, v);<a name="line.431"></a>
+<span class="sourceLineNo">432</span>        kv.setSequenceId(w.getWriteNumber());<a name="line.432"></a>
+<span class="sourceLineNo">433</span>        memstore.add(kv);<a name="line.433"></a>
+<span class="sourceLineNo">434</span>        mvcc.completeAndWait(w);<a name="line.434"></a>
+<span class="sourceLineNo">435</span><a name="line.435"></a>
+<span class="sourceLineNo">436</span>        // Assert that we can read back<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        KeyValueScanner s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.437"></a>
+<span class="sourceLineNo">438</span>        s.seek(kv);<a name="line.438"></a>
+<span class="sourceLineNo">439</span><a name="line.439"></a>
+<span class="sourceLineNo">440</span>        Cell ret = s.next();<a name="line.440"></a>
+<span class="sourceLineNo">441</span>        assertNotNull("Didnt find own write at all", ret);<a name="line.441"></a>
+<span class="sourceLineNo">442</span>        assertEquals("Didnt read own writes",<a name="line.442"></a>
+<span class="sourceLineNo">443</span>                     kv.getTimestamp(), ret.getTimestamp());<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><a name="line.447"></a>
+<span class="sourceLineNo">448</span>  public void testReadOwnWritesUnderConcurrency() throws Throwable {<a name="line.448"></a>
+<span class="sourceLineNo">449</span><a name="line.449"></a>
+<span class="sourceLineNo">450</span>    int NUM_THREADS = 8;<a name="line.450"></a>
 <span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>    for (int i = 0; i &lt; NUM_THREADS; i++) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      threads[i] = new ReadOwnWritesTester(i, memstore, mvcc, caught, this.startSeqNum);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      threads[i].start();<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>    for (int i = 0; i &lt; NUM_THREADS; i++) {<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      threads[i].join();<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>    if (caught.get() != null) {<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      throw caught.get();<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    }<a name="line.463"></a>
-<span class="sourceLineNo">464</span>  }<a name="line.464"></a>
-<span class="sourceLineNo">465</span><a name="line.465"></a>
-<span class="sourceLineNo">466</span>  /**<a name="line.466"></a>
-<span class="sourceLineNo">467</span>   * Test memstore snapshots<a name="line.467"></a>
-<span class="sourceLineNo">468</span>   * @throws IOException<a name="line.468"></a>
-<span class="sourceLineNo">469</span>   */<a name="line.469"></a>
-<span class="sourceLineNo">470</span>  public void testSnapshotting() throws IOException {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    final int snapshotCount = 5;<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    // Add some rows, run a snapshot. Do it a few times.<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    for (int i = 0; i &lt; snapshotCount; i++) {<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      addRows(this.memstore);<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      runSnapshot(this.memstore);<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      assertEquals("History not being cleared", 0, this.memstore.snapshot.size());<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    }<a name="line.477"></a>
-<span class="sourceLineNo">478</span>  }<a name="line.478"></a>
-<span class="sourceLineNo">479</span><a name="line.479"></a>
-<span class="sourceLineNo">480</span>  public void testMultipleVersionsSimple() throws Exception {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    DefaultMemStore m = new DefaultMemStore(new Configuration(), CellComparator.COMPARATOR);<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    byte [] row = Bytes.toBytes("testRow");<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    byte [] family = Bytes.toBytes("testFamily");<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    byte [] qf = Bytes.toBytes("testQualifier");<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    long [] stamps = {1,2,3};<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    byte [][] values = {Bytes.toBytes("value0"), Bytes.toBytes("value1"),<a name="line.486"></a>
-<span class="sourceLineNo">487</span>        Bytes.toBytes("value2")};<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    KeyValue key0 = new KeyValue(row, family, qf, stamps[0], values[0]);<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    KeyValue key1 = new KeyValue(row, family, qf, stamps[1], values[1]);<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    KeyValue key2 = new KeyValue(row, family, qf, stamps[2], values[2]);<a name="line.490"></a>
-<span class="sourceLineNo">491</span><a name="line.491"></a>
-<span class="sourceLineNo">492</span>    m.add(key0);<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    m.add(key1);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    m.add(key2);<a name="line.494"></a>
-<span class="sourceLineNo">495</span><a name="line.495"></a>
-<span class="sourceLineNo">496</span>    assertTrue("Expected memstore to hold 3 values, actually has " +<a name="line.496"></a>
-<span class="sourceLineNo">497</span>        m.cellSet.size(), m.cellSet.size() == 3);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>  }<a name="line.498"></a>
-<span class="sourceLineNo">499</span><a name="line.499"></a>
-<span class="sourceLineNo">500</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.500"></a>
-<span class="sourceLineNo">501</span>  // Get tests<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>  /** Test getNextRow from memstore<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * @throws InterruptedException<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   */<a name="line.506"></a>
-<span class="sourceLineNo">507</span>  public void testGetNextRow() throws Exception {<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    addRows(this.memstore);<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    // Add more versions to make it a little more interesting.<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    Thread.sleep(1);<a name="line.510"></a>
+<span class="sourceLineNo">452</span>    ReadOwnWritesTester threads[] = new ReadOwnWritesTester[NUM_THREADS];<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    AtomicReference&lt;Throwable&gt; caught = new AtomicReference&lt;Throwable&gt;();<a name="line.453"></a>
+<span class="sourceLineNo">454</span><a name="line.454"></a>
+<span class="sourceLineNo">455</span>    for (int i = 0; i &lt; NUM_THREADS; i++) {<a name="line.455"></a>
+<span class="sourceLineNo">456</span>      threads[i] = new ReadOwnWritesTester(i, memstore, mvcc, caught, this.startSeqNum);<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      threads[i].start();<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>    for (int i = 0; i &lt; NUM_THREADS; i++) {<a name="line.460"></a>
+<span class="sourceLineNo">461</span>      threads[i].join();<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>    if (caught.get() != null) {<a name="line.464"></a>
+<span class="sourceLineNo">465</span>      throw caught.get();<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    }<a name="line.466"></a>
+<span class="sourceLineNo">467</span>  }<a name="line.467"></a>
+<span class="sourceLineNo">468</span><a name="line.468"></a>
+<span class="sourceLineNo">469</span>  /**<a name="line.469"></a>
+<span class="sourceLineNo">470</span>   * Test memstore snapshots<a name="line.470"></a>
+<span class="sourceLineNo">471</span>   * @throws IOException<a name="line.471"></a>
+<span class="sourceLineNo">472</span>   */<a name="line.472"></a>
+<span class="sourceLineNo">473</span>  public void testSnapshotting() throws IOException {<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    final int snapshotCount = 5;<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    // Add some rows, run a snapshot. Do it a few times.<a name="line.475"></a>
+<span class="sourceLineNo">476</span>    for (int i = 0; i &lt; snapshotCount; i++) {<a name="line.476"></a>
+<span class="sourceLineNo">477</span>      addRows(this.memstore);<a name="line.477"></a>
+<span class="sourceLineNo">478</span>      runSnapshot(this.memstore);<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      assertEquals("History not being cleared", 0, this.memstore.snapshot.size());<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><a name="line.482"></a>
+<span class="sourceLineNo">483</span>  public void testMultipleVersionsSimple() throws Exception {<a name="line.483"></a>
+<span class="sourceLineNo">484</span>    DefaultMemStore m = new DefaultMemStore(new Configuration(), CellComparator.COMPARATOR);<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    byte [] row = Bytes.toBytes("testRow");<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    byte [] family = Bytes.toBytes("testFamily");<a name="line.486"></a>
+<span class="sourceLineNo">487</span>    byte [] qf = Bytes.toBytes("testQualifier");<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    long [] stamps = {1,2,3};<a name="line.488"></a>
+<span class="sourceLineNo">489</span>    byte [][] values = {Bytes.toBytes("value0"), Bytes.toBytes("value1"),<a name="line.489"></a>
+<span class="sourceLineNo">490</span>        Bytes.toBytes("value2")};<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    KeyValue key0 = new KeyValue(row, family, qf, stamps[0], values[0]);<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    KeyValue key1 = new KeyValue(row, family, qf, stamps[1], values[1]);<a name="line.492"></a>
+<span class="sourceLineNo">493</span>    KeyValue key2 = new KeyValue(row, family, qf, stamps[2], values[2]);<a name="line.493"></a>
+<span class="sourceLineNo">494</span><a name="line.494"></a>
+<span class="sourceLineNo">495</span>    m.add(key0);<a name="line.495"></a>
+<span class="sourceLineNo">496</span>    m.add(key1);<a name="line.496"></a>
+<span class="sourceLineNo">497</span>    m.add(key2);<a name="line.497"></a>
+<span class="sourceLineNo">498</span><a name="line.498"></a>
+<span class="sourceLineNo">499</span>    assertTrue("Expected memstore to hold 3 values, actually has " +<a name="line.499"></a>
+<span class="sourceLineNo">500</span>        m.cellSet.size(), m.cellSet.size() == 3);<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>  // Get tests<a name="line.504"></a>
+<span class="sourceLineNo">505</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.505"></a>
+<span class="sourceLineNo">506</span><a name="line.506"></a>
+<span class="sourceLineNo">507</span>  /** Test getNextRow from memstore<a name="line.507"></a>
+<span class="sourceLineNo">508</span>   * @throws InterruptedException<a name="line.508"></a>
+<span class="sourceLineNo">509</span>   */<a name="line.509"></a>
+<span class="sourceLineNo">510</span>  public void testGetNextRow() throws Exception {<a name="line.510"></a>
 <span class="sourceLineNo">511</span>    addRows(this.memstore);<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    Cell closestToEmpty = this.memstore.getNextRow(KeyValue.LOWESTKEY);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    assertTrue(CellComparator.COMPARATOR.compareRows(closestToEmpty,<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      new KeyValue(Bytes.toBytes(0), System.currentTimeMillis())) == 0);<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    for (int i = 0; i &lt; ROW_COUNT; i++) {<a name="line.515"></a>
-<span class="sourceLineNo">516</span>      Cell nr = this.memstore.getNextRow(new KeyValue(Bytes.toBytes(i),<a name="line.516"></a>
-<span class="sourceLineNo">517</span>        System.currentTimeMillis()));<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      if (i + 1 == ROW_COUNT) {<a name="line.518"></a>
-<span class="sourceLineNo">519</span>        assertEquals(nr, null);<a name="line.519"></a>
-<span class="sourceLineNo">520</span>      } else {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>        assertTrue(CellComparator.COMPARATOR.compareRows(nr,<a name="line.521"></a>
-<span class="sourceLineNo">522</span>          new KeyValue(Bytes.toBytes(i + 1), System.currentTimeMillis())) == 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>    //starting from each row, validate results should contain the starting row<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    Configuration conf = HBaseConfiguration.create();<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    for (int startRowId = 0; startRowId &lt; ROW_COUNT; startRowId++) {<a name="line.527"></a>
-<span class="sourceLineNo">528</span>      ScanInfo scanInfo = new ScanInfo(conf, FAMILY, 0, 1, Integer.MAX_VALUE,<a name="line.528"></a>
-<span class="sourceLineNo">529</span>        KeepDeletedCells.FALSE, 0, this.memstore.comparator);<a name="line.529"></a>
-<span class="sourceLineNo">530</span>      ScanType scanType = ScanType.USER_SCAN;<a name="line.530"></a>
-<span class="sourceLineNo">531</span>      InternalScanner scanner = new StoreScanner(new Scan(<a name="line.531"></a>
-<span class="sourceLineNo">532</span>          Bytes.toBytes(startRowId)), scanInfo, scanType, null,<a name="line.532"></a>
-<span class="sourceLineNo">533</span>          memstore.getScanners(0));<a name="line.533"></a>
-<span class="sourceLineNo">534</span>      List&lt;Cell&gt; results = new ArrayList&lt;Cell&gt;();<a name="line.534"></a>
-<span class="sourceLineNo">535</span>      for (int i = 0; scanner.next(results); i++) {<a name="line.535"></a>
-<span class="sourceLineNo">536</span>        int rowId = startRowId + i;<a name="line.536"></a>
-<span class="sourceLineNo">537</span>        Cell left = results.get(0);<a name="line.537"></a>
-<span class="sourceLineNo">538</span>        byte[] row1 = Bytes.toBytes(rowId);<a name="line.538"></a>
-<span class="sourceLineNo">539</span>        assertTrue(<a name="line.539"></a>
-<span class="sourceLineNo">540</span>            "Row name",<a name="line.540"></a>
-<span class="sourceLineNo">541</span>            CellComparator.COMPARATOR.compareRows(left, row1, 0, row1.length) == 0);<a name="line.541"></a>
-<span class="sourceLineNo">542</span>        assertEquals("Count of columns", QUALIFIER_COUNT, results.size());<a name="line.542"></a>
-<span class="sourceLineNo">543</span>        List&lt;Cell&gt; row = new ArrayList&lt;Cell&gt;();<a name="line.543"></a>
-<span class="sourceLineNo">544</span>        for (Cell kv : results) {<a name="line.544"></a>
-<span class="sourceLineNo">545</span>          row.add(kv);<a name="line.545"></a>
-<span class="sourceLineNo">546</span>        }<a name="line.546"></a>
-<span class="sourceLineNo">547</span>        isExpectedRowWithoutTimestamps(rowId, row);<

<TRUNCATED>

[23/24] hbase git commit: Published site at 0d72849581c1e5a50a2aa7757b909e5531b8d12c.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/checkstyle-aggregate.html
----------------------------------------------------------------------
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index dea6547..a253ef5 100644
--- a/checkstyle-aggregate.html
+++ b/checkstyle-aggregate.html
@@ -283,7 +283,7 @@
 <td>1639</td>
 <td>0</td>
 <td>0</td>
-<td>13265</td></tr></table></div>
+<td>13266</td></tr></table></div>
 <div class="section">
 <h2><a name="Files"></a>Files</h2>
 <table border="0" class="table table-striped">
@@ -3861,7 +3861,7 @@
 <td><a href="#org.apache.hadoop.hbase.regionserver.ScanQueryMatcher.java">org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.java</a></td>
 <td>0</td>
 <td>0</td>
-<td>26</td></tr>
+<td>27</td></tr>
 <tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.ScanWildcardColumnTracker.java">org/apache/hadoop/hbase/regionserver/ScanWildcardColumnTracker.java</a></td>
 <td>0</td>
@@ -6147,7 +6147,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>4806</td>
+<td>4807</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="b">
 <td>javadoc</td>
@@ -57186,121 +57186,121 @@
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 113).</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#L173">173</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#L174">174</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#L183">183</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#L184">184</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#L222">222</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#L223">223</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#L299">299</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#L300">300</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#L325">325</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#L326">326</a></td></tr>
 <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/regionserver/DefaultMemStore.html#L340">340</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#L341">341</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#L374">374</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#L375">375</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#L394">394</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#L395">395</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#L395">395</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#L396">396</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#L396">396</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#L397">397</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#L397">397</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#L398">398</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#L398">398</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#L399">399</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#L463">463</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#L464">464</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#L487">487</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#L488">488</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>'(' is followed by whitespace.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#L509">509</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#L510">510</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>')' is preceded with whitespace.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#L509">509</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#L510">510</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#L553">553</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#L556">556</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#L642">642</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#L650">650</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 10, expected level should be 8.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#L747">747</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#L755">755</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>EmptyBlock</td>
 <td>Must have at least one statement.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#L979">979</a></td></tr></table></div>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#L987">987</a></td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.DefaultStoreEngine.java">org/apache/hadoop/hbase/regionserver/DefaultStoreEngine.java</h3>
 <table border="0" class="table table-striped">
@@ -65538,143 +65538,149 @@
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#L224">224</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#L229">229</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#L226">226</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#L231">231</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#L232">232</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#L237">237</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#L233">233</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#L238">238</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>MethodLength</td>
 <td>Method length is 189 lines (max allowed is 150).</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#L277">277</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#L282">282</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 6, expected level should be 4.</td>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#L283">283</a></td></tr>
+<tr class="a">
+<td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#L300">300</a></td></tr>
-<tr class="a">
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#L305">305</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 rcurly' have incorrect indentation level 8, expected level should be 6.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#L392">392</a></td></tr>
-<tr class="b">
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#L397">397</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 10.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#L411">411</a></td></tr>
-<tr class="a">
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#L416">416</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 12.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#L412">412</a></td></tr>
-<tr class="b">
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#L417">417</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 10.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#L413">413</a></td></tr>
-<tr class="a">
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#L418">418</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 12.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#L414">414</a></td></tr>
-<tr class="b">
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#L419">419</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 10.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#L415">415</a></td></tr>
-<tr class="a">
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#L420">420</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 12.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#L416">416</a></td></tr>
-<tr class="b">
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#L421">421</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 10, expected level should be 12.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#L417">417</a></td></tr>
-<tr class="a">
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#L422">422</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 8, expected level should be 10.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#L418">418</a></td></tr>
-<tr class="b">
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#L423">423</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 10, expected level should be 12.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#L419">419</a></td></tr>
-<tr class="a">
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.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>'case' child have incorrect indentation level 8, expected level should be 10.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#L420">420</a></td></tr>
-<tr class="b">
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#L425">425</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 10, expected level should be 12.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#L422">422</a></td></tr>
-<tr class="a">
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#L427">427</a></td></tr>
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#L515">515</a></td></tr></table></div>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html#L520">520</a></td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.ScanWildcardColumnTracker.java">org/apache/hadoop/hbase/regionserver/ScanWildcardColumnTracker.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.Cell' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanWildcardColumnTracker.html#L25">25</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanWildcardColumnTracker.html#L83">83</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScanWildcardColumnTracker.html#L89">89</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -65683,85 +65689,85 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.ScannerContext.java">org/apache/hadoop/hbase/regionserver/ScannerContext.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>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>Javadoc comment at column 40 has parse error. Missed HTML close tag 'Cell'. Sometimes it means that close tag missed for one of previous tags.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScannerContext.html#L88">88</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/ScannerContext.html#L107">107</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/regionserver/ScannerContext.html#L211">211</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/regionserver/ScannerContext.html#L233">233</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/regionserver/ScannerContext.html#L241">241</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/regionserver/ScannerContext.html#L249">249</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/regionserver/ScannerContext.html#L257">257</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/regionserver/ScannerContext.html#L544">544</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/regionserver/ScannerContext.html#L545">545</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/regionserver/ScannerContext.html#L546">546</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/regionserver/ScannerContext.html#L565">565</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/regionserver/ScannerContext.html#L595">595</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>
@@ -65770,61 +65776,61 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.ServerNonceManager.java">org/apache/hadoop/hbase/regionserver/ServerNonceManager.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'com.google.common.annotations.VisibleForTesting' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/ServerNonceManager.html#L36">36</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>UpperEll</td>
 <td>Should use uppercase 'L'.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/ServerNonceManager.html#L98">98</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/ServerNonceManager.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>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/ServerNonceManager.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>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/ServerNonceManager.html#L173">173</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/ServerNonceManager.html#L201">201</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/ServerNonceManager.html#L204">204</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/ServerNonceManager.html#L236">236</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -65833,49 +65839,49 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.ShutdownHook.java">org/apache/hadoop/hbase/regionserver/ShutdownHook.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.conf.Configuration' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/ShutdownHook.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>design</td>
 <td>HideUtilityClassConstructor</td>
 <td>Utility classes should not have a public or default constructor.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/ShutdownHook.html#L40">40</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/regionserver/ShutdownHook.html#L75">75</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/regionserver/ShutdownHook.html#L80">80</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>'this' have incorrect indentation level 14, expected level should be 16.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/ShutdownHook.html#L125">125</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/regionserver/ShutdownHook.html#L251">251</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>
@@ -65884,31 +65890,31 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.SimpleRpcSchedulerFactory.java">org/apache/hadoop/hbase/regionserver/SimpleRpcSchedulerFactory.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>annotation</td>
 <td>MissingDeprecated</td>
 <td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SimpleRpcSchedulerFactory.html#L35">35</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 def' child have incorrect indentation level 10, expected level should be 4.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SimpleRpcSchedulerFactory.html#L38">38</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>FileTabCharacter</td>
 <td>File contains tab characters (this is the first instance).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SimpleRpcSchedulerFactory.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>indentation</td>
 <td>Indentation</td>
@@ -65917,25 +65923,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.SplitLogWorker.java">org/apache/hadoop/hbase/regionserver/SplitLogWorker.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.conf.Configuration' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SplitLogWorker.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>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.util.CancelableProgressable' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SplitLogWorker.html#L40">40</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>
@@ -65944,25 +65950,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.SplitRequest.java">org/apache/hadoop/hbase/regionserver/SplitRequest.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.DroppedSnapshotException' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SplitRequest.html#L26">26</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.base.Preconditions' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SplitRequest.html#L34">34</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -65971,61 +65977,61 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.SplitTransaction.java">org/apache/hadoop/hbase/regionserver/SplitTransaction.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/regionserver/SplitTransaction.html#L182">182</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/regionserver/SplitTransaction.html#L193">193</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/regionserver/SplitTransaction.html#L204">204</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/regionserver/SplitTransaction.html#L208">208</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/regionserver/SplitTransaction.html#L217">217</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/regionserver/SplitTransaction.html#L220">220</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/regionserver/SplitTransaction.html#L229">229</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/regionserver/SplitTransaction.html#L230">230</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>
@@ -66034,379 +66040,379 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.SplitTransactionImpl.java">org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.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.HConstants' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.html#L40">40</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.annotations.VisibleForTesting' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.html#L57">57</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.html#L163">163</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.html#L165">165</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/regionserver/SplitTransactionImpl.html#L209">209</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/regionserver/SplitTransactionImpl.html#L211">211</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/regionserver/SplitTransactionImpl.html#L213">213</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>'if' child have incorrect indentation level 10, expected level should be 8.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.html#L284">284</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.html#L374">374</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/regionserver/SplitTransactionImpl.html#L579">579</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/regionserver/SplitTransactionImpl.html#L597">597</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/regionserver/SplitTransactionImpl.html#L598">598</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/regionserver/SplitTransactionImpl.html#L599">599</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/regionserver/SplitTransactionImpl.html#L600">600</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/regionserver/SplitTransactionImpl.html#L637">637</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>'for' child have incorrect indentation level 8, expected level should be 6.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.html#L651">651</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>MethodParamPad</td>
 <td>'(' is preceded with whitespace.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.html#L672">672</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>'if' child have incorrect indentation level 8, expected level should be 6.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.html#L726">726</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>'if' child have incorrect indentation level 8, expected level should be 6.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.html#L738">738</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/regionserver/SplitTransactionImpl.html#L813">813</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>'if' have incorrect indentation level 8, expected level should be 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.html#L814">814</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>'if' child have incorrect indentation level 10, expected level should be 12.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.html#L817">817</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>'if rcurly' have incorrect indentation level 8, expected level should be 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.html#L818">818</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 8, expected level should be 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.html#L819">819</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/regionserver/SplitTransactionImpl.html#L821">821</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 8, expected level should be 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.html#L822">822</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>'block' child have incorrect indentation level 8, expected level should be 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.html#L823">823</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 8, expected level should be 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.html#L824">824</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/regionserver/SplitTransactionImpl.html#L826">826</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 8, expected level should be 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.html#L827">827</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 10, expected level should be 12.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.html#L833">833</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 10, expected level should be 12.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.html#L833">833</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 rcurly' have incorrect indentation level 8, expected level should be 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.html#L834">834</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 10, expected level should be 12.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.html#L835">835</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 10, expected level should be 12.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.html#L835">835</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 10, expected level should be 12.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.html#L837">837</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 8, expected level should be 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.html#L838">838</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 8, expected level should be 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.html#L839">839</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/regionserver/SplitTransactionImpl.html#L841">841</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 8, expected level should be 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.html#L842">842</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>'block' child have incorrect indentation level 8, expected level should be 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.html#L843">843</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/regionserver/SplitTransactionImpl.html#L845">845</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>'block' child have incorrect indentation level 8, expected level should be 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.html#L846">846</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 8, expected level should be 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.html#L847">847</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/regionserver/SplitTransactionImpl.html#L849">849</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.html#L850">850</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>'if' have incorrect indentation level 8, expected level should be 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.html#L850">850</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 8, expected level should be 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.html#L851">851</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/regionserver/SplitTransactionImpl.html#L853">853</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 8, expected level should be 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.html#L858">858</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/regionserver/SplitTransactionImpl.html#L861">861</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/regionserver/SplitTransactionImpl.html#L862">862</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/regionserver/SplitTransactionImpl.html#L863">863</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/regionserver/SplitTransactionImpl.html#L864">864</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/regionserver/SplitTransactionImpl.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>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/regionserver/SplitTransactionImpl.html#L866">866</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/regionserver/SplitTransactionImpl.html#L867">867</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/regionserver/SplitTransactionImpl.html#L868">868</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/regionserver/SplitTransactionImpl.html#L869">869</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 8, expected level should be 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/SplitTransactionImpl.html#L870">870</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/regionserver/SplitTransactionImpl.html#L872">872</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>
@@ -66415,139 +66421,139 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.Store.java">org/apache/hadoop/hbase/regionserver/Store.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.fs.FileSystem' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/Store.html#L27">27</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/regionserver/Store.html#L88">88</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/regionserver/Store.html#L89">89</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/regionserver/Store.html#L90">90</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/regionserver/Store.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>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/Store.html#L92">92</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/regionserver/Store.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>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/Store.html#L94">94</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/regionserver/Store.html#L95">95</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/regionserver/Store.html#L119">119</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/regionserver/Store.html#L122">122</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/regionserver/Store.html#L128">128</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/regionserver/Store.html#L142">142</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/regionserver/Store.html#L150">150</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/regionserver/Store.html#L165">165</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/regionserver/Store.html#L241">241</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/regionserver/Store.html#L270">270</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/regionserver/Store.html#L291">291</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/regionserver/Store.html#L378">378</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/regionserver/Store.html#L379">379</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/regionserver/Store.html#L437">437</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>
@@ -66556,13 +66562,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StoreEngine.java">org/apache/hadoop/hbase/regionserver/StoreEngine.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>
@@ -66571,343 +66577,343 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StoreFile.java">org/apache/hadoop/hbase/regionserver/StoreFile.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.CellComparator' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFile.html#L43">43</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.io.hfile.HFileBlock' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFile.html#L62">62</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.common.base.Function' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFile.html#L64">64</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/regionserver/StoreFile.html#L285">285</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/regionserver/StoreFile.html#L321">321</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/regionserver/StoreFile.html#L334">334</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/regionserver/StoreFile.html#L349">349</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/regionserver/StoreFile.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>NonEmptyAtclauseDescription</td>
 <td>Javadoc comment at column 14 has parse error. Missed HTML close tag 'id-when-loaded'. Sometimes it means that close tag missed for one of previous tags.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFile.html#L364">364</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/regionserver/StoreFile.html#L391">391</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/regionserver/StoreFile.html#L400">400</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/regionserver/StoreFile.html#L515">515</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/regionserver/StoreFile.html#L545">545</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/regionserver/StoreFile.html#L557">557</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/regionserver/StoreFile.html#L720">720</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>FinalClass</td>
 <td>Class Writer should be declared as final.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFile.html#L774">774</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/regionserver/StoreFile.html#L809">809</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFile.html#L835">835</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFile.html#L852">852</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/regionserver/StoreFile.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/regionserver/StoreFile.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>indentation</td>
 <td>Indentation</td>
 <td>'case' child have incorrect indentation level 10, expected level should be 12.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFile.html#L927">927</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>'block' child have incorrect indentation level 12, expected level should be 14.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFile.html#L928">928</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 12, expected level should be 14.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFile.html#L929">929</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 10, expected level should be 12.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFile.html#L930">930</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 12, expected level should be 14.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFile.html#L931">931</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>'block' child have incorrect indentation level 12, expected level should be 14.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFile.html#L932">932</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 10, expected level should be 12.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFile.html#L933">933</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>'block' child have incorrect indentation level 12, expected level should be 14.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFile.html#L934">934</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 12, expected level should be 14.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFile.html#L935">935</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 10, expected level should be 12.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFile.html#L936">936</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 12, expected level should be 14.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFile.html#L937">937</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 10, expected level should be 12.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFile.html#L956">956</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 12, expected level should be 14.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFile.html#L957">957</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>'block' child have incorrect indentation level 12, expected level should be 14.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFile.html#L958">958</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 12, expected level should be 14.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFile.html#L959">959</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>'block' child have incorrect indentation level 12, expected level should be 14.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFile.html#L960">960</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 10, expected level should be 12.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFile.html#L961">961</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>'block' child have incorrect indentation level 12, expected level should be 14.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFile.html#L966">966</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 12, expected level should be 14.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFile.html#L971">971</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>'block' child have incorrect indentation level 12, expected level should be 14.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFile.html#L972">972</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 12, expected level should be 14.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFile.html#L973">973</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>'block' child have incorrect indentation level 12, expected level should be 14.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFile.html#L974">974</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 10, expected level should be 12.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFile.html#L975">975</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>'block' child have incorrect indentation level 12, expected level should be 14.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFile.html#L976">976</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
 <td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFile.html#L1212">1212</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
 <td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFile.html#L1230">1230</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 def modifier' have incorrect indentation level 5, expected level should be 4.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFile.html#L1273">1273</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/regionserver/StoreFile.html#L1338">1338</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/regionserver/StoreFile.html#L1339">1339</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/regionserver/StoreFile.html#L1340">1340</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFile.html#L1385">1385</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFile.html#L1509">1509</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFile.html#L1529">1529</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFile.html#L1648">1648</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -66916,151 +66922,151 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StoreFileInfo.java">org/apache/hadoop/hbase/regionserver/StoreFileInfo.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.conf.Configuration' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFileInfo.html#L30">30</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>Javadoc comment at column 62 has parse error. Missed HTML close tag 'parentEncRegion'. Sometimes it means that close tag missed for one of previous tags.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFileInfo.html#L72">72</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFileInfo.html#L120">120</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFileInfo.html#L131">131</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/regionserver/StoreFileInfo.html#L173">173</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/regionserver/StoreFileInfo.html#L174">174</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/regionserver/StoreFileInfo.html#L175">175</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/regionserver/StoreFileInfo.html#L176">176</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/regionserver/StoreFileInfo.html#L177">177</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/regionserver/StoreFileInfo.html#L191">191</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFileInfo.html#L459">459</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFileInfo.html#L473">473</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFileInfo.html#L522">522</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFileInfo.html#L523">523</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFileInfo.html#L525">525</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFileInfo.html#L528">528</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFileInfo.html#L529">529</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFileInfo.html#L530">530</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFileInfo.html#L533">533</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFileInfo.html#L534">534</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFileInfo.html#L535">535</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFileInfo.html#L538">538</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/regionserver/StoreFileInfo.html#L539">539</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td>

<TRUNCATED>

[14/24] hbase git commit: Published site at 0d72849581c1e5a50a2aa7757b909e5531b8d12c.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/devapidocs/src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.Replicator.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.Replicator.html b/devapidocs/src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.Replicator.html
index fb9094c..a3bef30 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.Replicator.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.Replicator.html
@@ -30,310 +30,316 @@
 <span class="sourceLineNo">022</span>import java.net.ConnectException;<a name="line.22"></a>
 <span class="sourceLineNo">023</span>import java.net.SocketTimeoutException;<a name="line.23"></a>
 <span class="sourceLineNo">024</span>import java.util.ArrayList;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import java.util.List;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.util.concurrent.Callable;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.util.concurrent.ExecutionException;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.util.concurrent.Future;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.util.concurrent.SynchronousQueue;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.util.concurrent.ThreadPoolExecutor;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.util.concurrent.TimeUnit;<a name="line.31"></a>
-<span class="sourceLineNo">032</span><a name="line.32"></a>
-<span class="sourceLineNo">033</span>import com.google.common.annotations.VisibleForTesting;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.commons.lang.StringUtils;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.commons.logging.Log;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.commons.logging.LogFactory;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.conf.Configuration;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.HConstants;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.client.HConnection;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.protobuf.ReplicationProtbufUtil;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.AdminService.BlockingInterface;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.wal.WAL.Entry;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.replication.HBaseReplicationEndpoint;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.replication.ReplicationPeer.PeerState;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.replication.regionserver.ReplicationSinkManager.SinkPeer;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.ipc.RemoteException;<a name="line.51"></a>
-<span class="sourceLineNo">052</span><a name="line.52"></a>
-<span class="sourceLineNo">053</span>/**<a name="line.53"></a>
-<span class="sourceLineNo">054</span> * A {@link org.apache.hadoop.hbase.replication.ReplicationEndpoint} <a name="line.54"></a>
-<span class="sourceLineNo">055</span> * implementation for replicating to another HBase cluster.<a name="line.55"></a>
-<span class="sourceLineNo">056</span> * For the slave cluster it selects a random number of peers<a name="line.56"></a>
-<span class="sourceLineNo">057</span> * using a replication ratio. For example, if replication ration = 0.1<a name="line.57"></a>
-<span class="sourceLineNo">058</span> * and slave cluster has 100 region servers, 10 will be selected.<a name="line.58"></a>
-<span class="sourceLineNo">059</span> * &lt;p&gt;<a name="line.59"></a>
-<span class="sourceLineNo">060</span> * A stream is considered down when we cannot contact a region server on the<a name="line.60"></a>
-<span class="sourceLineNo">061</span> * peer cluster for more than 55 seconds by default.<a name="line.61"></a>
-<span class="sourceLineNo">062</span> * &lt;/p&gt;<a name="line.62"></a>
-<span class="sourceLineNo">063</span> */<a name="line.63"></a>
-<span class="sourceLineNo">064</span>@InterfaceAudience.Private<a name="line.64"></a>
-<span class="sourceLineNo">065</span>public class HBaseInterClusterReplicationEndpoint extends HBaseReplicationEndpoint {<a name="line.65"></a>
-<span class="sourceLineNo">066</span><a name="line.66"></a>
-<span class="sourceLineNo">067</span>  private static final Log LOG = LogFactory.getLog(HBaseInterClusterReplicationEndpoint.class);<a name="line.67"></a>
-<span class="sourceLineNo">068</span>  private HConnection conn;<a name="line.68"></a>
+<span class="sourceLineNo">025</span>import java.util.Collections;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.util.List;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.util.concurrent.Callable;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.util.concurrent.CompletionService;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.util.concurrent.ExecutionException;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.concurrent.ExecutorCompletionService;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.util.concurrent.Future;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.util.concurrent.SynchronousQueue;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.util.concurrent.ThreadPoolExecutor;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.concurrent.TimeUnit;<a name="line.34"></a>
+<span class="sourceLineNo">035</span><a name="line.35"></a>
+<span class="sourceLineNo">036</span>import com.google.common.annotations.VisibleForTesting;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.commons.lang.StringUtils;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.commons.logging.Log;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.commons.logging.LogFactory;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.conf.Configuration;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.HConstants;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.HConnection;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.protobuf.ReplicationProtbufUtil;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.AdminService.BlockingInterface;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.wal.WAL.Entry;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.replication.HBaseReplicationEndpoint;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.replication.ReplicationPeer.PeerState;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.replication.regionserver.ReplicationSinkManager.SinkPeer;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.ipc.RemoteException;<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> * A {@link org.apache.hadoop.hbase.replication.ReplicationEndpoint} <a name="line.57"></a>
+<span class="sourceLineNo">058</span> * implementation for replicating to another HBase cluster.<a name="line.58"></a>
+<span class="sourceLineNo">059</span> * For the slave cluster it selects a random number of peers<a name="line.59"></a>
+<span class="sourceLineNo">060</span> * using a replication ratio. For example, if replication ration = 0.1<a name="line.60"></a>
+<span class="sourceLineNo">061</span> * and slave cluster has 100 region servers, 10 will be selected.<a name="line.61"></a>
+<span class="sourceLineNo">062</span> * &lt;p&gt;<a name="line.62"></a>
+<span class="sourceLineNo">063</span> * A stream is considered down when we cannot contact a region server on the<a name="line.63"></a>
+<span class="sourceLineNo">064</span> * peer cluster for more than 55 seconds by default.<a name="line.64"></a>
+<span class="sourceLineNo">065</span> * &lt;/p&gt;<a name="line.65"></a>
+<span class="sourceLineNo">066</span> */<a name="line.66"></a>
+<span class="sourceLineNo">067</span>@InterfaceAudience.Private<a name="line.67"></a>
+<span class="sourceLineNo">068</span>public class HBaseInterClusterReplicationEndpoint extends HBaseReplicationEndpoint {<a name="line.68"></a>
 <span class="sourceLineNo">069</span><a name="line.69"></a>
-<span class="sourceLineNo">070</span>  private Configuration conf;<a name="line.70"></a>
-<span class="sourceLineNo">071</span><a name="line.71"></a>
-<span class="sourceLineNo">072</span>  // How long should we sleep for each retry<a name="line.72"></a>
-<span class="sourceLineNo">073</span>  private long sleepForRetries;<a name="line.73"></a>
+<span class="sourceLineNo">070</span>  private static final Log LOG = LogFactory.getLog(HBaseInterClusterReplicationEndpoint.class);<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  private HConnection conn;<a name="line.71"></a>
+<span class="sourceLineNo">072</span><a name="line.72"></a>
+<span class="sourceLineNo">073</span>  private Configuration conf;<a name="line.73"></a>
 <span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span>  // Maximum number of retries before taking bold actions<a name="line.75"></a>
-<span class="sourceLineNo">076</span>  private int maxRetriesMultiplier;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>  // Socket timeouts require even bolder actions since we don't want to DDOS<a name="line.77"></a>
-<span class="sourceLineNo">078</span>  private int socketTimeoutMultiplier;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  //Metrics for this source<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  private MetricsSource metrics;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  // Handles connecting to peer region servers<a name="line.81"></a>
-<span class="sourceLineNo">082</span>  private ReplicationSinkManager replicationSinkMgr;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>  private boolean peersSelected = false;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  private ThreadPoolExecutor exec;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>  private int maxThreads;<a name="line.85"></a>
-<span class="sourceLineNo">086</span><a name="line.86"></a>
-<span class="sourceLineNo">087</span>  @Override<a name="line.87"></a>
-<span class="sourceLineNo">088</span>  public void init(Context context) throws IOException {<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    super.init(context);<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    this.conf = HBaseConfiguration.create(ctx.getConfiguration());<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    decorateConf();<a name="line.91"></a>
-<span class="sourceLineNo">092</span>    this.maxRetriesMultiplier = this.conf.getInt("replication.source.maxretriesmultiplier", 300);<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    this.socketTimeoutMultiplier = this.conf.getInt("replication.source.socketTimeoutMultiplier",<a name="line.93"></a>
-<span class="sourceLineNo">094</span>        maxRetriesMultiplier);<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    // TODO: This connection is replication specific or we should make it particular to<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    // replication and make replication specific settings such as compression or codec to use<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    // passing Cells.<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    this.conn = (HConnection) ConnectionFactory.createConnection(this.conf);<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    this.sleepForRetries =<a name="line.99"></a>
-<span class="sourceLineNo">100</span>        this.conf.getLong("replication.source.sleepforretries", 1000);<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    this.metrics = context.getMetrics();<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    // ReplicationQueueInfo parses the peerId out of the znode for us<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    this.replicationSinkMgr = new ReplicationSinkManager(conn, ctx.getPeerId(), this, this.conf);<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    // per sink thread pool<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    this.maxThreads = this.conf.getInt(HConstants.REPLICATION_SOURCE_MAXTHREADS_KEY,<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      HConstants.REPLICATION_SOURCE_MAXTHREADS_DEFAULT);<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    this.exec = new ThreadPoolExecutor(1, maxThreads, 60, TimeUnit.SECONDS,<a name="line.107"></a>
-<span class="sourceLineNo">108</span>      new SynchronousQueue&lt;Runnable&gt;());<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>  private void decorateConf() {<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    String replicationCodec = this.conf.get(HConstants.REPLICATION_CODEC_CONF_KEY);<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    if (StringUtils.isNotEmpty(replicationCodec)) {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      this.conf.set(HConstants.RPC_CODEC_CONF_KEY, replicationCodec);<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>  private void connectToPeers() {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    getRegionServers();<a name="line.119"></a>
+<span class="sourceLineNo">075</span>  // How long should we sleep for each retry<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  private long sleepForRetries;<a name="line.76"></a>
+<span class="sourceLineNo">077</span><a name="line.77"></a>
+<span class="sourceLineNo">078</span>  // Maximum number of retries before taking bold actions<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  private int maxRetriesMultiplier;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  // Socket timeouts require even bolder actions since we don't want to DDOS<a name="line.80"></a>
+<span class="sourceLineNo">081</span>  private int socketTimeoutMultiplier;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  //Metrics for this source<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  private MetricsSource metrics;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  // Handles connecting to peer region servers<a name="line.84"></a>
+<span class="sourceLineNo">085</span>  private ReplicationSinkManager replicationSinkMgr;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  private boolean peersSelected = false;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  private ThreadPoolExecutor exec;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  private int maxThreads;<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>  @Override<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  public void init(Context context) throws IOException {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    super.init(context);<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    this.conf = HBaseConfiguration.create(ctx.getConfiguration());<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    decorateConf();<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    this.maxRetriesMultiplier = this.conf.getInt("replication.source.maxretriesmultiplier", 300);<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    this.socketTimeoutMultiplier = this.conf.getInt("replication.source.socketTimeoutMultiplier",<a name="line.96"></a>
+<span class="sourceLineNo">097</span>        maxRetriesMultiplier);<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    // TODO: This connection is replication specific or we should make it particular to<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    // replication and make replication specific settings such as compression or codec to use<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    // passing Cells.<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    this.conn = (HConnection) ConnectionFactory.createConnection(this.conf);<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    this.sleepForRetries =<a name="line.102"></a>
+<span class="sourceLineNo">103</span>        this.conf.getLong("replication.source.sleepforretries", 1000);<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    this.metrics = context.getMetrics();<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    // ReplicationQueueInfo parses the peerId out of the znode for us<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    this.replicationSinkMgr = new ReplicationSinkManager(conn, ctx.getPeerId(), this, this.conf);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    // per sink thread pool<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    this.maxThreads = this.conf.getInt(HConstants.REPLICATION_SOURCE_MAXTHREADS_KEY,<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      HConstants.REPLICATION_SOURCE_MAXTHREADS_DEFAULT);<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    this.exec = new ThreadPoolExecutor(1, maxThreads, 60, TimeUnit.SECONDS,<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      new SynchronousQueue&lt;Runnable&gt;());<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>  private void decorateConf() {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    String replicationCodec = this.conf.get(HConstants.REPLICATION_CODEC_CONF_KEY);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    if (StringUtils.isNotEmpty(replicationCodec)) {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      this.conf.set(HConstants.RPC_CODEC_CONF_KEY, replicationCodec);<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    }<a name="line.118"></a>
+<span class="sourceLineNo">119</span>  }<a name="line.119"></a>
 <span class="sourceLineNo">120</span><a name="line.120"></a>
-<span class="sourceLineNo">121</span>    int sleepMultiplier = 1;<a name="line.121"></a>
-<span class="sourceLineNo">122</span><a name="line.122"></a>
-<span class="sourceLineNo">123</span>    // Connect to peer cluster first, unless we have to stop<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    while (this.isRunning() &amp;&amp; replicationSinkMgr.getSinks().size() == 0) {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      replicationSinkMgr.chooseSinks();<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      if (this.isRunning() &amp;&amp; replicationSinkMgr.getSinks().size() == 0) {<a name="line.126"></a>
-<span class="sourceLineNo">127</span>        if (sleepForRetries("Waiting for peers", sleepMultiplier)) {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>          sleepMultiplier++;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>        }<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      }<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    }<a name="line.131"></a>
-<span class="sourceLineNo">132</span>  }<a name="line.132"></a>
-<span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>  /**<a name="line.134"></a>
-<span class="sourceLineNo">135</span>   * Do the sleeping logic<a name="line.135"></a>
-<span class="sourceLineNo">136</span>   * @param msg Why we sleep<a name="line.136"></a>
-<span class="sourceLineNo">137</span>   * @param sleepMultiplier by how many times the default sleeping time is augmented<a name="line.137"></a>
-<span class="sourceLineNo">138</span>   * @return True if &lt;code&gt;sleepMultiplier&lt;/code&gt; is &amp;lt; &lt;code&gt;maxRetriesMultiplier&lt;/code&gt;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>   */<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  protected boolean sleepForRetries(String msg, int sleepMultiplier) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    try {<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      if (LOG.isTraceEnabled()) {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>        LOG.trace(msg + ", sleeping " + sleepForRetries + " times " + sleepMultiplier);<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      }<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      Thread.sleep(this.sleepForRetries * sleepMultiplier);<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    } catch (InterruptedException e) {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>      LOG.debug("Interrupted while sleeping between retries");<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    }<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    return sleepMultiplier &lt; maxRetriesMultiplier;<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>   * Do the shipping logic<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 boolean replicate(ReplicateContext replicateContext) {<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    List&lt;Entry&gt; entries = replicateContext.getEntries();<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    String walGroupId = replicateContext.getWalGroupId();<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    int sleepMultiplier = 1;<a name="line.159"></a>
-<span class="sourceLineNo">160</span><a name="line.160"></a>
-<span class="sourceLineNo">161</span>    if (!peersSelected &amp;&amp; this.isRunning()) {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      connectToPeers();<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      peersSelected = true;<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>    if (replicationSinkMgr.getSinks().size() == 0) {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      return false;<a name="line.167"></a>
+<span class="sourceLineNo">121</span>  private void connectToPeers() {<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    getRegionServers();<a name="line.122"></a>
+<span class="sourceLineNo">123</span><a name="line.123"></a>
+<span class="sourceLineNo">124</span>    int sleepMultiplier = 1;<a name="line.124"></a>
+<span class="sourceLineNo">125</span><a name="line.125"></a>
+<span class="sourceLineNo">126</span>    // Connect to peer cluster first, unless we have to stop<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    while (this.isRunning() &amp;&amp; replicationSinkMgr.getSinks().size() == 0) {<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      replicationSinkMgr.chooseSinks();<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      if (this.isRunning() &amp;&amp; replicationSinkMgr.getSinks().size() == 0) {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>        if (sleepForRetries("Waiting for peers", sleepMultiplier)) {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>          sleepMultiplier++;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>        }<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      }<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    }<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  }<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>   * Do the sleeping logic<a name="line.138"></a>
+<span class="sourceLineNo">139</span>   * @param msg Why we sleep<a name="line.139"></a>
+<span class="sourceLineNo">140</span>   * @param sleepMultiplier by how many times the default sleeping time is augmented<a name="line.140"></a>
+<span class="sourceLineNo">141</span>   * @return True if &lt;code&gt;sleepMultiplier&lt;/code&gt; is &amp;lt; &lt;code&gt;maxRetriesMultiplier&lt;/code&gt;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>   */<a name="line.142"></a>
+<span class="sourceLineNo">143</span>  protected boolean sleepForRetries(String msg, int sleepMultiplier) {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    try {<a name="line.144"></a>
+<span class="sourceLineNo">145</span>      if (LOG.isTraceEnabled()) {<a name="line.145"></a>
+<span class="sourceLineNo">146</span>        LOG.trace(msg + ", sleeping " + sleepForRetries + " times " + sleepMultiplier);<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      }<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      Thread.sleep(this.sleepForRetries * sleepMultiplier);<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    } catch (InterruptedException e) {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      LOG.debug("Interrupted while sleeping between retries");<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    }<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    return sleepMultiplier &lt; maxRetriesMultiplier;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  }<a name="line.153"></a>
+<span class="sourceLineNo">154</span><a name="line.154"></a>
+<span class="sourceLineNo">155</span>  /**<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   * Do the shipping logic<a name="line.156"></a>
+<span class="sourceLineNo">157</span>   */<a name="line.157"></a>
+<span class="sourceLineNo">158</span>  @Override<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  public boolean replicate(ReplicateContext replicateContext) {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    CompletionService&lt;Integer&gt; pool = new ExecutorCompletionService&lt;Integer&gt;(this.exec);<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    List&lt;Entry&gt; entries = replicateContext.getEntries();<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    String walGroupId = replicateContext.getWalGroupId();<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    int sleepMultiplier = 1;<a name="line.163"></a>
+<span class="sourceLineNo">164</span><a name="line.164"></a>
+<span class="sourceLineNo">165</span>    if (!peersSelected &amp;&amp; this.isRunning()) {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      connectToPeers();<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      peersSelected = true;<a name="line.167"></a>
 <span class="sourceLineNo">168</span>    }<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    // minimum of: configured threads, number of 100-waledit batches,<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    //  and number of current sinks<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    int n = Math.min(Math.min(this.maxThreads, entries.size()/100+1),<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      replicationSinkMgr.getSinks().size());<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    List&lt;List&lt;Entry&gt;&gt; entryLists = new ArrayList&lt;List&lt;Entry&gt;&gt;(n);<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    if (n == 1) {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      entryLists.add(entries);<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    } else {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      for (int i=0; i&lt;n; i++) {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>        entryLists.add(new ArrayList&lt;Entry&gt;(entries.size()/n+1));<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      }<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      // now group by region<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      for (Entry e : entries) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        entryLists.get(Math.abs(Bytes.hashCode(e.getKey().getEncodedRegionName())%n)).add(e);<a name="line.182"></a>
+<span class="sourceLineNo">169</span><a name="line.169"></a>
+<span class="sourceLineNo">170</span>    if (replicationSinkMgr.getSinks().size() == 0) {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      return false;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    }<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    // minimum of: configured threads, number of 100-waledit batches,<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    //  and number of current sinks<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    int n = Math.min(Math.min(this.maxThreads, entries.size()/100+1),<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      replicationSinkMgr.getSinks().size());<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    List&lt;List&lt;Entry&gt;&gt; entryLists = new ArrayList&lt;List&lt;Entry&gt;&gt;(n);<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    if (n == 1) {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      entryLists.add(entries);<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    } else {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      for (int i=0; i&lt;n; i++) {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>        entryLists.add(new ArrayList&lt;Entry&gt;(entries.size()/n+1));<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>    while (this.isRunning()) {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      if (!isPeerEnabled()) {<a name="line.186"></a>
-<span class="sourceLineNo">187</span>        if (sleepForRetries("Replication is disabled", sleepMultiplier)) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>          sleepMultiplier++;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>        }<a name="line.189"></a>
-<span class="sourceLineNo">190</span>        continue;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      }<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      try {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>        if (LOG.isTraceEnabled()) {<a name="line.193"></a>
-<span class="sourceLineNo">194</span>          LOG.trace("Replicating " + entries.size() +<a name="line.194"></a>
-<span class="sourceLineNo">195</span>              " entries of total size " + replicateContext.getSize());<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>        List&lt;Future&lt;Integer&gt;&gt; futures = new ArrayList&lt;Future&lt;Integer&gt;&gt;(entryLists.size());<a name="line.198"></a>
-<span class="sourceLineNo">199</span>        for (int i=0; i&lt;entryLists.size(); i++) {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>          if (!entryLists.get(i).isEmpty()) {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>            if (LOG.isTraceEnabled()) {<a name="line.201"></a>
-<span class="sourceLineNo">202</span>              LOG.trace("Submitting " + entryLists.get(i).size() +<a name="line.202"></a>
-<span class="sourceLineNo">203</span>                  " entries of total size " + replicateContext.getSize());<a name="line.203"></a>
-<span class="sourceLineNo">204</span>            }<a name="line.204"></a>
-<span class="sourceLineNo">205</span>            // RuntimeExceptions encountered here bubble up and are handled in ReplicationSource<a name="line.205"></a>
-<span class="sourceLineNo">206</span>            futures.add(exec.submit(createReplicator(entryLists.get(i), i)));<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>        IOException iox = null;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>        for (int index = futures.size() - 1; index &gt;= 0; index--) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>          try {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>            // wait for all futures, remove successful parts<a name="line.212"></a>
-<span class="sourceLineNo">213</span>            // (only the remaining parts will be retried)<a name="line.213"></a>
-<span class="sourceLineNo">214</span>            Future&lt;Integer&gt; f = futures.get(index);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>            entryLists.remove(f.get().intValue());<a name="line.215"></a>
-<span class="sourceLineNo">216</span>          } catch (InterruptedException ie) {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>            iox =  new IOException(ie);<a name="line.217"></a>
-<span class="sourceLineNo">218</span>          } catch (ExecutionException ee) {<a name="line.218"></a>
-<span class="sourceLineNo">219</span>            // cause must be an IOException<a name="line.219"></a>
-<span class="sourceLineNo">220</span>            iox = (IOException)ee.getCause();<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>        if (iox != null) {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>          // if we had any exceptions, try again<a name="line.224"></a>
-<span class="sourceLineNo">225</span>          throw iox;<a name="line.225"></a>
-<span class="sourceLineNo">226</span>        }<a name="line.226"></a>
-<span class="sourceLineNo">227</span>        // update metrics<a name="line.227"></a>
-<span class="sourceLineNo">228</span>        this.metrics.setAgeOfLastShippedOp(entries.get(entries.size() - 1).getKey().getWriteTime(),<a name="line.228"></a>
-<span class="sourceLineNo">229</span>          walGroupId);<a name="line.229"></a>
-<span class="sourceLineNo">230</span>        return true;<a name="line.230"></a>
-<span class="sourceLineNo">231</span><a name="line.231"></a>
-<span class="sourceLineNo">232</span>      } catch (IOException ioe) {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>        // Didn't ship anything, but must still age the last time we did<a name="line.233"></a>
-<span class="sourceLineNo">234</span>        this.metrics.refreshAgeOfLastShippedOp(walGroupId);<a name="line.234"></a>
-<span class="sourceLineNo">235</span>        if (ioe instanceof RemoteException) {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>          ioe = ((RemoteException) ioe).unwrapRemoteException();<a name="line.236"></a>
-<span class="sourceLineNo">237</span>          LOG.warn("Can't replicate because of an error on the remote cluster: ", ioe);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>          if (ioe instanceof TableNotFoundException) {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>            if (sleepForRetries("A table is missing in the peer cluster. "<a name="line.239"></a>
-<span class="sourceLineNo">240</span>                + "Replication cannot proceed without losing data.", sleepMultiplier)) {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>              sleepMultiplier++;<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>        } else {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>          if (ioe instanceof SocketTimeoutException) {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>            // This exception means we waited for more than 60s and nothing<a name="line.246"></a>
-<span class="sourceLineNo">247</span>            // happened, the cluster is alive and calling it right away<a name="line.247"></a>
-<span class="sourceLineNo">248</span>            // even for a test just makes things worse.<a name="line.248"></a>
-<span class="sourceLineNo">249</span>            sleepForRetries("Encountered a SocketTimeoutException. Since the " +<a name="line.249"></a>
-<span class="sourceLineNo">250</span>              "call to the remote cluster timed out, which is usually " +<a name="line.250"></a>
-<span class="sourceLineNo">251</span>              "caused by a machine failure or a massive slowdown",<a name="line.251"></a>
-<span class="sourceLineNo">252</span>              this.socketTimeoutMultiplier);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>          } else if (ioe instanceof ConnectException) {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>            LOG.warn("Peer is unavailable, rechecking all sinks: ", ioe);<a name="line.254"></a>
-<span class="sourceLineNo">255</span>            replicationSinkMgr.chooseSinks();<a name="line.255"></a>
-<span class="sourceLineNo">256</span>          } else {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>            LOG.warn("Can't replicate because of a local or network error: ", ioe);<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>        if (sleepForRetries("Since we are unable to replicate", sleepMultiplier)) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>          sleepMultiplier++;<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 false; // in case we exited before replicating<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>  protected boolean isPeerEnabled() {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    return ctx.getReplicationPeer().getPeerState() == PeerState.ENABLED;<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>  @Override<a name="line.272"></a>
-<span class="sourceLineNo">273</span>  protected void doStop() {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    disconnect(); //don't call super.doStop()<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    if (this.conn != null) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>      try {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>        this.conn.close();<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        this.conn = null;<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      } catch (IOException e) {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>        LOG.warn("Failed to close the connection");<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>    exec.shutdownNow();<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    notifyStopped();<a name="line.284"></a>
-<span class="sourceLineNo">285</span>  }<a name="line.285"></a>
-<span class="sourceLineNo">286</span><a name="line.286"></a>
-<span class="sourceLineNo">287</span>  // is this needed? Nobody else will call doStop() otherwise<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  @Override<a name="line.288"></a>
-<span class="sourceLineNo">289</span>  public State stopAndWait() {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    doStop();<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    return super.stopAndWait();<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>  @VisibleForTesting<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  protected Replicator createReplicator(List&lt;Entry&gt; entries, int ordinal) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    return new Replicator(entries, ordinal);<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>  @VisibleForTesting<a name="line.299"></a>
-<span class="sourceLineNo">300</span>  protected class Replicator implements Callable&lt;Integer&gt; {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    private List&lt;Entry&gt; entries;<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    private int ordinal;<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    public Replicator(List&lt;Entry&gt; entries, int ordinal) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>      this.entries = entries;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      this.ordinal = ordinal;<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>    @Override<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    public Integer call() throws IOException {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      SinkPeer sinkPeer = null;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      try {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>        sinkPeer = replicationSinkMgr.getReplicationSink();<a name="line.312"></a>
-<span class="sourceLineNo">313</span>        BlockingInterface rrs = sinkPeer.getRegionServer();<a name="line.313"></a>
-<span class="sourceLineNo">314</span>        ReplicationProtbufUtil.replicateWALEntry(rrs,<a name="line.314"></a>
-<span class="sourceLineNo">315</span>            entries.toArray(new Entry[entries.size()]));<a name="line.315"></a>
-<span class="sourceLineNo">316</span>        replicationSinkMgr.reportSinkSuccess(sinkPeer);<a name="line.316"></a>
-<span class="sourceLineNo">317</span>        return ordinal;<a name="line.317"></a>
-<span class="sourceLineNo">318</span><a name="line.318"></a>
-<span class="sourceLineNo">319</span>      } catch (IOException ioe) {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>        if (sinkPeer != null) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>          replicationSinkMgr.reportBadSink(sinkPeer);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>        }<a name="line.322"></a>
-<span class="sourceLineNo">323</span>        throw ioe;<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>  }<a name="line.327"></a>
-<span class="sourceLineNo">328</span>}<a name="line.328"></a>
+<span class="sourceLineNo">184</span>      // now group by region<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      for (Entry e : entries) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>        entryLists.get(Math.abs(Bytes.hashCode(e.getKey().getEncodedRegionName())%n)).add(e);<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>    while (this.isRunning()) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      if (!isPeerEnabled()) {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>        if (sleepForRetries("Replication is disabled", sleepMultiplier)) {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>          sleepMultiplier++;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>        }<a name="line.193"></a>
+<span class="sourceLineNo">194</span>        continue;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      }<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      try {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>        if (LOG.isTraceEnabled()) {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>          LOG.trace("Replicating " + entries.size() +<a name="line.198"></a>
+<span class="sourceLineNo">199</span>              " entries of total size " + replicateContext.getSize());<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>        int futures = 0;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>        for (int i=0; i&lt;entryLists.size(); i++) {<a name="line.203"></a>
+<span class="sourceLineNo">204</span>          if (!entryLists.get(i).isEmpty()) {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>            if (LOG.isTraceEnabled()) {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>              LOG.trace("Submitting " + entryLists.get(i).size() +<a name="line.206"></a>
+<span class="sourceLineNo">207</span>                  " entries of total size " + replicateContext.getSize());<a name="line.207"></a>
+<span class="sourceLineNo">208</span>            }<a name="line.208"></a>
+<span class="sourceLineNo">209</span>            // RuntimeExceptions encountered here bubble up and are handled in ReplicationSource<a name="line.209"></a>
+<span class="sourceLineNo">210</span>            pool.submit(createReplicator(entryLists.get(i), i));<a name="line.210"></a>
+<span class="sourceLineNo">211</span>            futures++;<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>        IOException iox = null;<a name="line.214"></a>
+<span class="sourceLineNo">215</span><a name="line.215"></a>
+<span class="sourceLineNo">216</span>        for (int i=0; i&lt;futures; i++) {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>          try {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>            // wait for all futures, remove successful parts<a name="line.218"></a>
+<span class="sourceLineNo">219</span>            // (only the remaining parts will be retried)<a name="line.219"></a>
+<span class="sourceLineNo">220</span>            Future&lt;Integer&gt; f = pool.take();<a name="line.220"></a>
+<span class="sourceLineNo">221</span>            entryLists.set(f.get().intValue(), Collections.&lt;Entry&gt;emptyList());<a name="line.221"></a>
+<span class="sourceLineNo">222</span>          } catch (InterruptedException ie) {<a name="line.222"></a>
+<span class="sourceLineNo">223</span>            iox =  new IOException(ie);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>          } catch (ExecutionException ee) {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>            // cause must be an IOException<a name="line.225"></a>
+<span class="sourceLineNo">226</span>            iox = (IOException)ee.getCause();<a name="line.226"></a>
+<span class="sourceLineNo">227</span>          }<a name="line.227"></a>
+<span class="sourceLineNo">228</span>        }<a name="line.228"></a>
+<span class="sourceLineNo">229</span>        if (iox != null) {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>          // if we had any exceptions, try again<a name="line.230"></a>
+<span class="sourceLineNo">231</span>          throw iox;<a name="line.231"></a>
+<span class="sourceLineNo">232</span>        }<a name="line.232"></a>
+<span class="sourceLineNo">233</span>        // update metrics<a name="line.233"></a>
+<span class="sourceLineNo">234</span>        this.metrics.setAgeOfLastShippedOp(entries.get(entries.size() - 1).getKey().getWriteTime(),<a name="line.234"></a>
+<span class="sourceLineNo">235</span>          walGroupId);<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        return true;<a name="line.236"></a>
+<span class="sourceLineNo">237</span><a name="line.237"></a>
+<span class="sourceLineNo">238</span>      } catch (IOException ioe) {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>        // Didn't ship anything, but must still age the last time we did<a name="line.239"></a>
+<span class="sourceLineNo">240</span>        this.metrics.refreshAgeOfLastShippedOp(walGroupId);<a name="line.240"></a>
+<span class="sourceLineNo">241</span>        if (ioe instanceof RemoteException) {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>          ioe = ((RemoteException) ioe).unwrapRemoteException();<a name="line.242"></a>
+<span class="sourceLineNo">243</span>          LOG.warn("Can't replicate because of an error on the remote cluster: ", ioe);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>          if (ioe instanceof TableNotFoundException) {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>            if (sleepForRetries("A table is missing in the peer cluster. "<a name="line.245"></a>
+<span class="sourceLineNo">246</span>                + "Replication cannot proceed without losing data.", sleepMultiplier)) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>              sleepMultiplier++;<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>        } else {<a name="line.250"></a>
+<span class="sourceLineNo">251</span>          if (ioe instanceof SocketTimeoutException) {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>            // This exception means we waited for more than 60s and nothing<a name="line.252"></a>
+<span class="sourceLineNo">253</span>            // happened, the cluster is alive and calling it right away<a name="line.253"></a>
+<span class="sourceLineNo">254</span>            // even for a test just makes things worse.<a name="line.254"></a>
+<span class="sourceLineNo">255</span>            sleepForRetries("Encountered a SocketTimeoutException. Since the " +<a name="line.255"></a>
+<span class="sourceLineNo">256</span>              "call to the remote cluster timed out, which is usually " +<a name="line.256"></a>
+<span class="sourceLineNo">257</span>              "caused by a machine failure or a massive slowdown",<a name="line.257"></a>
+<span class="sourceLineNo">258</span>              this.socketTimeoutMultiplier);<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          } else if (ioe instanceof ConnectException) {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>            LOG.warn("Peer is unavailable, rechecking all sinks: ", ioe);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>            replicationSinkMgr.chooseSinks();<a name="line.261"></a>
+<span class="sourceLineNo">262</span>          } else {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>            LOG.warn("Can't replicate because of a local or network error: ", ioe);<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>        if (sleepForRetries("Since we are unable to replicate", sleepMultiplier)) {<a name="line.266"></a>
+<span class="sourceLineNo">267</span>          sleepMultiplier++;<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>    return false; // in case we exited before replicating<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>  protected boolean isPeerEnabled() {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    return ctx.getReplicationPeer().getPeerState() == PeerState.ENABLED;<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>  protected void doStop() {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    disconnect(); //don't call super.doStop()<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    if (this.conn != null) {<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      try {<a name="line.282"></a>
+<span class="sourceLineNo">283</span>        this.conn.close();<a name="line.283"></a>
+<span class="sourceLineNo">284</span>        this.conn = null;<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      } catch (IOException e) {<a name="line.285"></a>
+<span class="sourceLineNo">286</span>        LOG.warn("Failed to close the connection");<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>    exec.shutdownNow();<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    notifyStopped();<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>  // is this needed? Nobody else will call doStop() otherwise<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  @Override<a name="line.294"></a>
+<span class="sourceLineNo">295</span>  public State stopAndWait() {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    doStop();<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    return super.stopAndWait();<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>  @VisibleForTesting<a name="line.300"></a>
+<span class="sourceLineNo">301</span>  protected Replicator createReplicator(List&lt;Entry&gt; entries, int ordinal) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    return new Replicator(entries, ordinal);<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>  @VisibleForTesting<a name="line.305"></a>
+<span class="sourceLineNo">306</span>  protected class Replicator implements Callable&lt;Integer&gt; {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    private List&lt;Entry&gt; entries;<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    private int ordinal;<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    public Replicator(List&lt;Entry&gt; entries, int ordinal) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      this.entries = entries;<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      this.ordinal = ordinal;<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 Integer call() throws IOException {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>      SinkPeer sinkPeer = null;<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      try {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>        sinkPeer = replicationSinkMgr.getReplicationSink();<a name="line.318"></a>
+<span class="sourceLineNo">319</span>        BlockingInterface rrs = sinkPeer.getRegionServer();<a name="line.319"></a>
+<span class="sourceLineNo">320</span>        ReplicationProtbufUtil.replicateWALEntry(rrs,<a name="line.320"></a>
+<span class="sourceLineNo">321</span>            entries.toArray(new Entry[entries.size()]));<a name="line.321"></a>
+<span class="sourceLineNo">322</span>        replicationSinkMgr.reportSinkSuccess(sinkPeer);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>        return ordinal;<a name="line.323"></a>
+<span class="sourceLineNo">324</span><a name="line.324"></a>
+<span class="sourceLineNo">325</span>      } catch (IOException ioe) {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>        if (sinkPeer != null) {<a name="line.326"></a>
+<span class="sourceLineNo">327</span>          replicationSinkMgr.reportBadSink(sinkPeer);<a name="line.327"></a>
+<span class="sourceLineNo">328</span>        }<a name="line.328"></a>
+<span class="sourceLineNo">329</span>        throw ioe;<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><a name="line.332"></a>
+<span class="sourceLineNo">333</span>  }<a name="line.333"></a>
+<span class="sourceLineNo">334</span>}<a name="line.334"></a>
 
 
 


[17/24] hbase git commit: Published site at 0d72849581c1e5a50a2aa7757b909e5531b8d12c.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html
index c069622..c031492 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html
@@ -48,949 +48,957 @@
 <span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.40"></a>
 <span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.41"></a>
 <span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.util.ByteRange;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.util.CollectionBackedScanner;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.util.ReflectionUtils;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.htrace.Trace;<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 MemStore holds in-memory modifications to the Store.  Modifications<a name="line.52"></a>
-<span class="sourceLineNo">053</span> * are {@link Cell}s.  When asked to flush, current memstore is moved<a name="line.53"></a>
-<span class="sourceLineNo">054</span> * to snapshot and is cleared.  We continue to serve edits out of new memstore<a name="line.54"></a>
-<span class="sourceLineNo">055</span> * and backing snapshot until flusher reports in that the flush succeeded. At<a name="line.55"></a>
-<span class="sourceLineNo">056</span> * this point we let the snapshot go.<a name="line.56"></a>
-<span class="sourceLineNo">057</span> *  &lt;p&gt;<a name="line.57"></a>
-<span class="sourceLineNo">058</span> * The MemStore functions should not be called in parallel. Callers should hold<a name="line.58"></a>
-<span class="sourceLineNo">059</span> *  write and read locks. This is done in {@link HStore}.<a name="line.59"></a>
-<span class="sourceLineNo">060</span> *  &lt;/p&gt;<a name="line.60"></a>
-<span class="sourceLineNo">061</span> *<a name="line.61"></a>
-<span class="sourceLineNo">062</span> * TODO: Adjust size of the memstore when we remove items because they have<a name="line.62"></a>
-<span class="sourceLineNo">063</span> * been deleted.<a name="line.63"></a>
-<span class="sourceLineNo">064</span> * TODO: With new KVSLS, need to make sure we update HeapSize with difference<a name="line.64"></a>
-<span class="sourceLineNo">065</span> * in KV size.<a name="line.65"></a>
-<span class="sourceLineNo">066</span> */<a name="line.66"></a>
-<span class="sourceLineNo">067</span>@InterfaceAudience.Private<a name="line.67"></a>
-<span class="sourceLineNo">068</span>public class DefaultMemStore implements MemStore {<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  private static final Log LOG = LogFactory.getLog(DefaultMemStore.class);<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  static final String USEMSLAB_KEY = "hbase.hregion.memstore.mslab.enabled";<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  private static final boolean USEMSLAB_DEFAULT = true;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  static final String MSLAB_CLASS_NAME = "hbase.regionserver.mslab.class";<a name="line.72"></a>
-<span class="sourceLineNo">073</span><a name="line.73"></a>
-<span class="sourceLineNo">074</span>  private Configuration conf;<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>  // MemStore.  Use a CellSkipListSet rather than SkipListSet because of the<a name="line.76"></a>
-<span class="sourceLineNo">077</span>  // better semantics.  The Map will overwrite if passed a key it already had<a name="line.77"></a>
-<span class="sourceLineNo">078</span>  // whereas the Set will not add new Cell if key is same though value might be<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  // different.  Value is not important -- just make sure always same<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  // reference passed.<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  volatile CellSkipListSet cellSet;<a name="line.81"></a>
-<span class="sourceLineNo">082</span><a name="line.82"></a>
-<span class="sourceLineNo">083</span>  // Snapshot of memstore.  Made for flusher.<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  volatile CellSkipListSet snapshot;<a name="line.84"></a>
-<span class="sourceLineNo">085</span><a name="line.85"></a>
-<span class="sourceLineNo">086</span>  final CellComparator comparator;<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>  // Used to track own heapSize<a name="line.88"></a>
-<span class="sourceLineNo">089</span>  final AtomicLong size;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  private volatile long snapshotSize;<a name="line.90"></a>
-<span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>  // Used to track when to flush<a name="line.92"></a>
-<span class="sourceLineNo">093</span>  volatile long timeOfOldestEdit = Long.MAX_VALUE;<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>  TimeRangeTracker timeRangeTracker;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  TimeRangeTracker snapshotTimeRangeTracker;<a name="line.96"></a>
-<span class="sourceLineNo">097</span><a name="line.97"></a>
-<span class="sourceLineNo">098</span>  volatile MemStoreLAB allocator;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  volatile MemStoreLAB snapshotAllocator;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>  volatile long snapshotId;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  volatile boolean tagsPresent;<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>   * Default constructor. Used for tests.<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   */<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public DefaultMemStore() {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    this(HBaseConfiguration.create(), CellComparator.COMPARATOR);<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>   * Constructor.<a name="line.111"></a>
-<span class="sourceLineNo">112</span>   * @param c Comparator<a name="line.112"></a>
-<span class="sourceLineNo">113</span>   */<a name="line.113"></a>
-<span class="sourceLineNo">114</span>  public DefaultMemStore(final Configuration conf,<a name="line.114"></a>
-<span class="sourceLineNo">115</span>                  final CellComparator c) {<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    this.conf = conf;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    this.comparator = c;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    this.cellSet = new CellSkipListSet(c);<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    this.snapshot = new CellSkipListSet(c);<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    timeRangeTracker = new TimeRangeTracker();<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    snapshotTimeRangeTracker = new TimeRangeTracker();<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    this.size = new AtomicLong(DEEP_OVERHEAD);<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    this.snapshotSize = 0;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    if (conf.getBoolean(USEMSLAB_KEY, USEMSLAB_DEFAULT)) {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      String className = conf.get(MSLAB_CLASS_NAME, HeapMemStoreLAB.class.getName());<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      this.allocator = ReflectionUtils.instantiateWithCustomCtor(className,<a name="line.126"></a>
-<span class="sourceLineNo">127</span>          new Class[] { Configuration.class }, new Object[] { conf });<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    } else {<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      this.allocator = null;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    }<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  }<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>  void dump() {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    for (Cell cell: this.cellSet) {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      LOG.info(cell);<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    }<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    for (Cell cell: this.snapshot) {<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      LOG.info(cell);<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><a name="line.141"></a>
-<span class="sourceLineNo">142</span>  /**<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * Creates a snapshot of the current memstore.<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   * Snapshot must be cleared by call to {@link #clearSnapshot(long)}<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   */<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  @Override<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  public MemStoreSnapshot snapshot() {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    // If snapshot currently has entries, then flusher failed or didn't call<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    // cleanup.  Log a warning.<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    if (!this.snapshot.isEmpty()) {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      LOG.warn("Snapshot called again without clearing previous. " +<a name="line.151"></a>
-<span class="sourceLineNo">152</span>          "Doing nothing. Another ongoing flush or did we fail last attempt?");<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    } else {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      this.snapshotId = EnvironmentEdgeManager.currentTime();<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      this.snapshotSize = keySize();<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      if (!this.cellSet.isEmpty()) {<a name="line.156"></a>
-<span class="sourceLineNo">157</span>        this.snapshot = this.cellSet;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>        this.cellSet = new CellSkipListSet(this.comparator);<a name="line.158"></a>
-<span class="sourceLineNo">159</span>        this.snapshotTimeRangeTracker = this.timeRangeTracker;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>        this.timeRangeTracker = new TimeRangeTracker();<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        // Reset heap to not include any keys<a name="line.161"></a>
-<span class="sourceLineNo">162</span>        this.size.set(DEEP_OVERHEAD);<a name="line.162"></a>
-<span class="sourceLineNo">163</span>        this.snapshotAllocator = this.allocator;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>        // Reset allocator so we get a fresh buffer for the new memstore<a name="line.164"></a>
-<span class="sourceLineNo">165</span>        if (allocator != null) {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>          String className = conf.get(MSLAB_CLASS_NAME, HeapMemStoreLAB.class.getName());<a name="line.166"></a>
-<span class="sourceLineNo">167</span>          this.allocator = ReflectionUtils.instantiateWithCustomCtor(className,<a name="line.167"></a>
-<span class="sourceLineNo">168</span>              new Class[] { Configuration.class }, new Object[] { conf });<a name="line.168"></a>
-<span class="sourceLineNo">169</span>        }<a name="line.169"></a>
-<span class="sourceLineNo">170</span>        timeOfOldestEdit = Long.MAX_VALUE;<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>    MemStoreSnapshot memStoreSnapshot = new MemStoreSnapshot(this.snapshotId, snapshot.size(), this.snapshotSize,<a name="line.173"></a>
-<span class="sourceLineNo">174</span>        this.snapshotTimeRangeTracker, new CollectionBackedScanner(snapshot, this.comparator),<a name="line.174"></a>
-<span class="sourceLineNo">175</span>        this.tagsPresent);<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    this.tagsPresent = false;<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    return memStoreSnapshot;<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>   * The passed snapshot was successfully persisted; it can be let go.<a name="line.181"></a>
-<span class="sourceLineNo">182</span>   * @param id Id of the snapshot to clean out.<a name="line.182"></a>
-<span class="sourceLineNo">183</span>   * @throws UnexpectedStateException<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   * @see #snapshot()<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 clearSnapshot(long id) throws UnexpectedStateException {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    MemStoreLAB tmpAllocator = null;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    if (this.snapshotId != id) {<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      throw new UnexpectedStateException("Current snapshot id is " + this.snapshotId + ",passed "<a name="line.190"></a>
-<span class="sourceLineNo">191</span>          + id);<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    }<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    // OK. Passed in snapshot is same as current snapshot. If not-empty,<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    // create a new snapshot and let the old one go.<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    if (!this.snapshot.isEmpty()) {<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      this.snapshot = new CellSkipListSet(this.comparator);<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      this.snapshotTimeRangeTracker = new TimeRangeTracker();<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    }<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    this.snapshotSize = 0;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    this.snapshotId = -1;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    if (this.snapshotAllocator != null) {<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      tmpAllocator = this.snapshotAllocator;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      this.snapshotAllocator = null;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    }<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    if (tmpAllocator != null) {<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      tmpAllocator.close();<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>  @Override<a name="line.210"></a>
-<span class="sourceLineNo">211</span>  public long getFlushableSize() {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    return this.snapshotSize &gt; 0 ? this.snapshotSize : keySize();<a name="line.212"></a>
-<span class="sourceLineNo">213</span>  }<a name="line.213"></a>
-<span class="sourceLineNo">214</span><a name="line.214"></a>
-<span class="sourceLineNo">215</span>  @Override<a name="line.215"></a>
-<span class="sourceLineNo">216</span>  public long getSnapshotSize() {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    return this.snapshotSize;<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>   * Write an update<a name="line.221"></a>
-<span class="sourceLineNo">222</span>   * @param cell<a name="line.222"></a>
-<span class="sourceLineNo">223</span>   * @return approximate size of the passed Cell.<a name="line.223"></a>
-<span class="sourceLineNo">224</span>   */<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  @Override<a name="line.225"></a>
-<span class="sourceLineNo">226</span>  public long add(Cell cell) {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    Cell toAdd = maybeCloneWithAllocator(cell);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    return internalAdd(toAdd);<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  }<a name="line.229"></a>
-<span class="sourceLineNo">230</span><a name="line.230"></a>
-<span class="sourceLineNo">231</span>  @Override<a name="line.231"></a>
-<span class="sourceLineNo">232</span>  public long timeOfOldestEdit() {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    return timeOfOldestEdit;<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>  private boolean addToCellSet(Cell e) {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    boolean b = this.cellSet.add(e);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    // In no tags case this NoTagsKeyValue.getTagsLength() is a cheap call.<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    // When we use ACL CP or Visibility CP which deals with Tags during<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    // mutation, the TagRewriteCell.getTagsLength() is a cheaper call. We do not<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    // parse the byte[] to identify the tags length.<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    if(e.getTagsLength() &gt; 0) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      tagsPresent = true;<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    }<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    setOldestEditTimeToNow();<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    return b;<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>  private boolean removeFromCellSet(Cell e) {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    boolean b = this.cellSet.remove(e);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    setOldestEditTimeToNow();<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    return b;<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>  void setOldestEditTimeToNow() {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    if (timeOfOldestEdit == Long.MAX_VALUE) {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      timeOfOldestEdit = EnvironmentEdgeManager.currentTime();<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    }<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  }<a name="line.259"></a>
-<span class="sourceLineNo">260</span><a name="line.260"></a>
-<span class="sourceLineNo">261</span>  /**<a name="line.261"></a>
-<span class="sourceLineNo">262</span>   * Internal version of add() that doesn't clone Cells with the<a name="line.262"></a>
-<span class="sourceLineNo">263</span>   * allocator, and doesn't take the lock.<a name="line.263"></a>
-<span class="sourceLineNo">264</span>   *<a name="line.264"></a>
-<span class="sourceLineNo">265</span>   * Callers should ensure they already have the read lock taken<a name="line.265"></a>
-<span class="sourceLineNo">266</span>   */<a name="line.266"></a>
-<span class="sourceLineNo">267</span>  private long internalAdd(final Cell toAdd) {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    long s = heapSizeChange(toAdd, addToCellSet(toAdd));<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    timeRangeTracker.includeTimestamp(toAdd);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    this.size.addAndGet(s);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    return s;<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>  private Cell maybeCloneWithAllocator(Cell cell) {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    if (allocator == null) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>      return cell;<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>    int len = KeyValueUtil.length(cell);<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    ByteRange alloc = allocator.allocateBytes(len);<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    if (alloc == null) {<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      // The allocation was too large, allocator decided<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      // not to do anything with it.<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      return cell;<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    }<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    assert alloc.getBytes() != null;<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    KeyValueUtil.appendToByteArray(cell, alloc.getBytes(), alloc.getOffset());<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    KeyValue newKv = new KeyValue(alloc.getBytes(), alloc.getOffset(), len);<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    newKv.setSequenceId(cell.getSequenceId());<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    return newKv;<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>  /**<a name="line.293"></a>
-<span class="sourceLineNo">294</span>   * Remove n key from the memstore. Only cells that have the same key and the<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   * same memstoreTS are removed.  It is ok to not update timeRangeTracker<a name="line.295"></a>
-<span class="sourceLineNo">296</span>   * in this call. It is possible that we can optimize this method by using<a name="line.296"></a>
-<span class="sourceLineNo">297</span>   * tailMap/iterator, but since this method is called rarely (only for<a name="line.297"></a>
-<span class="sourceLineNo">298</span>   * error recovery), we can leave those optimization for the future.<a name="line.298"></a>
-<span class="sourceLineNo">299</span>   * @param cell<a name="line.299"></a>
-<span class="sourceLineNo">300</span>   */<a name="line.300"></a>
-<span class="sourceLineNo">301</span>  @Override<a name="line.301"></a>
-<span class="sourceLineNo">302</span>  public void rollback(Cell cell) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    // If the key is in the snapshot, delete it. We should not update<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    // this.size, because that tracks the size of only the memstore and<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    // not the snapshot. The flush of this snapshot to disk has not<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    // yet started because Store.flush() waits for all rwcc transactions to<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    // commit before starting the flush to disk.<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    Cell found = this.snapshot.get(cell);<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    if (found != null &amp;&amp; found.getSequenceId() == cell.getSequenceId()) {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      this.snapshot.remove(cell);<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      long sz = heapSizeChange(cell, true);<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      this.snapshotSize -= sz;<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    }<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    // If the key is in the memstore, delete it. Update this.size.<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    found = this.cellSet.get(cell);<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    if (found != null &amp;&amp; found.getSequenceId() == cell.getSequenceId()) {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      removeFromCellSet(cell);<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      long s = heapSizeChange(cell, true);<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      this.size.addAndGet(-s);<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    }<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  }<a name="line.321"></a>
-<span class="sourceLineNo">322</span><a name="line.322"></a>
-<span class="sourceLineNo">323</span>  /**<a name="line.323"></a>
-<span class="sourceLineNo">324</span>   * Write a delete<a name="line.324"></a>
-<span class="sourceLineNo">325</span>   * @param deleteCell<a name="line.325"></a>
-<span class="sourceLineNo">326</span>   * @return approximate size of the passed key and value.<a name="line.326"></a>
-<span class="sourceLineNo">327</span>   */<a name="line.327"></a>
-<span class="sourceLineNo">328</span>  @Override<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  public long delete(Cell deleteCell) {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    long s = 0;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    Cell toAdd = maybeCloneWithAllocator(deleteCell);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    s += heapSizeChange(toAdd, addToCellSet(toAdd));<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    timeRangeTracker.includeTimestamp(toAdd);<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    this.size.addAndGet(s);<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    return s;<a name="line.335"></a>
-<span class="sourceLineNo">336</span>  }<a name="line.336"></a>
-<span class="sourceLineNo">337</span><a name="line.337"></a>
-<span class="sourceLineNo">338</span>  /**<a name="line.338"></a>
-<span class="sourceLineNo">339</span>   * @param cell Find the row that comes after this one.  If null, we return the<a name="line.339"></a>
-<span class="sourceLineNo">340</span>   * first.<a name="line.340"></a>
-<span class="sourceLineNo">341</span>   * @return Next row or null if none found.<a name="line.341"></a>
-<span class="sourceLineNo">342</span>   */<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  Cell getNextRow(final Cell cell) {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    return getLowest(getNextRow(cell, this.cellSet), getNextRow(cell, this.snapshot));<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>   * @param a<a name="line.348"></a>
-<span class="sourceLineNo">349</span>   * @param b<a name="line.349"></a>
-<span class="sourceLineNo">350</span>   * @return Return lowest of a or b or null if both a and b are null<a name="line.350"></a>
-<span class="sourceLineNo">351</span>   */<a name="line.351"></a>
-<span class="sourceLineNo">352</span>  private Cell getLowest(final Cell a, final Cell b) {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    if (a == null) {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>      return b;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    }<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    if (b == null) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      return a;<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    }<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    return comparator.compareRows(a, b) &lt;= 0? a: b;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>  }<a name="line.360"></a>
-<span class="sourceLineNo">361</span><a name="line.361"></a>
-<span class="sourceLineNo">362</span>  /*<a name="line.362"></a>
-<span class="sourceLineNo">363</span>   * @param key Find row that follows this one.  If null, return first.<a name="line.363"></a>
-<span class="sourceLineNo">364</span>   * @param map Set to look in for a row beyond &lt;code&gt;row&lt;/code&gt;.<a name="line.364"></a>
-<span class="sourceLineNo">365</span>   * @return Next row or null if none found.  If one found, will be a new<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   * KeyValue -- can be destroyed by subsequent calls to this method.<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   */<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  private Cell getNextRow(final Cell key,<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      final NavigableSet&lt;Cell&gt; set) {<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    Cell result = null;<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    SortedSet&lt;Cell&gt; tail = key == null? set: set.tailSet(key);<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    // Iterate until we fall into the next row; i.e. move off current row<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    for (Cell cell: tail) {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      if (comparator.compareRows(cell, key) &lt;= 0)<a name="line.374"></a>
-<span class="sourceLineNo">375</span>        continue;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      // Note: Not suppressing deletes or expired cells.  Needs to be handled<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      // by higher up functions.<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      result = cell;<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      break;<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    }<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    return result;<a name="line.381"></a>
-<span class="sourceLineNo">382</span>  }<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>  /**<a name="line.384"></a>
-<span class="sourceLineNo">385</span>   * Only used by tests. TODO: Remove<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   *<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   * Given the specs of a column, update it, first by inserting a new record,<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   * then removing the old one.  Since there is only 1 KeyValue involved, the memstoreTS<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   * will be set to 0, thus ensuring that they instantly appear to anyone. The underlying<a name="line.389"></a>
-<span class="sourceLineNo">390</span>   * store will ensure that the insert/delete each are atomic. A scanner/reader will either<a name="line.390"></a>
-<span class="sourceLineNo">391</span>   * get the new value, or the old value and all readers will eventually only see the new<a name="line.391"></a>
-<span class="sourceLineNo">392</span>   * value after the old was removed.<a name="line.392"></a>
-<span class="sourceLineNo">393</span>   *<a name="line.393"></a>
-<span class="sourceLineNo">394</span>   * @param row<a name="line.394"></a>
-<span class="sourceLineNo">395</span>   * @param family<a name="line.395"></a>
-<span class="sourceLineNo">396</span>   * @param qualifier<a name="line.396"></a>
-<span class="sourceLineNo">397</span>   * @param newValue<a name="line.397"></a>
-<span class="sourceLineNo">398</span>   * @param now<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   * @return  Timestamp<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   */<a name="line.400"></a>
-<span class="sourceLineNo">401</span>  @Override<a name="line.401"></a>
-<span class="sourceLineNo">402</span>  public long updateColumnValue(byte[] row,<a name="line.402"></a>
-<span class="sourceLineNo">403</span>                                byte[] family,<a name="line.403"></a>
-<span class="sourceLineNo">404</span>                                byte[] qualifier,<a name="line.404"></a>
-<span class="sourceLineNo">405</span>                                long newValue,<a name="line.405"></a>
-<span class="sourceLineNo">406</span>                                long now) {<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    Cell firstCell = KeyValueUtil.createFirstOnRow(row, family, qualifier);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    // Is there a Cell in 'snapshot' with the same TS? If so, upgrade the timestamp a bit.<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    SortedSet&lt;Cell&gt; snSs = snapshot.tailSet(firstCell);<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    if (!snSs.isEmpty()) {<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      Cell snc = snSs.first();<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      // is there a matching Cell in the snapshot?<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      if (CellUtil.matchingRow(snc, firstCell) &amp;&amp; CellUtil.matchingQualifier(snc, firstCell)) {<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        if (snc.getTimestamp() == now) {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>          // poop,<a name="line.415"></a>
-<span class="sourceLineNo">416</span>          now += 1;<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><a name="line.420"></a>
-<span class="sourceLineNo">421</span>    // logic here: the new ts MUST be at least 'now'. But it could be larger if necessary.<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    // But the timestamp should also be max(now, mostRecentTsInMemstore)<a name="line.422"></a>
-<span class="sourceLineNo">423</span><a name="line.423"></a>
-<span class="sourceLineNo">424</span>    // so we cant add the new Cell w/o knowing what's there already, but we also<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    // want to take this chance to delete some cells. So two loops (sad)<a name="line.425"></a>
-<span class="sourceLineNo">426</span><a name="line.426"></a>
-<span class="sourceLineNo">427</span>    SortedSet&lt;Cell&gt; ss = cellSet.tailSet(firstCell);<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    for (Cell cell : ss) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      // if this isnt the row we are interested in, then bail:<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      if (!CellUtil.matchingColumn(cell, family, qualifier)<a name="line.430"></a>
-<span class="sourceLineNo">431</span>          || !CellUtil.matchingRow(cell, firstCell)) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>        break; // rows dont match, bail.<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      }<a name="line.433"></a>
-<span class="sourceLineNo">434</span><a name="line.434"></a>
-<span class="sourceLineNo">435</span>      // if the qualifier matches and it's a put, just RM it out of the cellSet.<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      if (cell.getTypeByte() == KeyValue.Type.Put.getCode() &amp;&amp;<a name="line.436"></a>
-<span class="sourceLineNo">437</span>          cell.getTimestamp() &gt; now &amp;&amp; CellUtil.matchingQualifier(firstCell, cell)) {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>        now = cell.getTimestamp();<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>    // create or update (upsert) a new Cell with<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    // 'now' and a 0 memstoreTS == immediately visible<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    List&lt;Cell&gt; cells = new ArrayList&lt;Cell&gt;(1);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    cells.add(new KeyValue(row, family, qualifier, now, Bytes.toBytes(newValue)));<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    return upsert(cells, 1L);<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>   * Update or insert the specified KeyValues.<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   * &lt;p&gt;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   * For each KeyValue, insert into MemStore.  This will atomically upsert the<a name="line.452"></a>
-<span class="sourceLineNo">453</span>   * value for that row/family/qualifier.  If a KeyValue did already exist,<a name="line.453"></a>
-<span class="sourceLineNo">454</span>   * it will then be removed.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>   * &lt;p&gt;<a name="line.455"></a>
-<span class="sourceLineNo">456</span>   * Currently the memstoreTS is kept at 0 so as each insert happens, it will<a name="line.456"></a>
-<span class="sourceLineNo">457</span>   * be immediately visible.  May want to change this so it is atomic across<a name="line.457"></a>
-<span class="sourceLineNo">458</span>   * all KeyValues.<a name="line.458"></a>
-<span class="sourceLineNo">459</span>   * &lt;p&gt;<a name="line.459"></a>
-<span class="sourceLineNo">460</span>   * This is called under row lock, so Get operations will still see updates<a name="line.460"></a>
-<span class="sourceLineNo">461</span>   * atomically.  Scans will only see each KeyValue update as atomic.<a name="line.461"></a>
-<span class="sourceLineNo">462</span>   *<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   * @param cells<a name="line.463"></a>
-<span class="sourceLineNo">464</span>   * @param readpoint readpoint below which we can safely remove duplicate KVs<a name="line.464"></a>
-<span class="sourceLineNo">465</span>   * @return change in memstore size<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 long upsert(Iterable&lt;Cell&gt; cells, long readpoint) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    long size = 0;<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    for (Cell cell : cells) {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      size += upsert(cell, readpoint);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    return size;<a name="line.473"></a>
-<span class="sourceLineNo">474</span>  }<a name="line.474"></a>
-<span class="sourceLineNo">475</span><a name="line.475"></a>
-<span class="sourceLineNo">476</span>  /**<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * Inserts the specified KeyValue into MemStore and deletes any existing<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   * versions of the same row/family/qualifier as the specified KeyValue.<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * &lt;p&gt;<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * First, the specified KeyValue is inserted into the Memstore.<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * &lt;p&gt;<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   * If there are any existing KeyValues in this MemStore with the same row,<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   * family, and qualifier, they are removed.<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   * &lt;p&gt;<a name="line.484"></a>
-<span class="sourceLineNo">485</span>   * Callers must hold the read lock.<a name="line.485"></a>
-<span class="sourceLineNo">486</span>   *<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   * @param cell<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   * @return change in size of MemStore<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   */<a name="line.489"></a>
-<span class="sourceLineNo">490</span>  private long upsert(Cell cell, long readpoint) {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    // Add the Cell to the MemStore<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    // Use the internalAdd method here since we (a) already have a lock<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    // and (b) cannot safely use the MSLAB here without potentially<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    // hitting OOME - see TestMemStore.testUpsertMSLAB for a<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    // test that triggers the pathological case if we don't avoid MSLAB<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    // here.<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    long addedSize = internalAdd(cell);<a name="line.497"></a>
-<span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>    // Get the Cells for the row/family/qualifier regardless of timestamp.<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    // For this case we want to clean up any other puts<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    Cell firstCell = KeyValueUtil.createFirstOnRow(<a name="line.501"></a>
-<span class="sourceLineNo">502</span>        cell.getRowArray(), cell.getRowOffset(), cell.getRowLength(),<a name="line.502"></a>
-<span class="sourceLineNo">503</span>        cell.getFamilyArray(), cell.getFamilyOffset(), cell.getFamilyLength(),<a name="line.503"></a>
-<span class="sourceLineNo">504</span>        cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength());<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    SortedSet&lt;Cell&gt; ss = cellSet.tailSet(firstCell);<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    Iterator&lt;Cell&gt; it = ss.iterator();<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    // versions visible to oldest scanner<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    int versionsVisible = 0;<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    while ( it.hasNext() ) {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>      Cell cur = it.next();<a name="line.510"></a>
-<span class="sourceLineNo">511</span><a name="line.511"></a>
-<span class="sourceLineNo">512</span>      if (cell == cur) {<a name="line.512"></a>
-<span class="sourceLineNo">513</span>        // ignore the one just put in<a name="line.513"></a>
-<span class="sourceLineNo">514</span>        continue;<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      }<a name="line.515"></a>
-<span class="sourceLineNo">516</span>      // check that this is the row and column we are interested in, otherwise bail<a name="line.516"></a>
-<span class="sourceLineNo">517</span>      if (CellUtil.matchingRow(cell, cur) &amp;&amp; CellUtil.matchingQualifier(cell, cur)) {<a name="line.517"></a>
-<span class="sourceLineNo">518</span>        // only remove Puts that concurrent scanners cannot possibly see<a name="line.518"></a>
-<span class="sourceLineNo">519</span>        if (cur.getTypeByte() == KeyValue.Type.Put.getCode() &amp;&amp;<a name="line.519"></a>
-<span class="sourceLineNo">520</span>            cur.getSequenceId() &lt;= readpoint) {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>          if (versionsVisible &gt;= 1) {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>            // if we get here we have seen at least one version visible to the oldest scanner,<a name="line.522"></a>
-<span class="sourceLineNo">523</span>            // which means we can prove that no scanner will see this version<a name="line.523"></a>
-<span class="sourceLineNo">524</span><a name="line.524"></a>
-<span class="sourceLineNo">525</span>            // false means there was a change, so give us the size.<a name="line.525"></a>
-<span class="sourceLineNo">526</span>            long delta = heapSizeChange(cur, true);<a name="line.526"></a>
-<span class="sourceLineNo">527</span>            addedSize -= delta;<a name="line.527"></a>
-<span class="sourceLineNo">528</span>            this.size.addAndGet(-delta);<a name="line.528"></a>
-<span class="sourceLineNo">529</span>            it.remove();<a name="line.529"></a>
-<span class="sourceLineNo">530</span>            setOldestEditTimeToNow();<a name="line.530"></a>
-<span class="sourceLineNo">531</span>          } else {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>            versionsVisible++;<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>      } else {<a name="line.535"></a>
-<span class="sourceLineNo">536</span>        // past the row or column, done<a name="line.536"></a>
-<span class="sourceLineNo">537</span>        break;<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>    return addedSize;<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>  /**<a name="line.543"></a>
-<span class="sourceLineNo">544</span>   * @return scanner on memstore and snapshot in this order.<a name="line.544"></a>
-<span class="sourceLineNo">545</span>   */<a name="line.545"></a>
-<span class="sourceLineNo">546</span>  @Override<a name="line.546"></a>
-<span class="sourceLineNo">547</span>  public List&lt;KeyValueScanner&gt; getScanners(long readPt) {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>    return Collections.&lt;KeyValueScanner&gt; singletonList(new MemStoreScanner(readPt));<a name="line.548"></a>
-<span class="sourceLineNo">549</span>  }<a name="line.549"></a>
-<span class="sourceLineNo">550</span><a name="line.550"></a>
-<span class="sourceLineNo">551</span>  /**<a name="line.551"></a>
-<span class="sourceLineNo">552</span>   * Check if this memstore may contain the required keys<a name="line.552"></a>
-<span class="sourceLineNo">553</span>   * @param scan<a name="line.553"></a>
-<span class="sourceLineNo">554</span>   * @return False if the key definitely does not exist in this Memstore<a name="line.554"></a>
-<span class="sourceLineNo">555</span>   */<a name="line.555"></a>
-<span class="sourceLineNo">556</span>  public boolean shouldSeek(Scan scan, long oldestUnexpiredTS) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    return (timeRangeTracker.includesTimeRange(scan.getTimeRange()) ||<a name="line.557"></a>
-<span class="sourceLineNo">558</span>        snapshotTimeRangeTracker.includesTimeRange(scan.getTimeRange()))<a name="line.558"></a>
-<span class="sourceLineNo">559</span>        &amp;&amp; (Math.max(timeRangeTracker.getMaximumTimestamp(),<a name="line.559"></a>
-<span class="sourceLineNo">560</span>                     snapshotTimeRangeTracker.getMaximumTimestamp()) &gt;=<a name="line.560"></a>
-<span class="sourceLineNo">561</span>            oldestUnexpiredTS);<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>  /*<a name="line.564"></a>
-<span class="sourceLineNo">565</span>   * MemStoreScanner implements the KeyValueScanner.<a name="line.565"></a>
-<span class="sourceLineNo">566</span>   * It lets the caller scan the contents of a memstore -- both current<a name="line.566"></a>
-<span class="sourceLineNo">567</span>   * map and snapshot.<a name="line.567"></a>
-<span class="sourceLineNo">568</span>   * This behaves as if it were a real scanner but does not maintain position.<a name="line.568"></a>
-<span class="sourceLineNo">569</span>   */<a name="line.569"></a>
-<span class="sourceLineNo">570</span>  protected class MemStoreScanner extends NonLazyKeyValueScanner {<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    // Next row information for either cellSet or snapshot<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    private Cell cellSetNextRow = null;<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    private Cell snapshotNextRow = null;<a name="line.573"></a>
-<span class="sourceLineNo">574</span><a name="line.574"></a>
-<span class="sourceLineNo">575</span>    // last iterated Cells for cellSet and snapshot (to restore iterator state after reseek)<a name="line.575"></a>
-<span class="sourceLineNo">576</span>    private Cell cellSetItRow = null;<a name="line.576"></a>
-<span class="sourceLineNo">577</span>    private Cell snapshotItRow = null;<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    <a name="line.578"></a>
-<span class="sourceLineNo">579</span>    // iterator based scanning.<a name="line.579"></a>
-<span class="sourceLineNo">580</span>    private Iterator&lt;Cell&gt; cellSetIt;<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    private Iterator&lt;Cell&gt; snapshotIt;<a name="line.581"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.util.ByteRange;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.util.CollectionBackedScanner;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.util.ReflectionUtils;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.htrace.Trace;<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> * The MemStore holds in-memory modifications to the Store.  Modifications<a name="line.53"></a>
+<span class="sourceLineNo">054</span> * are {@link Cell}s.  When asked to flush, current memstore is moved<a name="line.54"></a>
+<span class="sourceLineNo">055</span> * to snapshot and is cleared.  We continue to serve edits out of new memstore<a name="line.55"></a>
+<span class="sourceLineNo">056</span> * and backing snapshot until flusher reports in that the flush succeeded. At<a name="line.56"></a>
+<span class="sourceLineNo">057</span> * this point we let the snapshot go.<a name="line.57"></a>
+<span class="sourceLineNo">058</span> *  &lt;p&gt;<a name="line.58"></a>
+<span class="sourceLineNo">059</span> * The MemStore functions should not be called in parallel. Callers should hold<a name="line.59"></a>
+<span class="sourceLineNo">060</span> *  write and read locks. This is done in {@link HStore}.<a name="line.60"></a>
+<span class="sourceLineNo">061</span> *  &lt;/p&gt;<a name="line.61"></a>
+<span class="sourceLineNo">062</span> *<a name="line.62"></a>
+<span class="sourceLineNo">063</span> * TODO: Adjust size of the memstore when we remove items because they have<a name="line.63"></a>
+<span class="sourceLineNo">064</span> * been deleted.<a name="line.64"></a>
+<span class="sourceLineNo">065</span> * TODO: With new KVSLS, need to make sure we update HeapSize with difference<a name="line.65"></a>
+<span class="sourceLineNo">066</span> * in KV size.<a name="line.66"></a>
+<span class="sourceLineNo">067</span> */<a name="line.67"></a>
+<span class="sourceLineNo">068</span>@InterfaceAudience.Private<a name="line.68"></a>
+<span class="sourceLineNo">069</span>public class DefaultMemStore implements MemStore {<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  private static final Log LOG = LogFactory.getLog(DefaultMemStore.class);<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  static final String USEMSLAB_KEY = "hbase.hregion.memstore.mslab.enabled";<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  private static final boolean USEMSLAB_DEFAULT = true;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  static final String MSLAB_CLASS_NAME = "hbase.regionserver.mslab.class";<a name="line.73"></a>
+<span class="sourceLineNo">074</span><a name="line.74"></a>
+<span class="sourceLineNo">075</span>  private Configuration conf;<a name="line.75"></a>
+<span class="sourceLineNo">076</span><a name="line.76"></a>
+<span class="sourceLineNo">077</span>  // MemStore.  Use a CellSkipListSet rather than SkipListSet because of the<a name="line.77"></a>
+<span class="sourceLineNo">078</span>  // better semantics.  The Map will overwrite if passed a key it already had<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  // whereas the Set will not add new Cell if key is same though value might be<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  // different.  Value is not important -- just make sure always same<a name="line.80"></a>
+<span class="sourceLineNo">081</span>  // reference passed.<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  volatile CellSkipListSet cellSet;<a name="line.82"></a>
+<span class="sourceLineNo">083</span><a name="line.83"></a>
+<span class="sourceLineNo">084</span>  // Snapshot of memstore.  Made for flusher.<a name="line.84"></a>
+<span class="sourceLineNo">085</span>  volatile CellSkipListSet snapshot;<a name="line.85"></a>
+<span class="sourceLineNo">086</span><a name="line.86"></a>
+<span class="sourceLineNo">087</span>  final CellComparator comparator;<a name="line.87"></a>
+<span class="sourceLineNo">088</span><a name="line.88"></a>
+<span class="sourceLineNo">089</span>  // Used to track own heapSize<a name="line.89"></a>
+<span class="sourceLineNo">090</span>  final AtomicLong size;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  private volatile long snapshotSize;<a name="line.91"></a>
+<span class="sourceLineNo">092</span><a name="line.92"></a>
+<span class="sourceLineNo">093</span>  // Used to track when to flush<a name="line.93"></a>
+<span class="sourceLineNo">094</span>  volatile long timeOfOldestEdit = Long.MAX_VALUE;<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span>  TimeRangeTracker timeRangeTracker;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>  TimeRangeTracker snapshotTimeRangeTracker;<a name="line.97"></a>
+<span class="sourceLineNo">098</span><a name="line.98"></a>
+<span class="sourceLineNo">099</span>  volatile MemStoreLAB allocator;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>  volatile MemStoreLAB snapshotAllocator;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>  volatile long snapshotId;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>  volatile boolean tagsPresent;<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>   * Default constructor. Used for tests.<a name="line.105"></a>
+<span class="sourceLineNo">106</span>   */<a name="line.106"></a>
+<span class="sourceLineNo">107</span>  public DefaultMemStore() {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    this(HBaseConfiguration.create(), CellComparator.COMPARATOR);<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>   * Constructor.<a name="line.112"></a>
+<span class="sourceLineNo">113</span>   * @param c Comparator<a name="line.113"></a>
+<span class="sourceLineNo">114</span>   */<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  public DefaultMemStore(final Configuration conf,<a name="line.115"></a>
+<span class="sourceLineNo">116</span>                  final CellComparator c) {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    this.conf = conf;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    this.comparator = c;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    this.cellSet = new CellSkipListSet(c);<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    this.snapshot = new CellSkipListSet(c);<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    timeRangeTracker = new TimeRangeTracker();<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    snapshotTimeRangeTracker = new TimeRangeTracker();<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    this.size = new AtomicLong(DEEP_OVERHEAD);<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    this.snapshotSize = 0;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    if (conf.getBoolean(USEMSLAB_KEY, USEMSLAB_DEFAULT)) {<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      String className = conf.get(MSLAB_CLASS_NAME, HeapMemStoreLAB.class.getName());<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      this.allocator = ReflectionUtils.instantiateWithCustomCtor(className,<a name="line.127"></a>
+<span class="sourceLineNo">128</span>          new Class[] { Configuration.class }, new Object[] { conf });<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    } else {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      this.allocator = null;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    }<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  }<a name="line.132"></a>
+<span class="sourceLineNo">133</span><a name="line.133"></a>
+<span class="sourceLineNo">134</span>  void dump() {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    for (Cell cell: this.cellSet) {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      LOG.info(cell);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    }<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    for (Cell cell: this.snapshot) {<a name="line.138"></a>
+<span class="sourceLineNo">139</span>      LOG.info(cell);<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>  /**<a name="line.143"></a>
+<span class="sourceLineNo">144</span>   * Creates a snapshot of the current memstore.<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   * Snapshot must be cleared by call to {@link #clearSnapshot(long)}<a name="line.145"></a>
+<span class="sourceLineNo">146</span>   */<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  @Override<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  public MemStoreSnapshot snapshot() {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    // If snapshot currently has entries, then flusher failed or didn't call<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    // cleanup.  Log a warning.<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    if (!this.snapshot.isEmpty()) {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      LOG.warn("Snapshot called again without clearing previous. " +<a name="line.152"></a>
+<span class="sourceLineNo">153</span>          "Doing nothing. Another ongoing flush or did we fail last attempt?");<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    } else {<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      this.snapshotId = EnvironmentEdgeManager.currentTime();<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      this.snapshotSize = keySize();<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      if (!this.cellSet.isEmpty()) {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>        this.snapshot = this.cellSet;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>        this.cellSet = new CellSkipListSet(this.comparator);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>        this.snapshotTimeRangeTracker = this.timeRangeTracker;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>        this.timeRangeTracker = new TimeRangeTracker();<a name="line.161"></a>
+<span class="sourceLineNo">162</span>        // Reset heap to not include any keys<a name="line.162"></a>
+<span class="sourceLineNo">163</span>        this.size.set(DEEP_OVERHEAD);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        this.snapshotAllocator = this.allocator;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        // Reset allocator so we get a fresh buffer for the new memstore<a name="line.165"></a>
+<span class="sourceLineNo">166</span>        if (allocator != null) {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>          String className = conf.get(MSLAB_CLASS_NAME, HeapMemStoreLAB.class.getName());<a name="line.167"></a>
+<span class="sourceLineNo">168</span>          this.allocator = ReflectionUtils.instantiateWithCustomCtor(className,<a name="line.168"></a>
+<span class="sourceLineNo">169</span>              new Class[] { Configuration.class }, new Object[] { conf });<a name="line.169"></a>
+<span class="sourceLineNo">170</span>        }<a name="line.170"></a>
+<span class="sourceLineNo">171</span>        timeOfOldestEdit = Long.MAX_VALUE;<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>    MemStoreSnapshot memStoreSnapshot = new MemStoreSnapshot(this.snapshotId, snapshot.size(), this.snapshotSize,<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        this.snapshotTimeRangeTracker, new CollectionBackedScanner(snapshot, this.comparator),<a name="line.175"></a>
+<span class="sourceLineNo">176</span>        this.tagsPresent);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    this.tagsPresent = false;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    return memStoreSnapshot;<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>   * The passed snapshot was successfully persisted; it can be let go.<a name="line.182"></a>
+<span class="sourceLineNo">183</span>   * @param id Id of the snapshot to clean out.<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   * @throws UnexpectedStateException<a name="line.184"></a>
+<span class="sourceLineNo">185</span>   * @see #snapshot()<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 clearSnapshot(long id) throws UnexpectedStateException {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    MemStoreLAB tmpAllocator = null;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    if (this.snapshotId != id) {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      throw new UnexpectedStateException("Current snapshot id is " + this.snapshotId + ",passed "<a name="line.191"></a>
+<span class="sourceLineNo">192</span>          + id);<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    }<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    // OK. Passed in snapshot is same as current snapshot. If not-empty,<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    // create a new snapshot and let the old one go.<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    if (!this.snapshot.isEmpty()) {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>      this.snapshot = new CellSkipListSet(this.comparator);<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      this.snapshotTimeRangeTracker = new TimeRangeTracker();<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    }<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    this.snapshotSize = 0;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    this.snapshotId = -1;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    if (this.snapshotAllocator != null) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      tmpAllocator = this.snapshotAllocator;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      this.snapshotAllocator = null;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    }<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    if (tmpAllocator != null) {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      tmpAllocator.close();<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>  @Override<a name="line.211"></a>
+<span class="sourceLineNo">212</span>  public long getFlushableSize() {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    return this.snapshotSize &gt; 0 ? this.snapshotSize : keySize();<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  }<a name="line.214"></a>
+<span class="sourceLineNo">215</span><a name="line.215"></a>
+<span class="sourceLineNo">216</span>  @Override<a name="line.216"></a>
+<span class="sourceLineNo">217</span>  public long getSnapshotSize() {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    return this.snapshotSize;<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 name="line.221"></a>
+<span class="sourceLineNo">222</span>   * Write an update<a name="line.222"></a>
+<span class="sourceLineNo">223</span>   * @param cell<a name="line.223"></a>
+<span class="sourceLineNo">224</span>   * @return approximate size of the passed Cell.<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   */<a name="line.225"></a>
+<span class="sourceLineNo">226</span>  @Override<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  public long add(Cell cell) {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    Cell toAdd = maybeCloneWithAllocator(cell);<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    return internalAdd(toAdd);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>  }<a name="line.230"></a>
+<span class="sourceLineNo">231</span><a name="line.231"></a>
+<span class="sourceLineNo">232</span>  @Override<a name="line.232"></a>
+<span class="sourceLineNo">233</span>  public long timeOfOldestEdit() {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    return timeOfOldestEdit;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>  }<a name="line.235"></a>
+<span class="sourceLineNo">236</span><a name="line.236"></a>
+<span class="sourceLineNo">237</span>  private boolean addToCellSet(Cell e) {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    boolean b = this.cellSet.add(e);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    // In no tags case this NoTagsKeyValue.getTagsLength() is a cheap call.<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    // When we use ACL CP or Visibility CP which deals with Tags during<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    // mutation, the TagRewriteCell.getTagsLength() is a cheaper call. We do not<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    // parse the byte[] to identify the tags length.<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    if(e.getTagsLength() &gt; 0) {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      tagsPresent = true;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    }<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    setOldestEditTimeToNow();<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    return b;<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>  private boolean removeFromCellSet(Cell e) {<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    boolean b = this.cellSet.remove(e);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    setOldestEditTimeToNow();<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    return b;<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>  void setOldestEditTimeToNow() {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    if (timeOfOldestEdit == Long.MAX_VALUE) {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      timeOfOldestEdit = EnvironmentEdgeManager.currentTime();<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>  /**<a name="line.262"></a>
+<span class="sourceLineNo">263</span>   * Internal version of add() that doesn't clone Cells with the<a name="line.263"></a>
+<span class="sourceLineNo">264</span>   * allocator, and doesn't take the lock.<a name="line.264"></a>
+<span class="sourceLineNo">265</span>   *<a name="line.265"></a>
+<span class="sourceLineNo">266</span>   * Callers should ensure they already have the read lock taken<a name="line.266"></a>
+<span class="sourceLineNo">267</span>   */<a name="line.267"></a>
+<span class="sourceLineNo">268</span>  private long internalAdd(final Cell toAdd) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    long s = heapSizeChange(toAdd, addToCellSet(toAdd));<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    timeRangeTracker.includeTimestamp(toAdd);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    this.size.addAndGet(s);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    return s;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>  }<a name="line.273"></a>
+<span class="sourceLineNo">274</span><a name="line.274"></a>
+<span class="sourceLineNo">275</span>  private Cell maybeCloneWithAllocator(Cell cell) {<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    if (allocator == null) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      return cell;<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>    int len = KeyValueUtil.length(cell);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    ByteRange alloc = allocator.allocateBytes(len);<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    if (alloc == null) {<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      // The allocation was too large, allocator decided<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      // not to do anything with it.<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      return cell;<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    }<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    assert alloc.getBytes() != null;<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    KeyValueUtil.appendToByteArray(cell, alloc.getBytes(), alloc.getOffset());<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    KeyValue newKv = new KeyValue(alloc.getBytes(), alloc.getOffset(), len);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    newKv.setSequenceId(cell.getSequenceId());<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    return newKv;<a name="line.291"></a>
+<span class="sourceLineNo">292</span>  }<a name="line.292"></a>
+<span class="sourceLineNo">293</span><a name="line.293"></a>
+<span class="sourceLineNo">294</span>  /**<a name="line.294"></a>
+<span class="sourceLineNo">295</span>   * Remove n key from the memstore. Only cells that have the same key and the<a name="line.295"></a>
+<span class="sourceLineNo">296</span>   * same memstoreTS are removed.  It is ok to not update timeRangeTracker<a name="line.296"></a>
+<span class="sourceLineNo">297</span>   * in this call. It is possible that we can optimize this method by using<a name="line.297"></a>
+<span class="sourceLineNo">298</span>   * tailMap/iterator, but since this method is called rarely (only for<a name="line.298"></a>
+<span class="sourceLineNo">299</span>   * error recovery), we can leave those optimization for the future.<a name="line.299"></a>
+<span class="sourceLineNo">300</span>   * @param cell<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 rollback(Cell cell) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    // If the key is in the snapshot, delete it. We should not update<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    // this.size, because that tracks the size of only the memstore and<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    // not the snapshot. The flush of this snapshot to disk has not<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    // yet started because Store.flush() waits for all rwcc transactions to<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    // commit before starting the flush to disk.<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    Cell found = this.snapshot.get(cell);<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    if (found != null &amp;&amp; found.getSequenceId() == cell.getSequenceId()) {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      this.snapshot.remove(cell);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      long sz = heapSizeChange(cell, true);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      this.snapshotSize -= sz;<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    }<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    // If the key is in the memstore, delete it. Update this.size.<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    found = this.cellSet.get(cell);<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    if (found != null &amp;&amp; found.getSequenceId() == cell.getSequenceId()) {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      removeFromCellSet(cell);<a name="line.318"></a>
+<span class="sourceLineNo">319</span>      long s = heapSizeChange(cell, true);<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      this.size.addAndGet(-s);<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>  /**<a name="line.324"></a>
+<span class="sourceLineNo">325</span>   * Write a delete<a name="line.325"></a>
+<span class="sourceLineNo">326</span>   * @param deleteCell<a name="line.326"></a>
+<span class="sourceLineNo">327</span>   * @return approximate size of the passed key and value.<a name="line.327"></a>
+<span class="sourceLineNo">328</span>   */<a name="line.328"></a>
+<span class="sourceLineNo">329</span>  @Override<a name="line.329"></a>
+<span class="sourceLineNo">330</span>  public long delete(Cell deleteCell) {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    long s = 0;<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    Cell toAdd = maybeCloneWithAllocator(deleteCell);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    s += heapSizeChange(toAdd, addToCellSet(toAdd));<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    timeRangeTracker.includeTimestamp(toAdd);<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    this.size.addAndGet(s);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    return s;<a name="line.336"></a>
+<span class="sourceLineNo">337</span>  }<a name="line.337"></a>
+<span class="sourceLineNo">338</span><a name="line.338"></a>
+<span class="sourceLineNo">339</span>  /**<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   * @param cell Find the row that comes after this one.  If null, we return the<a name="line.340"></a>
+<span class="sourceLineNo">341</span>   * first.<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   * @return Next row or null if none found.<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   */<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  Cell getNextRow(final Cell cell) {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    return getLowest(getNextRow(cell, this.cellSet), getNextRow(cell, this.snapshot));<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>   * @param a<a name="line.349"></a>
+<span class="sourceLineNo">350</span>   * @param b<a name="line.350"></a>
+<span class="sourceLineNo">351</span>   * @return Return lowest of a or b or null if both a and b are null<a name="line.351"></a>
+<span class="sourceLineNo">352</span>   */<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  private Cell getLowest(final Cell a, final Cell b) {<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    if (a == null) {<a name="line.354"></a>
+<span class="sourceLineNo">355</span>      return b;<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    }<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    if (b == null) {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      return a;<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    }<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    return comparator.compareRows(a, b) &lt;= 0? a: b;<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  }<a name="line.361"></a>
+<span class="sourceLineNo">362</span><a name="line.362"></a>
+<span class="sourceLineNo">363</span>  /*<a name="line.363"></a>
+<span class="sourceLineNo">364</span>   * @param key Find row that follows this one.  If null, return first.<a name="line.364"></a>
+<span class="sourceLineNo">365</span>   * @param map Set to look in for a row beyond &lt;code&gt;row&lt;/code&gt;.<a name="line.365"></a>
+<span class="sourceLineNo">366</span>   * @return Next row or null if none found.  If one found, will be a new<a name="line.366"></a>
+<span class="sourceLineNo">367</span>   * KeyValue -- can be destroyed by subsequent calls to this method.<a name="line.367"></a>
+<span class="sourceLineNo">368</span>   */<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  private Cell getNextRow(final Cell key,<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      final NavigableSet&lt;Cell&gt; set) {<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    Cell result = null;<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    SortedSet&lt;Cell&gt; tail = key == null? set: set.tailSet(key);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    // Iterate until we fall into the next row; i.e. move off current row<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    for (Cell cell: tail) {<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      if (comparator.compareRows(cell, key) &lt;= 0)<a name="line.375"></a>
+<span class="sourceLineNo">376</span>        continue;<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      // Note: Not suppressing deletes or expired cells.  Needs to be handled<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      // by higher up functions.<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      result = cell;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>      break;<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    }<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    return result;<a name="line.382"></a>
+<span class="sourceLineNo">383</span>  }<a name="line.383"></a>
+<span class="sourceLineNo">384</span><a name="line.384"></a>
+<span class="sourceLineNo">385</span>  /**<a name="line.385"></a>
+<span class="sourceLineNo">386</span>   * Only used by tests. TODO: Remove<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   *<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   * Given the specs of a column, update it, first by inserting a new record,<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   * then removing the old one.  Since there is only 1 KeyValue involved, the memstoreTS<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   * will be set to 0, thus ensuring that they instantly appear to anyone. The underlying<a name="line.390"></a>
+<span class="sourceLineNo">391</span>   * store will ensure that the insert/delete each are atomic. A scanner/reader will either<a name="line.391"></a>
+<span class="sourceLineNo">392</span>   * get the new value, or the old value and all readers will eventually only see the new<a name="line.392"></a>
+<span class="sourceLineNo">393</span>   * value after the old was removed.<a name="line.393"></a>
+<span class="sourceLineNo">394</span>   *<a name="line.394"></a>
+<span class="sourceLineNo">395</span>   * @param row<a name="line.395"></a>
+<span class="sourceLineNo">396</span>   * @param family<a name="line.396"></a>
+<span class="sourceLineNo">397</span>   * @param qualifier<a name="line.397"></a>
+<span class="sourceLineNo">398</span>   * @param newValue<a name="line.398"></a>
+<span class="sourceLineNo">399</span>   * @param now<a name="line.399"></a>
+<span class="sourceLineNo">400</span>   * @return  Timestamp<a name="line.400"></a>
+<span class="sourceLineNo">401</span>   */<a name="line.401"></a>
+<span class="sourceLineNo">402</span>  @Override<a name="line.402"></a>
+<span class="sourceLineNo">403</span>  public long updateColumnValue(byte[] row,<a name="line.403"></a>
+<span class="sourceLineNo">404</span>                                byte[] family,<a name="line.404"></a>
+<span class="sourceLineNo">405</span>                                byte[] qualifier,<a name="line.405"></a>
+<span class="sourceLineNo">406</span>                                long newValue,<a name="line.406"></a>
+<span class="sourceLineNo">407</span>                                long now) {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    Cell firstCell = KeyValueUtil.createFirstOnRow(row, family, qualifier);<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    // Is there a Cell in 'snapshot' with the same TS? If so, upgrade the timestamp a bit.<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    SortedSet&lt;Cell&gt; snSs = snapshot.tailSet(firstCell);<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    if (!snSs.isEmpty()) {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      Cell snc = snSs.first();<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      // is there a matching Cell in the snapshot?<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      if (CellUtil.matchingRow(snc, firstCell) &amp;&amp; CellUtil.matchingQualifier(snc, firstCell)) {<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        if (snc.getTimestamp() == now) {<a name="line.415"></a>
+<span class="sourceLineNo">416</span>          // poop,<a name="line.416"></a>
+<span class="sourceLineNo">417</span>          now += 1;<a name="line.417"></a>
+<span class="sourceLineNo">418</span>        }<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      }<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>    // logic here: the new ts MUST be at least 'now'. But it could be larger if necessary.<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    // But the timestamp should also be max(now, mostRecentTsInMemstore)<a name="line.423"></a>
+<

<TRUNCATED>

[03/24] hbase git commit: Published site at 0d72849581c1e5a50a2aa7757b909e5531b8d12c.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/xref/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html b/xref/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html
index e2522eb..a851aa8 100644
--- a/xref/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html
+++ b/xref/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html
@@ -32,310 +32,316 @@
 <a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> java.net.ConnectException;
 <a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> java.net.SocketTimeoutException;
 <a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> java.util.ArrayList;
-<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> java.util.List;
-<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.Callable;
-<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ExecutionException;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.Future;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.SynchronousQueue;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ThreadPoolExecutor;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.TimeUnit;
-<a class="jxr_linenumber" name="32" href="#32">32</a>  
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> com.google.common.annotations.VisibleForTesting;
-<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.lang.StringUtils;
-<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.logging.Log;
-<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.logging.LogFactory;
-<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.classification.InterfaceAudience;
-<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.conf.Configuration;
-<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HBaseConfiguration;
-<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HConstants;
-<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.TableNotFoundException;
-<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ConnectionFactory;
-<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.HConnection;
-<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.protobuf.ReplicationProtbufUtil;
-<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.protobuf.generated.AdminProtos.AdminService.BlockingInterface;
-<a class="jxr_linenumber" name="46" href="#46">46</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
-<a class="jxr_linenumber" name="47" href="#47">47</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.wal.WAL.Entry;
-<a class="jxr_linenumber" name="48" href="#48">48</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.replication.HBaseReplicationEndpoint;
-<a class="jxr_linenumber" name="49" href="#49">49</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.replication.ReplicationPeer.PeerState;
-<a class="jxr_linenumber" name="50" href="#50">50</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.replication.regionserver.ReplicationSinkManager.SinkPeer;
-<a class="jxr_linenumber" name="51" href="#51">51</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.ipc.RemoteException;
-<a class="jxr_linenumber" name="52" href="#52">52</a>  
-<a class="jxr_linenumber" name="53" href="#53">53</a>  <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="54" href="#54">54</a>  <em class="jxr_javadoccomment"> * A {@link org.apache.hadoop.hbase.replication.ReplicationEndpoint} </em>
-<a class="jxr_linenumber" name="55" href="#55">55</a>  <em class="jxr_javadoccomment"> * implementation for replicating to another HBase cluster.</em>
-<a class="jxr_linenumber" name="56" href="#56">56</a>  <em class="jxr_javadoccomment"> * For the slave cluster it selects a random number of peers</em>
-<a class="jxr_linenumber" name="57" href="#57">57</a>  <em class="jxr_javadoccomment"> * using a replication ratio. For example, if replication ration = 0.1</em>
-<a class="jxr_linenumber" name="58" href="#58">58</a>  <em class="jxr_javadoccomment"> * and slave cluster has 100 region servers, 10 will be selected.</em>
-<a class="jxr_linenumber" name="59" href="#59">59</a>  <em class="jxr_javadoccomment"> * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="60" href="#60">60</a>  <em class="jxr_javadoccomment"> * A stream is considered down when we cannot contact a region server on the</em>
-<a class="jxr_linenumber" name="61" href="#61">61</a>  <em class="jxr_javadoccomment"> * peer cluster for more than 55 seconds by default.</em>
-<a class="jxr_linenumber" name="62" href="#62">62</a>  <em class="jxr_javadoccomment"> * &lt;/p&gt;</em>
-<a class="jxr_linenumber" name="63" href="#63">63</a>  <em class="jxr_javadoccomment"> */</em>
-<a class="jxr_linenumber" name="64" href="#64">64</a>  @InterfaceAudience.Private
-<a class="jxr_linenumber" name="65" href="#65">65</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html">HBaseInterClusterReplicationEndpoint</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../../../org/apache/hadoop/hbase/replication/HBaseReplicationEndpoint.html">HBaseReplicationEndpoint</a> {
-<a class="jxr_linenumber" name="66" href="#66">66</a>  
-<a class="jxr_linenumber" name="67" href="#67">67</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Log LOG = LogFactory.getLog(HBaseInterClusterReplicationEndpoint.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="68" href="#68">68</a>    <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/hadoop/hbase/client/HConnection.html">HConnection</a> conn;
+<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> java.util.Collections;
+<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> java.util.List;
+<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.Callable;
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.CompletionService;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ExecutionException;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ExecutorCompletionService;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.Future;
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.SynchronousQueue;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.ThreadPoolExecutor;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.TimeUnit;
+<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> com.google.common.annotations.VisibleForTesting;
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.lang.StringUtils;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.logging.Log;
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.logging.LogFactory;
+<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.classification.InterfaceAudience;
+<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.conf.Configuration;
+<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HBaseConfiguration;
+<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HConstants;
+<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.TableNotFoundException;
+<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.ConnectionFactory;
+<a class="jxr_linenumber" name="46" href="#46">46</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.HConnection;
+<a class="jxr_linenumber" name="47" href="#47">47</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.protobuf.ReplicationProtbufUtil;
+<a class="jxr_linenumber" name="48" href="#48">48</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.protobuf.generated.AdminProtos.AdminService.BlockingInterface;
+<a class="jxr_linenumber" name="49" href="#49">49</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="50" href="#50">50</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.wal.WAL.Entry;
+<a class="jxr_linenumber" name="51" href="#51">51</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.replication.HBaseReplicationEndpoint;
+<a class="jxr_linenumber" name="52" href="#52">52</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.replication.ReplicationPeer.PeerState;
+<a class="jxr_linenumber" name="53" href="#53">53</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.replication.regionserver.ReplicationSinkManager.SinkPeer;
+<a class="jxr_linenumber" name="54" href="#54">54</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.ipc.RemoteException;
+<a class="jxr_linenumber" name="55" href="#55">55</a>  
+<a class="jxr_linenumber" name="56" href="#56">56</a>  <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="57" href="#57">57</a>  <em class="jxr_javadoccomment"> * A {@link org.apache.hadoop.hbase.replication.ReplicationEndpoint} </em>
+<a class="jxr_linenumber" name="58" href="#58">58</a>  <em class="jxr_javadoccomment"> * implementation for replicating to another HBase cluster.</em>
+<a class="jxr_linenumber" name="59" href="#59">59</a>  <em class="jxr_javadoccomment"> * For the slave cluster it selects a random number of peers</em>
+<a class="jxr_linenumber" name="60" href="#60">60</a>  <em class="jxr_javadoccomment"> * using a replication ratio. For example, if replication ration = 0.1</em>
+<a class="jxr_linenumber" name="61" href="#61">61</a>  <em class="jxr_javadoccomment"> * and slave cluster has 100 region servers, 10 will be selected.</em>
+<a class="jxr_linenumber" name="62" href="#62">62</a>  <em class="jxr_javadoccomment"> * &lt;p&gt;</em>
+<a class="jxr_linenumber" name="63" href="#63">63</a>  <em class="jxr_javadoccomment"> * A stream is considered down when we cannot contact a region server on the</em>
+<a class="jxr_linenumber" name="64" href="#64">64</a>  <em class="jxr_javadoccomment"> * peer cluster for more than 55 seconds by default.</em>
+<a class="jxr_linenumber" name="65" href="#65">65</a>  <em class="jxr_javadoccomment"> * &lt;/p&gt;</em>
+<a class="jxr_linenumber" name="66" href="#66">66</a>  <em class="jxr_javadoccomment"> */</em>
+<a class="jxr_linenumber" name="67" href="#67">67</a>  @InterfaceAudience.Private
+<a class="jxr_linenumber" name="68" href="#68">68</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html">HBaseInterClusterReplicationEndpoint</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../../../org/apache/hadoop/hbase/replication/HBaseReplicationEndpoint.html">HBaseReplicationEndpoint</a> {
 <a class="jxr_linenumber" name="69" href="#69">69</a>  
-<a class="jxr_linenumber" name="70" href="#70">70</a>    <strong class="jxr_keyword">private</strong> Configuration conf;
-<a class="jxr_linenumber" name="71" href="#71">71</a>  
-<a class="jxr_linenumber" name="72" href="#72">72</a>    <em class="jxr_comment">// How long should we sleep for each retry</em>
-<a class="jxr_linenumber" name="73" href="#73">73</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">long</strong> sleepForRetries;
+<a class="jxr_linenumber" name="70" href="#70">70</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Log LOG = LogFactory.getLog(HBaseInterClusterReplicationEndpoint.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="71" href="#71">71</a>    <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/hadoop/hbase/client/HConnection.html">HConnection</a> conn;
+<a class="jxr_linenumber" name="72" href="#72">72</a>  
+<a class="jxr_linenumber" name="73" href="#73">73</a>    <strong class="jxr_keyword">private</strong> Configuration conf;
 <a class="jxr_linenumber" name="74" href="#74">74</a>  
-<a class="jxr_linenumber" name="75" href="#75">75</a>    <em class="jxr_comment">// Maximum number of retries before taking bold actions</em>
-<a class="jxr_linenumber" name="76" href="#76">76</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong> maxRetriesMultiplier;
-<a class="jxr_linenumber" name="77" href="#77">77</a>    <em class="jxr_comment">// Socket timeouts require even bolder actions since we don't want to DDOS</em>
-<a class="jxr_linenumber" name="78" href="#78">78</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong> socketTimeoutMultiplier;
-<a class="jxr_linenumber" name="79" href="#79">79</a>    <em class="jxr_comment">//Metrics for this source</em>
-<a class="jxr_linenumber" name="80" href="#80">80</a>    <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html">MetricsSource</a> metrics;
-<a class="jxr_linenumber" name="81" href="#81">81</a>    <em class="jxr_comment">// Handles connecting to peer region servers</em>
-<a class="jxr_linenumber" name="82" href="#82">82</a>    <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSinkManager.html">ReplicationSinkManager</a> replicationSinkMgr;
-<a class="jxr_linenumber" name="83" href="#83">83</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> peersSelected = false;
-<a class="jxr_linenumber" name="84" href="#84">84</a>    <strong class="jxr_keyword">private</strong> ThreadPoolExecutor exec;
-<a class="jxr_linenumber" name="85" href="#85">85</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong> maxThreads;
-<a class="jxr_linenumber" name="86" href="#86">86</a>  
-<a class="jxr_linenumber" name="87" href="#87">87</a>    @Override
-<a class="jxr_linenumber" name="88" href="#88">88</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> init(<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationEndpoint.html">Context</a> context) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="89" href="#89">89</a>      <strong class="jxr_keyword">super</strong>.init(context);
-<a class="jxr_linenumber" name="90" href="#90">90</a>      <strong class="jxr_keyword">this</strong>.conf = HBaseConfiguration.create(ctx.getConfiguration());
-<a class="jxr_linenumber" name="91" href="#91">91</a>      decorateConf();
-<a class="jxr_linenumber" name="92" href="#92">92</a>      <strong class="jxr_keyword">this</strong>.maxRetriesMultiplier = <strong class="jxr_keyword">this</strong>.conf.getInt(<span class="jxr_string">"replication.source.maxretriesmultiplier"</span>, 300);
-<a class="jxr_linenumber" name="93" href="#93">93</a>      <strong class="jxr_keyword">this</strong>.socketTimeoutMultiplier = <strong class="jxr_keyword">this</strong>.conf.getInt(<span class="jxr_string">"replication.source.socketTimeoutMultiplier"</span>,
-<a class="jxr_linenumber" name="94" href="#94">94</a>          maxRetriesMultiplier);
-<a class="jxr_linenumber" name="95" href="#95">95</a>      <em class="jxr_comment">// TODO: This connection is replication specific or we should make it particular to</em>
-<a class="jxr_linenumber" name="96" href="#96">96</a>      <em class="jxr_comment">// replication and make replication specific settings such as compression or codec to use</em>
-<a class="jxr_linenumber" name="97" href="#97">97</a>      <em class="jxr_comment">// passing Cells.</em>
-<a class="jxr_linenumber" name="98" href="#98">98</a>      <strong class="jxr_keyword">this</strong>.conn = (HConnection) ConnectionFactory.createConnection(<strong class="jxr_keyword">this</strong>.conf);
-<a class="jxr_linenumber" name="99" href="#99">99</a>      <strong class="jxr_keyword">this</strong>.sleepForRetries =
-<a class="jxr_linenumber" name="100" href="#100">100</a>         <strong class="jxr_keyword">this</strong>.conf.getLong(<span class="jxr_string">"replication.source.sleepforretries"</span>, 1000);
-<a class="jxr_linenumber" name="101" href="#101">101</a>     <strong class="jxr_keyword">this</strong>.metrics = context.getMetrics();
-<a class="jxr_linenumber" name="102" href="#102">102</a>     <em class="jxr_comment">// ReplicationQueueInfo parses the peerId out of the znode for us</em>
-<a class="jxr_linenumber" name="103" href="#103">103</a>     <strong class="jxr_keyword">this</strong>.replicationSinkMgr = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSinkManager.html">ReplicationSinkManager</a>(conn, ctx.getPeerId(), <strong class="jxr_keyword">this</strong>, <strong class="jxr_keyword">this</strong>.conf);
-<a class="jxr_linenumber" name="104" href="#104">104</a>     <em class="jxr_comment">// per sink thread pool</em>
-<a class="jxr_linenumber" name="105" href="#105">105</a>     <strong class="jxr_keyword">this</strong>.maxThreads = <strong class="jxr_keyword">this</strong>.conf.getInt(HConstants.REPLICATION_SOURCE_MAXTHREADS_KEY,
-<a class="jxr_linenumber" name="106" href="#106">106</a>       HConstants.REPLICATION_SOURCE_MAXTHREADS_DEFAULT);
-<a class="jxr_linenumber" name="107" href="#107">107</a>     <strong class="jxr_keyword">this</strong>.exec = <strong class="jxr_keyword">new</strong> ThreadPoolExecutor(1, maxThreads, 60, TimeUnit.SECONDS,
-<a class="jxr_linenumber" name="108" href="#108">108</a>       <strong class="jxr_keyword">new</strong> SynchronousQueue&lt;Runnable&gt;());
-<a class="jxr_linenumber" name="109" href="#109">109</a>   }
-<a class="jxr_linenumber" name="110" href="#110">110</a> 
-<a class="jxr_linenumber" name="111" href="#111">111</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> decorateConf() {
-<a class="jxr_linenumber" name="112" href="#112">112</a>     String replicationCodec = <strong class="jxr_keyword">this</strong>.conf.get(HConstants.REPLICATION_CODEC_CONF_KEY);
-<a class="jxr_linenumber" name="113" href="#113">113</a>     <strong class="jxr_keyword">if</strong> (StringUtils.isNotEmpty(replicationCodec)) {
-<a class="jxr_linenumber" name="114" href="#114">114</a>       <strong class="jxr_keyword">this</strong>.conf.set(HConstants.RPC_CODEC_CONF_KEY, replicationCodec);
-<a class="jxr_linenumber" name="115" href="#115">115</a>     }
-<a class="jxr_linenumber" name="116" href="#116">116</a>   }
-<a class="jxr_linenumber" name="117" href="#117">117</a> 
-<a class="jxr_linenumber" name="118" href="#118">118</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> connectToPeers() {
-<a class="jxr_linenumber" name="119" href="#119">119</a>     getRegionServers();
+<a class="jxr_linenumber" name="75" href="#75">75</a>    <em class="jxr_comment">// How long should we sleep for each retry</em>
+<a class="jxr_linenumber" name="76" href="#76">76</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">long</strong> sleepForRetries;
+<a class="jxr_linenumber" name="77" href="#77">77</a>  
+<a class="jxr_linenumber" name="78" href="#78">78</a>    <em class="jxr_comment">// Maximum number of retries before taking bold actions</em>
+<a class="jxr_linenumber" name="79" href="#79">79</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong> maxRetriesMultiplier;
+<a class="jxr_linenumber" name="80" href="#80">80</a>    <em class="jxr_comment">// Socket timeouts require even bolder actions since we don't want to DDOS</em>
+<a class="jxr_linenumber" name="81" href="#81">81</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong> socketTimeoutMultiplier;
+<a class="jxr_linenumber" name="82" href="#82">82</a>    <em class="jxr_comment">//Metrics for this source</em>
+<a class="jxr_linenumber" name="83" href="#83">83</a>    <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html">MetricsSource</a> metrics;
+<a class="jxr_linenumber" name="84" href="#84">84</a>    <em class="jxr_comment">// Handles connecting to peer region servers</em>
+<a class="jxr_linenumber" name="85" href="#85">85</a>    <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSinkManager.html">ReplicationSinkManager</a> replicationSinkMgr;
+<a class="jxr_linenumber" name="86" href="#86">86</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> peersSelected = false;
+<a class="jxr_linenumber" name="87" href="#87">87</a>    <strong class="jxr_keyword">private</strong> ThreadPoolExecutor exec;
+<a class="jxr_linenumber" name="88" href="#88">88</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong> maxThreads;
+<a class="jxr_linenumber" name="89" href="#89">89</a>  
+<a class="jxr_linenumber" name="90" href="#90">90</a>    @Override
+<a class="jxr_linenumber" name="91" href="#91">91</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> init(<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationEndpoint.html">Context</a> context) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="92" href="#92">92</a>      <strong class="jxr_keyword">super</strong>.init(context);
+<a class="jxr_linenumber" name="93" href="#93">93</a>      <strong class="jxr_keyword">this</strong>.conf = HBaseConfiguration.create(ctx.getConfiguration());
+<a class="jxr_linenumber" name="94" href="#94">94</a>      decorateConf();
+<a class="jxr_linenumber" name="95" href="#95">95</a>      <strong class="jxr_keyword">this</strong>.maxRetriesMultiplier = <strong class="jxr_keyword">this</strong>.conf.getInt(<span class="jxr_string">"replication.source.maxretriesmultiplier"</span>, 300);
+<a class="jxr_linenumber" name="96" href="#96">96</a>      <strong class="jxr_keyword">this</strong>.socketTimeoutMultiplier = <strong class="jxr_keyword">this</strong>.conf.getInt(<span class="jxr_string">"replication.source.socketTimeoutMultiplier"</span>,
+<a class="jxr_linenumber" name="97" href="#97">97</a>          maxRetriesMultiplier);
+<a class="jxr_linenumber" name="98" href="#98">98</a>      <em class="jxr_comment">// TODO: This connection is replication specific or we should make it particular to</em>
+<a class="jxr_linenumber" name="99" href="#99">99</a>      <em class="jxr_comment">// replication and make replication specific settings such as compression or codec to use</em>
+<a class="jxr_linenumber" name="100" href="#100">100</a>     <em class="jxr_comment">// passing Cells.</em>
+<a class="jxr_linenumber" name="101" href="#101">101</a>     <strong class="jxr_keyword">this</strong>.conn = (HConnection) ConnectionFactory.createConnection(<strong class="jxr_keyword">this</strong>.conf);
+<a class="jxr_linenumber" name="102" href="#102">102</a>     <strong class="jxr_keyword">this</strong>.sleepForRetries =
+<a class="jxr_linenumber" name="103" href="#103">103</a>         <strong class="jxr_keyword">this</strong>.conf.getLong(<span class="jxr_string">"replication.source.sleepforretries"</span>, 1000);
+<a class="jxr_linenumber" name="104" href="#104">104</a>     <strong class="jxr_keyword">this</strong>.metrics = context.getMetrics();
+<a class="jxr_linenumber" name="105" href="#105">105</a>     <em class="jxr_comment">// ReplicationQueueInfo parses the peerId out of the znode for us</em>
+<a class="jxr_linenumber" name="106" href="#106">106</a>     <strong class="jxr_keyword">this</strong>.replicationSinkMgr = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSinkManager.html">ReplicationSinkManager</a>(conn, ctx.getPeerId(), <strong class="jxr_keyword">this</strong>, <strong class="jxr_keyword">this</strong>.conf);
+<a class="jxr_linenumber" name="107" href="#107">107</a>     <em class="jxr_comment">// per sink thread pool</em>
+<a class="jxr_linenumber" name="108" href="#108">108</a>     <strong class="jxr_keyword">this</strong>.maxThreads = <strong class="jxr_keyword">this</strong>.conf.getInt(HConstants.REPLICATION_SOURCE_MAXTHREADS_KEY,
+<a class="jxr_linenumber" name="109" href="#109">109</a>       HConstants.REPLICATION_SOURCE_MAXTHREADS_DEFAULT);
+<a class="jxr_linenumber" name="110" href="#110">110</a>     <strong class="jxr_keyword">this</strong>.exec = <strong class="jxr_keyword">new</strong> ThreadPoolExecutor(1, maxThreads, 60, TimeUnit.SECONDS,
+<a class="jxr_linenumber" name="111" href="#111">111</a>       <strong class="jxr_keyword">new</strong> SynchronousQueue&lt;Runnable&gt;());
+<a class="jxr_linenumber" name="112" href="#112">112</a>   }
+<a class="jxr_linenumber" name="113" href="#113">113</a> 
+<a class="jxr_linenumber" name="114" href="#114">114</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> decorateConf() {
+<a class="jxr_linenumber" name="115" href="#115">115</a>     String replicationCodec = <strong class="jxr_keyword">this</strong>.conf.get(HConstants.REPLICATION_CODEC_CONF_KEY);
+<a class="jxr_linenumber" name="116" href="#116">116</a>     <strong class="jxr_keyword">if</strong> (StringUtils.isNotEmpty(replicationCodec)) {
+<a class="jxr_linenumber" name="117" href="#117">117</a>       <strong class="jxr_keyword">this</strong>.conf.set(HConstants.RPC_CODEC_CONF_KEY, replicationCodec);
+<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> 
-<a class="jxr_linenumber" name="121" href="#121">121</a>     <strong class="jxr_keyword">int</strong> sleepMultiplier = 1;
-<a class="jxr_linenumber" name="122" href="#122">122</a> 
-<a class="jxr_linenumber" name="123" href="#123">123</a>     <em class="jxr_comment">// Connect to peer cluster first, unless we have to stop</em>
-<a class="jxr_linenumber" name="124" href="#124">124</a>     <strong class="jxr_keyword">while</strong> (<strong class="jxr_keyword">this</strong>.isRunning() &amp;&amp; replicationSinkMgr.getSinks().size() == 0) {
-<a class="jxr_linenumber" name="125" href="#125">125</a>       replicationSinkMgr.chooseSinks();
-<a class="jxr_linenumber" name="126" href="#126">126</a>       <strong class="jxr_keyword">if</strong> (<strong class="jxr_keyword">this</strong>.isRunning() &amp;&amp; replicationSinkMgr.getSinks().size() == 0) {
-<a class="jxr_linenumber" name="127" href="#127">127</a>         <strong class="jxr_keyword">if</strong> (sleepForRetries(<span class="jxr_string">"Waiting for peers"</span>, sleepMultiplier)) {
-<a class="jxr_linenumber" name="128" href="#128">128</a>           sleepMultiplier++;
-<a class="jxr_linenumber" name="129" href="#129">129</a>         }
-<a class="jxr_linenumber" name="130" href="#130">130</a>       }
-<a class="jxr_linenumber" name="131" href="#131">131</a>     }
-<a class="jxr_linenumber" name="132" href="#132">132</a>   }
-<a class="jxr_linenumber" name="133" href="#133">133</a> 
-<a class="jxr_linenumber" name="134" href="#134">134</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="135" href="#135">135</a> <em class="jxr_javadoccomment">   * Do the sleeping logic</em>
-<a class="jxr_linenumber" name="136" href="#136">136</a> <em class="jxr_javadoccomment">   * @param msg Why we sleep</em>
-<a class="jxr_linenumber" name="137" href="#137">137</a> <em class="jxr_javadoccomment">   * @param sleepMultiplier by how many times the default sleeping time is augmented</em>
-<a class="jxr_linenumber" name="138" href="#138">138</a> <em class="jxr_javadoccomment">   * @return True if &lt;code&gt;sleepMultiplier&lt;/code&gt; is &amp;lt; &lt;code&gt;maxRetriesMultiplier&lt;/code&gt;</em>
-<a class="jxr_linenumber" name="139" href="#139">139</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="140" href="#140">140</a>   <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> sleepForRetries(String msg, <strong class="jxr_keyword">int</strong> sleepMultiplier) {
-<a class="jxr_linenumber" name="141" href="#141">141</a>     <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="142" href="#142">142</a>       <strong class="jxr_keyword">if</strong> (LOG.isTraceEnabled()) {
-<a class="jxr_linenumber" name="143" href="#143">143</a>         LOG.trace(msg + <span class="jxr_string">", sleeping "</span> + sleepForRetries + <span class="jxr_string">" times "</span> + sleepMultiplier);
-<a class="jxr_linenumber" name="144" href="#144">144</a>       }
-<a class="jxr_linenumber" name="145" href="#145">145</a>       Thread.sleep(<strong class="jxr_keyword">this</strong>.sleepForRetries * sleepMultiplier);
-<a class="jxr_linenumber" name="146" href="#146">146</a>     } <strong class="jxr_keyword">catch</strong> (InterruptedException e) {
-<a class="jxr_linenumber" name="147" href="#147">147</a>       LOG.debug(<span class="jxr_string">"Interrupted while sleeping between retries"</span>);
-<a class="jxr_linenumber" name="148" href="#148">148</a>     }
-<a class="jxr_linenumber" name="149" href="#149">149</a>     <strong class="jxr_keyword">return</strong> sleepMultiplier &lt; maxRetriesMultiplier;
-<a class="jxr_linenumber" name="150" href="#150">150</a>   }
-<a class="jxr_linenumber" name="151" href="#151">151</a> 
-<a class="jxr_linenumber" name="152" href="#152">152</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="153" href="#153">153</a> <em class="jxr_javadoccomment">   * Do the shipping logic</em>
-<a class="jxr_linenumber" name="154" href="#154">154</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="155" href="#155">155</a>   @Override
-<a class="jxr_linenumber" name="156" href="#156">156</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> replicate(<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationEndpoint.html">ReplicateContext</a> replicateContext) {
-<a class="jxr_linenumber" name="157" href="#157">157</a>     List&lt;Entry&gt; entries = replicateContext.getEntries();
-<a class="jxr_linenumber" name="158" href="#158">158</a>     String walGroupId = replicateContext.getWalGroupId();
-<a class="jxr_linenumber" name="159" href="#159">159</a>     <strong class="jxr_keyword">int</strong> sleepMultiplier = 1;
-<a class="jxr_linenumber" name="160" href="#160">160</a> 
-<a class="jxr_linenumber" name="161" href="#161">161</a>     <strong class="jxr_keyword">if</strong> (!peersSelected &amp;&amp; <strong class="jxr_keyword">this</strong>.isRunning()) {
-<a class="jxr_linenumber" name="162" href="#162">162</a>       connectToPeers();
-<a class="jxr_linenumber" name="163" href="#163">163</a>       peersSelected = <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="164" href="#164">164</a>     }
-<a class="jxr_linenumber" name="165" href="#165">165</a> 
-<a class="jxr_linenumber" name="166" href="#166">166</a>     <strong class="jxr_keyword">if</strong> (replicationSinkMgr.getSinks().size() == 0) {
-<a class="jxr_linenumber" name="167" href="#167">167</a>       <strong class="jxr_keyword">return</strong> false;
+<a class="jxr_linenumber" name="121" href="#121">121</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> connectToPeers() {
+<a class="jxr_linenumber" name="122" href="#122">122</a>     getRegionServers();
+<a class="jxr_linenumber" name="123" href="#123">123</a> 
+<a class="jxr_linenumber" name="124" href="#124">124</a>     <strong class="jxr_keyword">int</strong> sleepMultiplier = 1;
+<a class="jxr_linenumber" name="125" href="#125">125</a> 
+<a class="jxr_linenumber" name="126" href="#126">126</a>     <em class="jxr_comment">// Connect to peer cluster first, unless we have to stop</em>
+<a class="jxr_linenumber" name="127" href="#127">127</a>     <strong class="jxr_keyword">while</strong> (<strong class="jxr_keyword">this</strong>.isRunning() &amp;&amp; replicationSinkMgr.getSinks().size() == 0) {
+<a class="jxr_linenumber" name="128" href="#128">128</a>       replicationSinkMgr.chooseSinks();
+<a class="jxr_linenumber" name="129" href="#129">129</a>       <strong class="jxr_keyword">if</strong> (<strong class="jxr_keyword">this</strong>.isRunning() &amp;&amp; replicationSinkMgr.getSinks().size() == 0) {
+<a class="jxr_linenumber" name="130" href="#130">130</a>         <strong class="jxr_keyword">if</strong> (sleepForRetries(<span class="jxr_string">"Waiting for peers"</span>, sleepMultiplier)) {
+<a class="jxr_linenumber" name="131" href="#131">131</a>           sleepMultiplier++;
+<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>     }
+<a class="jxr_linenumber" name="135" href="#135">135</a>   }
+<a class="jxr_linenumber" name="136" href="#136">136</a> 
+<a class="jxr_linenumber" name="137" href="#137">137</a>   <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="138" href="#138">138</a> <em class="jxr_javadoccomment">   * Do the sleeping logic</em>
+<a class="jxr_linenumber" name="139" href="#139">139</a> <em class="jxr_javadoccomment">   * @param msg Why we sleep</em>
+<a class="jxr_linenumber" name="140" href="#140">140</a> <em class="jxr_javadoccomment">   * @param sleepMultiplier by how many times the default sleeping time is augmented</em>
+<a class="jxr_linenumber" name="141" href="#141">141</a> <em class="jxr_javadoccomment">   * @return True if &lt;code&gt;sleepMultiplier&lt;/code&gt; is &amp;lt; &lt;code&gt;maxRetriesMultiplier&lt;/code&gt;</em>
+<a class="jxr_linenumber" name="142" href="#142">142</a> <em class="jxr_javadoccomment">   */</em>
+<a class="jxr_linenumber" name="143" href="#143">143</a>   <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> sleepForRetries(String msg, <strong class="jxr_keyword">int</strong> sleepMultiplier) {
+<a class="jxr_linenumber" name="144" href="#144">144</a>     <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="145" href="#145">145</a>       <strong class="jxr_keyword">if</strong> (LOG.isTraceEnabled()) {
+<a class="jxr_linenumber" name="146" href="#146">146</a>         LOG.trace(msg + <span class="jxr_string">", sleeping "</span> + sleepForRetries + <span class="jxr_string">" times "</span> + sleepMultiplier);
+<a class="jxr_linenumber" name="147" href="#147">147</a>       }
+<a class="jxr_linenumber" name="148" href="#148">148</a>       Thread.sleep(<strong class="jxr_keyword">this</strong>.sleepForRetries * sleepMultiplier);
+<a class="jxr_linenumber" name="149" href="#149">149</a>     } <strong class="jxr_keyword">catch</strong> (InterruptedException e) {
+<a class="jxr_linenumber" name="150" href="#150">150</a>       LOG.debug(<span class="jxr_string">"Interrupted while sleeping between retries"</span>);
+<a class="jxr_linenumber" name="151" href="#151">151</a>     }
+<a class="jxr_linenumber" name="152" href="#152">152</a>     <strong class="jxr_keyword">return</strong> sleepMultiplier &lt; maxRetriesMultiplier;
+<a class="jxr_linenumber" name="153" href="#153">153</a>   }
+<a class="jxr_linenumber" name="154" href="#154">154</a> 
+<a class="jxr_linenumber" name="155" href="#155">155</a>   <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="156" href="#156">156</a> <em class="jxr_javadoccomment">   * Do the shipping logic</em>
+<a class="jxr_linenumber" name="157" href="#157">157</a> <em class="jxr_javadoccomment">   */</em>
+<a class="jxr_linenumber" name="158" href="#158">158</a>   @Override
+<a class="jxr_linenumber" name="159" href="#159">159</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> replicate(<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationEndpoint.html">ReplicateContext</a> replicateContext) {
+<a class="jxr_linenumber" name="160" href="#160">160</a>     CompletionService&lt;Integer&gt; pool = <strong class="jxr_keyword">new</strong> ExecutorCompletionService&lt;Integer&gt;(<strong class="jxr_keyword">this</strong>.exec);
+<a class="jxr_linenumber" name="161" href="#161">161</a>     List&lt;Entry&gt; entries = replicateContext.getEntries();
+<a class="jxr_linenumber" name="162" href="#162">162</a>     String walGroupId = replicateContext.getWalGroupId();
+<a class="jxr_linenumber" name="163" href="#163">163</a>     <strong class="jxr_keyword">int</strong> sleepMultiplier = 1;
+<a class="jxr_linenumber" name="164" href="#164">164</a> 
+<a class="jxr_linenumber" name="165" href="#165">165</a>     <strong class="jxr_keyword">if</strong> (!peersSelected &amp;&amp; <strong class="jxr_keyword">this</strong>.isRunning()) {
+<a class="jxr_linenumber" name="166" href="#166">166</a>       connectToPeers();
+<a class="jxr_linenumber" name="167" href="#167">167</a>       peersSelected = <strong class="jxr_keyword">true</strong>;
 <a class="jxr_linenumber" name="168" href="#168">168</a>     }
-<a class="jxr_linenumber" name="169" href="#169">169</a>     <em class="jxr_comment">// minimum of: configured threads, number of 100-waledit batches,</em>
-<a class="jxr_linenumber" name="170" href="#170">170</a>     <em class="jxr_comment">//  and number of current sinks</em>
-<a class="jxr_linenumber" name="171" href="#171">171</a>     <strong class="jxr_keyword">int</strong> n = Math.min(Math.min(<strong class="jxr_keyword">this</strong>.maxThreads, entries.size()/100+1),
-<a class="jxr_linenumber" name="172" href="#172">172</a>       replicationSinkMgr.getSinks().size());
-<a class="jxr_linenumber" name="173" href="#173">173</a>     List&lt;List&lt;Entry&gt;&gt; entryLists = <strong class="jxr_keyword">new</strong> ArrayList&lt;List&lt;Entry&gt;&gt;(n);
-<a class="jxr_linenumber" name="174" href="#174">174</a>     <strong class="jxr_keyword">if</strong> (n == 1) {
-<a class="jxr_linenumber" name="175" href="#175">175</a>       entryLists.add(entries);
-<a class="jxr_linenumber" name="176" href="#176">176</a>     } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="177" href="#177">177</a>       <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i=0; i&lt;n; i++) {
-<a class="jxr_linenumber" name="178" href="#178">178</a>         entryLists.add(<strong class="jxr_keyword">new</strong> ArrayList&lt;Entry&gt;(entries.size()/n+1));
-<a class="jxr_linenumber" name="179" href="#179">179</a>       }
-<a class="jxr_linenumber" name="180" href="#180">180</a>       <em class="jxr_comment">// now group by region</em>
-<a class="jxr_linenumber" name="181" href="#181">181</a>       <strong class="jxr_keyword">for</strong> (Entry e : entries) {
-<a class="jxr_linenumber" name="182" href="#182">182</a>         entryLists.get(Math.abs(Bytes.hashCode(e.getKey().getEncodedRegionName())%n)).add(e);
+<a class="jxr_linenumber" name="169" href="#169">169</a> 
+<a class="jxr_linenumber" name="170" href="#170">170</a>     <strong class="jxr_keyword">if</strong> (replicationSinkMgr.getSinks().size() == 0) {
+<a class="jxr_linenumber" name="171" href="#171">171</a>       <strong class="jxr_keyword">return</strong> false;
+<a class="jxr_linenumber" name="172" href="#172">172</a>     }
+<a class="jxr_linenumber" name="173" href="#173">173</a>     <em class="jxr_comment">// minimum of: configured threads, number of 100-waledit batches,</em>
+<a class="jxr_linenumber" name="174" href="#174">174</a>     <em class="jxr_comment">//  and number of current sinks</em>
+<a class="jxr_linenumber" name="175" href="#175">175</a>     <strong class="jxr_keyword">int</strong> n = Math.min(Math.min(<strong class="jxr_keyword">this</strong>.maxThreads, entries.size()/100+1),
+<a class="jxr_linenumber" name="176" href="#176">176</a>       replicationSinkMgr.getSinks().size());
+<a class="jxr_linenumber" name="177" href="#177">177</a>     List&lt;List&lt;Entry&gt;&gt; entryLists = <strong class="jxr_keyword">new</strong> ArrayList&lt;List&lt;Entry&gt;&gt;(n);
+<a class="jxr_linenumber" name="178" href="#178">178</a>     <strong class="jxr_keyword">if</strong> (n == 1) {
+<a class="jxr_linenumber" name="179" href="#179">179</a>       entryLists.add(entries);
+<a class="jxr_linenumber" name="180" href="#180">180</a>     } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="181" href="#181">181</a>       <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i=0; i&lt;n; i++) {
+<a class="jxr_linenumber" name="182" href="#182">182</a>         entryLists.add(<strong class="jxr_keyword">new</strong> ArrayList&lt;Entry&gt;(entries.size()/n+1));
 <a class="jxr_linenumber" name="183" href="#183">183</a>       }
-<a class="jxr_linenumber" name="184" href="#184">184</a>     }
-<a class="jxr_linenumber" name="185" href="#185">185</a>     <strong class="jxr_keyword">while</strong> (<strong class="jxr_keyword">this</strong>.isRunning()) {
-<a class="jxr_linenumber" name="186" href="#186">186</a>       <strong class="jxr_keyword">if</strong> (!isPeerEnabled()) {
-<a class="jxr_linenumber" name="187" href="#187">187</a>         <strong class="jxr_keyword">if</strong> (sleepForRetries(<span class="jxr_string">"Replication is disabled"</span>, sleepMultiplier)) {
-<a class="jxr_linenumber" name="188" href="#188">188</a>           sleepMultiplier++;
-<a class="jxr_linenumber" name="189" href="#189">189</a>         }
-<a class="jxr_linenumber" name="190" href="#190">190</a>         <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">try</strong> {
-<a class="jxr_linenumber" name="193" href="#193">193</a>         <strong class="jxr_keyword">if</strong> (LOG.isTraceEnabled()) {
-<a class="jxr_linenumber" name="194" href="#194">194</a>           LOG.trace(<span class="jxr_string">"Replicating "</span> + entries.size() +
-<a class="jxr_linenumber" name="195" href="#195">195</a>               <span class="jxr_string">" entries of total size "</span> + replicateContext.getSize());
-<a class="jxr_linenumber" name="196" href="#196">196</a>         }
-<a class="jxr_linenumber" name="197" href="#197">197</a> 
-<a class="jxr_linenumber" name="198" href="#198">198</a>         List&lt;Future&lt;Integer&gt;&gt; futures = <strong class="jxr_keyword">new</strong> ArrayList&lt;Future&lt;Integer&gt;&gt;(entryLists.size());
-<a class="jxr_linenumber" name="199" href="#199">199</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i=0; i&lt;entryLists.size(); i++) {
-<a class="jxr_linenumber" name="200" href="#200">200</a>           <strong class="jxr_keyword">if</strong> (!entryLists.get(i).isEmpty()) {
-<a class="jxr_linenumber" name="201" href="#201">201</a>             <strong class="jxr_keyword">if</strong> (LOG.isTraceEnabled()) {
-<a class="jxr_linenumber" name="202" href="#202">202</a>               LOG.trace(<span class="jxr_string">"Submitting "</span> + entryLists.get(i).size() +
-<a class="jxr_linenumber" name="203" href="#203">203</a>                   <span class="jxr_string">" entries of total size "</span> + replicateContext.getSize());
-<a class="jxr_linenumber" name="204" href="#204">204</a>             }
-<a class="jxr_linenumber" name="205" href="#205">205</a>             <em class="jxr_comment">// RuntimeExceptions encountered here bubble up and are handled in ReplicationSource</em>
-<a class="jxr_linenumber" name="206" href="#206">206</a>             futures.add(exec.submit(createReplicator(entryLists.get(i), i)));
-<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>         IOException iox = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="210" href="#210">210</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> index = futures.size() - 1; index &gt;= 0; index--) {
-<a class="jxr_linenumber" name="211" href="#211">211</a>           <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="212" href="#212">212</a>             <em class="jxr_comment">// wait for all futures, remove successful parts</em>
-<a class="jxr_linenumber" name="213" href="#213">213</a>             <em class="jxr_comment">// (only the remaining parts will be retried)</em>
-<a class="jxr_linenumber" name="214" href="#214">214</a>             Future&lt;Integer&gt; f = futures.get(index);
-<a class="jxr_linenumber" name="215" href="#215">215</a>             entryLists.remove(f.get().intValue());
-<a class="jxr_linenumber" name="216" href="#216">216</a>           } <strong class="jxr_keyword">catch</strong> (InterruptedException ie) {
-<a class="jxr_linenumber" name="217" href="#217">217</a>             iox =  <strong class="jxr_keyword">new</strong> IOException(ie);
-<a class="jxr_linenumber" name="218" href="#218">218</a>           } <strong class="jxr_keyword">catch</strong> (ExecutionException ee) {
-<a class="jxr_linenumber" name="219" href="#219">219</a>             <em class="jxr_comment">// cause must be an IOException</em>
-<a class="jxr_linenumber" name="220" href="#220">220</a>             iox = (IOException)ee.getCause();
-<a class="jxr_linenumber" name="221" href="#221">221</a>           }
-<a class="jxr_linenumber" name="222" href="#222">222</a>         }
-<a class="jxr_linenumber" name="223" href="#223">223</a>         <strong class="jxr_keyword">if</strong> (iox != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="224" href="#224">224</a>           <em class="jxr_comment">// if we had any exceptions, try again</em>
-<a class="jxr_linenumber" name="225" href="#225">225</a>           <strong class="jxr_keyword">throw</strong> iox;
-<a class="jxr_linenumber" name="226" href="#226">226</a>         }
-<a class="jxr_linenumber" name="227" href="#227">227</a>         <em class="jxr_comment">// update metrics</em>
-<a class="jxr_linenumber" name="228" href="#228">228</a>         <strong class="jxr_keyword">this</strong>.metrics.setAgeOfLastShippedOp(entries.get(entries.size() - 1).getKey().getWriteTime(),
-<a class="jxr_linenumber" name="229" href="#229">229</a>           walGroupId);
-<a class="jxr_linenumber" name="230" href="#230">230</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="231" href="#231">231</a> 
-<a class="jxr_linenumber" name="232" href="#232">232</a>       } <strong class="jxr_keyword">catch</strong> (IOException ioe) {
-<a class="jxr_linenumber" name="233" href="#233">233</a>         <em class="jxr_comment">// Didn't ship anything, but must still age the last time we did</em>
-<a class="jxr_linenumber" name="234" href="#234">234</a>         <strong class="jxr_keyword">this</strong>.metrics.refreshAgeOfLastShippedOp(walGroupId);
-<a class="jxr_linenumber" name="235" href="#235">235</a>         <strong class="jxr_keyword">if</strong> (ioe instanceof RemoteException) {
-<a class="jxr_linenumber" name="236" href="#236">236</a>           ioe = ((RemoteException) ioe).unwrapRemoteException();
-<a class="jxr_linenumber" name="237" href="#237">237</a>           LOG.warn(<span class="jxr_string">"Can't replicate because of an error on the remote cluster: "</span>, ioe);
-<a class="jxr_linenumber" name="238" href="#238">238</a>           <strong class="jxr_keyword">if</strong> (ioe instanceof TableNotFoundException) {
-<a class="jxr_linenumber" name="239" href="#239">239</a>             <strong class="jxr_keyword">if</strong> (sleepForRetries(<span class="jxr_string">"A table is missing in the peer cluster. "</span>
-<a class="jxr_linenumber" name="240" href="#240">240</a>                 + <span class="jxr_string">"Replication cannot proceed without losing data."</span>, sleepMultiplier)) {
-<a class="jxr_linenumber" name="241" href="#241">241</a>               sleepMultiplier++;
-<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>         } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="245" href="#245">245</a>           <strong class="jxr_keyword">if</strong> (ioe instanceof SocketTimeoutException) {
-<a class="jxr_linenumber" name="246" href="#246">246</a>             <em class="jxr_comment">// This exception means we waited for more than 60s and nothing</em>
-<a class="jxr_linenumber" name="247" href="#247">247</a>             <em class="jxr_comment">// happened, the cluster is alive and calling it right away</em>
-<a class="jxr_linenumber" name="248" href="#248">248</a>             <em class="jxr_comment">// even for a test just makes things worse.</em>
-<a class="jxr_linenumber" name="249" href="#249">249</a>             sleepForRetries(<span class="jxr_string">"Encountered a SocketTimeoutException. Since the "</span> +
-<a class="jxr_linenumber" name="250" href="#250">250</a>               <span class="jxr_string">"call to the remote cluster timed out, which is usually "</span> +
-<a class="jxr_linenumber" name="251" href="#251">251</a>               <span class="jxr_string">"caused by a machine failure or a massive slowdown"</span>,
-<a class="jxr_linenumber" name="252" href="#252">252</a>               <strong class="jxr_keyword">this</strong>.socketTimeoutMultiplier);
-<a class="jxr_linenumber" name="253" href="#253">253</a>           } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (ioe instanceof ConnectException) {
-<a class="jxr_linenumber" name="254" href="#254">254</a>             LOG.warn(<span class="jxr_string">"Peer is unavailable, rechecking all sinks: "</span>, ioe);
-<a class="jxr_linenumber" name="255" href="#255">255</a>             replicationSinkMgr.chooseSinks();
-<a class="jxr_linenumber" name="256" href="#256">256</a>           } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="257" href="#257">257</a>             LOG.warn(<span class="jxr_string">"Can't replicate because of a local or network error: "</span>, ioe);
-<a class="jxr_linenumber" name="258" href="#258">258</a>           }
-<a class="jxr_linenumber" name="259" href="#259">259</a>         }
-<a class="jxr_linenumber" name="260" href="#260">260</a>         <strong class="jxr_keyword">if</strong> (sleepForRetries(<span class="jxr_string">"Since we are unable to replicate"</span>, sleepMultiplier)) {
-<a class="jxr_linenumber" name="261" href="#261">261</a>           sleepMultiplier++;
-<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>     }
-<a class="jxr_linenumber" name="265" href="#265">265</a>     <strong class="jxr_keyword">return</strong> false; <em class="jxr_comment">// in case we exited before replicating</em>
-<a class="jxr_linenumber" name="266" href="#266">266</a>   }
-<a class="jxr_linenumber" name="267" href="#267">267</a> 
-<a class="jxr_linenumber" name="268" href="#268">268</a>   <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> isPeerEnabled() {
-<a class="jxr_linenumber" name="269" href="#269">269</a>     <strong class="jxr_keyword">return</strong> ctx.getReplicationPeer().getPeerState() == PeerState.ENABLED;
-<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="272" href="#272">272</a>   @Override
-<a class="jxr_linenumber" name="273" href="#273">273</a>   <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> doStop() {
-<a class="jxr_linenumber" name="274" href="#274">274</a>     disconnect(); <em class="jxr_comment">//don't call super.doStop()</em>
-<a class="jxr_linenumber" name="275" href="#275">275</a>     <strong class="jxr_keyword">if</strong> (<strong class="jxr_keyword">this</strong>.conn != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="276" href="#276">276</a>       <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="277" href="#277">277</a>         <strong class="jxr_keyword">this</strong>.conn.close();
-<a class="jxr_linenumber" name="278" href="#278">278</a>         <strong class="jxr_keyword">this</strong>.conn = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="279" href="#279">279</a>       } <strong class="jxr_keyword">catch</strong> (IOException e) {
-<a class="jxr_linenumber" name="280" href="#280">280</a>         LOG.warn(<span class="jxr_string">"Failed to close the connection"</span>);
-<a class="jxr_linenumber" name="281" href="#281">281</a>       }
-<a class="jxr_linenumber" name="282" href="#282">282</a>     }
-<a class="jxr_linenumber" name="283" href="#283">283</a>     exec.shutdownNow();
-<a class="jxr_linenumber" name="284" href="#284">284</a>     notifyStopped();
-<a class="jxr_linenumber" name="285" href="#285">285</a>   }
-<a class="jxr_linenumber" name="286" href="#286">286</a> 
-<a class="jxr_linenumber" name="287" href="#287">287</a>   <em class="jxr_comment">// is this needed? Nobody else will call doStop() otherwise</em>
-<a class="jxr_linenumber" name="288" href="#288">288</a>   @Override
-<a class="jxr_linenumber" name="289" href="#289">289</a>   <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/hadoop/hbase/Coprocessor.html">State</a> stopAndWait() {
-<a class="jxr_linenumber" name="290" href="#290">290</a>     doStop();
-<a class="jxr_linenumber" name="291" href="#291">291</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">super</strong>.stopAndWait();
-<a class="jxr_linenumber" name="292" href="#292">292</a>   }
-<a class="jxr_linenumber" name="293" href="#293">293</a> 
-<a class="jxr_linenumber" name="294" href="#294">294</a>   @VisibleForTesting
-<a class="jxr_linenumber" name="295" href="#295">295</a>   <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html">Replicator</a> createReplicator(List&lt;Entry&gt; entries, <strong class="jxr_keyword">int</strong> ordinal) {
-<a class="jxr_linenumber" name="296" href="#296">296</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html">Replicator</a>(entries, ordinal);
-<a class="jxr_linenumber" name="297" href="#297">297</a>   }
-<a class="jxr_linenumber" name="298" href="#298">298</a> 
-<a class="jxr_linenumber" name="299" href="#299">299</a>   @VisibleForTesting
-<a class="jxr_linenumber" name="300" href="#300">300</a>   <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html">Replicator</a> <strong class="jxr_keyword">implements</strong> Callable&lt;Integer&gt; {
-<a class="jxr_linenumber" name="301" href="#301">301</a>     <strong class="jxr_keyword">private</strong> List&lt;Entry&gt; entries;
-<a class="jxr_linenumber" name="302" href="#302">302</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong> ordinal;
-<a class="jxr_linenumber" name="303" href="#303">303</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html">Replicator</a>(List&lt;Entry&gt; entries, <strong class="jxr_keyword">int</strong> ordinal) {
-<a class="jxr_linenumber" name="304" href="#304">304</a>       <strong class="jxr_keyword">this</strong>.entries = entries;
-<a class="jxr_linenumber" name="305" href="#305">305</a>       <strong class="jxr_keyword">this</strong>.ordinal = ordinal;
-<a class="jxr_linenumber" name="306" href="#306">306</a>     }
-<a class="jxr_linenumber" name="307" href="#307">307</a> 
-<a class="jxr_linenumber" name="308" href="#308">308</a>     @Override
-<a class="jxr_linenumber" name="309" href="#309">309</a>     <strong class="jxr_keyword">public</strong> Integer call() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="310" href="#310">310</a>       <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSinkManager.html">SinkPeer</a> sinkPeer = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="311" href="#311">311</a>       <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="312" href="#312">312</a>         sinkPeer = replicationSinkMgr.getReplicationSink();
-<a class="jxr_linenumber" name="313" href="#313">313</a>         BlockingInterface rrs = sinkPeer.getRegionServer();
-<a class="jxr_linenumber" name="314" href="#314">314</a>         ReplicationProtbufUtil.replicateWALEntry(rrs,
-<a class="jxr_linenumber" name="315" href="#315">315</a>             entries.toArray(<strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/hadoop/hbase/util/IdLock.html">Entry</a>[entries.size()]));
-<a class="jxr_linenumber" name="316" href="#316">316</a>         replicationSinkMgr.reportSinkSuccess(sinkPeer);
-<a class="jxr_linenumber" name="317" href="#317">317</a>         <strong class="jxr_keyword">return</strong> ordinal;
-<a class="jxr_linenumber" name="318" href="#318">318</a> 
-<a class="jxr_linenumber" name="319" href="#319">319</a>       } <strong class="jxr_keyword">catch</strong> (IOException ioe) {
-<a class="jxr_linenumber" name="320" href="#320">320</a>         <strong class="jxr_keyword">if</strong> (sinkPeer != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="321" href="#321">321</a>           replicationSinkMgr.reportBadSink(sinkPeer);
-<a class="jxr_linenumber" name="322" href="#322">322</a>         }
-<a class="jxr_linenumber" name="323" href="#323">323</a>         <strong class="jxr_keyword">throw</strong> ioe;
-<a class="jxr_linenumber" name="324" href="#324">324</a>       }
-<a class="jxr_linenumber" name="325" href="#325">325</a>     }
-<a class="jxr_linenumber" name="326" href="#326">326</a> 
-<a class="jxr_linenumber" name="327" href="#327">327</a>   }
-<a class="jxr_linenumber" name="328" href="#328">328</a> }
+<a class="jxr_linenumber" name="184" href="#184">184</a>       <em class="jxr_comment">// now group by region</em>
+<a class="jxr_linenumber" name="185" href="#185">185</a>       <strong class="jxr_keyword">for</strong> (Entry e : entries) {
+<a class="jxr_linenumber" name="186" href="#186">186</a>         entryLists.get(Math.abs(Bytes.hashCode(e.getKey().getEncodedRegionName())%n)).add(e);
+<a class="jxr_linenumber" name="187" href="#187">187</a>       }
+<a class="jxr_linenumber" name="188" href="#188">188</a>     }
+<a class="jxr_linenumber" name="189" href="#189">189</a>     <strong class="jxr_keyword">while</strong> (<strong class="jxr_keyword">this</strong>.isRunning()) {
+<a class="jxr_linenumber" name="190" href="#190">190</a>       <strong class="jxr_keyword">if</strong> (!isPeerEnabled()) {
+<a class="jxr_linenumber" name="191" href="#191">191</a>         <strong class="jxr_keyword">if</strong> (sleepForRetries(<span class="jxr_string">"Replication is disabled"</span>, sleepMultiplier)) {
+<a class="jxr_linenumber" name="192" href="#192">192</a>           sleepMultiplier++;
+<a class="jxr_linenumber" name="193" href="#193">193</a>         }
+<a class="jxr_linenumber" name="194" href="#194">194</a>         <strong class="jxr_keyword">continue</strong>;
+<a class="jxr_linenumber" name="195" href="#195">195</a>       }
+<a class="jxr_linenumber" name="196" href="#196">196</a>       <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="197" href="#197">197</a>         <strong class="jxr_keyword">if</strong> (LOG.isTraceEnabled()) {
+<a class="jxr_linenumber" name="198" href="#198">198</a>           LOG.trace(<span class="jxr_string">"Replicating "</span> + entries.size() +
+<a class="jxr_linenumber" name="199" href="#199">199</a>               <span class="jxr_string">" entries of total size "</span> + replicateContext.getSize());
+<a class="jxr_linenumber" name="200" href="#200">200</a>         }
+<a class="jxr_linenumber" name="201" href="#201">201</a> 
+<a class="jxr_linenumber" name="202" href="#202">202</a>         <strong class="jxr_keyword">int</strong> futures = 0;
+<a class="jxr_linenumber" name="203" href="#203">203</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i=0; i&lt;entryLists.size(); i++) {
+<a class="jxr_linenumber" name="204" href="#204">204</a>           <strong class="jxr_keyword">if</strong> (!entryLists.get(i).isEmpty()) {
+<a class="jxr_linenumber" name="205" href="#205">205</a>             <strong class="jxr_keyword">if</strong> (LOG.isTraceEnabled()) {
+<a class="jxr_linenumber" name="206" href="#206">206</a>               LOG.trace(<span class="jxr_string">"Submitting "</span> + entryLists.get(i).size() +
+<a class="jxr_linenumber" name="207" href="#207">207</a>                   <span class="jxr_string">" entries of total size "</span> + replicateContext.getSize());
+<a class="jxr_linenumber" name="208" href="#208">208</a>             }
+<a class="jxr_linenumber" name="209" href="#209">209</a>             <em class="jxr_comment">// RuntimeExceptions encountered here bubble up and are handled in ReplicationSource</em>
+<a class="jxr_linenumber" name="210" href="#210">210</a>             pool.submit(createReplicator(entryLists.get(i), i));
+<a class="jxr_linenumber" name="211" href="#211">211</a>             futures++;
+<a class="jxr_linenumber" name="212" href="#212">212</a>           }
+<a class="jxr_linenumber" name="213" href="#213">213</a>         }
+<a class="jxr_linenumber" name="214" href="#214">214</a>         IOException iox = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="215" href="#215">215</a> 
+<a class="jxr_linenumber" name="216" href="#216">216</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i=0; i&lt;futures; i++) {
+<a class="jxr_linenumber" name="217" href="#217">217</a>           <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="218" href="#218">218</a>             <em class="jxr_comment">// wait for all futures, remove successful parts</em>
+<a class="jxr_linenumber" name="219" href="#219">219</a>             <em class="jxr_comment">// (only the remaining parts will be retried)</em>
+<a class="jxr_linenumber" name="220" href="#220">220</a>             Future&lt;Integer&gt; f = pool.take();
+<a class="jxr_linenumber" name="221" href="#221">221</a>             entryLists.set(f.get().intValue(), Collections.&lt;Entry&gt;emptyList());
+<a class="jxr_linenumber" name="222" href="#222">222</a>           } <strong class="jxr_keyword">catch</strong> (InterruptedException ie) {
+<a class="jxr_linenumber" name="223" href="#223">223</a>             iox =  <strong class="jxr_keyword">new</strong> IOException(ie);
+<a class="jxr_linenumber" name="224" href="#224">224</a>           } <strong class="jxr_keyword">catch</strong> (ExecutionException ee) {
+<a class="jxr_linenumber" name="225" href="#225">225</a>             <em class="jxr_comment">// cause must be an IOException</em>
+<a class="jxr_linenumber" name="226" href="#226">226</a>             iox = (IOException)ee.getCause();
+<a class="jxr_linenumber" name="227" href="#227">227</a>           }
+<a class="jxr_linenumber" name="228" href="#228">228</a>         }
+<a class="jxr_linenumber" name="229" href="#229">229</a>         <strong class="jxr_keyword">if</strong> (iox != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="230" href="#230">230</a>           <em class="jxr_comment">// if we had any exceptions, try again</em>
+<a class="jxr_linenumber" name="231" href="#231">231</a>           <strong class="jxr_keyword">throw</strong> iox;
+<a class="jxr_linenumber" name="232" href="#232">232</a>         }
+<a class="jxr_linenumber" name="233" href="#233">233</a>         <em class="jxr_comment">// update metrics</em>
+<a class="jxr_linenumber" name="234" href="#234">234</a>         <strong class="jxr_keyword">this</strong>.metrics.setAgeOfLastShippedOp(entries.get(entries.size() - 1).getKey().getWriteTime(),
+<a class="jxr_linenumber" name="235" href="#235">235</a>           walGroupId);
+<a class="jxr_linenumber" name="236" href="#236">236</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="237" href="#237">237</a> 
+<a class="jxr_linenumber" name="238" href="#238">238</a>       } <strong class="jxr_keyword">catch</strong> (IOException ioe) {
+<a class="jxr_linenumber" name="239" href="#239">239</a>         <em class="jxr_comment">// Didn't ship anything, but must still age the last time we did</em>
+<a class="jxr_linenumber" name="240" href="#240">240</a>         <strong class="jxr_keyword">this</strong>.metrics.refreshAgeOfLastShippedOp(walGroupId);
+<a class="jxr_linenumber" name="241" href="#241">241</a>         <strong class="jxr_keyword">if</strong> (ioe instanceof RemoteException) {
+<a class="jxr_linenumber" name="242" href="#242">242</a>           ioe = ((RemoteException) ioe).unwrapRemoteException();
+<a class="jxr_linenumber" name="243" href="#243">243</a>           LOG.warn(<span class="jxr_string">"Can't replicate because of an error on the remote cluster: "</span>, ioe);
+<a class="jxr_linenumber" name="244" href="#244">244</a>           <strong class="jxr_keyword">if</strong> (ioe instanceof TableNotFoundException) {
+<a class="jxr_linenumber" name="245" href="#245">245</a>             <strong class="jxr_keyword">if</strong> (sleepForRetries(<span class="jxr_string">"A table is missing in the peer cluster. "</span>
+<a class="jxr_linenumber" name="246" href="#246">246</a>                 + <span class="jxr_string">"Replication cannot proceed without losing data."</span>, sleepMultiplier)) {
+<a class="jxr_linenumber" name="247" href="#247">247</a>               sleepMultiplier++;
+<a class="jxr_linenumber" name="248" href="#248">248</a>             }
+<a class="jxr_linenumber" name="249" href="#249">249</a>           }
+<a class="jxr_linenumber" name="250" href="#250">250</a>         } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="251" href="#251">251</a>           <strong class="jxr_keyword">if</strong> (ioe instanceof SocketTimeoutException) {
+<a class="jxr_linenumber" name="252" href="#252">252</a>             <em class="jxr_comment">// This exception means we waited for more than 60s and nothing</em>
+<a class="jxr_linenumber" name="253" href="#253">253</a>             <em class="jxr_comment">// happened, the cluster is alive and calling it right away</em>
+<a class="jxr_linenumber" name="254" href="#254">254</a>             <em class="jxr_comment">// even for a test just makes things worse.</em>
+<a class="jxr_linenumber" name="255" href="#255">255</a>             sleepForRetries(<span class="jxr_string">"Encountered a SocketTimeoutException. Since the "</span> +
+<a class="jxr_linenumber" name="256" href="#256">256</a>               <span class="jxr_string">"call to the remote cluster timed out, which is usually "</span> +
+<a class="jxr_linenumber" name="257" href="#257">257</a>               <span class="jxr_string">"caused by a machine failure or a massive slowdown"</span>,
+<a class="jxr_linenumber" name="258" href="#258">258</a>               <strong class="jxr_keyword">this</strong>.socketTimeoutMultiplier);
+<a class="jxr_linenumber" name="259" href="#259">259</a>           } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (ioe instanceof ConnectException) {
+<a class="jxr_linenumber" name="260" href="#260">260</a>             LOG.warn(<span class="jxr_string">"Peer is unavailable, rechecking all sinks: "</span>, ioe);
+<a class="jxr_linenumber" name="261" href="#261">261</a>             replicationSinkMgr.chooseSinks();
+<a class="jxr_linenumber" name="262" href="#262">262</a>           } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="263" href="#263">263</a>             LOG.warn(<span class="jxr_string">"Can't replicate because of a local or network error: "</span>, ioe);
+<a class="jxr_linenumber" name="264" href="#264">264</a>           }
+<a class="jxr_linenumber" name="265" href="#265">265</a>         }
+<a class="jxr_linenumber" name="266" href="#266">266</a>         <strong class="jxr_keyword">if</strong> (sleepForRetries(<span class="jxr_string">"Since we are unable to replicate"</span>, sleepMultiplier)) {
+<a class="jxr_linenumber" name="267" href="#267">267</a>           sleepMultiplier++;
+<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>     <strong class="jxr_keyword">return</strong> false; <em class="jxr_comment">// in case we exited before replicating</em>
+<a class="jxr_linenumber" name="272" href="#272">272</a>   }
+<a class="jxr_linenumber" name="273" href="#273">273</a> 
+<a class="jxr_linenumber" name="274" href="#274">274</a>   <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> isPeerEnabled() {
+<a class="jxr_linenumber" name="275" href="#275">275</a>     <strong class="jxr_keyword">return</strong> ctx.getReplicationPeer().getPeerState() == PeerState.ENABLED;
+<a class="jxr_linenumber" name="276" href="#276">276</a>   }
+<a class="jxr_linenumber" name="277" href="#277">277</a> 
+<a class="jxr_linenumber" name="278" href="#278">278</a>   @Override
+<a class="jxr_linenumber" name="279" href="#279">279</a>   <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> doStop() {
+<a class="jxr_linenumber" name="280" href="#280">280</a>     disconnect(); <em class="jxr_comment">//don't call super.doStop()</em>
+<a class="jxr_linenumber" name="281" href="#281">281</a>     <strong class="jxr_keyword">if</strong> (<strong class="jxr_keyword">this</strong>.conn != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="282" href="#282">282</a>       <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="283" href="#283">283</a>         <strong class="jxr_keyword">this</strong>.conn.close();
+<a class="jxr_linenumber" name="284" href="#284">284</a>         <strong class="jxr_keyword">this</strong>.conn = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="285" href="#285">285</a>       } <strong class="jxr_keyword">catch</strong> (IOException e) {
+<a class="jxr_linenumber" name="286" href="#286">286</a>         LOG.warn(<span class="jxr_string">"Failed to close the connection"</span>);
+<a class="jxr_linenumber" name="287" href="#287">287</a>       }
+<a class="jxr_linenumber" name="288" href="#288">288</a>     }
+<a class="jxr_linenumber" name="289" href="#289">289</a>     exec.shutdownNow();
+<a class="jxr_linenumber" name="290" href="#290">290</a>     notifyStopped();
+<a class="jxr_linenumber" name="291" href="#291">291</a>   }
+<a class="jxr_linenumber" name="292" href="#292">292</a> 
+<a class="jxr_linenumber" name="293" href="#293">293</a>   <em class="jxr_comment">// is this needed? Nobody else will call doStop() otherwise</em>
+<a class="jxr_linenumber" name="294" href="#294">294</a>   @Override
+<a class="jxr_linenumber" name="295" href="#295">295</a>   <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/hadoop/hbase/Coprocessor.html">State</a> stopAndWait() {
+<a class="jxr_linenumber" name="296" href="#296">296</a>     doStop();
+<a class="jxr_linenumber" name="297" href="#297">297</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">super</strong>.stopAndWait();
+<a class="jxr_linenumber" name="298" href="#298">298</a>   }
+<a class="jxr_linenumber" name="299" href="#299">299</a> 
+<a class="jxr_linenumber" name="300" href="#300">300</a>   @VisibleForTesting
+<a class="jxr_linenumber" name="301" href="#301">301</a>   <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html">Replicator</a> createReplicator(List&lt;Entry&gt; entries, <strong class="jxr_keyword">int</strong> ordinal) {
+<a class="jxr_linenumber" name="302" href="#302">302</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html">Replicator</a>(entries, ordinal);
+<a class="jxr_linenumber" name="303" href="#303">303</a>   }
+<a class="jxr_linenumber" name="304" href="#304">304</a> 
+<a class="jxr_linenumber" name="305" href="#305">305</a>   @VisibleForTesting
+<a class="jxr_linenumber" name="306" href="#306">306</a>   <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html">Replicator</a> <strong class="jxr_keyword">implements</strong> Callable&lt;Integer&gt; {
+<a class="jxr_linenumber" name="307" href="#307">307</a>     <strong class="jxr_keyword">private</strong> List&lt;Entry&gt; entries;
+<a class="jxr_linenumber" name="308" href="#308">308</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong> ordinal;
+<a class="jxr_linenumber" name="309" href="#309">309</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html">Replicator</a>(List&lt;Entry&gt; entries, <strong class="jxr_keyword">int</strong> ordinal) {
+<a class="jxr_linenumber" name="310" href="#310">310</a>       <strong class="jxr_keyword">this</strong>.entries = entries;
+<a class="jxr_linenumber" name="311" href="#311">311</a>       <strong class="jxr_keyword">this</strong>.ordinal = ordinal;
+<a class="jxr_linenumber" name="312" href="#312">312</a>     }
+<a class="jxr_linenumber" name="313" href="#313">313</a> 
+<a class="jxr_linenumber" name="314" href="#314">314</a>     @Override
+<a class="jxr_linenumber" name="315" href="#315">315</a>     <strong class="jxr_keyword">public</strong> Integer call() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="316" href="#316">316</a>       <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSinkManager.html">SinkPeer</a> sinkPeer = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="317" href="#317">317</a>       <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="318" href="#318">318</a>         sinkPeer = replicationSinkMgr.getReplicationSink();
+<a class="jxr_linenumber" name="319" href="#319">319</a>         BlockingInterface rrs = sinkPeer.getRegionServer();
+<a class="jxr_linenumber" name="320" href="#320">320</a>         ReplicationProtbufUtil.replicateWALEntry(rrs,
+<a class="jxr_linenumber" name="321" href="#321">321</a>             entries.toArray(<strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/hadoop/hbase/util/IdLock.html">Entry</a>[entries.size()]));
+<a class="jxr_linenumber" name="322" href="#322">322</a>         replicationSinkMgr.reportSinkSuccess(sinkPeer);
+<a class="jxr_linenumber" name="323" href="#323">323</a>         <strong class="jxr_keyword">return</strong> ordinal;
+<a class="jxr_linenumber" name="324" href="#324">324</a> 
+<a class="jxr_linenumber" name="325" href="#325">325</a>       } <strong class="jxr_keyword">catch</strong> (IOException ioe) {
+<a class="jxr_linenumber" name="326" href="#326">326</a>         <strong class="jxr_keyword">if</strong> (sinkPeer != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="327" href="#327">327</a>           replicationSinkMgr.reportBadSink(sinkPeer);
+<a class="jxr_linenumber" name="328" href="#328">328</a>         }
+<a class="jxr_linenumber" name="329" href="#329">329</a>         <strong class="jxr_keyword">throw</strong> ioe;
+<a class="jxr_linenumber" name="330" href="#330">330</a>       }
+<a class="jxr_linenumber" name="331" href="#331">331</a>     }
+<a class="jxr_linenumber" name="332" href="#332">332</a> 
+<a class="jxr_linenumber" name="333" href="#333">333</a>   }
+<a class="jxr_linenumber" name="334" href="#334">334</a> }
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>


[16/24] hbase git commit: Published site at 0d72849581c1e5a50a2aa7757b909e5531b8d12c.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html
index bddf5c5..80b5066 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.MatchCode.html
@@ -168,513 +168,518 @@
 <span class="sourceLineNo">160</span>  public ScanQueryMatcher(Scan scan, ScanInfo scanInfo, NavigableSet&lt;byte[]&gt; columns,<a name="line.160"></a>
 <span class="sourceLineNo">161</span>      ScanType scanType, long readPointToUse, long earliestPutTs, long oldestUnexpiredTS,<a name="line.161"></a>
 <span class="sourceLineNo">162</span>      long now, RegionCoprocessorHost regionCoprocessorHost) throws IOException {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    this.tr = scan.getTimeRange();<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    this.rowComparator = scanInfo.getComparator();<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    this.regionCoprocessorHost = regionCoprocessorHost;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    this.deletes =  instantiateDeleteTracker();<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    this.stopRow = scan.getStopRow();<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    this.startKey = CellUtil.createFirstDeleteFamilyCellOnRow(scan.getStartRow(),<a name="line.168"></a>
-<span class="sourceLineNo">169</span>        scanInfo.getFamily());<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    this.filter = scan.getFilter();<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    this.earliestPutTs = earliestPutTs;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    this.oldestUnexpiredTS = oldestUnexpiredTS;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    this.now = now;<a name="line.173"></a>
-<span class="sourceLineNo">174</span><a name="line.174"></a>
-<span class="sourceLineNo">175</span>    this.maxReadPointToTrackVersions = readPointToUse;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    this.timeToPurgeDeletes = scanInfo.getTimeToPurgeDeletes();<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    this.ttl = oldestUnexpiredTS;<a name="line.177"></a>
-<span class="sourceLineNo">178</span><a name="line.178"></a>
-<span class="sourceLineNo">179</span>    /* how to deal with deletes */<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    this.isUserScan = scanType == ScanType.USER_SCAN;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    // keep deleted cells: if compaction or raw scan<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    this.keepDeletedCells = scan.isRaw() ? KeepDeletedCells.TRUE :<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      isUserScan ? KeepDeletedCells.FALSE : scanInfo.getKeepDeletedCells();<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    // retain deletes: if minor compaction or raw scanisDone<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    this.retainDeletesInOutput = scanType == ScanType.COMPACT_RETAIN_DELETES || scan.isRaw();<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    // seePastDeleteMarker: user initiated scans<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    this.seePastDeleteMarkers =<a name="line.187"></a>
-<span class="sourceLineNo">188</span>        scanInfo.getKeepDeletedCells() != KeepDeletedCells.FALSE &amp;&amp; isUserScan;<a name="line.188"></a>
-<span class="sourceLineNo">189</span><a name="line.189"></a>
-<span class="sourceLineNo">190</span>    int maxVersions =<a name="line.190"></a>
-<span class="sourceLineNo">191</span>        scan.isRaw() ? scan.getMaxVersions() : Math.min(scan.getMaxVersions(),<a name="line.191"></a>
-<span class="sourceLineNo">192</span>          scanInfo.getMaxVersions());<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>    // Single branch to deal with two types of reads (columns vs all in family)<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    if (columns == null || columns.size() == 0) {<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      // there is always a null column in the wildcard column query.<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      hasNullColumn = true;<a name="line.197"></a>
+<span class="sourceLineNo">163</span>    TimeRange timeRange = scan.getColumnFamilyTimeRange().get(scanInfo.getFamily());<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    if (timeRange == null) {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      this.tr = scan.getTimeRange();<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    } else {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      this.tr = timeRange;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    }<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    this.rowComparator = scanInfo.getComparator();<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    this.regionCoprocessorHost = regionCoprocessorHost;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    this.deletes =  instantiateDeleteTracker();<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    this.stopRow = scan.getStopRow();<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    this.startKey = CellUtil.createFirstDeleteFamilyCellOnRow(scan.getStartRow(),<a name="line.173"></a>
+<span class="sourceLineNo">174</span>        scanInfo.getFamily());<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    this.filter = scan.getFilter();<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    this.earliestPutTs = earliestPutTs;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    this.oldestUnexpiredTS = oldestUnexpiredTS;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    this.now = now;<a name="line.178"></a>
+<span class="sourceLineNo">179</span><a name="line.179"></a>
+<span class="sourceLineNo">180</span>    this.maxReadPointToTrackVersions = readPointToUse;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    this.timeToPurgeDeletes = scanInfo.getTimeToPurgeDeletes();<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    this.ttl = oldestUnexpiredTS;<a name="line.182"></a>
+<span class="sourceLineNo">183</span><a name="line.183"></a>
+<span class="sourceLineNo">184</span>    /* how to deal with deletes */<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    this.isUserScan = scanType == ScanType.USER_SCAN;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    // keep deleted cells: if compaction or raw scan<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    this.keepDeletedCells = scan.isRaw() ? KeepDeletedCells.TRUE :<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      isUserScan ? KeepDeletedCells.FALSE : scanInfo.getKeepDeletedCells();<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    // retain deletes: if minor compaction or raw scanisDone<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    this.retainDeletesInOutput = scanType == ScanType.COMPACT_RETAIN_DELETES || scan.isRaw();<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    // seePastDeleteMarker: user initiated scans<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    this.seePastDeleteMarkers =<a name="line.192"></a>
+<span class="sourceLineNo">193</span>        scanInfo.getKeepDeletedCells() != KeepDeletedCells.FALSE &amp;&amp; isUserScan;<a name="line.193"></a>
+<span class="sourceLineNo">194</span><a name="line.194"></a>
+<span class="sourceLineNo">195</span>    int maxVersions =<a name="line.195"></a>
+<span class="sourceLineNo">196</span>        scan.isRaw() ? scan.getMaxVersions() : Math.min(scan.getMaxVersions(),<a name="line.196"></a>
+<span class="sourceLineNo">197</span>          scanInfo.getMaxVersions());<a name="line.197"></a>
 <span class="sourceLineNo">198</span><a name="line.198"></a>
-<span class="sourceLineNo">199</span>      // use a specialized scan for wildcard column tracker.<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      this.columns = new ScanWildcardColumnTracker(<a name="line.200"></a>
-<span class="sourceLineNo">201</span>          scanInfo.getMinVersions(), maxVersions, oldestUnexpiredTS);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    } else {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      // whether there is null column in the explicit column query<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      hasNullColumn = (columns.first().length == 0);<a name="line.204"></a>
-<span class="sourceLineNo">205</span><a name="line.205"></a>
-<span class="sourceLineNo">206</span>      // We can share the ExplicitColumnTracker, diff is we reset<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      // between rows, not between storefiles.<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      this.columns = new ExplicitColumnTracker(columns, scanInfo.getMinVersions(), maxVersions,<a name="line.208"></a>
-<span class="sourceLineNo">209</span>          oldestUnexpiredTS);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    }<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    this.isReversed = scan.isReversed();<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>  private DeleteTracker instantiateDeleteTracker() throws IOException {<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    DeleteTracker tracker = new ScanDeleteTracker();<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    if (regionCoprocessorHost != null) {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      tracker = regionCoprocessorHost.postInstantiateDeleteTracker(tracker);<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    }<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    return tracker;<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>  /**<a name="line.222"></a>
-<span class="sourceLineNo">223</span>   * Construct a QueryMatcher for a scan that drop deletes from a limited range of rows.<a name="line.223"></a>
-<span class="sourceLineNo">224</span>   * @param scan<a name="line.224"></a>
-<span class="sourceLineNo">225</span>   * @param scanInfo The store's immutable scan info<a name="line.225"></a>
-<span class="sourceLineNo">226</span>   * @param columns<a name="line.226"></a>
-<span class="sourceLineNo">227</span>   * @param earliestPutTs Earliest put seen in any of the store files.<a name="line.227"></a>
-<span class="sourceLineNo">228</span>   * @param oldestUnexpiredTS the oldest timestamp we are interested in, based on TTL<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   * @param now the current server time<a name="line.229"></a>
-<span class="sourceLineNo">230</span>   * @param dropDeletesFromRow The inclusive left bound of the range; can be EMPTY_START_ROW.<a name="line.230"></a>
-<span class="sourceLineNo">231</span>   * @param dropDeletesToRow The exclusive right bound of the range; can be EMPTY_END_ROW.<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   * @param regionCoprocessorHost <a name="line.232"></a>
-<span class="sourceLineNo">233</span>   * @throws IOException <a name="line.233"></a>
-<span class="sourceLineNo">234</span>   */<a name="line.234"></a>
-<span class="sourceLineNo">235</span>  public ScanQueryMatcher(Scan scan, ScanInfo scanInfo, NavigableSet&lt;byte[]&gt; columns,<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      long readPointToUse, long earliestPutTs, long oldestUnexpiredTS, long now,<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      byte[] dropDeletesFromRow, byte[] dropDeletesToRow,<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      RegionCoprocessorHost regionCoprocessorHost) throws IOException {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    this(scan, scanInfo, columns, ScanType.COMPACT_RETAIN_DELETES, readPointToUse, earliestPutTs,<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        oldestUnexpiredTS, now, regionCoprocessorHost);<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    Preconditions.checkArgument((dropDeletesFromRow != null) &amp;&amp; (dropDeletesToRow != null));<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    this.dropDeletesFromRow = dropDeletesFromRow;<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    this.dropDeletesToRow = dropDeletesToRow;<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>   * Constructor for tests<a name="line.247"></a>
-<span class="sourceLineNo">248</span>   */<a name="line.248"></a>
-<span class="sourceLineNo">249</span>  ScanQueryMatcher(Scan scan, ScanInfo scanInfo,<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      NavigableSet&lt;byte[]&gt; columns, long oldestUnexpiredTS, long now) throws IOException {<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    this(scan, scanInfo, columns, ScanType.USER_SCAN,<a name="line.251"></a>
-<span class="sourceLineNo">252</span>          Long.MAX_VALUE, /* max Readpoint to track versions */<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        HConstants.LATEST_TIMESTAMP, oldestUnexpiredTS, now, null);<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>  /**<a name="line.256"></a>
-<span class="sourceLineNo">257</span>   *<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   * @return  whether there is an null column in the query<a name="line.258"></a>
-<span class="sourceLineNo">259</span>   */<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  public boolean hasNullColumnInQuery() {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    return hasNullColumn;<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>   * Determines if the caller should do one of several things:<a name="line.265"></a>
-<span class="sourceLineNo">266</span>   * - seek/skip to the next row (MatchCode.SEEK_NEXT_ROW)<a name="line.266"></a>
-<span class="sourceLineNo">267</span>   * - seek/skip to the next column (MatchCode.SEEK_NEXT_COL)<a name="line.267"></a>
-<span class="sourceLineNo">268</span>   * - include the current KeyValue (MatchCode.INCLUDE)<a name="line.268"></a>
-<span class="sourceLineNo">269</span>   * - ignore the current KeyValue (MatchCode.SKIP)<a name="line.269"></a>
-<span class="sourceLineNo">270</span>   * - got to the next row (MatchCode.DONE)<a name="line.270"></a>
-<span class="sourceLineNo">271</span>   *<a name="line.271"></a>
-<span class="sourceLineNo">272</span>   * @param cell KeyValue to check<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   * @return The match code instance.<a name="line.273"></a>
-<span class="sourceLineNo">274</span>   * @throws IOException in case there is an internal consistency problem<a name="line.274"></a>
-<span class="sourceLineNo">275</span>   *      caused by a data corruption.<a name="line.275"></a>
-<span class="sourceLineNo">276</span>   */<a name="line.276"></a>
-<span class="sourceLineNo">277</span>  public MatchCode match(Cell cell) throws IOException {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    if (filter != null &amp;&amp; filter.filterAllRemaining()) {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      return MatchCode.DONE_SCAN;<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    }<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    int ret = this.rowComparator.compareRows(curCell, cell);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    if (!this.isReversed) {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      if (ret &lt;= -1) {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>        return MatchCode.DONE;<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      } else if (ret &gt;= 1) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>        // could optimize this, if necessary?<a name="line.286"></a>
-<span class="sourceLineNo">287</span>        // Could also be called SEEK_TO_CURRENT_ROW, but this<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        // should be rare/never happens.<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        return MatchCode.SEEK_NEXT_ROW;<a name="line.289"></a>
-<span class="sourceLineNo">290</span>      }<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    } else {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      if (ret &lt;= -1) {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        return MatchCode.SEEK_NEXT_ROW;<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      } else if (ret &gt;= 1) {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>        return MatchCode.DONE;<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><a name="line.298"></a>
-<span class="sourceLineNo">299</span>    // optimize case.<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    if (this.stickyNextRow)<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      return MatchCode.SEEK_NEXT_ROW;<a name="line.301"></a>
-<span class="sourceLineNo">302</span><a name="line.302"></a>
-<span class="sourceLineNo">303</span>    if (this.columns.done()) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>      stickyNextRow = true;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      return MatchCode.SEEK_NEXT_ROW;<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    }<a name="line.306"></a>
+<span class="sourceLineNo">199</span>    // Single branch to deal with two types of reads (columns vs all in family)<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    if (columns == null || columns.size() == 0) {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      // there is always a null column in the wildcard column query.<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      hasNullColumn = true;<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>      // use a specialized scan for wildcard column tracker.<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      this.columns = new ScanWildcardColumnTracker(<a name="line.205"></a>
+<span class="sourceLineNo">206</span>          scanInfo.getMinVersions(), maxVersions, oldestUnexpiredTS);<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    } else {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      // whether there is null column in the explicit column query<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      hasNullColumn = (columns.first().length == 0);<a name="line.209"></a>
+<span class="sourceLineNo">210</span><a name="line.210"></a>
+<span class="sourceLineNo">211</span>      // We can share the ExplicitColumnTracker, diff is we reset<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      // between rows, not between storefiles.<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      this.columns = new ExplicitColumnTracker(columns, scanInfo.getMinVersions(), maxVersions,<a name="line.213"></a>
+<span class="sourceLineNo">214</span>          oldestUnexpiredTS);<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    }<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    this.isReversed = scan.isReversed();<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 DeleteTracker instantiateDeleteTracker() throws IOException {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    DeleteTracker tracker = new ScanDeleteTracker();<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    if (regionCoprocessorHost != null) {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      tracker = regionCoprocessorHost.postInstantiateDeleteTracker(tracker);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    }<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    return tracker;<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>   * Construct a QueryMatcher for a scan that drop deletes from a limited range of rows.<a name="line.228"></a>
+<span class="sourceLineNo">229</span>   * @param scan<a name="line.229"></a>
+<span class="sourceLineNo">230</span>   * @param scanInfo The store's immutable scan info<a name="line.230"></a>
+<span class="sourceLineNo">231</span>   * @param columns<a name="line.231"></a>
+<span class="sourceLineNo">232</span>   * @param earliestPutTs Earliest put seen in any of the store files.<a name="line.232"></a>
+<span class="sourceLineNo">233</span>   * @param oldestUnexpiredTS the oldest timestamp we are interested in, based on TTL<a name="line.233"></a>
+<span class="sourceLineNo">234</span>   * @param now the current server time<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   * @param dropDeletesFromRow The inclusive left bound of the range; can be EMPTY_START_ROW.<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   * @param dropDeletesToRow The exclusive right bound of the range; can be EMPTY_END_ROW.<a name="line.236"></a>
+<span class="sourceLineNo">237</span>   * @param regionCoprocessorHost <a name="line.237"></a>
+<span class="sourceLineNo">238</span>   * @throws IOException <a name="line.238"></a>
+<span class="sourceLineNo">239</span>   */<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  public ScanQueryMatcher(Scan scan, ScanInfo scanInfo, NavigableSet&lt;byte[]&gt; columns,<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      long readPointToUse, long earliestPutTs, long oldestUnexpiredTS, long now,<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      byte[] dropDeletesFromRow, byte[] dropDeletesToRow,<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      RegionCoprocessorHost regionCoprocessorHost) throws IOException {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    this(scan, scanInfo, columns, ScanType.COMPACT_RETAIN_DELETES, readPointToUse, earliestPutTs,<a name="line.244"></a>
+<span class="sourceLineNo">245</span>        oldestUnexpiredTS, now, regionCoprocessorHost);<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    Preconditions.checkArgument((dropDeletesFromRow != null) &amp;&amp; (dropDeletesToRow != null));<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    this.dropDeletesFromRow = dropDeletesFromRow;<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    this.dropDeletesToRow = dropDeletesToRow;<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>   * Constructor for tests<a name="line.252"></a>
+<span class="sourceLineNo">253</span>   */<a name="line.253"></a>
+<span class="sourceLineNo">254</span>  ScanQueryMatcher(Scan scan, ScanInfo scanInfo,<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      NavigableSet&lt;byte[]&gt; columns, long oldestUnexpiredTS, long now) throws IOException {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    this(scan, scanInfo, columns, ScanType.USER_SCAN,<a name="line.256"></a>
+<span class="sourceLineNo">257</span>          Long.MAX_VALUE, /* max Readpoint to track versions */<a name="line.257"></a>
+<span class="sourceLineNo">258</span>        HConstants.LATEST_TIMESTAMP, oldestUnexpiredTS, now, null);<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>   *<a name="line.262"></a>
+<span class="sourceLineNo">263</span>   * @return  whether there is an null column in the query<a name="line.263"></a>
+<span class="sourceLineNo">264</span>   */<a name="line.264"></a>
+<span class="sourceLineNo">265</span>  public boolean hasNullColumnInQuery() {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    return hasNullColumn;<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>   * Determines if the caller should do one of several things:<a name="line.270"></a>
+<span class="sourceLineNo">271</span>   * - seek/skip to the next row (MatchCode.SEEK_NEXT_ROW)<a name="line.271"></a>
+<span class="sourceLineNo">272</span>   * - seek/skip to the next column (MatchCode.SEEK_NEXT_COL)<a name="line.272"></a>
+<span class="sourceLineNo">273</span>   * - include the current KeyValue (MatchCode.INCLUDE)<a name="line.273"></a>
+<span class="sourceLineNo">274</span>   * - ignore the current KeyValue (MatchCode.SKIP)<a name="line.274"></a>
+<span class="sourceLineNo">275</span>   * - got to the next row (MatchCode.DONE)<a name="line.275"></a>
+<span class="sourceLineNo">276</span>   *<a name="line.276"></a>
+<span class="sourceLineNo">277</span>   * @param cell KeyValue to check<a name="line.277"></a>
+<span class="sourceLineNo">278</span>   * @return The match code instance.<a name="line.278"></a>
+<span class="sourceLineNo">279</span>   * @throws IOException in case there is an internal consistency problem<a name="line.279"></a>
+<span class="sourceLineNo">280</span>   *      caused by a data corruption.<a name="line.280"></a>
+<span class="sourceLineNo">281</span>   */<a name="line.281"></a>
+<span class="sourceLineNo">282</span>  public MatchCode match(Cell cell) throws IOException {<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      if (filter != null &amp;&amp; filter.filterAllRemaining()) {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      return MatchCode.DONE_SCAN;<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    }<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    int ret = this.rowComparator.compareRows(curCell, cell);<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    if (!this.isReversed) {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      if (ret &lt;= -1) {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>        return MatchCode.DONE;<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      } else if (ret &gt;= 1) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        // could optimize this, if necessary?<a name="line.291"></a>
+<span class="sourceLineNo">292</span>        // Could also be called SEEK_TO_CURRENT_ROW, but this<a name="line.292"></a>
+<span class="sourceLineNo">293</span>        // should be rare/never happens.<a name="line.293"></a>
+<span class="sourceLineNo">294</span>        return MatchCode.SEEK_NEXT_ROW;<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      }<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    } else {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      if (ret &lt;= -1) {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        return MatchCode.SEEK_NEXT_ROW;<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      } else if (ret &gt;= 1) {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        return MatchCode.DONE;<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>    // optimize case.<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    if (this.stickyNextRow)<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      return MatchCode.SEEK_NEXT_ROW;<a name="line.306"></a>
 <span class="sourceLineNo">307</span><a name="line.307"></a>
-<span class="sourceLineNo">308</span>    long timestamp = cell.getTimestamp();<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    // check for early out based on timestamp alone<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    if (columns.isDone(timestamp)) {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      return columns.getNextRowOrNextColumn(cell);<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    }<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    // check if the cell is expired by cell TTL<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    if (HStore.isCellTTLExpired(cell, this.oldestUnexpiredTS, this.now)) {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>      return MatchCode.SKIP;<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    }    <a name="line.316"></a>
-<span class="sourceLineNo">317</span><a name="line.317"></a>
-<span class="sourceLineNo">318</span>    /*<a name="line.318"></a>
-<span class="sourceLineNo">319</span>     * The delete logic is pretty complicated now.<a name="line.319"></a>
-<span class="sourceLineNo">320</span>     * This is corroborated by the following:<a name="line.320"></a>
-<span class="sourceLineNo">321</span>     * 1. The store might be instructed to keep deleted rows around.<a name="line.321"></a>
-<span class="sourceLineNo">322</span>     * 2. A scan can optionally see past a delete marker now.<a name="line.322"></a>
-<span class="sourceLineNo">323</span>     * 3. If deleted rows are kept, we have to find out when we can<a name="line.323"></a>
-<span class="sourceLineNo">324</span>     *    remove the delete markers.<a name="line.324"></a>
-<span class="sourceLineNo">325</span>     * 4. Family delete markers are always first (regardless of their TS)<a name="line.325"></a>
-<span class="sourceLineNo">326</span>     * 5. Delete markers should not be counted as version<a name="line.326"></a>
-<span class="sourceLineNo">327</span>     * 6. Delete markers affect puts of the *same* TS<a name="line.327"></a>
-<span class="sourceLineNo">328</span>     * 7. Delete marker need to be version counted together with puts<a name="line.328"></a>
-<span class="sourceLineNo">329</span>     *    they affect<a name="line.329"></a>
-<span class="sourceLineNo">330</span>     */<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    byte typeByte = cell.getTypeByte();<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    long mvccVersion = cell.getSequenceId();<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    if (CellUtil.isDelete(cell)) {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      if (keepDeletedCells == KeepDeletedCells.FALSE<a name="line.334"></a>
-<span class="sourceLineNo">335</span>          || (keepDeletedCells == KeepDeletedCells.TTL &amp;&amp; timestamp &lt; ttl)) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        // first ignore delete markers if the scanner can do so, and the<a name="line.336"></a>
-<span class="sourceLineNo">337</span>        // range does not include the marker<a name="line.337"></a>
-<span class="sourceLineNo">338</span>        //<a name="line.338"></a>
-<span class="sourceLineNo">339</span>        // during flushes and compactions also ignore delete markers newer<a name="line.339"></a>
-<span class="sourceLineNo">340</span>        // than the readpoint of any open scanner, this prevents deleted<a name="line.340"></a>
-<span class="sourceLineNo">341</span>        // rows that could still be seen by a scanner from being collected<a name="line.341"></a>
-<span class="sourceLineNo">342</span>        boolean includeDeleteMarker = seePastDeleteMarkers ?<a name="line.342"></a>
-<span class="sourceLineNo">343</span>            tr.withinTimeRange(timestamp) :<a name="line.343"></a>
-<span class="sourceLineNo">344</span>            tr.withinOrAfterTimeRange(timestamp);<a name="line.344"></a>
-<span class="sourceLineNo">345</span>        if (includeDeleteMarker<a name="line.345"></a>
-<span class="sourceLineNo">346</span>            &amp;&amp; mvccVersion &lt;= maxReadPointToTrackVersions) {<a name="line.346"></a>
-<span class="sourceLineNo">347</span>          this.deletes.add(cell);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>        }<a name="line.348"></a>
-<span class="sourceLineNo">349</span>        // Can't early out now, because DelFam come before any other keys<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>      if ((!isUserScan)<a name="line.352"></a>
-<span class="sourceLineNo">353</span>          &amp;&amp; timeToPurgeDeletes &gt; 0<a name="line.353"></a>
-<span class="sourceLineNo">354</span>          &amp;&amp; (EnvironmentEdgeManager.currentTime() - timestamp) <a name="line.354"></a>
-<span class="sourceLineNo">355</span>            &lt;= timeToPurgeDeletes) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>        return MatchCode.INCLUDE;<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      } else if (retainDeletesInOutput || mvccVersion &gt; maxReadPointToTrackVersions) {<a name="line.357"></a>
-<span class="sourceLineNo">358</span>        // always include or it is not time yet to check whether it is OK<a name="line.358"></a>
-<span class="sourceLineNo">359</span>        // to purge deltes or not<a name="line.359"></a>
-<span class="sourceLineNo">360</span>        if (!isUserScan) {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>          // if this is not a user scan (compaction), we can filter this deletemarker right here<a name="line.361"></a>
-<span class="sourceLineNo">362</span>          // otherwise (i.e. a "raw" scan) we fall through to normal version and timerange checking<a name="line.362"></a>
-<span class="sourceLineNo">363</span>          return MatchCode.INCLUDE;<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        }<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      } else if (keepDeletedCells == KeepDeletedCells.TRUE<a name="line.365"></a>
-<span class="sourceLineNo">366</span>          || (keepDeletedCells == KeepDeletedCells.TTL &amp;&amp; timestamp &gt;= ttl)) {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        if (timestamp &lt; earliestPutTs) {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>          // keeping delete rows, but there are no puts older than<a name="line.368"></a>
-<span class="sourceLineNo">369</span>          // this delete in the store files.<a name="line.369"></a>
-<span class="sourceLineNo">370</span>          return columns.getNextRowOrNextColumn(cell);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>        }<a name="line.371"></a>
-<span class="sourceLineNo">372</span>        // else: fall through and do version counting on the<a name="line.372"></a>
-<span class="sourceLineNo">373</span>        // delete markers<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      } else {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>        return MatchCode.SKIP;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      }<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      // note the following next else if...<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      // delete marker are not subject to other delete markers<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    } else if (!this.deletes.isEmpty()) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      DeleteResult deleteResult = deletes.isDeleted(cell);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      switch (deleteResult) {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>        case FAMILY_DELETED:<a name="line.382"></a>
-<span class="sourceLineNo">383</span>        case COLUMN_DELETED:<a name="line.383"></a>
-<span class="sourceLineNo">384</span>          return columns.getNextRowOrNextColumn(cell);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>        case VERSION_DELETED:<a name="line.385"></a>
-<span class="sourceLineNo">386</span>        case FAMILY_VERSION_DELETED:<a name="line.386"></a>
-<span class="sourceLineNo">387</span>          return MatchCode.SKIP;<a name="line.387"></a>
-<span class="sourceLineNo">388</span>        case NOT_DELETED:<a name="line.388"></a>
-<span class="sourceLineNo">389</span>          break;<a name="line.389"></a>
-<span class="sourceLineNo">390</span>        default:<a name="line.390"></a>
-<span class="sourceLineNo">391</span>          throw new RuntimeException("UNEXPECTED");<a name="line.391"></a>
-<span class="sourceLineNo">392</span>        }<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    }<a name="line.393"></a>
-<span class="sourceLineNo">394</span><a name="line.394"></a>
-<span class="sourceLineNo">395</span>    int timestampComparison = tr.compare(timestamp);<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    if (timestampComparison &gt;= 1) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      return MatchCode.SKIP;<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    } else if (timestampComparison &lt;= -1) {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      return columns.getNextRowOrNextColumn(cell);<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>    // STEP 1: Check if the column is part of the requested columns<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    MatchCode colChecker = columns.checkColumn(cell, typeByte);<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    if (colChecker == MatchCode.INCLUDE) {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      ReturnCode filterResponse = ReturnCode.SKIP;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      // STEP 2: Yes, the column is part of the requested columns. Check if filter is present<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      if (filter != null) {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>        // STEP 3: Filter the key value and return if it filters out<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        filterResponse = filter.filterKeyValue(cell);<a name="line.409"></a>
-<span class="sourceLineNo">410</span>        switch (filterResponse) {<a name="line.410"></a>
-<span class="sourceLineNo">411</span>        case SKIP:<a name="line.411"></a>
-<span class="sourceLineNo">412</span>          return MatchCode.SKIP;<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        case NEXT_COL:<a name="line.413"></a>
-<span class="sourceLineNo">414</span>          return columns.getNextRowOrNextColumn(cell);<a name="line.414"></a>
-<span class="sourceLineNo">415</span>        case NEXT_ROW:<a name="line.415"></a>
-<span class="sourceLineNo">416</span>          stickyNextRow = true;<a name="line.416"></a>
-<span class="sourceLineNo">417</span>          return MatchCode.SEEK_NEXT_ROW;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>        case SEEK_NEXT_USING_HINT:<a name="line.418"></a>
-<span class="sourceLineNo">419</span>          return MatchCode.SEEK_NEXT_USING_HINT;<a name="line.419"></a>
-<span class="sourceLineNo">420</span>        default:<a name="line.420"></a>
-<span class="sourceLineNo">421</span>          //It means it is either include or include and seek next<a name="line.421"></a>
-<span class="sourceLineNo">422</span>          break;<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>      /*<a name="line.425"></a>
-<span class="sourceLineNo">426</span>       * STEP 4: Reaching this step means the column is part of the requested columns and either<a name="line.426"></a>
-<span class="sourceLineNo">427</span>       * the filter is null or the filter has returned INCLUDE or INCLUDE_AND_NEXT_COL response.<a name="line.427"></a>
-<span class="sourceLineNo">428</span>       * Now check the number of versions needed. This method call returns SKIP, INCLUDE,<a name="line.428"></a>
-<span class="sourceLineNo">429</span>       * INCLUDE_AND_SEEK_NEXT_ROW, INCLUDE_AND_SEEK_NEXT_COL.<a name="line.429"></a>
-<span class="sourceLineNo">430</span>       *<a name="line.430"></a>
-<span class="sourceLineNo">431</span>       * FilterResponse            ColumnChecker               Desired behavior<a name="line.431"></a>
-<span class="sourceLineNo">432</span>       * INCLUDE                   SKIP                        row has already been included, SKIP.<a name="line.432"></a>
-<span class="sourceLineNo">433</span>       * INCLUDE                   INCLUDE                     INCLUDE<a name="line.433"></a>
-<span class="sourceLineNo">434</span>       * INCLUDE                   INCLUDE_AND_SEEK_NEXT_COL   INCLUDE_AND_SEEK_NEXT_COL<a name="line.434"></a>
-<span class="sourceLineNo">435</span>       * INCLUDE                   INCLUDE_AND_SEEK_NEXT_ROW   INCLUDE_AND_SEEK_NEXT_ROW<a name="line.435"></a>
-<span class="sourceLineNo">436</span>       * INCLUDE_AND_SEEK_NEXT_COL SKIP                        row has already been included, SKIP.<a name="line.436"></a>
-<span class="sourceLineNo">437</span>       * INCLUDE_AND_SEEK_NEXT_COL INCLUDE                     INCLUDE_AND_SEEK_NEXT_COL<a name="line.437"></a>
-<span class="sourceLineNo">438</span>       * INCLUDE_AND_SEEK_NEXT_COL INCLUDE_AND_SEEK_NEXT_COL   INCLUDE_AND_SEEK_NEXT_COL<a name="line.438"></a>
-<span class="sourceLineNo">439</span>       * INCLUDE_AND_SEEK_NEXT_COL INCLUDE_AND_SEEK_NEXT_ROW   INCLUDE_AND_SEEK_NEXT_ROW<a name="line.439"></a>
-<span class="sourceLineNo">440</span>       *<a name="line.440"></a>
-<span class="sourceLineNo">441</span>       * In all the above scenarios, we return the column checker return value except for<a name="line.441"></a>
-<span class="sourceLineNo">442</span>       * FilterResponse (INCLUDE_AND_SEEK_NEXT_COL) and ColumnChecker(INCLUDE)<a name="line.442"></a>
-<span class="sourceLineNo">443</span>       */<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      colChecker = columns.checkVersions(cell, timestamp, typeByte,<a name="line.444"></a>
-<span class="sourceLineNo">445</span>          mvccVersion &gt; maxReadPointToTrackVersions);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      //Optimize with stickyNextRow<a name="line.446"></a>
-<span class="sourceLineNo">447</span>      boolean seekNextRowFromEssential = filterResponse == ReturnCode.INCLUDE_AND_SEEK_NEXT_ROW &amp;&amp;<a name="line.447"></a>
-<span class="sourceLineNo">448</span>          filter.isFamilyEssential(cell.getFamilyArray());<a name="line.448"></a>
-<span class="sourceLineNo">449</span>      if (colChecker == MatchCode.INCLUDE_AND_SEEK_NEXT_ROW || seekNextRowFromEssential) {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>        stickyNextRow = true;<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      }<a name="line.451"></a>
-<span class="sourceLineNo">452</span>      if (filterResponse == ReturnCode.INCLUDE_AND_SEEK_NEXT_ROW) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>        if (colChecker != MatchCode.SKIP) {<a name="line.453"></a>
-<span class="sourceLineNo">454</span>          return MatchCode.INCLUDE_AND_SEEK_NEXT_ROW;<a name="line.454"></a>
-<span class="sourceLineNo">455</span>        }<a name="line.455"></a>
-<span class="sourceLineNo">456</span>        return MatchCode.SEEK_NEXT_ROW;<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      }<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      return (filterResponse == ReturnCode.INCLUDE_AND_NEXT_COL &amp;&amp;<a name="line.458"></a>
-<span class="sourceLineNo">459</span>          colChecker == MatchCode.INCLUDE) ? MatchCode.INCLUDE_AND_SEEK_NEXT_COL<a name="line.459"></a>
-<span class="sourceLineNo">460</span>          : colChecker;<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    }<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    stickyNextRow = (colChecker == MatchCode.SEEK_NEXT_ROW) ? true<a name="line.462"></a>
-<span class="sourceLineNo">463</span>        : stickyNextRow;<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    return colChecker;<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>  /** Handle partial-drop-deletes. As we match keys in order, when we have a range from which<a name="line.467"></a>
-<span class="sourceLineNo">468</span>   * we can drop deletes, we can set retainDeletesInOutput to false for the duration of this<a name="line.468"></a>
-<span class="sourceLineNo">469</span>   * range only, and maintain consistency. */<a name="line.469"></a>
-<span class="sourceLineNo">470</span>  private void checkPartialDropDeleteRange(Cell curCell) {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    // If partial-drop-deletes are used, initially, dropDeletesFromRow and dropDeletesToRow<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    // are both set, and the matcher is set to retain deletes. We assume ordered keys. When<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    // dropDeletesFromRow is leq current kv, we start dropping deletes and reset<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    // dropDeletesFromRow; thus the 2nd "if" starts to apply.<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    if ((dropDeletesFromRow != null)<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        &amp;&amp; (Arrays.equals(dropDeletesFromRow, HConstants.EMPTY_START_ROW) ||<a name="line.476"></a>
-<span class="sourceLineNo">477</span>            (CellComparator.COMPARATOR.compareRows(curCell, dropDeletesFromRow, 0,<a name="line.477"></a>
-<span class="sourceLineNo">478</span>                dropDeletesFromRow.length) &gt;= 0))) {<a name="line.478"></a>
-<span class="sourceLineNo">479</span>      retainDeletesInOutput = false;<a name="line.479"></a>
-<span class="sourceLineNo">480</span>      dropDeletesFromRow = null;<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    }<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    // If dropDeletesFromRow is null and dropDeletesToRow is set, we are inside the partial-<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    // drop-deletes range. When dropDeletesToRow is leq current kv, we stop dropping deletes,<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    // and reset dropDeletesToRow so that we don't do any more compares.<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    if ((dropDeletesFromRow == null)<a name="line.485"></a>
-<span class="sourceLineNo">486</span>        &amp;&amp; (dropDeletesToRow != null)<a name="line.486"></a>
-<span class="sourceLineNo">487</span>        &amp;&amp; !Arrays.equals(dropDeletesToRow, HConstants.EMPTY_END_ROW)<a name="line.487"></a>
-<span class="sourceLineNo">488</span>        &amp;&amp; (CellComparator.COMPARATOR<a name="line.488"></a>
-<span class="sourceLineNo">489</span>            .compareRows(curCell, dropDeletesToRow, 0, dropDeletesToRow.length) &gt;= 0)) {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>      retainDeletesInOutput = true;<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      dropDeletesToRow = null;<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>  public boolean moreRowsMayExistAfter(Cell kv) {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    if (this.isReversed) {<a name="line.496"></a>
-<span class="sourceLineNo">497</span>      if (rowComparator.compareRows(kv, stopRow, 0, stopRow.length) &lt;= 0) {<a name="line.497"></a>
-<span class="sourceLineNo">498</span>        return false;<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      } else {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>        return true;<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>    if (!Bytes.equals(stopRow , HConstants.EMPTY_END_ROW) &amp;&amp;<a name="line.503"></a>
-<span class="sourceLineNo">504</span>        rowComparator.compareRows(kv, stopRow, 0, stopRow.length) &gt;= 0) {<a name="line.504"></a>
-<span class="sourceLineNo">505</span>      // KV &gt;= STOPROW<a name="line.505"></a>
-<span class="sourceLineNo">506</span>      // then NO there is nothing left.<a name="line.506"></a>
-<span class="sourceLineNo">507</span>      return false;<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    } else {<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      return true;<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    }<a name="line.510"></a>
-<span class="sourceLineNo">511</span>  }<a name="line.511"></a>
-<span class="sourceLineNo">512</span><a name="line.512"></a>
-<span class="sourceLineNo">513</span>  /**<a name="line.513"></a>
-<span class="sourceLineNo">514</span>   * Set the row when there is change in row<a name="line.514"></a>
-<span class="sourceLineNo">515</span>   * @param curCell<a name="line.515"></a>
-<span class="sourceLineNo">516</span>   */<a name="line.516"></a>
-<span class="sourceLineNo">517</span>  public void setToNewRow(Cell curCell) {<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    checkPartialDropDeleteRange(curCell);<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    this.curCell = curCell;<a name="line.519"></a>
-<span class="sourceLineNo">520</span>    reset();<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>  public void reset() {<a name="line.523"></a>
-<span class="sourceLineNo">524</span>    this.deletes.reset();<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    this.columns.reset();<a name="line.525"></a>
-<span class="sourceLineNo">526</span><a name="line.526"></a>
-<span class="sourceLineNo">527</span>    stickyNextRow = false;<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>   * @return the start key<a name="line.532"></a>
-<span class="sourceLineNo">533</span>   */<a name="line.533"></a>
-<span class="sourceLineNo">534</span>  public Cell getStartKey() {<a name="line.534"></a>
-<span class="sourceLineNo">535</span>    return this.startKey;<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>   * @return the Filter<a name="line.540"></a>
-<span class="sourceLineNo">541</span>   */<a name="line.541"></a>
-<span class="sourceLineNo">542</span>  Filter getFilter() {<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    return this.filter;<a name="line.543"></a>
-<span class="sourceLineNo">544</span>  }<a name="line.544"></a>
-<span class="sourceLineNo">545</span><a name="line.545"></a>
-<span class="sourceLineNo">546</span>  public Cell getNextKeyHint(Cell kv) throws IOException {<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    if (filter == null) {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>      return null;<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    } else {<a name="line.549"></a>
-<span class="sourceLineNo">550</span>      return filter.getNextCellHint(kv);<a name="line.550"></a>
-<span class="sourceLineNo">551</span>    }<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 Cell getKeyForNextColumn(Cell kv) {<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    ColumnCount nextColumn = columns.getColumnHint();<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    if (nextColumn == null) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      return CellUtil.createLastOnRowCol(kv);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>    } else {<a name="line.558"></a>
-<span class="sourceLineNo">559</span>      return CellUtil.createFirstOnRowCol(kv, nextColumn.getBuffer(), nextColumn.getOffset(),<a name="line.559"></a>
-<span class="sourceLineNo">560</span>          nextColumn.getLength());<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>  public Cell getKeyForNextRow(Cell c) {<a name="line.564"></a>
-<span class="sourceLineNo">565</span>    return CellUtil.createLastOnRow(c);<a name="line.565"></a>
-<span class="sourceLineNo">566</span>  }<a name="line.566"></a>
-<span class="sourceLineNo">567</span><a name="line.567"></a>
-<span class="sourceLineNo">568</span>  /**<a name="line.568"></a>
-<span class="sourceLineNo">569</span>   * @param nextIndexed the key of the next entry in the block index (if any)<a name="line.569"></a>
-<span class="sourceLineNo">570</span>   * @param kv The Cell we're using to calculate the seek key<a name="line.570"></a>
-<span class="sourceLineNo">571</span>   * @return result of the compare between the indexed key and the key portion of the passed cell<a name="line.571"></a>
-<span class="sourceLineNo">572</span>   */<a name="line.572"></a>
-<span class="sourceLineNo">573</span>  public int compareKeyForNextRow(Cell nextIndexed, Cell kv) {<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    return rowComparator.compareKeyBasedOnColHint(nextIndexed, kv, 0, 0, null, 0, 0,<a name="line.574"></a>
-<span class="sourceLineNo">575</span>        HConstants.OLDEST_TIMESTAMP, Type.Minimum.getCode());<a name="line.575"></a>
-<span class="sourceLineNo">576</span>  }<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>   * @param nextIndexed the key of the next entry in the block index (if any)<a name="line.579"></a>
-<span class="sourceLineNo">580</span>   * @param currentCell The Cell we're using to calculate the seek key<a name="line.580"></a>
-<span class="sourceLineNo">581</span>   * @return result of the compare between the indexed key and the key portion of the passed cell<a name="line.581"></a>
-<span class="sourceLineNo">582</span>   */<a name="line.582"></a>
-<span class="sourceLineNo">583</span>  public int compareKeyForNextColumn(Cell nextIndexed, Cell currentCell) {<a name="line.583"></a>
-<span class="sourceLineNo">584</span>    ColumnCount nextColumn = columns.getColumnHint();<a name="line.584"></a>
-<span class="sourceLineNo">585</span>    if (nextColumn == null) {<a name="line.585"></a>
-<span class="sourceLineNo">586</span>      return rowComparator.compareKeyBasedOnColHint(nextIndexed, currentCell, 0, 0, null, 0, 0,<a name="line.586"></a>
-<span class="sourceLineNo">587</span>          HConstants.OLDEST_TIMESTAMP, Type.Minimum.getCode());<a name="line.587"></a>
-<span class="sourceLineNo">588</span>    } else {<a name="line.588"></a>
-<span class="sourceLineNo">589</span>      return rowComparator.compareKeyBasedOnColHint(nextIndexed, currentCell,<a name="line.589"></a>
-<span class="sourceLineNo">590</span>          currentCell.getFamilyOffset(), currentCell.getFamilyLength(), nextColumn.getBuffer(),<a name="line.590"></a>
-<span class="sourceLineNo">591</span>          nextColumn.getOffset(), nextColumn.getLength(), HConstants.LATEST_TIMESTAMP,<a name="line.591"></a>
-<span class="sourceLineNo">592</span>          Type.Maximum.getCode());<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    }<a name="line.593"></a>
-<span class="sourceLineNo">594</span>  }<a name="line.594"></a>
-<span class="sourceLineNo">595</span><a name="line.595"></a>
-<span class="sourceLineNo">596</span>  //Used only for testing purposes<a name="line.596"></a>
-<span class="sourceLineNo">597</span>  static MatchCode checkColumn(ColumnTracker columnTracker, byte[] bytes, int offset,<a name="line.597"></a>
-<span class="sourceLineNo">598</span>      int length, long ttl, byte type, boolean ignoreCount) throws IOException {<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    KeyValue kv = KeyValueUtil.createFirstOnRow(HConstants.EMPTY_BYTE_ARRAY, 0, 0,<a name="line.599"></a>
-<span class="sourceLineNo">600</span>        HConstants.EMPTY_BYTE_ARRAY, 0, 0, bytes, offset, length);<a name="line.600"></a>
-<span class="sourceLineNo">601</span>    MatchCode matchCode = columnTracker.checkColumn(kv, type);<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    if (matchCode == MatchCode.INCLUDE) {<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      return columnTracker.checkVersions(kv, ttl, type, ignoreCount);<a name="line.603"></a>
-<span class="sourceLineNo">604</span>    }<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    return matchCode;<a name="line.605"></a>
-<span class="sourceLineNo">606</span>  }<a name="line.606"></a>
-<span class="sourceLineNo">607</span><a name="line.607"></a>
-<span class="sourceLineNo">608</span>  /**<a name="line.608"></a>
-<span class="sourceLineNo">609</span>   * {@link #match} return codes.  These instruct the scanner moving through<a name="line.609"></a>
-<span class="sourceLineNo">610</span>   * memstores and StoreFiles what to do with the current KeyValue.<a name="line.610"></a>
-<span class="sourceLineNo">611</span>   * &lt;p&gt;<a name="line.611"></a>
-<span class="sourceLineNo">612</span>   * Additionally, this contains "early-out" language to tell the scanner to<a name="line.612"></a>
-<span class="sourceLineNo">613</span>   * move on to the next File (memstore or Storefile), or to return immediately.<a name="line.613"></a>
-<span class="sourceLineNo">614</span>   */<a name="line.614"></a>
-<span class="sourceLineNo">615</span>  public static enum MatchCode {<a name="line.615"></a>
-<span class="sourceLineNo">616</span>    /**<a name="line.616"></a>
-<span class="sourceLineNo">617</span>     * Include KeyValue in the returned result<a name="line.617"></a>
-<span class="sourceLineNo">618</span>     */<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    INCLUDE,<a name="line.619"></a>
-<span class="sourceLineNo">620</span><a name="line.620"></a>
+<span class="sourceLineNo">308</span>    if (this.columns.done()) {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      stickyNextRow = true;<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      return MatchCode.SEEK_NEXT_ROW;<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>    long timestamp = cell.getTimestamp();<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    // check for early out based on timestamp alone<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    if (columns.isDone(timestamp)) {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>      return columns.getNextRowOrNextColumn(cell);<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    }<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    // check if the cell is expired by cell TTL<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    if (HStore.isCellTTLExpired(cell, this.oldestUnexpiredTS, this.now)) {<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      return MatchCode.SKIP;<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>     * The delete logic is pretty complicated now.<a name="line.324"></a>
+<span class="sourceLineNo">325</span>     * This is corroborated by the following:<a name="line.325"></a>
+<span class="sourceLineNo">326</span>     * 1. The store might be instructed to keep deleted rows around.<a name="line.326"></a>
+<span class="sourceLineNo">327</span>     * 2. A scan can optionally see past a delete marker now.<a name="line.327"></a>
+<span class="sourceLineNo">328</span>     * 3. If deleted rows are kept, we have to find out when we can<a name="line.328"></a>
+<span class="sourceLineNo">329</span>     *    remove the delete markers.<a name="line.329"></a>
+<span class="sourceLineNo">330</span>     * 4. Family delete markers are always first (regardless of their TS)<a name="line.330"></a>
+<span class="sourceLineNo">331</span>     * 5. Delete markers should not be counted as version<a name="line.331"></a>
+<span class="sourceLineNo">332</span>     * 6. Delete markers affect puts of the *same* TS<a name="line.332"></a>
+<span class="sourceLineNo">333</span>     * 7. Delete marker need to be version counted together with puts<a name="line.333"></a>
+<span class="sourceLineNo">334</span>     *    they affect<a name="line.334"></a>
+<span class="sourceLineNo">335</span>     */<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    byte typeByte = cell.getTypeByte();<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    long mvccVersion = cell.getSequenceId();<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    if (CellUtil.isDelete(cell)) {<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      if (keepDeletedCells == KeepDeletedCells.FALSE<a name="line.339"></a>
+<span class="sourceLineNo">340</span>          || (keepDeletedCells == KeepDeletedCells.TTL &amp;&amp; timestamp &lt; ttl)) {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>        // first ignore delete markers if the scanner can do so, and the<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        // range does not include the marker<a name="line.342"></a>
+<span class="sourceLineNo">343</span>        //<a name="line.343"></a>
+<span class="sourceLineNo">344</span>        // during flushes and compactions also ignore delete markers newer<a name="line.344"></a>
+<span class="sourceLineNo">345</span>        // than the readpoint of any open scanner, this prevents deleted<a name="line.345"></a>
+<span class="sourceLineNo">346</span>        // rows that could still be seen by a scanner from being collected<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        boolean includeDeleteMarker = seePastDeleteMarkers ?<a name="line.347"></a>
+<span class="sourceLineNo">348</span>            tr.withinTimeRange(timestamp) :<a name="line.348"></a>
+<span class="sourceLineNo">349</span>            tr.withinOrAfterTimeRange(timestamp);<a name="line.349"></a>
+<span class="sourceLineNo">350</span>        if (includeDeleteMarker<a name="line.350"></a>
+<span class="sourceLineNo">351</span>            &amp;&amp; mvccVersion &lt;= maxReadPointToTrackVersions) {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>          this.deletes.add(cell);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>        }<a name="line.353"></a>
+<span class="sourceLineNo">354</span>        // Can't early out now, because DelFam come before any other keys<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>      if ((!isUserScan)<a name="line.357"></a>
+<span class="sourceLineNo">358</span>          &amp;&amp; timeToPurgeDeletes &gt; 0<a name="line.358"></a>
+<span class="sourceLineNo">359</span>          &amp;&amp; (EnvironmentEdgeManager.currentTime() - timestamp) <a name="line.359"></a>
+<span class="sourceLineNo">360</span>            &lt;= timeToPurgeDeletes) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>        return MatchCode.INCLUDE;<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      } else if (retainDeletesInOutput || mvccVersion &gt; maxReadPointToTrackVersions) {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>        // always include or it is not time yet to check whether it is OK<a name="line.363"></a>
+<span class="sourceLineNo">364</span>        // to purge deltes or not<a name="line.364"></a>
+<span class="sourceLineNo">365</span>        if (!isUserScan) {<a name="line.365"></a>
+<span class="sourceLineNo">366</span>          // if this is not a user scan (compaction), we can filter this deletemarker right here<a name="line.366"></a>
+<span class="sourceLineNo">367</span>          // otherwise (i.e. a "raw" scan) we fall through to normal version and timerange checking<a name="line.367"></a>
+<span class="sourceLineNo">368</span>          return MatchCode.INCLUDE;<a name="line.368"></a>
+<span class="sourceLineNo">369</span>        }<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      } else if (keepDeletedCells == KeepDeletedCells.TRUE<a name="line.370"></a>
+<span class="sourceLineNo">371</span>          || (keepDeletedCells == KeepDeletedCells.TTL &amp;&amp; timestamp &gt;= ttl)) {<a name="line.371"></a>
+<span class="sourceLineNo">372</span>        if (timestamp &lt; earliestPutTs) {<a name="line.372"></a>
+<span class="sourceLineNo">373</span>          // keeping delete rows, but there are no puts older than<a name="line.373"></a>
+<span class="sourceLineNo">374</span>          // this delete in the store files.<a name="line.374"></a>
+<span class="sourceLineNo">375</span>          return columns.getNextRowOrNextColumn(cell);<a name="line.375"></a>
+<span class="sourceLineNo">376</span>        }<a name="line.376"></a>
+<span class="sourceLineNo">377</span>        // else: fall through and do version counting on the<a name="line.377"></a>
+<span class="sourceLineNo">378</span>        // delete markers<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      } else {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>        return MatchCode.SKIP;<a name="line.380"></a>
+<span class="sourceLineNo">381</span>      }<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      // note the following next else if...<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      // delete marker are not subject to other delete markers<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    } else if (!this.deletes.isEmpty()) {<a name="line.384"></a>
+<span class="sourceLineNo">385</span>      DeleteResult deleteResult = deletes.isDeleted(cell);<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      switch (deleteResult) {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>        case FAMILY_DELETED:<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        case COLUMN_DELETED:<a name="line.388"></a>
+<span class="sourceLineNo">389</span>          return columns.getNextRowOrNextColumn(cell);<a name="line.389"></a>
+<span class="sourceLineNo">390</span>        case VERSION_DELETED:<a name="line.390"></a>
+<span class="sourceLineNo">391</span>        case FAMILY_VERSION_DELETED:<a name="line.391"></a>
+<span class="sourceLineNo">392</span>          return MatchCode.SKIP;<a name="line.392"></a>
+<span class="sourceLineNo">393</span>        case NOT_DELETED:<a name="line.393"></a>
+<span class="sourceLineNo">394</span>          break;<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        default:<a name="line.395"></a>
+<span class="sourceLineNo">396</span>          throw new RuntimeException("UNEXPECTED");<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>    int timestampComparison = tr.compare(timestamp);<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    if (timestampComparison &gt;= 1) {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      return MatchCode.SKIP;<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    } else if (timestampComparison &lt;= -1) {<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      return columns.getNextRowOrNextColumn(cell);<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>    // STEP 1: Check if the column is part of the requested columns<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    MatchCode colChecker = columns.checkColumn(cell, typeByte);<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    if (colChecker == MatchCode.INCLUDE) {<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      ReturnCode filterResponse = ReturnCode.SKIP;<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      // STEP 2: Yes, the column is part of the requested columns. Check if filter is present<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      if (filter != null) {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        // STEP 3: Filter the key value and return if it filters out<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        filterResponse = filter.filterKeyValue(cell);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        switch (filterResponse) {<a name="line.415"></a>
+<span class="sourceLineNo">416</span>        case SKIP:<a name="line.416"></a>
+<span class="sourceLineNo">417</span>          return MatchCode.SKIP;<a name="line.417"></a>
+<span class="sourceLineNo">418</span>        case NEXT_COL:<a name="line.418"></a>
+<span class="sourceLineNo">419</span>          return columns.getNextRowOrNextColumn(cell);<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        case NEXT_ROW:<a name="line.420"></a>
+<span class="sourceLineNo">421</span>          stickyNextRow = true;<a name="line.421"></a>
+<span class="sourceLineNo">422</span>          return MatchCode.SEEK_NEXT_ROW;<a name="line.422"></a>
+<span class="sourceLineNo">423</span>        case SEEK_NEXT_USING_HINT:<a name="line.423"></a>
+<span class="sourceLineNo">424</span>          return MatchCode.SEEK_NEXT_USING_HINT;<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        default:<a name="line.425"></a>
+<span class="sourceLineNo">426</span>          //It means it is either include or include and seek next<a name="line.426"></a>
+<span class="sourceLineNo">427</span>          break;<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>       * STEP 4: Reaching this step means the column is part of the requested columns and either<a name="line.431"></a>
+<span class="sourceLineNo">432</span>       * the filter is null or the filter has returned INCLUDE or INCLUDE_AND_NEXT_COL response.<a name="line.432"></a>
+<span class="sourceLineNo">433</span>       * Now check the number of versions needed. This method call returns SKIP, INCLUDE,<a name="line.433"></a>
+<span class="sourceLineNo">434</span>       * INCLUDE_AND_SEEK_NEXT_ROW, INCLUDE_AND_SEEK_NEXT_COL.<a name="line.434"></a>
+<span class="sourceLineNo">435</span>       *<a name="line.435"></a>
+<span class="sourceLineNo">436</span>       * FilterResponse            ColumnChecker               Desired behavior<a name="line.436"></a>
+<span class="sourceLineNo">437</span>       * INCLUDE                   SKIP                        row has already been included, SKIP.<a name="line.437"></a>
+<span class="sourceLineNo">438</span>       * INCLUDE                   INCLUDE                     INCLUDE<a name="line.438"></a>
+<span class="sourceLineNo">439</span>       * INCLUDE                   INCLUDE_AND_SEEK_NEXT_COL   INCLUDE_AND_SEEK_NEXT_COL<a name="line.439"></a>
+<span class="sourceLineNo">440</span>       * INCLUDE                   INCLUDE_AND_SEEK_NEXT_ROW   INCLUDE_AND_SEEK_NEXT_ROW<a name="line.440"></a>
+<span class="sourceLineNo">441</span>       * INCLUDE_AND_SEEK_NEXT_COL SKIP                        row has already been included, SKIP.<a name="line.441"></a>
+<span class="sourceLineNo">442</span>       * INCLUDE_AND_SEEK_NEXT_COL INCLUDE                     INCLUDE_AND_SEEK_NEXT_COL<a name="line.442"></a>
+<span class="sourceLineNo">443</span>       * INCLUDE_AND_SEEK_NEXT_COL INCLUDE_AND_SEEK_NEXT_COL   INCLUDE_AND_SEEK_NEXT_COL<a name="line.443"></a>
+<span class="sourceLineNo">444</span>       * INCLUDE_AND_SEEK_NEXT_COL INCLUDE_AND_SEEK_NEXT_ROW   INCLUDE_AND_SEEK_NEXT_ROW<a name="line.444"></a>
+<span class="sourceLineNo">445</span>       *<a name="line.445"></a>
+<span class="sourceLineNo">446</span>       * In all the above scenarios, we return the column checker return value except for<a name="line.446"></a>
+<span class="sourceLineNo">447</span>       * FilterResponse (INCLUDE_AND_SEEK_NEXT_COL) and ColumnChecker(INCLUDE)<a name="line.447"></a>
+<span class="sourceLineNo">448</span>       */<a name="line.448"></a>
+<span class="sourceLineNo">449</span>      colChecker = columns.checkVersions(cell, timestamp, typeByte,<a name="line.449"></a>
+<span class="sourceLineNo">450</span>          mvccVersion &gt; maxReadPointToTrackVersions);<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      //Optimize with stickyNextRow<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      boolean seekNextRowFromEssential = filterResponse == ReturnCode.INCLUDE_AND_SEEK_NEXT_ROW &amp;&amp;<a name="line.452"></a>
+<span class="sourceLineNo">453</span>          filter.isFamilyEssential(cell.getFamilyArray());<a name="line.453"></a>
+<span class="sourceLineNo">454</span>      if (colChecker == MatchCode.INCLUDE_AND_SEEK_NEXT_ROW || seekNextRowFromEssential) {<a name="line.454"></a>
+<span class="sourceLineNo">455</span>        stickyNextRow = true;<a name="line.455"></a>
+<span class="sourceLineNo">456</span>      }<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      if (filterResponse == ReturnCode.INCLUDE_AND_SEEK_NEXT_ROW) {<a name="line.457"></a>
+<span class="sourceLineNo">458</span>        if (colChecker != MatchCode.SKIP) {<a name="line.458"></a>
+<span class="sourceLineNo">459</span>          return MatchCode.INCLUDE_AND_SEEK_NEXT_ROW;<a name="line.459"></a>
+<span class="sourceLineNo">460</span>        }<a name="line.460"></a>
+<span class="sourceLineNo">461</span>        return MatchCode.SEEK_NEXT_ROW;<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      }<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      return (filterResponse == ReturnCode.INCLUDE_AND_NEXT_COL &amp;&amp;<a name="line.463"></a>
+<span class="sourceLineNo">464</span>          colChecker == MatchCode.INCLUDE) ? MatchCode.INCLUDE_AND_SEEK_NEXT_COL<a name="line.464"></a>
+<span class="sourceLineNo">465</span>          : colChecker;<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    }<a name="line.466"></a>
+<span class="sourceLineNo">467</span>    stickyNextRow = (colChecker == MatchCode.SEEK_NEXT_ROW) ? true<a name="line.467"></a>
+<span class="sourceLineNo">468</span>        : stickyNextRow;<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    return colChecker;<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>  /** Handle partial-drop-deletes. As we match keys in order, when we have a range from which<a name="line.472"></a>
+<span class="sourceLineNo">473</span>   * we can drop deletes, we can set retainDeletesInOutput to false for the duration of this<a name="line.473"></a>
+<span class="sourceLineNo">474</span>   * range only, and maintain consistency. */<a name="line.474"></a>
+<span class="sourceLineNo">475</span>  private void checkPartialDropDeleteRange(Cell curCell) {<a name="line.475"></a>
+<span class="sourceLineNo">476</span>    // If partial-drop-deletes are used, initially, dropDeletesFromRow and dropDeletesToRow<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    // are both set, and the matcher is set to retain deletes. We assume ordered keys. When<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    // dropDeletesFromRow is leq current kv, we start dropping deletes and reset<a name="line.478"></a>
+<span class="sourceLineNo">479</span>    // dropDeletesFromRow; thus the 2nd "if" starts to apply.<a name="line.479"></a>
+<span class="sourceLineNo">480</span>    if ((dropDeletesFromRow != null)<a name="line.480"></a>
+<span class="sourceLineNo">481</span>        &amp;&amp; (Arrays.equals(dropDeletesFromRow, HConstants.EMPTY_START_ROW) ||<a name="line.481"></a>
+<span class="sourceLineNo">482</span>            (CellComparator.COMPARATOR.compareRows(curCell, dropDeletesFromRow, 0,<a name="line.482"></a>
+<span class="sourceLineNo">483</span>                dropDeletesFromRow.length) &gt;= 0))) {<a name="line.483"></a>
+<span class="sourceLineNo">484</span>      retainDeletesInOutput = false;<a name="line.484"></a>
+<span class="sourceLineNo">485</span>      dropDeletesFromRow = null;<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    }<a name="line.486"></a>
+<span class="sourceLineNo">487</span>    // If dropDeletesFromRow is null and dropDeletesToRow is set, we are inside the partial-<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    // drop-deletes range. When dropDeletesToRow is leq current kv, we stop dropping deletes,<a name="line.488"></a>
+<span class="sourceLineNo">489</span>    // and reset dropDeletesToRow so that we don't do any more compares.<a name="line.489"></a>
+<span class="sourceLineNo">490</span>    if ((dropDeletesFromRow == null)<a name="line.490"></a>
+<span class="sourceLineNo">491</span>        &amp;&amp; (dropDeletesToRow != null)<a name="line.491"></a>
+<span class="sourceLineNo">492</span>        &amp;&amp; !Arrays.equals(dropDeletesToRow, HConstants.EMPTY_END_ROW)<a name="line.492"></a>
+<span class="sourceLineNo">493</span>        &amp;&amp; (CellComparator.COMPARATOR<a name="line.493"></a>
+<span class="sourceLineNo">494</span>            .compareRows(curCell, dropDeletesToRow, 0, dropDeletesToRow.length) &gt;= 0)) {<a name="line.494"></a>
+<span class="sourceLineNo">495</span>      retainDeletesInOutput = true;<a name="line.495"></a>
+<span class="sourceLineNo">496</span>      dropDeletesToRow = null;<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>  public boolean moreRowsMayExistAfter(Cell kv) {<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    if (this.isReversed) {<a name="line.501"></a>
+<span class="sourceLineNo">502</span>      if (rowComparator.compareRows(kv, stopRow, 0, stopRow.length) &lt;= 0) {<a name="line.502"></a>
+<span class="sourceLineNo">503</span>        return false;<a name="line.503"></a>
+<span class="sourceLineNo">504</span>      } else {<a name="line.504"></a>
+<span class="sourceLineNo">505</span>        return true;<a name="line.505"></a>
+<span class="sourceLineNo">506</span>      }<a name="line.506"></a>
+<span class="sourceLineNo">507</span>    }<a name="line.507"></a>
+<span class="sourceLineNo">508</span>    if (!Bytes.equals(stopRow , HConstants.EMPTY_END_ROW) &amp;&amp;<a name="line.508"></a>
+<span class="sourceLineNo">509</span>        rowComparator.compareRows(kv, stopRow, 0, stopRow.length) &gt;= 0) {<a name="line.509"></a>
+<span class="sourceLineNo">510</span>      // KV &gt;= STOPROW<a name="line.510"></a>
+<span class="sourceLineNo">511</span>      // then NO there is nothing left.<a name="line.511"></a>
+<span class="sourceLineNo">512</span>      return false;<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    } else {<a name="line.513"></a>
+<span class="sourceLineNo">514</span>      return true;<a name="line.514"></a>
+<span class="sourceLineNo">515</span>    }<a name="line.515"></a>
+<span class="sourceLineNo">516</span>  }<a name="line.516"></a>
+<span class="sourceLineNo">517</span><a name="line.517"></a>
+<span class="sourceLineNo">518</span>  /**<a name="line.518"></a>
+<span class="sourceLineNo">519</span>   * Set the row when there is change in row<a name="line.519"></a>
+<span class="sourceLineNo">520</span>   * @param curCell<a name="line.520"></a>
+<span class="sourceLineNo">521</span>   */<a name="line.521"></a>
+<span class="sourceLineNo">522</span>  public void setToNewRow(Cell curCell) {<a name="line.522"></a>
+<span class="sourceLineNo">523</span>    checkPartialDropDeleteRange(curCell);<a name="line.523"></a>
+<span class="sourceLineNo">524</span>    this.curCell = curCell;<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    reset();<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>  public void reset() {<a name="line.528"></a>
+<span class="sourceLineNo">529</span>    this.deletes.reset();<a name="line.529"></a>
+<span class="sourceLineNo">530</span>    this.columns.reset();<a name="line.530"></a>
+<span class="sourceLineNo">531</span><a name="line.531"></a>
+<span class="sourceLineNo">532</span>    stickyNextRow = false;<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>   *<a name="line.536"></a>
+<span class="sourceLineNo">537</span>   * @return the start key<a name="line.537"></a>
+<span class="sourceLineNo">538</span>   */<a name="line.538"></a>
+<span class="sourceLineNo">539</span>  public Cell getStartKey() {<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    return this.startKey;<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>  /**<a name="line.543"></a>
+<span class="sourceLineNo">544</span>   *<a name="line.544"></a>
+<span class="sourceLineNo">545</span>   * @return the Filter<a name="line.545"></a>
+<span class="sourceLineNo">546</span>   */<a name="line.546"></a>
+<span class="sourceLineNo">547</span>  Filter getFilter() {<a name="line.547"></a>
+<span class="sourceLineNo">548</span>    return this.filter;<a name="line.548"></a>
+<span class="sourceLineNo">549</span>  }<a name="line.549"></a>
+<span class="sourceLineNo">550</span><a name="line.550"></a>
+<span class="sourceLineNo">551</span>  public Cell getNextKeyHint(Cell kv) throws IOException {<a name="line.551"></a>
+<span class="sourceLineNo">552</span>    if (filter == null) {<a name="line.552"></a>
+<span class="sourceLineNo">553</span>      return null;<a name="line.553"></a>
+<span class="sourceLineNo">554</span>    } else {<a name="line.554"></a>
+<span class="sourceLineNo">555</span>      return filter.getNextCellHint(kv);<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    }<a name="line.556"></a>
+<span class="sourceLineNo">557</span>  }<a name="line.557"></a>
+<span class="sourceLineNo">558</span><a name="line.558"></a>
+<span class="sourceLineNo">559</span>  public Cell getKeyForNextColumn(Cell kv) {<a name="line.559"></a>
+<span class="sourceLineNo">560</span>    ColumnCount nextColumn = columns.getColumnHint();<a name="line.560"></a>
+<span class="sourceLineNo">561</span>    if (nextColumn == null) {<a name="line.561"></a>
+<span class="sourceLineNo">562</span>      return CellUtil.createLastOnRowCol(kv);<a name="line.562"></a>
+<span class="sourceLineNo">563</span>    } else {<a name="line.563"></a>
+<span class="sourceLineNo">564</span>      return CellUtil.createFirstOnRowCol(kv, nextColumn.getBuffer(), nextColumn.getOffset(),<a name="line.564"></a>
+<span class="sourceLineNo">565</span>          nextColumn.getLength());<a name="line.565"></a>
+<span class="sourceLineNo">566</span>    }<a name="line.566"></a>
+<span class="sourceLineNo">567</span>  }<a name="line.567"></a>
+<span class="sourceLineNo">568</span><a name="line.568"></a>
+<span class="sourceLineNo">569</span>  public Cell getKeyForNextRow(Cell c) {<a name="line.569"></a>
+<span class="sourceLineNo">570</span>    return CellUtil.createLastOnRow(c);<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">573</span>  /**<a name="line.573"></a>
+<span class="sourceLineNo">574</span>   * @param nextIndexed the key of the next entry in the block index (if any)<a name="line.574"></a>
+<span class="sourceLineNo">575</span>   * @param kv The Cell we're using to calculate the seek key<a name="line.575"></a>
+<span class="sourceLineNo">576</span>   * @return result of the compare between the indexed key and the key portion of the passed cell<a name="line.576"></a>
+<span class="sourceLineNo">577</span>   */<a name="line.577"></a>
+<span class="sourceLineNo">578</span>  public int compareKeyForNextRow(Cell nextIndexed, Cell kv

<TRUNCATED>

[09/24] hbase git commit: Published site at 0d72849581c1e5a50a2aa7757b909e5531b8d12c.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.EnvironmentEdgeForMemstoreTest.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.EnvironmentEdgeForMemstoreTest.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.EnvironmentEdgeForMemstoreTest.html
index 1c3da8c..abc212d 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.EnvironmentEdgeForMemstoreTest.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.EnvironmentEdgeForMemstoreTest.html
@@ -69,1032 +69,1038 @@
 <span class="sourceLineNo">061</span>import com.google.common.collect.Iterables;<a name="line.61"></a>
 <span class="sourceLineNo">062</span>import com.google.common.collect.Lists;<a name="line.62"></a>
 <span class="sourceLineNo">063</span><a name="line.63"></a>
-<span class="sourceLineNo">064</span>/** memstore test case */<a name="line.64"></a>
-<span class="sourceLineNo">065</span>@Category({RegionServerTests.class, MediumTests.class})<a name="line.65"></a>
-<span class="sourceLineNo">066</span>public class TestDefaultMemStore extends TestCase {<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  private static final Log LOG = LogFactory.getLog(TestDefaultMemStore.class);<a name="line.67"></a>
-<span class="sourceLineNo">068</span>  private DefaultMemStore memstore;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  private static final int ROW_COUNT = 10;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  private static final int QUALIFIER_COUNT = ROW_COUNT;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  private static final byte [] FAMILY = Bytes.toBytes("column");<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  private MultiVersionConcurrencyControl mvcc;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>  private AtomicLong startSeqNum = new AtomicLong(0);<a name="line.73"></a>
-<span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span>  @Override<a name="line.75"></a>
-<span class="sourceLineNo">076</span>  public void setUp() throws Exception {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    super.setUp();<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    this.mvcc = new MultiVersionConcurrencyControl();<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    this.memstore = new DefaultMemStore();<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 void testPutSameKey() {<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    byte [] bytes = Bytes.toBytes(getName());<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    KeyValue kv = new KeyValue(bytes, bytes, bytes, bytes);<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    this.memstore.add(kv);<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    byte [] other = Bytes.toBytes("somethingelse");<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    KeyValue samekey = new KeyValue(bytes, bytes, bytes, other);<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    this.memstore.add(samekey);<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    Cell found = this.memstore.cellSet.first();<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    assertEquals(1, this.memstore.cellSet.size());<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    assertTrue(<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      Bytes.toString(found.getValueArray(), found.getValueOffset(), found.getValueLength()),<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      CellUtil.matchingValue(samekey, found));<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>   * Test memstore snapshot happening while scanning.<a name="line.97"></a>
-<span class="sourceLineNo">098</span>   * @throws IOException<a name="line.98"></a>
-<span class="sourceLineNo">099</span>   */<a name="line.99"></a>
-<span class="sourceLineNo">100</span>  public void testScanAcrossSnapshot() throws IOException {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    int rowCount = addRows(this.memstore);<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    List&lt;KeyValueScanner&gt; memstorescanners = this.memstore.getScanners(0);<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    Scan scan = new Scan();<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    List&lt;Cell&gt; result = new ArrayList&lt;Cell&gt;();<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    Configuration conf = HBaseConfiguration.create();<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    ScanInfo scanInfo =<a name="line.106"></a>
-<span class="sourceLineNo">107</span>        new ScanInfo(conf, null, 0, 1, HConstants.LATEST_TIMESTAMP, KeepDeletedCells.FALSE, 0,<a name="line.107"></a>
-<span class="sourceLineNo">108</span>            this.memstore.comparator);<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    ScanType scanType = ScanType.USER_SCAN;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    StoreScanner s = new StoreScanner(scan, scanInfo, scanType, null, memstorescanners);<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    int count = 0;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    try {<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      while (s.next(result)) {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>        LOG.info(result);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>        count++;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>        // Row count is same as column count.<a name="line.116"></a>
-<span class="sourceLineNo">117</span>        assertEquals(rowCount, result.size());<a name="line.117"></a>
-<span class="sourceLineNo">118</span>        result.clear();<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      }<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    } finally {<a name="line.120"></a>
-<span class="sourceLineNo">121</span>      s.close();<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    }<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    assertEquals(rowCount, count);<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    for (KeyValueScanner scanner : memstorescanners) {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      scanner.close();<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>    memstorescanners = this.memstore.getScanners(mvcc.getReadPoint());<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    // Now assert can count same number even if a snapshot mid-scan.<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    s = new StoreScanner(scan, scanInfo, scanType, null, memstorescanners);<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    count = 0;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    try {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      while (s.next(result)) {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>        LOG.info(result);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>        // Assert the stuff is coming out in right order.<a name="line.135"></a>
-<span class="sourceLineNo">136</span>        assertTrue(CellUtil.matchingRow(result.get(0), Bytes.toBytes(count)));<a name="line.136"></a>
-<span class="sourceLineNo">137</span>        count++;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>        // Row count is same as column count.<a name="line.138"></a>
-<span class="sourceLineNo">139</span>        assertEquals(rowCount, result.size());<a name="line.139"></a>
-<span class="sourceLineNo">140</span>        if (count == 2) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>          this.memstore.snapshot();<a name="line.141"></a>
-<span class="sourceLineNo">142</span>          LOG.info("Snapshotted");<a name="line.142"></a>
-<span class="sourceLineNo">143</span>        }<a name="line.143"></a>
-<span class="sourceLineNo">144</span>        result.clear();<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      }<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    } finally {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>      s.close();<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    }<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    assertEquals(rowCount, count);<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    for (KeyValueScanner scanner : memstorescanners) {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      scanner.close();<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    }<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    memstorescanners = this.memstore.getScanners(mvcc.getReadPoint());<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    // Assert that new values are seen in kvset as we scan.<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    long ts = System.currentTimeMillis();<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    s = new StoreScanner(scan, scanInfo, scanType, null, memstorescanners);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    count = 0;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    int snapshotIndex = 5;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    try {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      while (s.next(result)) {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        LOG.info(result);<a name="line.161"></a>
-<span class="sourceLineNo">162</span>        // Assert the stuff is coming out in right order.<a name="line.162"></a>
-<span class="sourceLineNo">163</span>        assertTrue(CellUtil.matchingRow(result.get(0), Bytes.toBytes(count)));<a name="line.163"></a>
-<span class="sourceLineNo">164</span>        // Row count is same as column count.<a name="line.164"></a>
-<span class="sourceLineNo">165</span>        assertEquals("count=" + count + ", result=" + result, rowCount, result.size());<a name="line.165"></a>
-<span class="sourceLineNo">166</span>        count++;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        if (count == snapshotIndex) {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>          MemStoreSnapshot snapshot = this.memstore.snapshot();<a name="line.168"></a>
-<span class="sourceLineNo">169</span>          this.memstore.clearSnapshot(snapshot.getId());<a name="line.169"></a>
-<span class="sourceLineNo">170</span>          // Added more rows into kvset.  But the scanner wont see these rows.<a name="line.170"></a>
-<span class="sourceLineNo">171</span>          addRows(this.memstore, ts);<a name="line.171"></a>
-<span class="sourceLineNo">172</span>          LOG.info("Snapshotted, cleared it and then added values (which wont be seen)");<a name="line.172"></a>
-<span class="sourceLineNo">173</span>        }<a name="line.173"></a>
-<span class="sourceLineNo">174</span>        result.clear();<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      }<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    } finally {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      s.close();<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    }<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    assertEquals(rowCount, count);<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 simple test which verifies the 3 possible states when scanning across snapshot.<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   * @throws IOException<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   * @throws CloneNotSupportedException<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   */<a name="line.186"></a>
-<span class="sourceLineNo">187</span>  public void testScanAcrossSnapshot2() throws IOException, CloneNotSupportedException {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    // we are going to the scanning across snapshot with two kvs<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    // kv1 should always be returned before kv2<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    final byte[] one = Bytes.toBytes(1);<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    final byte[] two = Bytes.toBytes(2);<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    final byte[] f = Bytes.toBytes("f");<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    final byte[] q = Bytes.toBytes("q");<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    final byte[] v = Bytes.toBytes(3);<a name="line.194"></a>
-<span class="sourceLineNo">195</span><a name="line.195"></a>
-<span class="sourceLineNo">196</span>    final KeyValue kv1 = new KeyValue(one, f, q, v);<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    final KeyValue kv2 = new KeyValue(two, f, q, v);<a name="line.197"></a>
+<span class="sourceLineNo">064</span>import static org.mockito.Mockito.mock;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import static org.mockito.Mockito.when;<a name="line.65"></a>
+<span class="sourceLineNo">066</span><a name="line.66"></a>
+<span class="sourceLineNo">067</span>/** memstore test case */<a name="line.67"></a>
+<span class="sourceLineNo">068</span>@Category({RegionServerTests.class, MediumTests.class})<a name="line.68"></a>
+<span class="sourceLineNo">069</span>public class TestDefaultMemStore extends TestCase {<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  private static final Log LOG = LogFactory.getLog(TestDefaultMemStore.class);<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  private DefaultMemStore memstore;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  private static final int ROW_COUNT = 10;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  private static final int QUALIFIER_COUNT = ROW_COUNT;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  private static final byte [] FAMILY = Bytes.toBytes("column");<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  private MultiVersionConcurrencyControl mvcc;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  private AtomicLong startSeqNum = new AtomicLong(0);<a name="line.76"></a>
+<span class="sourceLineNo">077</span><a name="line.77"></a>
+<span class="sourceLineNo">078</span>  @Override<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  public void setUp() throws Exception {<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    super.setUp();<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    this.mvcc = new MultiVersionConcurrencyControl();<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    this.memstore = new DefaultMemStore();<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  }<a name="line.83"></a>
+<span class="sourceLineNo">084</span><a name="line.84"></a>
+<span class="sourceLineNo">085</span>  public void testPutSameKey() {<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    byte [] bytes = Bytes.toBytes(getName());<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    KeyValue kv = new KeyValue(bytes, bytes, bytes, bytes);<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    this.memstore.add(kv);<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    byte [] other = Bytes.toBytes("somethingelse");<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    KeyValue samekey = new KeyValue(bytes, bytes, bytes, other);<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    this.memstore.add(samekey);<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    Cell found = this.memstore.cellSet.first();<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    assertEquals(1, this.memstore.cellSet.size());<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    assertTrue(<a name="line.94"></a>
+<span class="sourceLineNo">095</span>      Bytes.toString(found.getValueArray(), found.getValueOffset(), found.getValueLength()),<a name="line.95"></a>
+<span class="sourceLineNo">096</span>      CellUtil.matchingValue(samekey, found));<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>  /**<a name="line.99"></a>
+<span class="sourceLineNo">100</span>   * Test memstore snapshot happening while scanning.<a name="line.100"></a>
+<span class="sourceLineNo">101</span>   * @throws IOException<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   */<a name="line.102"></a>
+<span class="sourceLineNo">103</span>  public void testScanAcrossSnapshot() throws IOException {<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    int rowCount = addRows(this.memstore);<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    List&lt;KeyValueScanner&gt; memstorescanners = this.memstore.getScanners(0);<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    Scan scan = new Scan();<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    List&lt;Cell&gt; result = new ArrayList&lt;Cell&gt;();<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    Configuration conf = HBaseConfiguration.create();<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    ScanInfo scanInfo =<a name="line.109"></a>
+<span class="sourceLineNo">110</span>        new ScanInfo(conf, null, 0, 1, HConstants.LATEST_TIMESTAMP, KeepDeletedCells.FALSE, 0,<a name="line.110"></a>
+<span class="sourceLineNo">111</span>            this.memstore.comparator);<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    ScanType scanType = ScanType.USER_SCAN;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    StoreScanner s = new StoreScanner(scan, scanInfo, scanType, null, memstorescanners);<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    int count = 0;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    try {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      while (s.next(result)) {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>        LOG.info(result);<a name="line.117"></a>
+<span class="sourceLineNo">118</span>        count++;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>        // Row count is same as column count.<a name="line.119"></a>
+<span class="sourceLineNo">120</span>        assertEquals(rowCount, result.size());<a name="line.120"></a>
+<span class="sourceLineNo">121</span>        result.clear();<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      }<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    } finally {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>      s.close();<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    }<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    assertEquals(rowCount, count);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    for (KeyValueScanner scanner : memstorescanners) {<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      scanner.close();<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    }<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>    memstorescanners = this.memstore.getScanners(mvcc.getReadPoint());<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    // Now assert can count same number even if a snapshot mid-scan.<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    s = new StoreScanner(scan, scanInfo, scanType, null, memstorescanners);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    count = 0;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    try {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      while (s.next(result)) {<a name="line.136"></a>
+<span class="sourceLineNo">137</span>        LOG.info(result);<a name="line.137"></a>
+<span class="sourceLineNo">138</span>        // Assert the stuff is coming out in right order.<a name="line.138"></a>
+<span class="sourceLineNo">139</span>        assertTrue(CellUtil.matchingRow(result.get(0), Bytes.toBytes(count)));<a name="line.139"></a>
+<span class="sourceLineNo">140</span>        count++;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>        // Row count is same as column count.<a name="line.141"></a>
+<span class="sourceLineNo">142</span>        assertEquals(rowCount, result.size());<a name="line.142"></a>
+<span class="sourceLineNo">143</span>        if (count == 2) {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>          this.memstore.snapshot();<a name="line.144"></a>
+<span class="sourceLineNo">145</span>          LOG.info("Snapshotted");<a name="line.145"></a>
+<span class="sourceLineNo">146</span>        }<a name="line.146"></a>
+<span class="sourceLineNo">147</span>        result.clear();<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      }<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    } finally {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      s.close();<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    }<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    assertEquals(rowCount, count);<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    for (KeyValueScanner scanner : memstorescanners) {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      scanner.close();<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    }<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    memstorescanners = this.memstore.getScanners(mvcc.getReadPoint());<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    // Assert that new values are seen in kvset as we scan.<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    long ts = System.currentTimeMillis();<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    s = new StoreScanner(scan, scanInfo, scanType, null, memstorescanners);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    count = 0;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    int snapshotIndex = 5;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    try {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      while (s.next(result)) {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        LOG.info(result);<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        // Assert the stuff is coming out in right order.<a name="line.165"></a>
+<span class="sourceLineNo">166</span>        assertTrue(CellUtil.matchingRow(result.get(0), Bytes.toBytes(count)));<a name="line.166"></a>
+<span class="sourceLineNo">167</span>        // Row count is same as column count.<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        assertEquals("count=" + count + ", result=" + result, rowCount, result.size());<a name="line.168"></a>
+<span class="sourceLineNo">169</span>        count++;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>        if (count == snapshotIndex) {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>          MemStoreSnapshot snapshot = this.memstore.snapshot();<a name="line.171"></a>
+<span class="sourceLineNo">172</span>          this.memstore.clearSnapshot(snapshot.getId());<a name="line.172"></a>
+<span class="sourceLineNo">173</span>          // Added more rows into kvset.  But the scanner wont see these rows.<a name="line.173"></a>
+<span class="sourceLineNo">174</span>          addRows(this.memstore, ts);<a name="line.174"></a>
+<span class="sourceLineNo">175</span>          LOG.info("Snapshotted, cleared it and then added values (which wont be seen)");<a name="line.175"></a>
+<span class="sourceLineNo">176</span>        }<a name="line.176"></a>
+<span class="sourceLineNo">177</span>        result.clear();<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      }<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    } finally {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      s.close();<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    }<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    assertEquals(rowCount, count);<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 simple test which verifies the 3 possible states when scanning across snapshot.<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   * @throws IOException<a name="line.187"></a>
+<span class="sourceLineNo">188</span>   * @throws CloneNotSupportedException<a name="line.188"></a>
+<span class="sourceLineNo">189</span>   */<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  public void testScanAcrossSnapshot2() throws IOException, CloneNotSupportedException {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    // we are going to the scanning across snapshot with two kvs<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    // kv1 should always be returned before kv2<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    final byte[] one = Bytes.toBytes(1);<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    final byte[] two = Bytes.toBytes(2);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    final byte[] f = Bytes.toBytes("f");<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    final byte[] q = Bytes.toBytes("q");<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    final byte[] v = Bytes.toBytes(3);<a name="line.197"></a>
 <span class="sourceLineNo">198</span><a name="line.198"></a>
-<span class="sourceLineNo">199</span>    // use case 1: both kvs in kvset<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    this.memstore.add(kv1.clone());<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    this.memstore.add(kv2.clone());<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    verifyScanAcrossSnapshot2(kv1, kv2);<a name="line.202"></a>
-<span class="sourceLineNo">203</span><a name="line.203"></a>
-<span class="sourceLineNo">204</span>    // use case 2: both kvs in snapshot<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    this.memstore.snapshot();<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    verifyScanAcrossSnapshot2(kv1, kv2);<a name="line.206"></a>
-<span class="sourceLineNo">207</span><a name="line.207"></a>
-<span class="sourceLineNo">208</span>    // use case 3: first in snapshot second in kvset<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    this.memstore = new DefaultMemStore();<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    this.memstore.add(kv1.clone());<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    this.memstore.snapshot();<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    this.memstore.add(kv2.clone());<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    verifyScanAcrossSnapshot2(kv1, kv2);<a name="line.213"></a>
-<span class="sourceLineNo">214</span>  }<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>  private void verifyScanAcrossSnapshot2(KeyValue kv1, KeyValue kv2)<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      throws IOException {<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    List&lt;KeyValueScanner&gt; memstorescanners = this.memstore.getScanners(mvcc.getReadPoint());<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    assertEquals(1, memstorescanners.size());<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    final KeyValueScanner scanner = memstorescanners.get(0);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    scanner.seek(KeyValueUtil.createFirstOnRow(HConstants.EMPTY_START_ROW));<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    assertEquals(kv1, scanner.next());<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    assertEquals(kv2, scanner.next());<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    assertNull(scanner.next());<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  }<a name="line.225"></a>
-<span class="sourceLineNo">226</span><a name="line.226"></a>
-<span class="sourceLineNo">227</span>  private void assertScannerResults(KeyValueScanner scanner, KeyValue[] expected)<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      throws IOException {<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    scanner.seek(KeyValueUtil.createFirstOnRow(new byte[]{}));<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    List&lt;Cell&gt; returned = Lists.newArrayList();<a name="line.230"></a>
-<span class="sourceLineNo">231</span><a name="line.231"></a>
-<span class="sourceLineNo">232</span>    while (true) {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      Cell next = scanner.next();<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      if (next == null) break;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      returned.add(next);<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    }<a name="line.236"></a>
-<span class="sourceLineNo">237</span><a name="line.237"></a>
-<span class="sourceLineNo">238</span>    assertTrue(<a name="line.238"></a>
-<span class="sourceLineNo">239</span>        "Got:\n" + Joiner.on("\n").join(returned) +<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        "\nExpected:\n" + Joiner.on("\n").join(expected),<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        Iterables.elementsEqual(Arrays.asList(expected), returned));<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    assertNull(scanner.peek());<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>  public void testMemstoreConcurrentControl() throws IOException {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    final byte[] row = Bytes.toBytes(1);<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    final byte[] f = Bytes.toBytes("family");<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    final byte[] q1 = Bytes.toBytes("q1");<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    final byte[] q2 = Bytes.toBytes("q2");<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    final byte[] v = Bytes.toBytes("value");<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>    MultiVersionConcurrencyControl.WriteEntry w =<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        mvcc.begin();<a name="line.253"></a>
+<span class="sourceLineNo">199</span>    final KeyValue kv1 = new KeyValue(one, f, q, v);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    final KeyValue kv2 = new KeyValue(two, f, q, v);<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span>    // use case 1: both kvs in kvset<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    this.memstore.add(kv1.clone());<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    this.memstore.add(kv2.clone());<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    verifyScanAcrossSnapshot2(kv1, kv2);<a name="line.205"></a>
+<span class="sourceLineNo">206</span><a name="line.206"></a>
+<span class="sourceLineNo">207</span>    // use case 2: both kvs in snapshot<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    this.memstore.snapshot();<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    verifyScanAcrossSnapshot2(kv1, kv2);<a name="line.209"></a>
+<span class="sourceLineNo">210</span><a name="line.210"></a>
+<span class="sourceLineNo">211</span>    // use case 3: first in snapshot second in kvset<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    this.memstore = new DefaultMemStore();<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    this.memstore.add(kv1.clone());<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    this.memstore.snapshot();<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    this.memstore.add(kv2.clone());<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    verifyScanAcrossSnapshot2(kv1, kv2);<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 verifyScanAcrossSnapshot2(KeyValue kv1, KeyValue kv2)<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      throws IOException {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    List&lt;KeyValueScanner&gt; memstorescanners = this.memstore.getScanners(mvcc.getReadPoint());<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    assertEquals(1, memstorescanners.size());<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    final KeyValueScanner scanner = memstorescanners.get(0);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    scanner.seek(KeyValueUtil.createFirstOnRow(HConstants.EMPTY_START_ROW));<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    assertEquals(kv1, scanner.next());<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    assertEquals(kv2, scanner.next());<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    assertNull(scanner.next());<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>  private void assertScannerResults(KeyValueScanner scanner, KeyValue[] expected)<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      throws IOException {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    scanner.seek(KeyValueUtil.createFirstOnRow(new byte[]{}));<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    List&lt;Cell&gt; returned = Lists.newArrayList();<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span>    while (true) {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      Cell next = scanner.next();<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      if (next == null) break;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      returned.add(next);<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>    assertTrue(<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        "Got:\n" + Joiner.on("\n").join(returned) +<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        "\nExpected:\n" + Joiner.on("\n").join(expected),<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        Iterables.elementsEqual(Arrays.asList(expected), returned));<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    assertNull(scanner.peek());<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 void testMemstoreConcurrentControl() throws IOException {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    final byte[] row = Bytes.toBytes(1);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    final byte[] f = Bytes.toBytes("family");<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    final byte[] q1 = Bytes.toBytes("q1");<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    final byte[] q2 = Bytes.toBytes("q2");<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    final byte[] v = Bytes.toBytes("value");<a name="line.253"></a>
 <span class="sourceLineNo">254</span><a name="line.254"></a>
-<span class="sourceLineNo">255</span>    KeyValue kv1 = new KeyValue(row, f, q1, v);<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    kv1.setSequenceId(w.getWriteNumber());<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    memstore.add(kv1);<a name="line.257"></a>
-<span class="sourceLineNo">258</span><a name="line.258"></a>
-<span class="sourceLineNo">259</span>    KeyValueScanner s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    assertScannerResults(s, new KeyValue[]{});<a name="line.260"></a>
+<span class="sourceLineNo">255</span>    MultiVersionConcurrencyControl.WriteEntry w =<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        mvcc.begin();<a name="line.256"></a>
+<span class="sourceLineNo">257</span><a name="line.257"></a>
+<span class="sourceLineNo">258</span>    KeyValue kv1 = new KeyValue(row, f, q1, v);<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    kv1.setSequenceId(w.getWriteNumber());<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    memstore.add(kv1);<a name="line.260"></a>
 <span class="sourceLineNo">261</span><a name="line.261"></a>
-<span class="sourceLineNo">262</span>    mvcc.completeAndWait(w);<a name="line.262"></a>
-<span class="sourceLineNo">263</span><a name="line.263"></a>
-<span class="sourceLineNo">264</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    assertScannerResults(s, new KeyValue[]{kv1});<a name="line.265"></a>
+<span class="sourceLineNo">262</span>    KeyValueScanner s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    assertScannerResults(s, new KeyValue[]{});<a name="line.263"></a>
+<span class="sourceLineNo">264</span><a name="line.264"></a>
+<span class="sourceLineNo">265</span>    mvcc.completeAndWait(w);<a name="line.265"></a>
 <span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>    w = mvcc.begin();<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    KeyValue kv2 = new KeyValue(row, f, q2, v);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    kv2.setSequenceId(w.getWriteNumber());<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    memstore.add(kv2);<a name="line.270"></a>
-<span class="sourceLineNo">271</span><a name="line.271"></a>
-<span class="sourceLineNo">272</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    assertScannerResults(s, new KeyValue[]{kv1});<a name="line.273"></a>
+<span class="sourceLineNo">267</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    assertScannerResults(s, new KeyValue[]{kv1});<a name="line.268"></a>
+<span class="sourceLineNo">269</span><a name="line.269"></a>
+<span class="sourceLineNo">270</span>    w = mvcc.begin();<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    KeyValue kv2 = new KeyValue(row, f, q2, v);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    kv2.setSequenceId(w.getWriteNumber());<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    memstore.add(kv2);<a name="line.273"></a>
 <span class="sourceLineNo">274</span><a name="line.274"></a>
-<span class="sourceLineNo">275</span>    mvcc.completeAndWait(w);<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    assertScannerResults(s, new KeyValue[]{kv1, kv2});<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>   * Regression test for HBASE-2616, HBASE-2670.<a name="line.282"></a>
-<span class="sourceLineNo">283</span>   * When we insert a higher-memstoreTS version of a cell but with<a name="line.283"></a>
-<span class="sourceLineNo">284</span>   * the same timestamp, we still need to provide consistent reads<a name="line.284"></a>
-<span class="sourceLineNo">285</span>   * for the same scanner.<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   */<a name="line.286"></a>
-<span class="sourceLineNo">287</span>  public void testMemstoreEditsVisibilityWithSameKey() throws IOException {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    final byte[] row = Bytes.toBytes(1);<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    final byte[] f = Bytes.toBytes("family");<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    final byte[] q1 = Bytes.toBytes("q1");<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    final byte[] q2 = Bytes.toBytes("q2");<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    final byte[] v1 = Bytes.toBytes("value1");<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    final byte[] v2 = Bytes.toBytes("value2");<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>    // INSERT 1: Write both columns val1<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    MultiVersionConcurrencyControl.WriteEntry w =<a name="line.296"></a>
-<span class="sourceLineNo">297</span>        mvcc.begin();<a name="line.297"></a>
-<span class="sourceLineNo">298</span><a name="line.298"></a>
-<span class="sourceLineNo">299</span>    KeyValue kv11 = new KeyValue(row, f, q1, v1);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    kv11.setSequenceId(w.getWriteNumber());<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    memstore.add(kv11);<a name="line.301"></a>
-<span class="sourceLineNo">302</span><a name="line.302"></a>
-<span class="sourceLineNo">303</span>    KeyValue kv12 = new KeyValue(row, f, q2, v1);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    kv12.setSequenceId(w.getWriteNumber());<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    memstore.add(kv12);<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    mvcc.completeAndWait(w);<a name="line.306"></a>
-<span class="sourceLineNo">307</span><a name="line.307"></a>
-<span class="sourceLineNo">308</span>    // BEFORE STARTING INSERT 2, SEE FIRST KVS<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    KeyValueScanner s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    assertScannerResults(s, new KeyValue[]{kv11, kv12});<a name="line.310"></a>
-<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span>    // START INSERT 2: Write both columns val2<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    w = mvcc.begin();<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    KeyValue kv21 = new KeyValue(row, f, q1, v2);<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    kv21.setSequenceId(w.getWriteNumber());<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    memstore.add(kv21);<a name="line.316"></a>
-<span class="sourceLineNo">317</span><a name="line.317"></a>
-<span class="sourceLineNo">318</span>    KeyValue kv22 = new KeyValue(row, f, q2, v2);<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    kv22.setSequenceId(w.getWriteNumber());<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    memstore.add(kv22);<a name="line.320"></a>
-<span class="sourceLineNo">321</span><a name="line.321"></a>
-<span class="sourceLineNo">322</span>    // BEFORE COMPLETING INSERT 2, SEE FIRST KVS<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    assertScannerResults(s, new KeyValue[]{kv11, kv12});<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>    // COMPLETE INSERT 2<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    mvcc.completeAndWait(w);<a name="line.327"></a>
+<span class="sourceLineNo">275</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    assertScannerResults(s, new KeyValue[]{kv1});<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>    mvcc.completeAndWait(w);<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    assertScannerResults(s, new KeyValue[]{kv1, kv2});<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>   * Regression test for HBASE-2616, HBASE-2670.<a name="line.285"></a>
+<span class="sourceLineNo">286</span>   * When we insert a higher-memstoreTS version of a cell but with<a name="line.286"></a>
+<span class="sourceLineNo">287</span>   * the same timestamp, we still need to provide consistent reads<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * for the same scanner.<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   */<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  public void testMemstoreEditsVisibilityWithSameKey() throws IOException {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    final byte[] row = Bytes.toBytes(1);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    final byte[] f = Bytes.toBytes("family");<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    final byte[] q1 = Bytes.toBytes("q1");<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    final byte[] q2 = Bytes.toBytes("q2");<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    final byte[] v1 = Bytes.toBytes("value1");<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    final byte[] v2 = Bytes.toBytes("value2");<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>    // INSERT 1: Write both columns val1<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    MultiVersionConcurrencyControl.WriteEntry w =<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        mvcc.begin();<a name="line.300"></a>
+<span class="sourceLineNo">301</span><a name="line.301"></a>
+<span class="sourceLineNo">302</span>    KeyValue kv11 = new KeyValue(row, f, q1, v1);<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    kv11.setSequenceId(w.getWriteNumber());<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    memstore.add(kv11);<a name="line.304"></a>
+<span class="sourceLineNo">305</span><a name="line.305"></a>
+<span class="sourceLineNo">306</span>    KeyValue kv12 = new KeyValue(row, f, q2, v1);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    kv12.setSequenceId(w.getWriteNumber());<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    memstore.add(kv12);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    mvcc.completeAndWait(w);<a name="line.309"></a>
+<span class="sourceLineNo">310</span><a name="line.310"></a>
+<span class="sourceLineNo">311</span>    // BEFORE STARTING INSERT 2, SEE FIRST KVS<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    KeyValueScanner s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    assertScannerResults(s, new KeyValue[]{kv11, kv12});<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>    // START INSERT 2: Write both columns val2<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    w = mvcc.begin();<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    KeyValue kv21 = new KeyValue(row, f, q1, v2);<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    kv21.setSequenceId(w.getWriteNumber());<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    memstore.add(kv21);<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>    KeyValue kv22 = new KeyValue(row, f, q2, v2);<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    kv22.setSequenceId(w.getWriteNumber());<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    memstore.add(kv22);<a name="line.323"></a>
+<span class="sourceLineNo">324</span><a name="line.324"></a>
+<span class="sourceLineNo">325</span>    // BEFORE COMPLETING INSERT 2, SEE FIRST KVS<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    assertScannerResults(s, new KeyValue[]{kv11, kv12});<a name="line.327"></a>
 <span class="sourceLineNo">328</span><a name="line.328"></a>
-<span class="sourceLineNo">329</span>    // NOW SHOULD SEE NEW KVS IN ADDITION TO OLD KVS.<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    // See HBASE-1485 for discussion about what we should do with<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    // the duplicate-TS inserts<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    assertScannerResults(s, new KeyValue[]{kv21, kv11, kv22, kv12});<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  }<a name="line.334"></a>
-<span class="sourceLineNo">335</span><a name="line.335"></a>
-<span class="sourceLineNo">336</span>  /**<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   * When we insert a higher-memstoreTS deletion of a cell but with<a name="line.337"></a>
-<span class="sourceLineNo">338</span>   * the same timestamp, we still need to provide consistent reads<a name="line.338"></a>
-<span class="sourceLineNo">339</span>   * for the same scanner.<a name="line.339"></a>
-<span class="sourceLineNo">340</span>   */<a name="line.340"></a>
-<span class="sourceLineNo">341</span>  public void testMemstoreDeletesVisibilityWithSameKey() throws IOException {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    final byte[] row = Bytes.toBytes(1);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    final byte[] f = Bytes.toBytes("family");<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    final byte[] q1 = Bytes.toBytes("q1");<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    final byte[] q2 = Bytes.toBytes("q2");<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    final byte[] v1 = Bytes.toBytes("value1");<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    // INSERT 1: Write both columns val1<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    MultiVersionConcurrencyControl.WriteEntry w =<a name="line.348"></a>
-<span class="sourceLineNo">349</span>        mvcc.begin();<a name="line.349"></a>
-<span class="sourceLineNo">350</span><a name="line.350"></a>
-<span class="sourceLineNo">351</span>    KeyValue kv11 = new KeyValue(row, f, q1, v1);<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    kv11.setSequenceId(w.getWriteNumber());<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    memstore.add(kv11);<a name="line.353"></a>
-<span class="sourceLineNo">354</span><a name="line.354"></a>
-<span class="sourceLineNo">355</span>    KeyValue kv12 = new KeyValue(row, f, q2, v1);<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    kv12.setSequenceId(w.getWriteNumber());<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    memstore.add(kv12);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    mvcc.completeAndWait(w);<a name="line.358"></a>
-<span class="sourceLineNo">359</span><a name="line.359"></a>
-<span class="sourceLineNo">360</span>    // BEFORE STARTING INSERT 2, SEE FIRST KVS<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    KeyValueScanner s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    assertScannerResults(s, new KeyValue[]{kv11, kv12});<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>    // START DELETE: Insert delete for one of the columns<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    w = mvcc.begin();<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    KeyValue kvDel = new KeyValue(row, f, q2, kv11.getTimestamp(),<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        KeyValue.Type.DeleteColumn);<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    kvDel.setSequenceId(w.getWriteNumber());<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    memstore.add(kvDel);<a name="line.369"></a>
-<span class="sourceLineNo">370</span><a name="line.370"></a>
-<span class="sourceLineNo">371</span>    // BEFORE COMPLETING DELETE, SEE FIRST KVS<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    assertScannerResults(s, new KeyValue[]{kv11, kv12});<a name="line.373"></a>
-<span class="sourceLineNo">374</span><a name="line.374"></a>
-<span class="sourceLineNo">375</span>    // COMPLETE DELETE<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    mvcc.completeAndWait(w);<a name="line.376"></a>
+<span class="sourceLineNo">329</span>    // COMPLETE INSERT 2<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    mvcc.completeAndWait(w);<a name="line.330"></a>
+<span class="sourceLineNo">331</span><a name="line.331"></a>
+<span class="sourceLineNo">332</span>    // NOW SHOULD SEE NEW KVS IN ADDITION TO OLD KVS.<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    // See HBASE-1485 for discussion about what we should do with<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    // the duplicate-TS inserts<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    assertScannerResults(s, new KeyValue[]{kv21, kv11, kv22, kv12});<a name="line.336"></a>
+<span class="sourceLineNo">337</span>  }<a name="line.337"></a>
+<span class="sourceLineNo">338</span><a name="line.338"></a>
+<span class="sourceLineNo">339</span>  /**<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   * When we insert a higher-memstoreTS deletion of a cell but with<a name="line.340"></a>
+<span class="sourceLineNo">341</span>   * the same timestamp, we still need to provide consistent reads<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   * for the same scanner.<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   */<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  public void testMemstoreDeletesVisibilityWithSameKey() throws IOException {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    final byte[] row = Bytes.toBytes(1);<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    final byte[] f = Bytes.toBytes("family");<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    final byte[] q1 = Bytes.toBytes("q1");<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    final byte[] q2 = Bytes.toBytes("q2");<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    final byte[] v1 = Bytes.toBytes("value1");<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    // INSERT 1: Write both columns val1<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    MultiVersionConcurrencyControl.WriteEntry w =<a name="line.351"></a>
+<span class="sourceLineNo">352</span>        mvcc.begin();<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>    KeyValue kv11 = new KeyValue(row, f, q1, v1);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    kv11.setSequenceId(w.getWriteNumber());<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    memstore.add(kv11);<a name="line.356"></a>
+<span class="sourceLineNo">357</span><a name="line.357"></a>
+<span class="sourceLineNo">358</span>    KeyValue kv12 = new KeyValue(row, f, q2, v1);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    kv12.setSequenceId(w.getWriteNumber());<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    memstore.add(kv12);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    mvcc.completeAndWait(w);<a name="line.361"></a>
+<span class="sourceLineNo">362</span><a name="line.362"></a>
+<span class="sourceLineNo">363</span>    // BEFORE STARTING INSERT 2, SEE FIRST KVS<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    KeyValueScanner s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    assertScannerResults(s, new KeyValue[]{kv11, kv12});<a name="line.365"></a>
+<span class="sourceLineNo">366</span><a name="line.366"></a>
+<span class="sourceLineNo">367</span>    // START DELETE: Insert delete for one of the columns<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    w = mvcc.begin();<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    KeyValue kvDel = new KeyValue(row, f, q2, kv11.getTimestamp(),<a name="line.369"></a>
+<span class="sourceLineNo">370</span>        KeyValue.Type.DeleteColumn);<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    kvDel.setSequenceId(w.getWriteNumber());<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    memstore.add(kvDel);<a name="line.372"></a>
+<span class="sourceLineNo">373</span><a name="line.373"></a>
+<span class="sourceLineNo">374</span>    // BEFORE COMPLETING DELETE, SEE FIRST KVS<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    assertScannerResults(s, new KeyValue[]{kv11, kv12});<a name="line.376"></a>
 <span class="sourceLineNo">377</span><a name="line.377"></a>
-<span class="sourceLineNo">378</span>    // NOW WE SHOULD SEE DELETE<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    assertScannerResults(s, new KeyValue[]{kv11, kvDel, kv12});<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  }<a name="line.381"></a>
-<span class="sourceLineNo">382</span><a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>  private static class ReadOwnWritesTester extends Thread {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    static final int NUM_TRIES = 1000;<a name="line.385"></a>
+<span class="sourceLineNo">378</span>    // COMPLETE DELETE<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    mvcc.completeAndWait(w);<a name="line.379"></a>
+<span class="sourceLineNo">380</span><a name="line.380"></a>
+<span class="sourceLineNo">381</span>    // NOW WE SHOULD SEE DELETE<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    assertScannerResults(s, new KeyValue[]{kv11, kvDel, kv12});<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><a name="line.386"></a>
-<span class="sourceLineNo">387</span>    final byte[] row;<a name="line.387"></a>
-<span class="sourceLineNo">388</span><a name="line.388"></a>
-<span class="sourceLineNo">389</span>    final byte[] f = Bytes.toBytes("family");<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    final byte[] q1 = Bytes.toBytes("q1");<a name="line.390"></a>
+<span class="sourceLineNo">387</span>  private static class ReadOwnWritesTester extends Thread {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    static final int NUM_TRIES = 1000;<a name="line.388"></a>
+<span class="sourceLineNo">389</span><a name="line.389"></a>
+<span class="sourceLineNo">390</span>    final byte[] row;<a name="line.390"></a>
 <span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span>    final MultiVersionConcurrencyControl mvcc;<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    final MemStore memstore;<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    final AtomicLong startSeqNum;<a name="line.394"></a>
-<span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>    AtomicReference&lt;Throwable&gt; caughtException;<a name="line.396"></a>
-<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">392</span>    final byte[] f = Bytes.toBytes("family");<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    final byte[] q1 = Bytes.toBytes("q1");<a name="line.393"></a>
+<span class="sourceLineNo">394</span><a name="line.394"></a>
+<span class="sourceLineNo">395</span>    final MultiVersionConcurrencyControl mvcc;<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    final MemStore memstore;<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    final AtomicLong startSeqNum;<a name="line.397"></a>
 <span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>    public ReadOwnWritesTester(int id,<a name="line.399"></a>
-<span class="sourceLineNo">400</span>                               MemStore memstore,<a name="line.400"></a>
-<span class="sourceLineNo">401</span>                               MultiVersionConcurrencyControl mvcc,<a name="line.401"></a>
-<span class="sourceLineNo">402</span>                               AtomicReference&lt;Throwable&gt; caughtException,<a name="line.402"></a>
-<span class="sourceLineNo">403</span>                               AtomicLong startSeqNum)<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      this.mvcc = mvcc;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      this.memstore = memstore;<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      this.caughtException = caughtException;<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      row = Bytes.toBytes(id);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>      this.startSeqNum = startSeqNum;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    }<a name="line.410"></a>
-<span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>    public void run() {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      try {<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        internalRun();<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      } catch (Throwable t) {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        caughtException.compareAndSet(null, t);<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>    private void internalRun() throws IOException {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      for (long i = 0; i &lt; NUM_TRIES &amp;&amp; caughtException.get() == null; i++) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        MultiVersionConcurrencyControl.WriteEntry w =<a name="line.422"></a>
-<span class="sourceLineNo">423</span>            mvcc.begin();<a name="line.423"></a>
-<span class="sourceLineNo">424</span><a name="line.424"></a>
-<span class="sourceLineNo">425</span>        // Insert the sequence value (i)<a name="line.425"></a>
-<span class="sourceLineNo">426</span>        byte[] v = Bytes.toBytes(i);<a name="line.426"></a>
+<span class="sourceLineNo">399</span>    AtomicReference&lt;Throwable&gt; caughtException;<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 ReadOwnWritesTester(int id,<a name="line.402"></a>
+<span class="sourceLineNo">403</span>                               MemStore memstore,<a name="line.403"></a>
+<span class="sourceLineNo">404</span>                               MultiVersionConcurrencyControl mvcc,<a name="line.404"></a>
+<span class="sourceLineNo">405</span>                               AtomicReference&lt;Throwable&gt; caughtException,<a name="line.405"></a>
+<span class="sourceLineNo">406</span>                               AtomicLong startSeqNum)<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      this.mvcc = mvcc;<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      this.memstore = memstore;<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      this.caughtException = caughtException;<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      row = Bytes.toBytes(id);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      this.startSeqNum = startSeqNum;<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>    public void run() {<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      try {<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        internalRun();<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      } catch (Throwable t) {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>        caughtException.compareAndSet(null, t);<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 void internalRun() throws IOException {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      for (long i = 0; i &lt; NUM_TRIES &amp;&amp; caughtException.get() == null; i++) {<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        MultiVersionConcurrencyControl.WriteEntry w =<a name="line.425"></a>
+<span class="sourceLineNo">426</span>            mvcc.begin();<a name="line.426"></a>
 <span class="sourceLineNo">427</span><a name="line.427"></a>
-<span class="sourceLineNo">428</span>        KeyValue kv = new KeyValue(row, f, q1, i, v);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>        kv.setSequenceId(w.getWriteNumber());<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        memstore.add(kv);<a name="line.430"></a>
-<span class="sourceLineNo">431</span>        mvcc.completeAndWait(w);<a name="line.431"></a>
-<span class="sourceLineNo">432</span><a name="line.432"></a>
-<span class="sourceLineNo">433</span>        // Assert that we can read back<a name="line.433"></a>
-<span class="sourceLineNo">434</span>        KeyValueScanner s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.434"></a>
-<span class="sourceLineNo">435</span>        s.seek(kv);<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>        Cell ret = s.next();<a name="line.437"></a>
-<span class="sourceLineNo">438</span>        assertNotNull("Didnt find own write at all", ret);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>        assertEquals("Didnt read own writes",<a name="line.439"></a>
-<span class="sourceLineNo">440</span>                     kv.getTimestamp(), ret.getTimestamp());<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>  }<a name="line.443"></a>
-<span class="sourceLineNo">444</span><a name="line.444"></a>
-<span class="sourceLineNo">445</span>  public void testReadOwnWritesUnderConcurrency() throws Throwable {<a name="line.445"></a>
-<span class="sourceLineNo">446</span><a name="line.446"></a>
-<span class="sourceLineNo">447</span>    int NUM_THREADS = 8;<a name="line.447"></a>
-<span class="sourceLineNo">448</span><a name="line.448"></a>
-<span class="sourceLineNo">449</span>    ReadOwnWritesTester threads[] = new ReadOwnWritesTester[NUM_THREADS];<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    AtomicReference&lt;Throwable&gt; caught = new AtomicReference&lt;Throwable&gt;();<a name="line.450"></a>
+<span class="sourceLineNo">428</span>        // Insert the sequence value (i)<a name="line.428"></a>
+<span class="sourceLineNo">429</span>        byte[] v = Bytes.toBytes(i);<a name="line.429"></a>
+<span class="sourceLineNo">430</span><a name="line.430"></a>
+<span class="sourceLineNo">431</span>        KeyValue kv = new KeyValue(row, f, q1, i, v);<a name="line.431"></a>
+<span class="sourceLineNo">432</span>        kv.setSequenceId(w.getWriteNumber());<a name="line.432"></a>
+<span class="sourceLineNo">433</span>        memstore.add(kv);<a name="line.433"></a>
+<span class="sourceLineNo">434</span>        mvcc.completeAndWait(w);<a name="line.434"></a>
+<span class="sourceLineNo">435</span><a name="line.435"></a>
+<span class="sourceLineNo">436</span>        // Assert that we can read back<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        KeyValueScanner s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.437"></a>
+<span class="sourceLineNo">438</span>        s.seek(kv);<a name="line.438"></a>
+<span class="sourceLineNo">439</span><a name="line.439"></a>
+<span class="sourceLineNo">440</span>        Cell ret = s.next();<a name="line.440"></a>
+<span class="sourceLineNo">441</span>        assertNotNull("Didnt find own write at all", ret);<a name="line.441"></a>
+<span class="sourceLineNo">442</span>        assertEquals("Didnt read own writes",<a name="line.442"></a>
+<span class="sourceLineNo">443</span>                     kv.getTimestamp(), ret.getTimestamp());<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><a name="line.447"></a>
+<span class="sourceLineNo">448</span>  public void testReadOwnWritesUnderConcurrency() throws Throwable {<a name="line.448"></a>
+<span class="sourceLineNo">449</span><a name="line.449"></a>
+<span class="sourceLineNo">450</span>    int NUM_THREADS = 8;<a name="line.450"></a>
 <span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>    for (int i = 0; i &lt; NUM_THREADS; i++) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      threads[i] = new ReadOwnWritesTester(i, memstore, mvcc, caught, this.startSeqNum);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      threads[i].start();<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>    for (int i = 0; i &lt; NUM_THREADS; i++) {<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      threads[i].join();<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>    if (caught.get() != null) {<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      throw caught.get();<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    }<a name="line.463"></a>
-<span class="sourceLineNo">464</span>  }<a name="line.464"></a>
-<span class="sourceLineNo">465</span><a name="line.465"></a>
-<span class="sourceLineNo">466</span>  /**<a name="line.466"></a>
-<span class="sourceLineNo">467</span>   * Test memstore snapshots<a name="line.467"></a>
-<span class="sourceLineNo">468</span>   * @throws IOException<a name="line.468"></a>
-<span class="sourceLineNo">469</span>   */<a name="line.469"></a>
-<span class="sourceLineNo">470</span>  public void testSnapshotting() throws IOException {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    final int snapshotCount = 5;<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    // Add some rows, run a snapshot. Do it a few times.<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    for (int i = 0; i &lt; snapshotCount; i++) {<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      addRows(this.memstore);<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      runSnapshot(this.memstore);<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      assertEquals("History not being cleared", 0, this.memstore.snapshot.size());<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    }<a name="line.477"></a>
-<span class="sourceLineNo">478</span>  }<a name="line.478"></a>
-<span class="sourceLineNo">479</span><a name="line.479"></a>
-<span class="sourceLineNo">480</span>  public void testMultipleVersionsSimple() throws Exception {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    DefaultMemStore m = new DefaultMemStore(new Configuration(), CellComparator.COMPARATOR);<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    byte [] row = Bytes.toBytes("testRow");<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    byte [] family = Bytes.toBytes("testFamily");<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    byte [] qf = Bytes.toBytes("testQualifier");<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    long [] stamps = {1,2,3};<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    byte [][] values = {Bytes.toBytes("value0"), Bytes.toBytes("value1"),<a name="line.486"></a>
-<span class="sourceLineNo">487</span>        Bytes.toBytes("value2")};<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    KeyValue key0 = new KeyValue(row, family, qf, stamps[0], values[0]);<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    KeyValue key1 = new KeyValue(row, family, qf, stamps[1], values[1]);<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    KeyValue key2 = new KeyValue(row, family, qf, stamps[2], values[2]);<a name="line.490"></a>
-<span class="sourceLineNo">491</span><a name="line.491"></a>
-<span class="sourceLineNo">492</span>    m.add(key0);<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    m.add(key1);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    m.add(key2);<a name="line.494"></a>
-<span class="sourceLineNo">495</span><a name="line.495"></a>
-<span class="sourceLineNo">496</span>    assertTrue("Expected memstore to hold 3 values, actually has " +<a name="line.496"></a>
-<span class="sourceLineNo">497</span>        m.cellSet.size(), m.cellSet.size() == 3);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>  }<a name="line.498"></a>
-<span class="sourceLineNo">499</span><a name="line.499"></a>
-<span class="sourceLineNo">500</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.500"></a>
-<span class="sourceLineNo">501</span>  // Get tests<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>  /** Test getNextRow from memstore<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * @throws InterruptedException<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   */<a name="line.506"></a>
-<span class="sourceLineNo">507</span>  public void testGetNextRow() throws Exception {<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    addRows(this.memstore);<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    // Add more versions to make it a little more interesting.<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    Thread.sleep(1);<a name="line.510"></a>
+<span class="sourceLineNo">452</span>    ReadOwnWritesTester threads[] = new ReadOwnWritesTester[NUM_THREADS];<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    AtomicReference&lt;Throwable&gt; caught = new AtomicReference&lt;Throwable&gt;();<a name="line.453"></a>
+<span class="sourceLineNo">454</span><a name="line.454"></a>
+<span class="sourceLineNo">455</span>    for (int i = 0; i &lt; NUM_THREADS; i++) {<a name="line.455"></a>
+<span class="sourceLineNo">456</span>      threads[i] = new ReadOwnWritesTester(i, memstore, mvcc, caught, this.startSeqNum);<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      threads[i].start();<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>    for (int i = 0; i &lt; NUM_THREADS; i++) {<a name="line.460"></a>
+<span class="sourceLineNo">461</span>      threads[i].join();<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>    if (caught.get() != null) {<a name="line.464"></a>
+<span class="sourceLineNo">465</span>      throw caught.get();<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    }<a name="line.466"></a>
+<span class="sourceLineNo">467</span>  }<a name="line.467"></a>
+<span class="sourceLineNo">468</span><a name="line.468"></a>
+<span class="sourceLineNo">469</span>  /**<a name="line.469"></a>
+<span class="sourceLineNo">470</span>   * Test memstore snapshots<a name="line.470"></a>
+<span class="sourceLineNo">471</span>   * @throws IOException<a name="line.471"></a>
+<span class="sourceLineNo">472</span>   */<a name="line.472"></a>
+<span class="sourceLineNo">473</span>  public void testSnapshotting() throws IOException {<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    final int snapshotCount = 5;<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    // Add some rows, run a snapshot. Do it a few times.<a name="line.475"></a>
+<span class="sourceLineNo">476</span>    for (int i = 0; i &lt; snapshotCount; i++) {<a name="line.476"></a>
+<span class="sourceLineNo">477</span>      addRows(this.memstore);<a name="line.477"></a>
+<span class="sourceLineNo">478</span>      runSnapshot(this.memstore);<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      assertEquals("History not being cleared", 0, this.memstore.snapshot.size());<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><a name="line.482"></a>
+<span class="sourceLineNo">483</span>  public void testMultipleVersionsSimple() throws Exception {<a name="line.483"></a>
+<span class="sourceLineNo">484</span>    DefaultMemStore m = new DefaultMemStore(new Configuration(), CellComparator.COMPARATOR);<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    byte [] row = Bytes.toBytes("testRow");<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    byte [] family = Bytes.toBytes("testFamily");<a name="line.486"></a>
+<span class="sourceLineNo">487</span>    byte [] qf = Bytes.toBytes("testQualifier");<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    long [] stamps = {1,2,3};<a name="line.488"></a>
+<span class="sourceLineNo">489</span>    byte [][] values = {Bytes.toBytes("value0"), Bytes.toBytes("value1"),<a name="line.489"></a>
+<span class="sourceLineNo">490</span>        Bytes.toBytes("value2")};<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    KeyValue key0 = new KeyValue(row, family, qf, stamps[0], values[0]);<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    KeyValue key1 = new KeyValue(row, family, qf, stamps[1], values[1]);<a name="line.492"></a>
+<span class="sourceLineNo">493</span>    KeyValue key2 = new KeyValue(row, family, qf, stamps[2], values[2]);<a name="line.493"></a>
+<span class="sourceLineNo">494</span><a name="line.494"></a>
+<span class="sourceLineNo">495</span>    m.add(key0);<a name="line.495"></a>
+<span class="sourceLineNo">496</span>    m.add(key1);<a name="line.496"></a>
+<span class="sourceLineNo">497</span>    m.add(key2);<a name="line.497"></a>
+<span class="sourceLineNo">498</span><a name="line.498"></a>
+<span class="sourceLineNo">499</span>    assertTrue("Expected memstore to hold 3 values, actually has " +<a name="line.499"></a>
+<span class="sourceLineNo">500</span>        m.cellSet.size(), m.cellSet.size() == 3);<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>  // Get tests<a name="line.504"></a>
+<span class="sourceLineNo">505</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.505"></a>
+<span class="sourceLineNo">506</span><a name="line.506"></a>
+<span class="sourceLineNo">507</span>  /** Test getNextRow from memstore<a name="line.507"></a>
+<span class="sourceLineNo">508</span>   * @throws InterruptedException<a name="line.508"></a>
+<span class="sourceLineNo">509</span>   */<a name="line.509"></a>
+<span class="sourceLineNo">510</span>  public void testGetNextRow() throws Exception {<a name="line.510"></a>
 <span class="sourceLineNo">511</span>    addRows(this.memstore);<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    Cell closestToEmpty = this.memstore.getNextRow(KeyValue.LOWESTKEY);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    assertTrue(CellComparator.COMPARATOR.compareRows(closestToEmpty,<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      new KeyValue(Bytes.toBytes(0), System.currentTimeMillis())) == 0);<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    for (int i = 0; i &lt; ROW_COUNT; i++) {<a name="line.515"></a>
-<span class="sourceLineNo">516</span>      Cell nr = this.memstore.getNextRow(new KeyValue(Bytes.toBytes(i),<a name="line.516"></a>
-<span class="sourceLineNo">517</span>        System.currentTimeMillis()));<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      if (i + 1 == ROW_COUNT) {<a name="line.518"></a>
-<span class="sourceLineNo">519</span>        assertEquals(nr, null);<a name="line.519"></a>
-<span class="sourceLineNo">520</span>      } else {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>        assertTrue(CellComparator.COMPARATOR.compareRows(nr,<a name="line.521"></a>
-<span class="sourceLineNo">522</span>          new KeyValue(Bytes.toBytes(i + 1), System.currentTimeMillis())) == 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>    //starting from each row, validate results should contain the starting row<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    Configuration conf = HBaseConfiguration.create();<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    for (int startRowId = 0; startRowId &lt; ROW_COUNT; startRowId++) {<a name="line.527"></a>
-<span class="sourceLineNo">528</span>      ScanInfo scanInfo = new ScanInfo(conf, FAMILY, 0, 1, Integer.MAX_VALUE,<a name="line.528"></a>
-<span class="sourceLineNo">529</span>        KeepDeletedCells.FALSE, 0, this.memstore.comparator);<a name="line.529"></a>
-<span class="sourceLineNo">530</span>      ScanType scanType = ScanType.USER_SCAN;<a name="line.530"></a>
-<span class="sourceLineNo">531</span>      InternalScanner scanner = new StoreScanner(new Scan(<a name="line.531"></a>
-<span class="sourceLineNo">532</span>          Bytes.toBytes(startRowId)), scanInfo, scanType, null,<a name="line.532"></a>
-<span class="sourceLineNo">533</span>          memstore.getScanners(0));<a name="line.533"></a>
-<span class="sourceLineNo">534</span>      List&lt;Cell&gt; results = new ArrayList&lt;Cell&gt;();<a name="line.534"></a>
-<span class="sourceLineNo">535</span>      for (int i = 0; scanner.next(results); i++) {<a name="line.535"></a>
-<span class="sourceLineNo">536</span>        int rowId = startRowId + i;<a name="line.536"></a>
-<span class="sourceLineNo">537</span>        Cell left = results.get(0);<a name="line.537"></a>
-<span class="sourceLineNo">538</span>        byte[] row1 = Bytes.toBytes(rowId);<a name="line.538"></a>
-<span class="sourceLineNo">539</span>        assertTrue(<a name="line.539"></a>
-<span class="sourceLineNo">540</span>            "Row name",<a name="line.540"></a>
-<span class="sourceLineNo">541</span>            CellComparator.COMPARATOR.compareRows(left, row1, 0, row1.length) == 0);<a name="line.541"></a>
-<span class="sourceLineNo">542</span>        assertEquals("Count of columns", QUALIFIER_COUNT, results.size());<a name="line.542"></a>
-<span class="sourceLineNo">543</span>        List&lt;Cell&gt; row = new ArrayList&lt;Cell&gt;();<a name="line.543"></a>
-<span class="sourceLineNo">544</span>        for (Cell kv : results) {<a name="line.544"></a>
-<span class="sourceLineNo">545</span>          row.add(kv);<a name="line.545"></a>
-<span

<TRUNCATED>

[05/24] hbase git commit: Published site at 0d72849581c1e5a50a2aa7757b909e5531b8d12c.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html b/xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html
index 15e2274..b8e1c14 100644
--- a/xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html
+++ b/xref/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html
@@ -50,949 +50,957 @@
 <a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.KeyValueUtil;
 <a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.classification.InterfaceAudience;
 <a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.client.Scan;
-<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.ByteRange;
-<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
-<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.ClassSize;
-<a class="jxr_linenumber" name="46" href="#46">46</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.CollectionBackedScanner;
-<a class="jxr_linenumber" name="47" href="#47">47</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
-<a class="jxr_linenumber" name="48" href="#48">48</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.ReflectionUtils;
-<a class="jxr_linenumber" name="49" href="#49">49</a>  <strong class="jxr_keyword">import</strong> org.apache.htrace.Trace;
-<a class="jxr_linenumber" name="50" href="#50">50</a>  
-<a class="jxr_linenumber" name="51" href="#51">51</a>  <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="52" href="#52">52</a>  <em class="jxr_javadoccomment"> * The MemStore holds in-memory modifications to the Store.  Modifications</em>
-<a class="jxr_linenumber" name="53" href="#53">53</a>  <em class="jxr_javadoccomment"> * are {@link Cell}s.  When asked to flush, current memstore is moved</em>
-<a class="jxr_linenumber" name="54" href="#54">54</a>  <em class="jxr_javadoccomment"> * to snapshot and is cleared.  We continue to serve edits out of new memstore</em>
-<a class="jxr_linenumber" name="55" href="#55">55</a>  <em class="jxr_javadoccomment"> * and backing snapshot until flusher reports in that the flush succeeded. At</em>
-<a class="jxr_linenumber" name="56" href="#56">56</a>  <em class="jxr_javadoccomment"> * this point we let the snapshot go.</em>
-<a class="jxr_linenumber" name="57" href="#57">57</a>  <em class="jxr_javadoccomment"> *  &lt;p&gt;</em>
-<a class="jxr_linenumber" name="58" href="#58">58</a>  <em class="jxr_javadoccomment"> * The MemStore functions should not be called in parallel. Callers should hold</em>
-<a class="jxr_linenumber" name="59" href="#59">59</a>  <em class="jxr_javadoccomment"> *  write and read locks. This is done in {@link HStore}.</em>
-<a class="jxr_linenumber" name="60" href="#60">60</a>  <em class="jxr_javadoccomment"> *  &lt;/p&gt;</em>
-<a class="jxr_linenumber" name="61" href="#61">61</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="62" href="#62">62</a>  <em class="jxr_javadoccomment"> * TODO: Adjust size of the memstore when we remove items because they have</em>
-<a class="jxr_linenumber" name="63" href="#63">63</a>  <em class="jxr_javadoccomment"> * been deleted.</em>
-<a class="jxr_linenumber" name="64" href="#64">64</a>  <em class="jxr_javadoccomment"> * TODO: With new KVSLS, need to make sure we update HeapSize with difference</em>
-<a class="jxr_linenumber" name="65" href="#65">65</a>  <em class="jxr_javadoccomment"> * in KV size.</em>
-<a class="jxr_linenumber" name="66" href="#66">66</a>  <em class="jxr_javadoccomment"> */</em>
-<a class="jxr_linenumber" name="67" href="#67">67</a>  @InterfaceAudience.Private
-<a class="jxr_linenumber" name="68" href="#68">68</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.html">DefaultMemStore</a> <strong class="jxr_keyword">implements</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore.html">MemStore</a> {
-<a class="jxr_linenumber" name="69" href="#69">69</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Log LOG = LogFactory.getLog(DefaultMemStore.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="70" href="#70">70</a>    <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String USEMSLAB_KEY = <span class="jxr_string">"hbase.hregion.memstore.mslab.enabled"</span>;
-<a class="jxr_linenumber" name="71" href="#71">71</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">boolean</strong> USEMSLAB_DEFAULT = <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="72" href="#72">72</a>    <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String MSLAB_CLASS_NAME = <span class="jxr_string">"hbase.regionserver.mslab.class"</span>;
-<a class="jxr_linenumber" name="73" href="#73">73</a>  
-<a class="jxr_linenumber" name="74" href="#74">74</a>    <strong class="jxr_keyword">private</strong> Configuration conf;
-<a class="jxr_linenumber" name="75" href="#75">75</a>  
-<a class="jxr_linenumber" name="76" href="#76">76</a>    <em class="jxr_comment">// MemStore.  Use a CellSkipListSet rather than SkipListSet because of the</em>
-<a class="jxr_linenumber" name="77" href="#77">77</a>    <em class="jxr_comment">// better semantics.  The Map will overwrite if passed a key it already had</em>
-<a class="jxr_linenumber" name="78" href="#78">78</a>    <em class="jxr_comment">// whereas the Set will not add new Cell if key is same though value might be</em>
-<a class="jxr_linenumber" name="79" href="#79">79</a>    <em class="jxr_comment">// different.  Value is not important -- just make sure always same</em>
-<a class="jxr_linenumber" name="80" href="#80">80</a>    <em class="jxr_comment">// reference passed.</em>
-<a class="jxr_linenumber" name="81" href="#81">81</a>    <strong class="jxr_keyword">volatile</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSkipListSet.html">CellSkipListSet</a> cellSet;
-<a class="jxr_linenumber" name="82" href="#82">82</a>  
-<a class="jxr_linenumber" name="83" href="#83">83</a>    <em class="jxr_comment">// Snapshot of memstore.  Made for flusher.</em>
-<a class="jxr_linenumber" name="84" href="#84">84</a>    <strong class="jxr_keyword">volatile</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSkipListSet.html">CellSkipListSet</a> snapshot;
-<a class="jxr_linenumber" name="85" href="#85">85</a>  
-<a class="jxr_linenumber" name="86" href="#86">86</a>    <strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html">CellComparator</a> comparator;
-<a class="jxr_linenumber" name="87" href="#87">87</a>  
-<a class="jxr_linenumber" name="88" href="#88">88</a>    <em class="jxr_comment">// Used to track own heapSize</em>
-<a class="jxr_linenumber" name="89" href="#89">89</a>    <strong class="jxr_keyword">final</strong> AtomicLong size;
-<a class="jxr_linenumber" name="90" href="#90">90</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">volatile</strong> <strong class="jxr_keyword">long</strong> snapshotSize;
-<a class="jxr_linenumber" name="91" href="#91">91</a>  
-<a class="jxr_linenumber" name="92" href="#92">92</a>    <em class="jxr_comment">// Used to track when to flush</em>
-<a class="jxr_linenumber" name="93" href="#93">93</a>    <strong class="jxr_keyword">volatile</strong> <strong class="jxr_keyword">long</strong> timeOfOldestEdit = Long.MAX_VALUE;
-<a class="jxr_linenumber" name="94" href="#94">94</a>  
-<a class="jxr_linenumber" name="95" href="#95">95</a>    <a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.html">TimeRangeTracker</a> timeRangeTracker;
-<a class="jxr_linenumber" name="96" href="#96">96</a>    <a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.html">TimeRangeTracker</a> snapshotTimeRangeTracker;
-<a class="jxr_linenumber" name="97" href="#97">97</a>  
-<a class="jxr_linenumber" name="98" href="#98">98</a>    <strong class="jxr_keyword">volatile</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html">MemStoreLAB</a> allocator;
-<a class="jxr_linenumber" name="99" href="#99">99</a>    <strong class="jxr_keyword">volatile</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html">MemStoreLAB</a> snapshotAllocator;
-<a class="jxr_linenumber" name="100" href="#100">100</a>   <strong class="jxr_keyword">volatile</strong> <strong class="jxr_keyword">long</strong> snapshotId;
-<a class="jxr_linenumber" name="101" href="#101">101</a>   <strong class="jxr_keyword">volatile</strong> <strong class="jxr_keyword">boolean</strong> tagsPresent;
-<a class="jxr_linenumber" name="102" href="#102">102</a> 
-<a class="jxr_linenumber" name="103" href="#103">103</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="104" href="#104">104</a> <em class="jxr_javadoccomment">   * Default constructor. Used for tests.</em>
-<a class="jxr_linenumber" name="105" href="#105">105</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="106" href="#106">106</a>   <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.html">DefaultMemStore</a>() {
-<a class="jxr_linenumber" name="107" href="#107">107</a>     <strong class="jxr_keyword">this</strong>(HBaseConfiguration.create(), CellComparator.COMPARATOR);
-<a class="jxr_linenumber" name="108" href="#108">108</a>   }
-<a class="jxr_linenumber" name="109" href="#109">109</a> 
-<a class="jxr_linenumber" name="110" href="#110">110</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="111" href="#111">111</a> <em class="jxr_javadoccomment">   * Constructor.</em>
-<a class="jxr_linenumber" name="112" href="#112">112</a> <em class="jxr_javadoccomment">   * @param c Comparator</em>
-<a class="jxr_linenumber" name="113" href="#113">113</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="114" href="#114">114</a>   <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.html">DefaultMemStore</a>(<strong class="jxr_keyword">final</strong> Configuration conf,
-<a class="jxr_linenumber" name="115" href="#115">115</a>                   <strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html">CellComparator</a> c) {
-<a class="jxr_linenumber" name="116" href="#116">116</a>     <strong class="jxr_keyword">this</strong>.conf = conf;
-<a class="jxr_linenumber" name="117" href="#117">117</a>     <strong class="jxr_keyword">this</strong>.comparator = c;
-<a class="jxr_linenumber" name="118" href="#118">118</a>     <strong class="jxr_keyword">this</strong>.cellSet = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSkipListSet.html">CellSkipListSet</a>(c);
-<a class="jxr_linenumber" name="119" href="#119">119</a>     <strong class="jxr_keyword">this</strong>.snapshot = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSkipListSet.html">CellSkipListSet</a>(c);
-<a class="jxr_linenumber" name="120" href="#120">120</a>     timeRangeTracker = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.html">TimeRangeTracker</a>();
-<a class="jxr_linenumber" name="121" href="#121">121</a>     snapshotTimeRangeTracker = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.html">TimeRangeTracker</a>();
-<a class="jxr_linenumber" name="122" href="#122">122</a>     <strong class="jxr_keyword">this</strong>.size = <strong class="jxr_keyword">new</strong> AtomicLong(DEEP_OVERHEAD);
-<a class="jxr_linenumber" name="123" href="#123">123</a>     <strong class="jxr_keyword">this</strong>.snapshotSize = 0;
-<a class="jxr_linenumber" name="124" href="#124">124</a>     <strong class="jxr_keyword">if</strong> (conf.getBoolean(USEMSLAB_KEY, USEMSLAB_DEFAULT)) {
-<a class="jxr_linenumber" name="125" href="#125">125</a>       String className = conf.get(MSLAB_CLASS_NAME, HeapMemStoreLAB.<strong class="jxr_keyword">class</strong>.getName());
-<a class="jxr_linenumber" name="126" href="#126">126</a>       <strong class="jxr_keyword">this</strong>.allocator = ReflectionUtils.instantiateWithCustomCtor(className,
-<a class="jxr_linenumber" name="127" href="#127">127</a>           <strong class="jxr_keyword">new</strong> Class[] { Configuration.<strong class="jxr_keyword">class</strong> }, <strong class="jxr_keyword">new</strong> Object[] { conf });
-<a class="jxr_linenumber" name="128" href="#128">128</a>     } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="129" href="#129">129</a>       <strong class="jxr_keyword">this</strong>.allocator = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="130" href="#130">130</a>     }
-<a class="jxr_linenumber" name="131" href="#131">131</a>   }
-<a class="jxr_linenumber" name="132" href="#132">132</a> 
-<a class="jxr_linenumber" name="133" href="#133">133</a>   <strong class="jxr_keyword">void</strong> dump() {
-<a class="jxr_linenumber" name="134" href="#134">134</a>     <strong class="jxr_keyword">for</strong> (Cell cell: <strong class="jxr_keyword">this</strong>.cellSet) {
-<a class="jxr_linenumber" name="135" href="#135">135</a>       LOG.info(cell);
-<a class="jxr_linenumber" name="136" href="#136">136</a>     }
-<a class="jxr_linenumber" name="137" href="#137">137</a>     <strong class="jxr_keyword">for</strong> (Cell cell: <strong class="jxr_keyword">this</strong>.snapshot) {
-<a class="jxr_linenumber" name="138" href="#138">138</a>       LOG.info(cell);
-<a class="jxr_linenumber" name="139" href="#139">139</a>     }
-<a class="jxr_linenumber" name="140" href="#140">140</a>   }
-<a class="jxr_linenumber" name="141" href="#141">141</a> 
-<a class="jxr_linenumber" name="142" href="#142">142</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="143" href="#143">143</a> <em class="jxr_javadoccomment">   * Creates a snapshot of the current memstore.</em>
-<a class="jxr_linenumber" name="144" href="#144">144</a> <em class="jxr_javadoccomment">   * Snapshot must be cleared by call to {@link #clearSnapshot(long)}</em>
-<a class="jxr_linenumber" name="145" href="#145">145</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="146" href="#146">146</a>   @Override
-<a class="jxr_linenumber" name="147" href="#147">147</a>   <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSnapshot.html">MemStoreSnapshot</a> snapshot() {
-<a class="jxr_linenumber" name="148" href="#148">148</a>     <em class="jxr_comment">// If snapshot currently has entries, then flusher failed or didn't call</em>
-<a class="jxr_linenumber" name="149" href="#149">149</a>     <em class="jxr_comment">// cleanup.  Log a warning.</em>
-<a class="jxr_linenumber" name="150" href="#150">150</a>     <strong class="jxr_keyword">if</strong> (!<strong class="jxr_keyword">this</strong>.snapshot.isEmpty()) {
-<a class="jxr_linenumber" name="151" href="#151">151</a>       LOG.warn(<span class="jxr_string">"Snapshot called again without clearing previous. "</span> +
-<a class="jxr_linenumber" name="152" href="#152">152</a>           <span class="jxr_string">"Doing nothing. Another ongoing flush or did we fail last attempt?"</span>);
-<a class="jxr_linenumber" name="153" href="#153">153</a>     } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="154" href="#154">154</a>       <strong class="jxr_keyword">this</strong>.snapshotId = EnvironmentEdgeManager.currentTime();
-<a class="jxr_linenumber" name="155" href="#155">155</a>       <strong class="jxr_keyword">this</strong>.snapshotSize = keySize();
-<a class="jxr_linenumber" name="156" href="#156">156</a>       <strong class="jxr_keyword">if</strong> (!<strong class="jxr_keyword">this</strong>.cellSet.isEmpty()) {
-<a class="jxr_linenumber" name="157" href="#157">157</a>         <strong class="jxr_keyword">this</strong>.snapshot = <strong class="jxr_keyword">this</strong>.cellSet;
-<a class="jxr_linenumber" name="158" href="#158">158</a>         <strong class="jxr_keyword">this</strong>.cellSet = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSkipListSet.html">CellSkipListSet</a>(<strong class="jxr_keyword">this</strong>.comparator);
-<a class="jxr_linenumber" name="159" href="#159">159</a>         <strong class="jxr_keyword">this</strong>.snapshotTimeRangeTracker = <strong class="jxr_keyword">this</strong>.timeRangeTracker;
-<a class="jxr_linenumber" name="160" href="#160">160</a>         <strong class="jxr_keyword">this</strong>.timeRangeTracker = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.html">TimeRangeTracker</a>();
-<a class="jxr_linenumber" name="161" href="#161">161</a>         <em class="jxr_comment">// Reset heap to not include any keys</em>
-<a class="jxr_linenumber" name="162" href="#162">162</a>         <strong class="jxr_keyword">this</strong>.size.set(DEEP_OVERHEAD);
-<a class="jxr_linenumber" name="163" href="#163">163</a>         <strong class="jxr_keyword">this</strong>.snapshotAllocator = <strong class="jxr_keyword">this</strong>.allocator;
-<a class="jxr_linenumber" name="164" href="#164">164</a>         <em class="jxr_comment">// Reset allocator so we get a fresh buffer for the new memstore</em>
-<a class="jxr_linenumber" name="165" href="#165">165</a>         <strong class="jxr_keyword">if</strong> (allocator != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="166" href="#166">166</a>           String className = conf.get(MSLAB_CLASS_NAME, HeapMemStoreLAB.<strong class="jxr_keyword">class</strong>.getName());
-<a class="jxr_linenumber" name="167" href="#167">167</a>           <strong class="jxr_keyword">this</strong>.allocator = ReflectionUtils.instantiateWithCustomCtor(className,
-<a class="jxr_linenumber" name="168" href="#168">168</a>               <strong class="jxr_keyword">new</strong> Class[] { Configuration.<strong class="jxr_keyword">class</strong> }, <strong class="jxr_keyword">new</strong> Object[] { conf });
-<a class="jxr_linenumber" name="169" href="#169">169</a>         }
-<a class="jxr_linenumber" name="170" href="#170">170</a>         timeOfOldestEdit = Long.MAX_VALUE;
-<a class="jxr_linenumber" name="171" href="#171">171</a>       }
-<a class="jxr_linenumber" name="172" href="#172">172</a>     }
-<a class="jxr_linenumber" name="173" href="#173">173</a>     <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSnapshot.html">MemStoreSnapshot</a> memStoreSnapshot = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSnapshot.html">MemStoreSnapshot</a>(<strong class="jxr_keyword">this</strong>.snapshotId, snapshot.size(), <strong class="jxr_keyword">this</strong>.snapshotSize,
-<a class="jxr_linenumber" name="174" href="#174">174</a>         <strong class="jxr_keyword">this</strong>.snapshotTimeRangeTracker, <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/util/CollectionBackedScanner.html">CollectionBackedScanner</a>(snapshot, <strong class="jxr_keyword">this</strong>.comparator),
-<a class="jxr_linenumber" name="175" href="#175">175</a>         <strong class="jxr_keyword">this</strong>.tagsPresent);
-<a class="jxr_linenumber" name="176" href="#176">176</a>     <strong class="jxr_keyword">this</strong>.tagsPresent = false;
-<a class="jxr_linenumber" name="177" href="#177">177</a>     <strong class="jxr_keyword">return</strong> memStoreSnapshot;
-<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>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="181" href="#181">181</a> <em class="jxr_javadoccomment">   * The passed snapshot was successfully persisted; it can be let go.</em>
-<a class="jxr_linenumber" name="182" href="#182">182</a> <em class="jxr_javadoccomment">   * @param id Id of the snapshot to clean out.</em>
-<a class="jxr_linenumber" name="183" href="#183">183</a> <em class="jxr_javadoccomment">   * @throws UnexpectedStateException</em>
-<a class="jxr_linenumber" name="184" href="#184">184</a> <em class="jxr_javadoccomment">   * @see #snapshot()</em>
-<a class="jxr_linenumber" name="185" href="#185">185</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="186" href="#186">186</a>   @Override
-<a class="jxr_linenumber" name="187" href="#187">187</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> clearSnapshot(<strong class="jxr_keyword">long</strong> id) <strong class="jxr_keyword">throws</strong> UnexpectedStateException {
-<a class="jxr_linenumber" name="188" href="#188">188</a>     <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html">MemStoreLAB</a> tmpAllocator = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="189" href="#189">189</a>     <strong class="jxr_keyword">if</strong> (<strong class="jxr_keyword">this</strong>.snapshotId != id) {
-<a class="jxr_linenumber" name="190" href="#190">190</a>       <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/UnexpectedStateException.html">UnexpectedStateException</a>(<span class="jxr_string">"Current snapshot id is "</span> + <strong class="jxr_keyword">this</strong>.snapshotId + <span class="jxr_string">",passed "</span>
-<a class="jxr_linenumber" name="191" href="#191">191</a>           + id);
-<a class="jxr_linenumber" name="192" href="#192">192</a>     }
-<a class="jxr_linenumber" name="193" href="#193">193</a>     <em class="jxr_comment">// OK. Passed in snapshot is same as current snapshot. If not-empty,</em>
-<a class="jxr_linenumber" name="194" href="#194">194</a>     <em class="jxr_comment">// create a new snapshot and let the old one go.</em>
-<a class="jxr_linenumber" name="195" href="#195">195</a>     <strong class="jxr_keyword">if</strong> (!<strong class="jxr_keyword">this</strong>.snapshot.isEmpty()) {
-<a class="jxr_linenumber" name="196" href="#196">196</a>       <strong class="jxr_keyword">this</strong>.snapshot = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSkipListSet.html">CellSkipListSet</a>(<strong class="jxr_keyword">this</strong>.comparator);
-<a class="jxr_linenumber" name="197" href="#197">197</a>       <strong class="jxr_keyword">this</strong>.snapshotTimeRangeTracker = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.html">TimeRangeTracker</a>();
-<a class="jxr_linenumber" name="198" href="#198">198</a>     }
-<a class="jxr_linenumber" name="199" href="#199">199</a>     <strong class="jxr_keyword">this</strong>.snapshotSize = 0;
-<a class="jxr_linenumber" name="200" href="#200">200</a>     <strong class="jxr_keyword">this</strong>.snapshotId = -1;
-<a class="jxr_linenumber" name="201" href="#201">201</a>     <strong class="jxr_keyword">if</strong> (<strong class="jxr_keyword">this</strong>.snapshotAllocator != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="202" href="#202">202</a>       tmpAllocator = <strong class="jxr_keyword">this</strong>.snapshotAllocator;
-<a class="jxr_linenumber" name="203" href="#203">203</a>       <strong class="jxr_keyword">this</strong>.snapshotAllocator = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="204" href="#204">204</a>     }
-<a class="jxr_linenumber" name="205" href="#205">205</a>     <strong class="jxr_keyword">if</strong> (tmpAllocator != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="206" href="#206">206</a>       tmpAllocator.close();
-<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>   @Override
-<a class="jxr_linenumber" name="211" href="#211">211</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">long</strong> getFlushableSize() {
-<a class="jxr_linenumber" name="212" href="#212">212</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.snapshotSize &gt; 0 ? <strong class="jxr_keyword">this</strong>.snapshotSize : keySize();
-<a class="jxr_linenumber" name="213" href="#213">213</a>   }
-<a class="jxr_linenumber" name="214" href="#214">214</a> 
-<a class="jxr_linenumber" name="215" href="#215">215</a>   @Override
-<a class="jxr_linenumber" name="216" href="#216">216</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">long</strong> getSnapshotSize() {
-<a class="jxr_linenumber" name="217" href="#217">217</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.snapshotSize;
-<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>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="221" href="#221">221</a> <em class="jxr_javadoccomment">   * Write an update</em>
-<a class="jxr_linenumber" name="222" href="#222">222</a> <em class="jxr_javadoccomment">   * @param cell</em>
-<a class="jxr_linenumber" name="223" href="#223">223</a> <em class="jxr_javadoccomment">   * @return approximate size of the passed Cell.</em>
-<a class="jxr_linenumber" name="224" href="#224">224</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="225" href="#225">225</a>   @Override
-<a class="jxr_linenumber" name="226" href="#226">226</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">long</strong> add(<a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> cell) {
-<a class="jxr_linenumber" name="227" href="#227">227</a>     <a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> toAdd = maybeCloneWithAllocator(cell);
-<a class="jxr_linenumber" name="228" href="#228">228</a>     <strong class="jxr_keyword">return</strong> internalAdd(toAdd);
-<a class="jxr_linenumber" name="229" href="#229">229</a>   }
-<a class="jxr_linenumber" name="230" href="#230">230</a> 
-<a class="jxr_linenumber" name="231" href="#231">231</a>   @Override
-<a class="jxr_linenumber" name="232" href="#232">232</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">long</strong> timeOfOldestEdit() {
-<a class="jxr_linenumber" name="233" href="#233">233</a>     <strong class="jxr_keyword">return</strong> timeOfOldestEdit;
-<a class="jxr_linenumber" name="234" href="#234">234</a>   }
-<a class="jxr_linenumber" name="235" href="#235">235</a> 
-<a class="jxr_linenumber" name="236" href="#236">236</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> addToCellSet(<a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> e) {
-<a class="jxr_linenumber" name="237" href="#237">237</a>     <strong class="jxr_keyword">boolean</strong> b = <strong class="jxr_keyword">this</strong>.cellSet.add(e);
-<a class="jxr_linenumber" name="238" href="#238">238</a>     <em class="jxr_comment">// In no tags case this NoTagsKeyValue.getTagsLength() is a cheap call.</em>
-<a class="jxr_linenumber" name="239" href="#239">239</a>     <em class="jxr_comment">// When we use ACL CP or Visibility CP which deals with Tags during</em>
-<a class="jxr_linenumber" name="240" href="#240">240</a>     <em class="jxr_comment">// mutation, the TagRewriteCell.getTagsLength() is a cheaper call. We do not</em>
-<a class="jxr_linenumber" name="241" href="#241">241</a>     <em class="jxr_comment">// parse the byte[] to identify the tags length.</em>
-<a class="jxr_linenumber" name="242" href="#242">242</a>     <strong class="jxr_keyword">if</strong>(e.getTagsLength() &gt; 0) {
-<a class="jxr_linenumber" name="243" href="#243">243</a>       tagsPresent = <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="244" href="#244">244</a>     }
-<a class="jxr_linenumber" name="245" href="#245">245</a>     setOldestEditTimeToNow();
-<a class="jxr_linenumber" name="246" href="#246">246</a>     <strong class="jxr_keyword">return</strong> b;
-<a class="jxr_linenumber" name="247" href="#247">247</a>   }
-<a class="jxr_linenumber" name="248" href="#248">248</a> 
-<a class="jxr_linenumber" name="249" href="#249">249</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> removeFromCellSet(<a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> e) {
-<a class="jxr_linenumber" name="250" href="#250">250</a>     <strong class="jxr_keyword">boolean</strong> b = <strong class="jxr_keyword">this</strong>.cellSet.remove(e);
-<a class="jxr_linenumber" name="251" href="#251">251</a>     setOldestEditTimeToNow();
-<a class="jxr_linenumber" name="252" href="#252">252</a>     <strong class="jxr_keyword">return</strong> b;
-<a class="jxr_linenumber" name="253" href="#253">253</a>   }
-<a class="jxr_linenumber" name="254" href="#254">254</a> 
-<a class="jxr_linenumber" name="255" href="#255">255</a>   <strong class="jxr_keyword">void</strong> setOldestEditTimeToNow() {
-<a class="jxr_linenumber" name="256" href="#256">256</a>     <strong class="jxr_keyword">if</strong> (timeOfOldestEdit == Long.MAX_VALUE) {
-<a class="jxr_linenumber" name="257" href="#257">257</a>       timeOfOldestEdit = EnvironmentEdgeManager.currentTime();
-<a class="jxr_linenumber" name="258" href="#258">258</a>     }
-<a class="jxr_linenumber" name="259" href="#259">259</a>   }
-<a class="jxr_linenumber" name="260" href="#260">260</a> 
-<a class="jxr_linenumber" name="261" href="#261">261</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="262" href="#262">262</a> <em class="jxr_javadoccomment">   * Internal version of add() that doesn't clone Cells with the</em>
-<a class="jxr_linenumber" name="263" href="#263">263</a> <em class="jxr_javadoccomment">   * allocator, and doesn't take the lock.</em>
-<a class="jxr_linenumber" name="264" href="#264">264</a> <em class="jxr_javadoccomment">   *</em>
-<a class="jxr_linenumber" name="265" href="#265">265</a> <em class="jxr_javadoccomment">   * Callers should ensure they already have the read lock taken</em>
-<a class="jxr_linenumber" name="266" href="#266">266</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="267" href="#267">267</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">long</strong> internalAdd(<strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> toAdd) {
-<a class="jxr_linenumber" name="268" href="#268">268</a>     <strong class="jxr_keyword">long</strong> s = heapSizeChange(toAdd, addToCellSet(toAdd));
-<a class="jxr_linenumber" name="269" href="#269">269</a>     timeRangeTracker.includeTimestamp(toAdd);
-<a class="jxr_linenumber" name="270" href="#270">270</a>     <strong class="jxr_keyword">this</strong>.size.addAndGet(s);
-<a class="jxr_linenumber" name="271" href="#271">271</a>     <strong class="jxr_keyword">return</strong> s;
-<a class="jxr_linenumber" name="272" href="#272">272</a>   }
-<a class="jxr_linenumber" name="273" href="#273">273</a> 
-<a class="jxr_linenumber" name="274" href="#274">274</a>   <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> maybeCloneWithAllocator(<a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> cell) {
-<a class="jxr_linenumber" name="275" href="#275">275</a>     <strong class="jxr_keyword">if</strong> (allocator == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="276" href="#276">276</a>       <strong class="jxr_keyword">return</strong> cell;
-<a class="jxr_linenumber" name="277" href="#277">277</a>     }
-<a class="jxr_linenumber" name="278" href="#278">278</a> 
-<a class="jxr_linenumber" name="279" href="#279">279</a>     <strong class="jxr_keyword">int</strong> len = KeyValueUtil.length(cell);
-<a class="jxr_linenumber" name="280" href="#280">280</a>     <a href="../../../../../org/apache/hadoop/hbase/util/ByteRange.html">ByteRange</a> alloc = allocator.allocateBytes(len);
-<a class="jxr_linenumber" name="281" href="#281">281</a>     <strong class="jxr_keyword">if</strong> (alloc == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="282" href="#282">282</a>       <em class="jxr_comment">// The allocation was too large, allocator decided</em>
-<a class="jxr_linenumber" name="283" href="#283">283</a>       <em class="jxr_comment">// not to do anything with it.</em>
-<a class="jxr_linenumber" name="284" href="#284">284</a>       <strong class="jxr_keyword">return</strong> cell;
-<a class="jxr_linenumber" name="285" href="#285">285</a>     }
-<a class="jxr_linenumber" name="286" href="#286">286</a>     assert alloc.getBytes() != <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="287" href="#287">287</a>     KeyValueUtil.appendToByteArray(cell, alloc.getBytes(), alloc.getOffset());
-<a class="jxr_linenumber" name="288" href="#288">288</a>     <a href="../../../../../org/apache/hadoop/hbase/KeyValue.html">KeyValue</a> newKv = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/KeyValue.html">KeyValue</a>(alloc.getBytes(), alloc.getOffset(), len);
-<a class="jxr_linenumber" name="289" href="#289">289</a>     newKv.setSequenceId(cell.getSequenceId());
-<a class="jxr_linenumber" name="290" href="#290">290</a>     <strong class="jxr_keyword">return</strong> newKv;
-<a class="jxr_linenumber" name="291" href="#291">291</a>   }
-<a class="jxr_linenumber" name="292" href="#292">292</a> 
-<a class="jxr_linenumber" name="293" href="#293">293</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="294" href="#294">294</a> <em class="jxr_javadoccomment">   * Remove n key from the memstore. Only cells that have the same key and the</em>
-<a class="jxr_linenumber" name="295" href="#295">295</a> <em class="jxr_javadoccomment">   * same memstoreTS are removed.  It is ok to not update timeRangeTracker</em>
-<a class="jxr_linenumber" name="296" href="#296">296</a> <em class="jxr_javadoccomment">   * in this call. It is possible that we can optimize this method by using</em>
-<a class="jxr_linenumber" name="297" href="#297">297</a> <em class="jxr_javadoccomment">   * tailMap/iterator, but since this method is called rarely (only for</em>
-<a class="jxr_linenumber" name="298" href="#298">298</a> <em class="jxr_javadoccomment">   * error recovery), we can leave those optimization for the future.</em>
-<a class="jxr_linenumber" name="299" href="#299">299</a> <em class="jxr_javadoccomment">   * @param cell</em>
-<a class="jxr_linenumber" name="300" href="#300">300</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="301" href="#301">301</a>   @Override
-<a class="jxr_linenumber" name="302" href="#302">302</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> rollback(<a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> cell) {
-<a class="jxr_linenumber" name="303" href="#303">303</a>     <em class="jxr_comment">// If the key is in the snapshot, delete it. We should not update</em>
-<a class="jxr_linenumber" name="304" href="#304">304</a>     <em class="jxr_comment">// this.size, because that tracks the size of only the memstore and</em>
-<a class="jxr_linenumber" name="305" href="#305">305</a>     <em class="jxr_comment">// not the snapshot. The flush of this snapshot to disk has not</em>
-<a class="jxr_linenumber" name="306" href="#306">306</a>     <em class="jxr_comment">// yet started because Store.flush() waits for all rwcc transactions to</em>
-<a class="jxr_linenumber" name="307" href="#307">307</a>     <em class="jxr_comment">// commit before starting the flush to disk.</em>
-<a class="jxr_linenumber" name="308" href="#308">308</a>     <a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> found = <strong class="jxr_keyword">this</strong>.snapshot.get(cell);
-<a class="jxr_linenumber" name="309" href="#309">309</a>     <strong class="jxr_keyword">if</strong> (found != <strong class="jxr_keyword">null</strong> &amp;&amp; found.getSequenceId() == cell.getSequenceId()) {
-<a class="jxr_linenumber" name="310" href="#310">310</a>       <strong class="jxr_keyword">this</strong>.snapshot.remove(cell);
-<a class="jxr_linenumber" name="311" href="#311">311</a>       <strong class="jxr_keyword">long</strong> sz = heapSizeChange(cell, <strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="312" href="#312">312</a>       <strong class="jxr_keyword">this</strong>.snapshotSize -= sz;
-<a class="jxr_linenumber" name="313" href="#313">313</a>     }
-<a class="jxr_linenumber" name="314" href="#314">314</a>     <em class="jxr_comment">// If the key is in the memstore, delete it. Update this.size.</em>
-<a class="jxr_linenumber" name="315" href="#315">315</a>     found = <strong class="jxr_keyword">this</strong>.cellSet.get(cell);
-<a class="jxr_linenumber" name="316" href="#316">316</a>     <strong class="jxr_keyword">if</strong> (found != <strong class="jxr_keyword">null</strong> &amp;&amp; found.getSequenceId() == cell.getSequenceId()) {
-<a class="jxr_linenumber" name="317" href="#317">317</a>       removeFromCellSet(cell);
-<a class="jxr_linenumber" name="318" href="#318">318</a>       <strong class="jxr_keyword">long</strong> s = heapSizeChange(cell, <strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="319" href="#319">319</a>       <strong class="jxr_keyword">this</strong>.size.addAndGet(-s);
-<a class="jxr_linenumber" name="320" href="#320">320</a>     }
-<a class="jxr_linenumber" name="321" href="#321">321</a>   }
-<a class="jxr_linenumber" name="322" href="#322">322</a> 
-<a class="jxr_linenumber" name="323" href="#323">323</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="324" href="#324">324</a> <em class="jxr_javadoccomment">   * Write a delete</em>
-<a class="jxr_linenumber" name="325" href="#325">325</a> <em class="jxr_javadoccomment">   * @param deleteCell</em>
-<a class="jxr_linenumber" name="326" href="#326">326</a> <em class="jxr_javadoccomment">   * @return approximate size of the passed key and value.</em>
-<a class="jxr_linenumber" name="327" href="#327">327</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="328" href="#328">328</a>   @Override
-<a class="jxr_linenumber" name="329" href="#329">329</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">long</strong> delete(<a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> deleteCell) {
-<a class="jxr_linenumber" name="330" href="#330">330</a>     <strong class="jxr_keyword">long</strong> s = 0;
-<a class="jxr_linenumber" name="331" href="#331">331</a>     <a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> toAdd = maybeCloneWithAllocator(deleteCell);
-<a class="jxr_linenumber" name="332" href="#332">332</a>     s += heapSizeChange(toAdd, addToCellSet(toAdd));
-<a class="jxr_linenumber" name="333" href="#333">333</a>     timeRangeTracker.includeTimestamp(toAdd);
-<a class="jxr_linenumber" name="334" href="#334">334</a>     <strong class="jxr_keyword">this</strong>.size.addAndGet(s);
-<a class="jxr_linenumber" name="335" href="#335">335</a>     <strong class="jxr_keyword">return</strong> s;
-<a class="jxr_linenumber" name="336" href="#336">336</a>   }
-<a class="jxr_linenumber" name="337" href="#337">337</a> 
-<a class="jxr_linenumber" name="338" href="#338">338</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="339" href="#339">339</a> <em class="jxr_javadoccomment">   * @param cell Find the row that comes after this one.  If null, we return the</em>
-<a class="jxr_linenumber" name="340" href="#340">340</a> <em class="jxr_javadoccomment">   * first.</em>
-<a class="jxr_linenumber" name="341" href="#341">341</a> <em class="jxr_javadoccomment">   * @return Next row or null if none found.</em>
-<a class="jxr_linenumber" name="342" href="#342">342</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="343" href="#343">343</a>   <a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> getNextRow(<strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> cell) {
-<a class="jxr_linenumber" name="344" href="#344">344</a>     <strong class="jxr_keyword">return</strong> getLowest(getNextRow(cell, <strong class="jxr_keyword">this</strong>.cellSet), getNextRow(cell, <strong class="jxr_keyword">this</strong>.snapshot));
-<a class="jxr_linenumber" name="345" href="#345">345</a>   }
-<a class="jxr_linenumber" name="346" href="#346">346</a> 
-<a class="jxr_linenumber" name="347" href="#347">347</a>   <em class="jxr_comment">/*</em>
-<a class="jxr_linenumber" name="348" href="#348">348</a> <em class="jxr_comment">   * @param a</em>
-<a class="jxr_linenumber" name="349" href="#349">349</a> <em class="jxr_comment">   * @param b</em>
-<a class="jxr_linenumber" name="350" href="#350">350</a> <em class="jxr_comment">   * @return Return lowest of a or b or null if both a and b are null</em>
-<a class="jxr_linenumber" name="351" href="#351">351</a> <em class="jxr_comment">   */</em>
-<a class="jxr_linenumber" name="352" href="#352">352</a>   <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> getLowest(<strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> a, <strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> b) {
-<a class="jxr_linenumber" name="353" href="#353">353</a>     <strong class="jxr_keyword">if</strong> (a == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="354" href="#354">354</a>       <strong class="jxr_keyword">return</strong> b;
-<a class="jxr_linenumber" name="355" href="#355">355</a>     }
-<a class="jxr_linenumber" name="356" href="#356">356</a>     <strong class="jxr_keyword">if</strong> (b == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="357" href="#357">357</a>       <strong class="jxr_keyword">return</strong> a;
-<a class="jxr_linenumber" name="358" href="#358">358</a>     }
-<a class="jxr_linenumber" name="359" href="#359">359</a>     <strong class="jxr_keyword">return</strong> comparator.compareRows(a, b) &lt;= 0? a: b;
-<a class="jxr_linenumber" name="360" href="#360">360</a>   }
-<a class="jxr_linenumber" name="361" href="#361">361</a> 
-<a class="jxr_linenumber" name="362" href="#362">362</a>   <em class="jxr_comment">/*</em>
-<a class="jxr_linenumber" name="363" href="#363">363</a> <em class="jxr_comment">   * @param key Find row that follows this one.  If null, return first.</em>
-<a class="jxr_linenumber" name="364" href="#364">364</a> <em class="jxr_comment">   * @param map Set to look in for a row beyond &lt;code&gt;row&lt;/code&gt;.</em>
-<a class="jxr_linenumber" name="365" href="#365">365</a> <em class="jxr_comment">   * @return Next row or null if none found.  If one found, will be a new</em>
-<a class="jxr_linenumber" name="366" href="#366">366</a> <em class="jxr_comment">   * KeyValue -- can be destroyed by subsequent calls to this method.</em>
-<a class="jxr_linenumber" name="367" href="#367">367</a> <em class="jxr_comment">   */</em>
-<a class="jxr_linenumber" name="368" href="#368">368</a>   <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> getNextRow(<strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> key,
-<a class="jxr_linenumber" name="369" href="#369">369</a>       <strong class="jxr_keyword">final</strong> NavigableSet&lt;Cell&gt; set) {
-<a class="jxr_linenumber" name="370" href="#370">370</a>     <a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> result = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="371" href="#371">371</a>     SortedSet&lt;Cell&gt; tail = key == <strong class="jxr_keyword">null</strong>? set: set.tailSet(key);
-<a class="jxr_linenumber" name="372" href="#372">372</a>     <em class="jxr_comment">// Iterate until we fall into the next row; i.e. move off current row</em>
-<a class="jxr_linenumber" name="373" href="#373">373</a>     <strong class="jxr_keyword">for</strong> (Cell cell: tail) {
-<a class="jxr_linenumber" name="374" href="#374">374</a>       <strong class="jxr_keyword">if</strong> (comparator.compareRows(cell, key) &lt;= 0)
-<a class="jxr_linenumber" name="375" href="#375">375</a>         <strong class="jxr_keyword">continue</strong>;
-<a class="jxr_linenumber" name="376" href="#376">376</a>       <em class="jxr_comment">// Note: Not suppressing deletes or expired cells.  Needs to be handled</em>
-<a class="jxr_linenumber" name="377" href="#377">377</a>       <em class="jxr_comment">// by higher up functions.</em>
-<a class="jxr_linenumber" name="378" href="#378">378</a>       result = cell;
-<a class="jxr_linenumber" name="379" href="#379">379</a>       <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="380" href="#380">380</a>     }
-<a class="jxr_linenumber" name="381" href="#381">381</a>     <strong class="jxr_keyword">return</strong> result;
-<a class="jxr_linenumber" name="382" href="#382">382</a>   }
-<a class="jxr_linenumber" name="383" href="#383">383</a> 
-<a class="jxr_linenumber" name="384" href="#384">384</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="385" href="#385">385</a> <em class="jxr_javadoccomment">   * Only used by tests. TODO: Remove</em>
-<a class="jxr_linenumber" name="386" href="#386">386</a> <em class="jxr_javadoccomment">   *</em>
-<a class="jxr_linenumber" name="387" href="#387">387</a> <em class="jxr_javadoccomment">   * Given the specs of a column, update it, first by inserting a new record,</em>
-<a class="jxr_linenumber" name="388" href="#388">388</a> <em class="jxr_javadoccomment">   * then removing the old one.  Since there is only 1 KeyValue involved, the memstoreTS</em>
-<a class="jxr_linenumber" name="389" href="#389">389</a> <em class="jxr_javadoccomment">   * will be set to 0, thus ensuring that they instantly appear to anyone. The underlying</em>
-<a class="jxr_linenumber" name="390" href="#390">390</a> <em class="jxr_javadoccomment">   * store will ensure that the insert/delete each are atomic. A scanner/reader will either</em>
-<a class="jxr_linenumber" name="391" href="#391">391</a> <em class="jxr_javadoccomment">   * get the new value, or the old value and all readers will eventually only see the new</em>
-<a class="jxr_linenumber" name="392" href="#392">392</a> <em class="jxr_javadoccomment">   * value after the old was removed.</em>
-<a class="jxr_linenumber" name="393" href="#393">393</a> <em class="jxr_javadoccomment">   *</em>
-<a class="jxr_linenumber" name="394" href="#394">394</a> <em class="jxr_javadoccomment">   * @param row</em>
-<a class="jxr_linenumber" name="395" href="#395">395</a> <em class="jxr_javadoccomment">   * @param family</em>
-<a class="jxr_linenumber" name="396" href="#396">396</a> <em class="jxr_javadoccomment">   * @param qualifier</em>
-<a class="jxr_linenumber" name="397" href="#397">397</a> <em class="jxr_javadoccomment">   * @param newValue</em>
-<a class="jxr_linenumber" name="398" href="#398">398</a> <em class="jxr_javadoccomment">   * @param now</em>
-<a class="jxr_linenumber" name="399" href="#399">399</a> <em class="jxr_javadoccomment">   * @return  Timestamp</em>
-<a class="jxr_linenumber" name="400" href="#400">400</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="401" href="#401">401</a>   @Override
-<a class="jxr_linenumber" name="402" href="#402">402</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">long</strong> updateColumnValue(byte[] row,
-<a class="jxr_linenumber" name="403" href="#403">403</a>                                 byte[] family,
-<a class="jxr_linenumber" name="404" href="#404">404</a>                                 byte[] qualifier,
-<a class="jxr_linenumber" name="405" href="#405">405</a>                                 <strong class="jxr_keyword">long</strong> newValue,
-<a class="jxr_linenumber" name="406" href="#406">406</a>                                 <strong class="jxr_keyword">long</strong> now) {
-<a class="jxr_linenumber" name="407" href="#407">407</a>     <a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> firstCell = KeyValueUtil.createFirstOnRow(row, family, qualifier);
-<a class="jxr_linenumber" name="408" href="#408">408</a>     <em class="jxr_comment">// Is there a Cell in 'snapshot' with the same TS? If so, upgrade the timestamp a bit.</em>
-<a class="jxr_linenumber" name="409" href="#409">409</a>     SortedSet&lt;Cell&gt; snSs = snapshot.tailSet(firstCell);
-<a class="jxr_linenumber" name="410" href="#410">410</a>     <strong class="jxr_keyword">if</strong> (!snSs.isEmpty()) {
-<a class="jxr_linenumber" name="411" href="#411">411</a>       <a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> snc = snSs.first();
-<a class="jxr_linenumber" name="412" href="#412">412</a>       <em class="jxr_comment">// is there a matching Cell in the snapshot?</em>
-<a class="jxr_linenumber" name="413" href="#413">413</a>       <strong class="jxr_keyword">if</strong> (CellUtil.matchingRow(snc, firstCell) &amp;&amp; CellUtil.matchingQualifier(snc, firstCell)) {
-<a class="jxr_linenumber" name="414" href="#414">414</a>         <strong class="jxr_keyword">if</strong> (snc.getTimestamp() == now) {
-<a class="jxr_linenumber" name="415" href="#415">415</a>           <em class="jxr_comment">// poop,</em>
-<a class="jxr_linenumber" name="416" href="#416">416</a>           now += 1;
-<a class="jxr_linenumber" name="417" href="#417">417</a>         }
-<a class="jxr_linenumber" name="418" href="#418">418</a>       }
-<a class="jxr_linenumber" name="419" href="#419">419</a>     }
-<a class="jxr_linenumber" name="420" href="#420">420</a> 
-<a class="jxr_linenumber" name="421" href="#421">421</a>     <em class="jxr_comment">// logic here: the new ts MUST be at least 'now'. But it could be larger if necessary.</em>
-<a class="jxr_linenumber" name="422" href="#422">422</a>     <em class="jxr_comment">// But the timestamp should also be max(now, mostRecentTsInMemstore)</em>
-<a class="jxr_linenumber" name="423" href="#423">423</a> 
-<a class="jxr_linenumber" name="424" href="#424">424</a>     <em class="jxr_comment">// so we cant add the new Cell w/o knowing what's there already, but we also</em>
-<a class="jxr_linenumber" name="425" href="#425">425</a>     <em class="jxr_comment">// want to take this chance to delete some cells. So two loops (sad)</em>
-<a class="jxr_linenumber" name="426" href="#426">426</a> 
-<a class="jxr_linenumber" name="427" href="#427">427</a>     SortedSet&lt;Cell&gt; ss = cellSet.tailSet(firstCell);
-<a class="jxr_linenumber" name="428" href="#428">428</a>     <strong class="jxr_keyword">for</strong> (Cell cell : ss) {
-<a class="jxr_linenumber" name="429" href="#429">429</a>       <em class="jxr_comment">// if this isnt the row we are interested in, then bail:</em>
-<a class="jxr_linenumber" name="430" href="#430">430</a>       <strong class="jxr_keyword">if</strong> (!CellUtil.matchingColumn(cell, family, qualifier)
-<a class="jxr_linenumber" name="431" href="#431">431</a>           || !CellUtil.matchingRow(cell, firstCell)) {
-<a class="jxr_linenumber" name="432" href="#432">432</a>         <strong class="jxr_keyword">break</strong>; <em class="jxr_comment">// rows dont match, bail.</em>
-<a class="jxr_linenumber" name="433" href="#433">433</a>       }
-<a class="jxr_linenumber" name="434" href="#434">434</a> 
-<a class="jxr_linenumber" name="435" href="#435">435</a>       <em class="jxr_comment">// if the qualifier matches and it's a put, just RM it out of the cellSet.</em>
-<a class="jxr_linenumber" name="436" href="#436">436</a>       <strong class="jxr_keyword">if</strong> (cell.getTypeByte() == KeyValue.Type.Put.getCode() &amp;&amp;
-<a class="jxr_linenumber" name="437" href="#437">437</a>           cell.getTimestamp() &gt; now &amp;&amp; CellUtil.matchingQualifier(firstCell, cell)) {
-<a class="jxr_linenumber" name="438" href="#438">438</a>         now = cell.getTimestamp();
-<a class="jxr_linenumber" name="439" href="#439">439</a>       }
-<a class="jxr_linenumber" name="440" href="#440">440</a>     }
-<a class="jxr_linenumber" name="441" href="#441">441</a> 
-<a class="jxr_linenumber" name="442" href="#442">442</a>     <em class="jxr_comment">// create or update (upsert) a new Cell with</em>
-<a class="jxr_linenumber" name="443" href="#443">443</a>     <em class="jxr_comment">// 'now' and a 0 memstoreTS == immediately visible</em>
-<a class="jxr_linenumber" name="444" href="#444">444</a>     List&lt;Cell&gt; cells = <strong class="jxr_keyword">new</strong> ArrayList&lt;Cell&gt;(1);
-<a class="jxr_linenumber" name="445" href="#445">445</a>     cells.add(<strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/KeyValue.html">KeyValue</a>(row, family, qualifier, now, Bytes.toBytes(newValue)));
-<a class="jxr_linenumber" name="446" href="#446">446</a>     <strong class="jxr_keyword">return</strong> upsert(cells, 1L);
-<a class="jxr_linenumber" name="447" href="#447">447</a>   }
-<a class="jxr_linenumber" name="448" href="#448">448</a> 
-<a class="jxr_linenumber" name="449" href="#449">449</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="450" href="#450">450</a> <em class="jxr_javadoccomment">   * Update or insert the specified KeyValues.</em>
-<a class="jxr_linenumber" name="451" href="#451">451</a> <em class="jxr_javadoccomment">   * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="452" href="#452">452</a> <em class="jxr_javadoccomment">   * For each KeyValue, insert into MemStore.  This will atomically upsert the</em>
-<a class="jxr_linenumber" name="453" href="#453">453</a> <em class="jxr_javadoccomment">   * value for that row/family/qualifier.  If a KeyValue did already exist,</em>
-<a class="jxr_linenumber" name="454" href="#454">454</a> <em class="jxr_javadoccomment">   * it will then be removed.</em>
-<a class="jxr_linenumber" name="455" href="#455">455</a> <em class="jxr_javadoccomment">   * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="456" href="#456">456</a> <em class="jxr_javadoccomment">   * Currently the memstoreTS is kept at 0 so as each insert happens, it will</em>
-<a class="jxr_linenumber" name="457" href="#457">457</a> <em class="jxr_javadoccomment">   * be immediately visible.  May want to change this so it is atomic across</em>
-<a class="jxr_linenumber" name="458" href="#458">458</a> <em class="jxr_javadoccomment">   * all KeyValues.</em>
-<a class="jxr_linenumber" name="459" href="#459">459</a> <em class="jxr_javadoccomment">   * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="460" href="#460">460</a> <em class="jxr_javadoccomment">   * This is called under row lock, so Get operations will still see updates</em>
-<a class="jxr_linenumber" name="461" href="#461">461</a> <em class="jxr_javadoccomment">   * atomically.  Scans will only see each KeyValue update as atomic.</em>
-<a class="jxr_linenumber" name="462" href="#462">462</a> <em class="jxr_javadoccomment">   *</em>
-<a class="jxr_linenumber" name="463" href="#463">463</a> <em class="jxr_javadoccomment">   * @param cells</em>
-<a class="jxr_linenumber" name="464" href="#464">464</a> <em class="jxr_javadoccomment">   * @param readpoint readpoint below which we can safely remove duplicate KVs</em>
-<a class="jxr_linenumber" name="465" href="#465">465</a> <em class="jxr_javadoccomment">   * @return change in memstore size</em>
-<a class="jxr_linenumber" name="466" href="#466">466</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="467" href="#467">467</a>   @Override
-<a class="jxr_linenumber" name="468" href="#468">468</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">long</strong> upsert(Iterable&lt;Cell&gt; cells, <strong class="jxr_keyword">long</strong> readpoint) {
-<a class="jxr_linenumber" name="469" href="#469">469</a>     <strong class="jxr_keyword">long</strong> size = 0;
-<a class="jxr_linenumber" name="470" href="#470">470</a>     <strong class="jxr_keyword">for</strong> (Cell cell : cells) {
-<a class="jxr_linenumber" name="471" href="#471">471</a>       size += upsert(cell, readpoint);
-<a class="jxr_linenumber" name="472" href="#472">472</a>     }
-<a class="jxr_linenumber" name="473" href="#473">473</a>     <strong class="jxr_keyword">return</strong> size;
-<a class="jxr_linenumber" name="474" href="#474">474</a>   }
-<a class="jxr_linenumber" name="475" href="#475">475</a> 
-<a class="jxr_linenumber" name="476" href="#476">476</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="477" href="#477">477</a> <em class="jxr_javadoccomment">   * Inserts the specified KeyValue into MemStore and deletes any existing</em>
-<a class="jxr_linenumber" name="478" href="#478">478</a> <em class="jxr_javadoccomment">   * versions of the same row/family/qualifier as the specified KeyValue.</em>
-<a class="jxr_linenumber" name="479" href="#479">479</a> <em class="jxr_javadoccomment">   * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="480" href="#480">480</a> <em class="jxr_javadoccomment">   * First, the specified KeyValue is inserted into the Memstore.</em>
-<a class="jxr_linenumber" name="481" href="#481">481</a> <em class="jxr_javadoccomment">   * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="482" href="#482">482</a> <em class="jxr_javadoccomment">   * If there are any existing KeyValues in this MemStore with the same row,</em>
-<a class="jxr_linenumber" name="483" href="#483">483</a> <em class="jxr_javadoccomment">   * family, and qualifier, they are removed.</em>
-<a class="jxr_linenumber" name="484" href="#484">484</a> <em class="jxr_javadoccomment">   * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="485" href="#485">485</a> <em class="jxr_javadoccomment">   * Callers must hold the read lock.</em>
-<a class="jxr_linenumber" name="486" href="#486">486</a> <em class="jxr_javadoccomment">   *</em>
-<a class="jxr_linenumber" name="487" href="#487">487</a> <em class="jxr_javadoccomment">   * @param cell</em>
-<a class="jxr_linenumber" name="488" href="#488">488</a> <em class="jxr_javadoccomment">   * @return change in size of MemStore</em>
-<a class="jxr_linenumber" name="489" href="#489">489</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="490" href="#490">490</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">long</strong> upsert(<a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> cell, <strong class="jxr_keyword">long</strong> readpoint) {
-<a class="jxr_linenumber" name="491" href="#491">491</a>     <em class="jxr_comment">// Add the Cell to the MemStore</em>
-<a class="jxr_linenumber" name="492" href="#492">492</a>     <em class="jxr_comment">// Use the internalAdd method here since we (a) already have a lock</em>
-<a class="jxr_linenumber" name="493" href="#493">493</a>     <em class="jxr_comment">// and (b) cannot safely use the MSLAB here without potentially</em>
-<a class="jxr_linenumber" name="494" href="#494">494</a>     <em class="jxr_comment">// hitting OOME - see TestMemStore.testUpsertMSLAB for a</em>
-<a class="jxr_linenumber" name="495" href="#495">495</a>     <em class="jxr_comment">// test that triggers the pathological case if we don't avoid MSLAB</em>
-<a class="jxr_linenumber" name="496" href="#496">496</a>     <em class="jxr_comment">// here.</em>
-<a class="jxr_linenumber" name="497" href="#497">497</a>     <strong class="jxr_keyword">long</strong> addedSize = internalAdd(cell);
-<a class="jxr_linenumber" name="498" href="#498">498</a> 
-<a class="jxr_linenumber" name="499" href="#499">499</a>     <em class="jxr_comment">// Get the Cells for the row/family/qualifier regardless of timestamp.</em>
-<a class="jxr_linenumber" name="500" href="#500">500</a>     <em class="jxr_comment">// For this case we want to clean up any other puts</em>
-<a class="jxr_linenumber" name="501" href="#501">501</a>     <a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> firstCell = KeyValueUtil.createFirstOnRow(
-<a class="jxr_linenumber" name="502" href="#502">502</a>         cell.getRowArray(), cell.getRowOffset(), cell.getRowLength(),
-<a class="jxr_linenumber" name="503" href="#503">503</a>         cell.getFamilyArray(), cell.getFamilyOffset(), cell.getFamilyLength(),
-<a class="jxr_linenumber" name="504" href="#504">504</a>         cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength());
-<a class="jxr_linenumber" name="505" href="#505">505</a>     SortedSet&lt;Cell&gt; ss = cellSet.tailSet(firstCell);
-<a class="jxr_linenumber" name="506" href="#506">506</a>     Iterator&lt;Cell&gt; it = ss.iterator();
-<a class="jxr_linenumber" name="507" href="#507">507</a>     <em class="jxr_comment">// versions visible to oldest scanner</em>
-<a class="jxr_linenumber" name="508" href="#508">508</a>     <strong class="jxr_keyword">int</strong> versionsVisible = 0;
-<a class="jxr_linenumber" name="509" href="#509">509</a>     <strong class="jxr_keyword">while</strong> ( it.hasNext() ) {
-<a class="jxr_linenumber" name="510" href="#510">510</a>       <a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> cur = it.next();
-<a class="jxr_linenumber" name="511" href="#511">511</a> 
-<a class="jxr_linenumber" name="512" href="#512">512</a>       <strong class="jxr_keyword">if</strong> (cell == cur) {
-<a class="jxr_linenumber" name="513" href="#513">513</a>         <em class="jxr_comment">// ignore the one just put in</em>
-<a class="jxr_linenumber" name="514" href="#514">514</a>         <strong class="jxr_keyword">continue</strong>;
-<a class="jxr_linenumber" name="515" href="#515">515</a>       }
-<a class="jxr_linenumber" name="516" href="#516">516</a>       <em class="jxr_comment">// check that this is the row and column we are interested in, otherwise bail</em>
-<a class="jxr_linenumber" name="517" href="#517">517</a>       <strong class="jxr_keyword">if</strong> (CellUtil.matchingRow(cell, cur) &amp;&amp; CellUtil.matchingQualifier(cell, cur)) {
-<a class="jxr_linenumber" name="518" href="#518">518</a>         <em class="jxr_comment">// only remove Puts that concurrent scanners cannot possibly see</em>
-<a class="jxr_linenumber" name="519" href="#519">519</a>         <strong class="jxr_keyword">if</strong> (cur.getTypeByte() == KeyValue.Type.Put.getCode() &amp;&amp;
-<a class="jxr_linenumber" name="520" href="#520">520</a>             cur.getSequenceId() &lt;= readpoint) {
-<a class="jxr_linenumber" name="521" href="#521">521</a>           <strong class="jxr_keyword">if</strong> (versionsVisible &gt;= 1) {
-<a class="jxr_linenumber" name="522" href="#522">522</a>             <em class="jxr_comment">// if we get here we have seen at least one version visible to the oldest scanner,</em>
-<a class="jxr_linenumber" name="523" href="#523">523</a>             <em class="jxr_comment">// which means we can prove that no scanner will see this version</em>
-<a class="jxr_linenumber" name="524" href="#524">524</a> 
-<a class="jxr_linenumber" name="525" href="#525">525</a>             <em class="jxr_comment">// false means there was a change, so give us the size.</em>
-<a class="jxr_linenumber" name="526" href="#526">526</a>             <strong class="jxr_keyword">long</strong> delta = heapSizeChange(cur, <strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="527" href="#527">527</a>             addedSize -= delta;
-<a class="jxr_linenumber" name="528" href="#528">528</a>             <strong class="jxr_keyword">this</strong>.size.addAndGet(-delta);
-<a class="jxr_linenumber" name="529" href="#529">529</a>             it.remove();
-<a class="jxr_linenumber" name="530" href="#530">530</a>             setOldestEditTimeToNow();
-<a class="jxr_linenumber" name="531" href="#531">531</a>           } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="532" href="#532">532</a>             versionsVisible++;
-<a class="jxr_linenumber" name="533" href="#533">533</a>           }
-<a class="jxr_linenumber" name="534" href="#534">534</a>         }
-<a class="jxr_linenumber" name="535" href="#535">535</a>       } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="536" href="#536">536</a>         <em class="jxr_comment">// past the row or column, done</em>
-<a class="jxr_linenumber" name="537" href="#537">537</a>         <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="538" href="#538">538</a>       }
-<a class="jxr_linenumber" name="539" href="#539">539</a>     }
-<a class="jxr_linenumber" name="540" href="#540">540</a>     <strong class="jxr_keyword">return</strong> addedSize;
-<a class="jxr_linenumber" name="541" href="#541">541</a>   }
-<a class="jxr_linenumber" name="542" href="#542">542</a> 
-<a class="jxr_linenumber" name="543" href="#543">543</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="544" href="#544">544</a> <em class="jxr_javadoccomment">   * @return scanner on memstore and snapshot in this order.</em>
-<a class="jxr_linenumber" name="545" href="#545">545</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="546" href="#546">546</a>   @Override
-<a class="jxr_linenumber" name="547" href="#547">547</a>   <strong class="jxr_keyword">public</strong> List&lt;KeyValueScanner&gt; getScanners(<strong class="jxr_keyword">long</strong> readPt) {
-<a class="jxr_linenumber" name="548" href="#548">548</a>     <strong class="jxr_keyword">return</strong> Collections.&lt;KeyValueScanner&gt; singletonList(<strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.html">MemStoreScanner</a>(readPt));
-<a class="jxr_linenumber" name="549" href="#549">549</a>   }
-<a class="jxr_linenumber" name="550" href="#550">550</a> 
-<a class="jxr_linenumber" name="551" href="#551">551</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="552" href="#552">552</a> <em class="jxr_javadoccomment">   * Check if this memstore may contain the required keys</em>
-<a class="jxr_linenumber" name="553" href="#553">553</a> <em class="jxr_javadoccomment">   * @param scan</em>
-<a class="jxr_linenumber" name="554" href="#554">554</a> <em class="jxr_javadoccomment">   * @return False if the key definitely does not exist in this Memstore</em>
-<a class="jxr_linenumber" name="555" href="#555">555</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="556" href="#556">556</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> shouldSeek(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html">Scan</a> scan, <strong class="jxr_keyword">long</strong> oldestUnexpiredTS) {
-<a class="jxr_linenumber" name="557" href="#557">557</a>     <strong class="jxr_keyword">return</strong> (timeRangeTracker.includesTimeRange(scan.getTimeRange()) ||
-<a class="jxr_linenumber" name="558" href="#558">558</a>         snapshotTimeRangeTracker.includesTimeRange(scan.getTimeRange()))
-<a class="jxr_linenumber" name="559" href="#559">559</a>         &amp;&amp; (Math.max(timeRangeTracker.getMaximumTimestamp(),
-<a class="jxr_linenumber" name="560" href="#560">560</a>                      snapshotTimeRangeTracker.getMaximumTimestamp()) &gt;=
-<a class="jxr_linenumber" name="561" href="#561">561</a>             oldestUnexpiredTS);
-<a class="jxr_linenumber" name="562" href="#562">562</a>   }
-<a class="jxr_linenumber" name="563" href="#563">563</a> 
-<a class="jxr_linenumber" name="564" href="#564">564</a>   <em class="jxr_comment">/*</em>
-<a class="jxr_linenumber" name="565" href="#565">565</a> <em class="jxr_comment">   * MemStoreScanner implements the KeyValueScanner.</em>
-<a class="jxr_linenumber" name="566" href="#566">566</a> <em class="jxr_comment">   * It lets the caller scan the contents of a memstore -- both current</em>
-<a class="jxr_linenumber" name="567" href="#567">567</a> <em class="jxr_comment">   * map and snapshot.</em>
-<a class="jxr_linenumber" name="568" href="#568">568</a> <em class="jxr_comment">   * This behaves as if it were a real scanner but does not maintain position.</em>
-<a class="jxr_linenumber" name="569" href="#569">569</a> <em class="jxr_comment">   */</em>
-<a class="jxr_linenumber" name="570" href="#570">570</a>   <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.html">MemStoreScanner</a> <strong class="jxr_keyword">extends</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/NonLazyKeyValueScanner.html">NonLazyKeyValueScanner</a> {
-<a class="jxr_linenumber" name="571" href="#571">571</a>     <em class="jxr_comment">// Next row information for either cellSet or snapshot</em>
-<a class="jxr_linenumber" name="572" href="#572">572</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> cellSetNextRow = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="573" href="#573">573</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> snapshotNextRow = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="574" href="#574">574</a> 
-<a class="jxr_linenumber" name="575" href="#575">575</a>     <em class="jxr_comment">// last iterated Cells for cellSet and snapshot (to restore iterator state after reseek)</em>
-<a class="jxr_linenumber" name="576" href="#576">576</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> cellSetItRow = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="577" href="#577">577</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> snapshotItRow = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="578" href="#578">578</a>     
-<a class="jxr_linenumber" name="579" href="#579">579</a>     <em class="jxr_comment">// iterator based scanning.</em>
-<a class="jxr_linenumber" name="580" href="#580">580</a>     <strong class="jxr_keyword">private</strong> Iterator&lt;Cell&gt; cellSetIt;
-<a class="jxr_linenumber" name="581" href="#581">581</a>     <strong class="jxr_keyword">private</strong> Iterator&lt;Cell&gt; snapshotIt;
+<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.io.TimeRange;
+<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.ByteRange;
+<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.Bytes;
+<a class="jxr_linenumber" name="46" href="#46">46</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.ClassSize;
+<a class="jxr_linenumber" name="47" href="#47">47</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.CollectionBackedScanner;
+<a class="jxr_linenumber" name="48" href="#48">48</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
+<a class="jxr_linenumber" name="49" href="#49">49</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.ReflectionUtils;
+<a class="jxr_linenumber" name="50" href="#50">50</a>  <strong class="jxr_keyword">import</strong> org.apache.htrace.Trace;
+<a class="jxr_linenumber" name="51" href="#51">51</a>  
+<a class="jxr_linenumber" name="52" href="#52">52</a>  <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="53" href="#53">53</a>  <em class="jxr_javadoccomment"> * The MemStore holds in-memory modifications to the Store.  Modifications</em>
+<a class="jxr_linenumber" name="54" href="#54">54</a>  <em class="jxr_javadoccomment"> * are {@link Cell}s.  When asked to flush, current memstore is moved</em>
+<a class="jxr_linenumber" name="55" href="#55">55</a>  <em class="jxr_javadoccomment"> * to snapshot and is cleared.  We continue to serve edits out of new memstore</em>
+<a class="jxr_linenumber" name="56" href="#56">56</a>  <em class="jxr_javadoccomment"> * and backing snapshot until flusher reports in that the flush succeeded. At</em>
+<a class="jxr_linenumber" name="57" href="#57">57</a>  <em class="jxr_javadoccomment"> * this point we let the snapshot go.</em>
+<a class="jxr_linenumber" name="58" href="#58">58</a>  <em class="jxr_javadoccomment"> *  &lt;p&gt;</em>
+<a class="jxr_linenumber" name="59" href="#59">59</a>  <em class="jxr_javadoccomment"> * The MemStore functions should not be called in parallel. Callers should hold</em>
+<a class="jxr_linenumber" name="60" href="#60">60</a>  <em class="jxr_javadoccomment"> *  write and read locks. This is done in {@link HStore}.</em>
+<a class="jxr_linenumber" name="61" href="#61">61</a>  <em class="jxr_javadoccomment"> *  &lt;/p&gt;</em>
+<a class="jxr_linenumber" name="62" href="#62">62</a>  <em class="jxr_javadoccomment"> *</em>
+<a class="jxr_linenumber" name="63" href="#63">63</a>  <em class="jxr_javadoccomment"> * TODO: Adjust size of the memstore when we remove items because they have</em>
+<a class="jxr_linenumber" name="64" href="#64">64</a>  <em class="jxr_javadoccomment"> * been deleted.</em>
+<a class="jxr_linenumber" name="65" href="#65">65</a>  <em class="jxr_javadoccomment"> * TODO: With new KVSLS, need to make sure we update HeapSize with difference</em>
+<a class="jxr_linenumber" name="66" href="#66">66</a>  <em class="jxr_javadoccomment"> * in KV size.</em>
+<a class="jxr_linenumber" name="67" href="#67">67</a>  <em class="jxr_javadoccomment"> */</em>
+<a class="jxr_linenumber" name="68" href="#68">68</a>  @InterfaceAudience.Private
+<a class="jxr_linenumber" name="69" href="#69">69</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.html">DefaultMemStore</a> <strong class="jxr_keyword">implements</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore.html">MemStore</a> {
+<a class="jxr_linenumber" name="70" href="#70">70</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Log LOG = LogFactory.getLog(DefaultMemStore.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="71" href="#71">71</a>    <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String USEMSLAB_KEY = <span class="jxr_string">"hbase.hregion.memstore.mslab.enabled"</span>;
+<a class="jxr_linenumber" name="72" href="#72">72</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">boolean</strong> USEMSLAB_DEFAULT = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="73" href="#73">73</a>    <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String MSLAB_CLASS_NAME = <span class="jxr_string">"hbase.regionserver.mslab.class"</span>;
+<a class="jxr_linenumber" name="74" href="#74">74</a>  
+<a class="jxr_linenumber" name="75" href="#75">75</a>    <strong class="jxr_keyword">private</strong> Configuration conf;
+<a class="jxr_linenumber" name="76" href="#76">76</a>  
+<a class="jxr_linenumber" name="77" href="#77">77</a>    <em class="jxr_comment">// MemStore.  Use a CellSkipListSet rather than SkipListSet because of the</em>
+<a class="jxr_linenumber" name="78" href="#78">78</a>    <em class="jxr_comment">// better semantics.  The Map will overwrite if passed a key it already had</em>
+<a class="jxr_linenumber" name="79" href="#79">79</a>    <em class="jxr_comment">// whereas the Set will not add new Cell if key is same though value might be</em>
+<a class="jxr_linenumber" name="80" href="#80">80</a>    <em class="jxr_comment">// different.  Value is not important -- just make sure always same</em>
+<a class="jxr_linenumber" name="81" href="#81">81</a>    <em class="jxr_comment">// reference passed.</em>
+<a class="jxr_linenumber" name="82" href="#82">82</a>    <strong class="jxr_keyword">volatile</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSkipListSet.html">CellSkipListSet</a> cellSet;
+<a class="jxr_linenumber" name="83" href="#83">83</a>  
+<a class="jxr_linenumber" name="84" href="#84">84</a>    <em class="jxr_comment">// Snapshot of memstore.  Made for flusher.</em>
+<a class="jxr_linenumber" name="85" href="#85">85</a>    <strong class="jxr_keyword">volatile</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSkipListSet.html">CellSkipListSet</a> snapshot;
+<a class="jxr_linenumber" name="86" href="#86">86</a>  
+<a class="jxr_linenumber" name="87" href="#87">87</a>    <strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html">CellComparator</a> comparator;
+<a class="jxr_linenumber" name="88" href="#88">88</a>  
+<a class="jxr_linenumber" name="89" href="#89">89</a>    <em class="jxr_comment">// Used to track own heapSize</em>
+<a class="jxr_linenumber" name="90" href="#90">90</a>    <strong class="jxr_keyword">final</strong> AtomicLong size;
+<a class="jxr_linenumber" name="91" href="#91">91</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">volatile</strong> <strong class="jxr_keyword">long</strong> snapshotSize;
+<a class="jxr_linenumber" name="92" href="#92">92</a>  
+<a class="jxr_linenumber" name="93" href="#93">93</a>    <em class="jxr_comment">// Used to track when to flush</em>
+<a class="jxr_linenumber" name="94" href="#94">94</a>    <strong class="jxr_keyword">volatile</strong> <strong class="jxr_keyword">long</strong> timeOfOldestEdit = Long.MAX_VALUE;
+<a class="jxr_linenumber" name="95" href="#95">95</a>  
+<a class="jxr_linenumber" name="96" href="#96">96</a>    <a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.html">TimeRangeTracker</a> timeRangeTracker;
+<a class="jxr_linenumber" name="97" href="#97">97</a>    <a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.html">TimeRangeTracker</a> snapshotTimeRangeTracker;
+<a class="jxr_linenumber" name="98" href="#98">98</a>  
+<a class="jxr_linenumber" name="99" href="#99">99</a>    <strong class="jxr_keyword">volatile</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html">MemStoreLAB</a> allocator;
+<a class="jxr_linenumber" name="100" href="#100">100</a>   <strong class="jxr_keyword">volatile</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html">MemStoreLAB</a> snapshotAllocator;
+<a class="jxr_linenumber" name="101" href="#101">101</a>   <strong class="jxr_keyword">volatile</strong> <strong class="jxr_keyword">long</strong> snapshotId;
+<a class="jxr_linenumber" name="102" href="#102">102</a>   <strong class="jxr_keyword">volatile</strong> <strong class="jxr_keyword">boolean</strong> tagsPresent;
+<a class="jxr_linenumber" name="103" href="#103">103</a> 
+<a class="jxr_linenumber" name="104" href="#104">104</a>   <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="105" href="#105">105</a> <em class="jxr_javadoccomment">   * Default constructor. Used for tests.</em>
+<a class="jxr_linenumber" name="106" href="#106">106</a> <em class="jxr_javadoccomment">   */</em>
+<a class="jxr_linenumber" name="107" href="#107">107</a>   <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.html">DefaultMemStore</a>() {
+<a class="jxr_linenumber" name="108" href="#108">108</a>     <strong class="jxr_keyword">this</strong>(HBaseConfiguration.create(), CellComparator.COMPARATOR);
+<a class="jxr_linenumber" name="109" href="#109">109</a>   }
+<a class="jxr_linenumber" name="110" href="#110">110</a> 
+<a class="jxr_linenumber" name="111" href="#111">111</a>   <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="112" href="#112">112</a> <em class="jxr_javadoccomment">   * Constructor.</em>
+<a class="jxr_linenumber" name="113" href="#113">113</a> <em class="jxr_javadoccomment">   * @param c Comparator</em>
+<a class="jxr_linenumber" name="114" href="#114">114</a> <em class="jxr_javadoccomment">   */</em>
+<a class="jxr_linenumber" name="115" href="#115">115</a>   <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultMemStore.html">DefaultMemStore</a>(<strong class="jxr_keyword">final</strong> Configuration conf,
+<a class="jxr_linenumber" name="116" href="#116">116</a>                   <strong class="jxr_keyword">final</strong> <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html">CellComparator</a> c) {
+<a class="jxr_linenumber" name="117" href="#117">117</a>     <strong class="jxr_keyword">this</strong>.conf = conf;
+<a class="jxr_linenumber" name="118" href="#118">118</a>     <strong class="jxr_keyword">this</strong>.comparator = c;
+<a class="jxr_linenumber" name="119" href="#119">119</a>     <strong class="jxr_keyword">this</strong>.cellSet = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSkipListSet.html">CellSkipListSet</a>(c);
+<a class="jxr_linenumber" name="120" href="#120">120</a>     <strong class="jxr_keyword">this</strong>.snapshot = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/CellSkipListSet.html">CellSkipListSet</a>(c);
+<a class="jxr_linenumber" name="121" href="#121">121</a>     timeRangeTracker = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.html">TimeRangeTracker</a>();
+<a class="jxr_linenumber" name="122" href="#122">122</a>     snapshotTimeRangeTracker = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.html">TimeRangeTracker</a>();
+<a class="jxr_linenumber" name="123" href="#123">123</a>     <strong class="jxr_keyword">this</strong>.size = <strong class="jxr_keyword">new</strong> AtomicLong(DEEP_OVERHEAD);
+<a class="jxr_linenumber" name="124" href="#124">124</a>     <strong class="jxr_keyword">this</strong>.snapshotSize = 0;
+<a class="jxr_linenumber" name="125" href="#125">125</a>     <strong class="jxr_keyword">if</strong> (conf.getBoolean(USEMSLAB_KEY, USEMSLAB_DEFAULT)) {
+<a class="jxr_linenumber" name="126" href="#126">126</a>       String className = conf.get(MSLAB_CLASS_NAME, HeapMemStoreLAB.<strong class="jxr_keyword">class</strong>.getName());
+<a class="jxr_linenumber" name="127" href="#127">127</a>       <strong class="jxr_keyword">this</strong>.allocator = ReflectionUtils.instantiateWithCustomCtor(className,
+<a class="jxr_linenumber" name="128" href="#128">128</a>           <strong class="jxr_keyword">new</strong> Class[] { Configuration.<strong class="jxr_keyword">class</strong> }, <strong class="jxr_keyword">new</strong> Object[] { conf });
+<a class="jxr_linenumber" name="129" href="#129">129</a>     } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="130" href="#130">130</a>       <strong class="jxr_keyword">this</strong>.allocator = <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="131" href="#131">131</a>     }
+<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>   <strong class="jxr_keyword">void</strong> dump() {
+<a class="jxr_linenumber" name="135" href="#135">135</a>     <strong class="jxr_keyword">for</strong> (Cell cell: <strong class="jxr_keyword">this</strong>.cellSet) {
+<a class="jxr_linenumber" name="136" href="#136">136</a>       LOG.info(cell);
+<a class="jxr_linenumber" name="137" href="#137">137</a>     }
+<a class="jxr_linenumber" name="138" href="#138">138</a>     <strong class="jxr_keyword">for</strong> (Cell cell: <strong class="jxr_keyword">this</strong>.snapshot) {
+<a class="jxr_linenumber" name="139" href="#139">139</a>       LOG.info(cell);
+<a class="jxr_linenumber" name="140" href="#140">140</a>     }
+<a class="jxr_linenumber" name="141" href="#141">141</a>   }
+<a class="jxr_linenumber" name="142" href="#142">142</a> 
+<a class="jxr_linenumber" name="143" href="#143">143</a>   <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="144" href="#144">144</a> <em class="jxr_javadoccomment">   * Creates a snapshot of the current memstore.</em>
+<a class="jxr_linenumber" name="145" href="#145">145</a> <em class="jxr_javadoccomment">   * Snapshot must be cleared by call to {@link #clearSnapshot(long)}</em>
+<a class="jxr_linenumber" name="146" href="#146">146</a> <em class="jxr_javadoccomment">   */</em>
+<a class="jxr_linenumber" name="147" href="#147">147</a>   @Override
+<a class="jxr_linenumber" name="148" href="#148">148</a>   <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSnapshot.html">MemStoreSnapshot</a> snapshot() {
+<a class="jxr_linenumber" name="149" href="#149">149</a>     <em class="jxr_comment">// If snapshot currently has entries, then flusher failed or didn't call</em>
+<a class="jxr_linenumber" name="150" href="#150">150</a>     <em class="jxr_comment">// cleanup.  Log a warning.</em>
+<a class="jxr_linenumber" name="151" href="#151">151</a>     <strong class="jxr_keyword">if</strong> (!<strong class="jxr_keyword">this</strong>.snapshot.isEmpty()) {
+<a class="jxr_linenumber" name="152" href="#152">152</a>       LOG.warn(<span class="jxr_string">"Snapshot called again without clearing previous. "</span> +
+<a class="jxr_linenumber" name="153" href="#153">153</a>           <span class="jxr_string">"Doing nothing. Another ongoing flush or did we fail last attempt?"</span>);
+<a class="jxr_linenumber" name="154" href="#154">154</a>     } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="155" href="#155">155</a>       <strong class="jxr_keyword">this</strong>.snapshotId = EnvironmentEdgeManager.currentTime();
+<a class="jxr_linenumber" name="156" href="#156">156</a>       <strong class="jxr_keyword">this</strong>.snapshotSize = keySize();
+<a class="jxr_linenumber" name="157" href="#157">157</a>       <strong class="jxr_keyword">if</stron

<TRUNCATED>

[08/24] hbase git commit: Published site at 0d72849581c1e5a50a2aa7757b909e5531b8d12c.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.ReadOwnWritesTester.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.ReadOwnWritesTester.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.ReadOwnWritesTester.html
index 1c3da8c..abc212d 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.ReadOwnWritesTester.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.ReadOwnWritesTester.html
@@ -69,1032 +69,1038 @@
 <span class="sourceLineNo">061</span>import com.google.common.collect.Iterables;<a name="line.61"></a>
 <span class="sourceLineNo">062</span>import com.google.common.collect.Lists;<a name="line.62"></a>
 <span class="sourceLineNo">063</span><a name="line.63"></a>
-<span class="sourceLineNo">064</span>/** memstore test case */<a name="line.64"></a>
-<span class="sourceLineNo">065</span>@Category({RegionServerTests.class, MediumTests.class})<a name="line.65"></a>
-<span class="sourceLineNo">066</span>public class TestDefaultMemStore extends TestCase {<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  private static final Log LOG = LogFactory.getLog(TestDefaultMemStore.class);<a name="line.67"></a>
-<span class="sourceLineNo">068</span>  private DefaultMemStore memstore;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  private static final int ROW_COUNT = 10;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  private static final int QUALIFIER_COUNT = ROW_COUNT;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  private static final byte [] FAMILY = Bytes.toBytes("column");<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  private MultiVersionConcurrencyControl mvcc;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>  private AtomicLong startSeqNum = new AtomicLong(0);<a name="line.73"></a>
-<span class="sourceLineNo">074</span><a name="line.74"></a>
-<span class="sourceLineNo">075</span>  @Override<a name="line.75"></a>
-<span class="sourceLineNo">076</span>  public void setUp() throws Exception {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    super.setUp();<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    this.mvcc = new MultiVersionConcurrencyControl();<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    this.memstore = new DefaultMemStore();<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 void testPutSameKey() {<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    byte [] bytes = Bytes.toBytes(getName());<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    KeyValue kv = new KeyValue(bytes, bytes, bytes, bytes);<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    this.memstore.add(kv);<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    byte [] other = Bytes.toBytes("somethingelse");<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    KeyValue samekey = new KeyValue(bytes, bytes, bytes, other);<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    this.memstore.add(samekey);<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    Cell found = this.memstore.cellSet.first();<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    assertEquals(1, this.memstore.cellSet.size());<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    assertTrue(<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      Bytes.toString(found.getValueArray(), found.getValueOffset(), found.getValueLength()),<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      CellUtil.matchingValue(samekey, found));<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>   * Test memstore snapshot happening while scanning.<a name="line.97"></a>
-<span class="sourceLineNo">098</span>   * @throws IOException<a name="line.98"></a>
-<span class="sourceLineNo">099</span>   */<a name="line.99"></a>
-<span class="sourceLineNo">100</span>  public void testScanAcrossSnapshot() throws IOException {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    int rowCount = addRows(this.memstore);<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    List&lt;KeyValueScanner&gt; memstorescanners = this.memstore.getScanners(0);<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    Scan scan = new Scan();<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    List&lt;Cell&gt; result = new ArrayList&lt;Cell&gt;();<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    Configuration conf = HBaseConfiguration.create();<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    ScanInfo scanInfo =<a name="line.106"></a>
-<span class="sourceLineNo">107</span>        new ScanInfo(conf, null, 0, 1, HConstants.LATEST_TIMESTAMP, KeepDeletedCells.FALSE, 0,<a name="line.107"></a>
-<span class="sourceLineNo">108</span>            this.memstore.comparator);<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    ScanType scanType = ScanType.USER_SCAN;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    StoreScanner s = new StoreScanner(scan, scanInfo, scanType, null, memstorescanners);<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    int count = 0;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    try {<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      while (s.next(result)) {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>        LOG.info(result);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>        count++;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>        // Row count is same as column count.<a name="line.116"></a>
-<span class="sourceLineNo">117</span>        assertEquals(rowCount, result.size());<a name="line.117"></a>
-<span class="sourceLineNo">118</span>        result.clear();<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      }<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    } finally {<a name="line.120"></a>
-<span class="sourceLineNo">121</span>      s.close();<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    }<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    assertEquals(rowCount, count);<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    for (KeyValueScanner scanner : memstorescanners) {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      scanner.close();<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>    memstorescanners = this.memstore.getScanners(mvcc.getReadPoint());<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    // Now assert can count same number even if a snapshot mid-scan.<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    s = new StoreScanner(scan, scanInfo, scanType, null, memstorescanners);<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    count = 0;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    try {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      while (s.next(result)) {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>        LOG.info(result);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>        // Assert the stuff is coming out in right order.<a name="line.135"></a>
-<span class="sourceLineNo">136</span>        assertTrue(CellUtil.matchingRow(result.get(0), Bytes.toBytes(count)));<a name="line.136"></a>
-<span class="sourceLineNo">137</span>        count++;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>        // Row count is same as column count.<a name="line.138"></a>
-<span class="sourceLineNo">139</span>        assertEquals(rowCount, result.size());<a name="line.139"></a>
-<span class="sourceLineNo">140</span>        if (count == 2) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>          this.memstore.snapshot();<a name="line.141"></a>
-<span class="sourceLineNo">142</span>          LOG.info("Snapshotted");<a name="line.142"></a>
-<span class="sourceLineNo">143</span>        }<a name="line.143"></a>
-<span class="sourceLineNo">144</span>        result.clear();<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      }<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    } finally {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>      s.close();<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    }<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    assertEquals(rowCount, count);<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    for (KeyValueScanner scanner : memstorescanners) {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      scanner.close();<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    }<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    memstorescanners = this.memstore.getScanners(mvcc.getReadPoint());<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    // Assert that new values are seen in kvset as we scan.<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    long ts = System.currentTimeMillis();<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    s = new StoreScanner(scan, scanInfo, scanType, null, memstorescanners);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    count = 0;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    int snapshotIndex = 5;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    try {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      while (s.next(result)) {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        LOG.info(result);<a name="line.161"></a>
-<span class="sourceLineNo">162</span>        // Assert the stuff is coming out in right order.<a name="line.162"></a>
-<span class="sourceLineNo">163</span>        assertTrue(CellUtil.matchingRow(result.get(0), Bytes.toBytes(count)));<a name="line.163"></a>
-<span class="sourceLineNo">164</span>        // Row count is same as column count.<a name="line.164"></a>
-<span class="sourceLineNo">165</span>        assertEquals("count=" + count + ", result=" + result, rowCount, result.size());<a name="line.165"></a>
-<span class="sourceLineNo">166</span>        count++;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        if (count == snapshotIndex) {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>          MemStoreSnapshot snapshot = this.memstore.snapshot();<a name="line.168"></a>
-<span class="sourceLineNo">169</span>          this.memstore.clearSnapshot(snapshot.getId());<a name="line.169"></a>
-<span class="sourceLineNo">170</span>          // Added more rows into kvset.  But the scanner wont see these rows.<a name="line.170"></a>
-<span class="sourceLineNo">171</span>          addRows(this.memstore, ts);<a name="line.171"></a>
-<span class="sourceLineNo">172</span>          LOG.info("Snapshotted, cleared it and then added values (which wont be seen)");<a name="line.172"></a>
-<span class="sourceLineNo">173</span>        }<a name="line.173"></a>
-<span class="sourceLineNo">174</span>        result.clear();<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      }<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    } finally {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      s.close();<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    }<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    assertEquals(rowCount, count);<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 simple test which verifies the 3 possible states when scanning across snapshot.<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   * @throws IOException<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   * @throws CloneNotSupportedException<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   */<a name="line.186"></a>
-<span class="sourceLineNo">187</span>  public void testScanAcrossSnapshot2() throws IOException, CloneNotSupportedException {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    // we are going to the scanning across snapshot with two kvs<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    // kv1 should always be returned before kv2<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    final byte[] one = Bytes.toBytes(1);<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    final byte[] two = Bytes.toBytes(2);<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    final byte[] f = Bytes.toBytes("f");<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    final byte[] q = Bytes.toBytes("q");<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    final byte[] v = Bytes.toBytes(3);<a name="line.194"></a>
-<span class="sourceLineNo">195</span><a name="line.195"></a>
-<span class="sourceLineNo">196</span>    final KeyValue kv1 = new KeyValue(one, f, q, v);<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    final KeyValue kv2 = new KeyValue(two, f, q, v);<a name="line.197"></a>
+<span class="sourceLineNo">064</span>import static org.mockito.Mockito.mock;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import static org.mockito.Mockito.when;<a name="line.65"></a>
+<span class="sourceLineNo">066</span><a name="line.66"></a>
+<span class="sourceLineNo">067</span>/** memstore test case */<a name="line.67"></a>
+<span class="sourceLineNo">068</span>@Category({RegionServerTests.class, MediumTests.class})<a name="line.68"></a>
+<span class="sourceLineNo">069</span>public class TestDefaultMemStore extends TestCase {<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  private static final Log LOG = LogFactory.getLog(TestDefaultMemStore.class);<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  private DefaultMemStore memstore;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  private static final int ROW_COUNT = 10;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  private static final int QUALIFIER_COUNT = ROW_COUNT;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  private static final byte [] FAMILY = Bytes.toBytes("column");<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  private MultiVersionConcurrencyControl mvcc;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  private AtomicLong startSeqNum = new AtomicLong(0);<a name="line.76"></a>
+<span class="sourceLineNo">077</span><a name="line.77"></a>
+<span class="sourceLineNo">078</span>  @Override<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  public void setUp() throws Exception {<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    super.setUp();<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    this.mvcc = new MultiVersionConcurrencyControl();<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    this.memstore = new DefaultMemStore();<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  }<a name="line.83"></a>
+<span class="sourceLineNo">084</span><a name="line.84"></a>
+<span class="sourceLineNo">085</span>  public void testPutSameKey() {<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    byte [] bytes = Bytes.toBytes(getName());<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    KeyValue kv = new KeyValue(bytes, bytes, bytes, bytes);<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    this.memstore.add(kv);<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    byte [] other = Bytes.toBytes("somethingelse");<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    KeyValue samekey = new KeyValue(bytes, bytes, bytes, other);<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    this.memstore.add(samekey);<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    Cell found = this.memstore.cellSet.first();<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    assertEquals(1, this.memstore.cellSet.size());<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    assertTrue(<a name="line.94"></a>
+<span class="sourceLineNo">095</span>      Bytes.toString(found.getValueArray(), found.getValueOffset(), found.getValueLength()),<a name="line.95"></a>
+<span class="sourceLineNo">096</span>      CellUtil.matchingValue(samekey, found));<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>  /**<a name="line.99"></a>
+<span class="sourceLineNo">100</span>   * Test memstore snapshot happening while scanning.<a name="line.100"></a>
+<span class="sourceLineNo">101</span>   * @throws IOException<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   */<a name="line.102"></a>
+<span class="sourceLineNo">103</span>  public void testScanAcrossSnapshot() throws IOException {<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    int rowCount = addRows(this.memstore);<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    List&lt;KeyValueScanner&gt; memstorescanners = this.memstore.getScanners(0);<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    Scan scan = new Scan();<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    List&lt;Cell&gt; result = new ArrayList&lt;Cell&gt;();<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    Configuration conf = HBaseConfiguration.create();<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    ScanInfo scanInfo =<a name="line.109"></a>
+<span class="sourceLineNo">110</span>        new ScanInfo(conf, null, 0, 1, HConstants.LATEST_TIMESTAMP, KeepDeletedCells.FALSE, 0,<a name="line.110"></a>
+<span class="sourceLineNo">111</span>            this.memstore.comparator);<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    ScanType scanType = ScanType.USER_SCAN;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    StoreScanner s = new StoreScanner(scan, scanInfo, scanType, null, memstorescanners);<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    int count = 0;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    try {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      while (s.next(result)) {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>        LOG.info(result);<a name="line.117"></a>
+<span class="sourceLineNo">118</span>        count++;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>        // Row count is same as column count.<a name="line.119"></a>
+<span class="sourceLineNo">120</span>        assertEquals(rowCount, result.size());<a name="line.120"></a>
+<span class="sourceLineNo">121</span>        result.clear();<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      }<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    } finally {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>      s.close();<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    }<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    assertEquals(rowCount, count);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    for (KeyValueScanner scanner : memstorescanners) {<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      scanner.close();<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    }<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>    memstorescanners = this.memstore.getScanners(mvcc.getReadPoint());<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    // Now assert can count same number even if a snapshot mid-scan.<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    s = new StoreScanner(scan, scanInfo, scanType, null, memstorescanners);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    count = 0;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    try {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      while (s.next(result)) {<a name="line.136"></a>
+<span class="sourceLineNo">137</span>        LOG.info(result);<a name="line.137"></a>
+<span class="sourceLineNo">138</span>        // Assert the stuff is coming out in right order.<a name="line.138"></a>
+<span class="sourceLineNo">139</span>        assertTrue(CellUtil.matchingRow(result.get(0), Bytes.toBytes(count)));<a name="line.139"></a>
+<span class="sourceLineNo">140</span>        count++;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>        // Row count is same as column count.<a name="line.141"></a>
+<span class="sourceLineNo">142</span>        assertEquals(rowCount, result.size());<a name="line.142"></a>
+<span class="sourceLineNo">143</span>        if (count == 2) {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>          this.memstore.snapshot();<a name="line.144"></a>
+<span class="sourceLineNo">145</span>          LOG.info("Snapshotted");<a name="line.145"></a>
+<span class="sourceLineNo">146</span>        }<a name="line.146"></a>
+<span class="sourceLineNo">147</span>        result.clear();<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      }<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    } finally {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      s.close();<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    }<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    assertEquals(rowCount, count);<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    for (KeyValueScanner scanner : memstorescanners) {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      scanner.close();<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    }<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    memstorescanners = this.memstore.getScanners(mvcc.getReadPoint());<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    // Assert that new values are seen in kvset as we scan.<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    long ts = System.currentTimeMillis();<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    s = new StoreScanner(scan, scanInfo, scanType, null, memstorescanners);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    count = 0;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    int snapshotIndex = 5;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    try {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      while (s.next(result)) {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        LOG.info(result);<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        // Assert the stuff is coming out in right order.<a name="line.165"></a>
+<span class="sourceLineNo">166</span>        assertTrue(CellUtil.matchingRow(result.get(0), Bytes.toBytes(count)));<a name="line.166"></a>
+<span class="sourceLineNo">167</span>        // Row count is same as column count.<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        assertEquals("count=" + count + ", result=" + result, rowCount, result.size());<a name="line.168"></a>
+<span class="sourceLineNo">169</span>        count++;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>        if (count == snapshotIndex) {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>          MemStoreSnapshot snapshot = this.memstore.snapshot();<a name="line.171"></a>
+<span class="sourceLineNo">172</span>          this.memstore.clearSnapshot(snapshot.getId());<a name="line.172"></a>
+<span class="sourceLineNo">173</span>          // Added more rows into kvset.  But the scanner wont see these rows.<a name="line.173"></a>
+<span class="sourceLineNo">174</span>          addRows(this.memstore, ts);<a name="line.174"></a>
+<span class="sourceLineNo">175</span>          LOG.info("Snapshotted, cleared it and then added values (which wont be seen)");<a name="line.175"></a>
+<span class="sourceLineNo">176</span>        }<a name="line.176"></a>
+<span class="sourceLineNo">177</span>        result.clear();<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      }<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    } finally {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      s.close();<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    }<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    assertEquals(rowCount, count);<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 simple test which verifies the 3 possible states when scanning across snapshot.<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   * @throws IOException<a name="line.187"></a>
+<span class="sourceLineNo">188</span>   * @throws CloneNotSupportedException<a name="line.188"></a>
+<span class="sourceLineNo">189</span>   */<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  public void testScanAcrossSnapshot2() throws IOException, CloneNotSupportedException {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    // we are going to the scanning across snapshot with two kvs<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    // kv1 should always be returned before kv2<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    final byte[] one = Bytes.toBytes(1);<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    final byte[] two = Bytes.toBytes(2);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    final byte[] f = Bytes.toBytes("f");<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    final byte[] q = Bytes.toBytes("q");<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    final byte[] v = Bytes.toBytes(3);<a name="line.197"></a>
 <span class="sourceLineNo">198</span><a name="line.198"></a>
-<span class="sourceLineNo">199</span>    // use case 1: both kvs in kvset<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    this.memstore.add(kv1.clone());<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    this.memstore.add(kv2.clone());<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    verifyScanAcrossSnapshot2(kv1, kv2);<a name="line.202"></a>
-<span class="sourceLineNo">203</span><a name="line.203"></a>
-<span class="sourceLineNo">204</span>    // use case 2: both kvs in snapshot<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    this.memstore.snapshot();<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    verifyScanAcrossSnapshot2(kv1, kv2);<a name="line.206"></a>
-<span class="sourceLineNo">207</span><a name="line.207"></a>
-<span class="sourceLineNo">208</span>    // use case 3: first in snapshot second in kvset<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    this.memstore = new DefaultMemStore();<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    this.memstore.add(kv1.clone());<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    this.memstore.snapshot();<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    this.memstore.add(kv2.clone());<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    verifyScanAcrossSnapshot2(kv1, kv2);<a name="line.213"></a>
-<span class="sourceLineNo">214</span>  }<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>  private void verifyScanAcrossSnapshot2(KeyValue kv1, KeyValue kv2)<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      throws IOException {<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    List&lt;KeyValueScanner&gt; memstorescanners = this.memstore.getScanners(mvcc.getReadPoint());<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    assertEquals(1, memstorescanners.size());<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    final KeyValueScanner scanner = memstorescanners.get(0);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    scanner.seek(KeyValueUtil.createFirstOnRow(HConstants.EMPTY_START_ROW));<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    assertEquals(kv1, scanner.next());<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    assertEquals(kv2, scanner.next());<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    assertNull(scanner.next());<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  }<a name="line.225"></a>
-<span class="sourceLineNo">226</span><a name="line.226"></a>
-<span class="sourceLineNo">227</span>  private void assertScannerResults(KeyValueScanner scanner, KeyValue[] expected)<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      throws IOException {<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    scanner.seek(KeyValueUtil.createFirstOnRow(new byte[]{}));<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    List&lt;Cell&gt; returned = Lists.newArrayList();<a name="line.230"></a>
-<span class="sourceLineNo">231</span><a name="line.231"></a>
-<span class="sourceLineNo">232</span>    while (true) {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      Cell next = scanner.next();<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      if (next == null) break;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      returned.add(next);<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    }<a name="line.236"></a>
-<span class="sourceLineNo">237</span><a name="line.237"></a>
-<span class="sourceLineNo">238</span>    assertTrue(<a name="line.238"></a>
-<span class="sourceLineNo">239</span>        "Got:\n" + Joiner.on("\n").join(returned) +<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        "\nExpected:\n" + Joiner.on("\n").join(expected),<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        Iterables.elementsEqual(Arrays.asList(expected), returned));<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    assertNull(scanner.peek());<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>  public void testMemstoreConcurrentControl() throws IOException {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    final byte[] row = Bytes.toBytes(1);<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    final byte[] f = Bytes.toBytes("family");<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    final byte[] q1 = Bytes.toBytes("q1");<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    final byte[] q2 = Bytes.toBytes("q2");<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    final byte[] v = Bytes.toBytes("value");<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>    MultiVersionConcurrencyControl.WriteEntry w =<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        mvcc.begin();<a name="line.253"></a>
+<span class="sourceLineNo">199</span>    final KeyValue kv1 = new KeyValue(one, f, q, v);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    final KeyValue kv2 = new KeyValue(two, f, q, v);<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span>    // use case 1: both kvs in kvset<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    this.memstore.add(kv1.clone());<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    this.memstore.add(kv2.clone());<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    verifyScanAcrossSnapshot2(kv1, kv2);<a name="line.205"></a>
+<span class="sourceLineNo">206</span><a name="line.206"></a>
+<span class="sourceLineNo">207</span>    // use case 2: both kvs in snapshot<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    this.memstore.snapshot();<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    verifyScanAcrossSnapshot2(kv1, kv2);<a name="line.209"></a>
+<span class="sourceLineNo">210</span><a name="line.210"></a>
+<span class="sourceLineNo">211</span>    // use case 3: first in snapshot second in kvset<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    this.memstore = new DefaultMemStore();<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    this.memstore.add(kv1.clone());<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    this.memstore.snapshot();<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    this.memstore.add(kv2.clone());<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    verifyScanAcrossSnapshot2(kv1, kv2);<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 verifyScanAcrossSnapshot2(KeyValue kv1, KeyValue kv2)<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      throws IOException {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    List&lt;KeyValueScanner&gt; memstorescanners = this.memstore.getScanners(mvcc.getReadPoint());<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    assertEquals(1, memstorescanners.size());<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    final KeyValueScanner scanner = memstorescanners.get(0);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    scanner.seek(KeyValueUtil.createFirstOnRow(HConstants.EMPTY_START_ROW));<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    assertEquals(kv1, scanner.next());<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    assertEquals(kv2, scanner.next());<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    assertNull(scanner.next());<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>  private void assertScannerResults(KeyValueScanner scanner, KeyValue[] expected)<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      throws IOException {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    scanner.seek(KeyValueUtil.createFirstOnRow(new byte[]{}));<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    List&lt;Cell&gt; returned = Lists.newArrayList();<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span>    while (true) {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      Cell next = scanner.next();<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      if (next == null) break;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      returned.add(next);<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>    assertTrue(<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        "Got:\n" + Joiner.on("\n").join(returned) +<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        "\nExpected:\n" + Joiner.on("\n").join(expected),<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        Iterables.elementsEqual(Arrays.asList(expected), returned));<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    assertNull(scanner.peek());<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 void testMemstoreConcurrentControl() throws IOException {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    final byte[] row = Bytes.toBytes(1);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    final byte[] f = Bytes.toBytes("family");<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    final byte[] q1 = Bytes.toBytes("q1");<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    final byte[] q2 = Bytes.toBytes("q2");<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    final byte[] v = Bytes.toBytes("value");<a name="line.253"></a>
 <span class="sourceLineNo">254</span><a name="line.254"></a>
-<span class="sourceLineNo">255</span>    KeyValue kv1 = new KeyValue(row, f, q1, v);<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    kv1.setSequenceId(w.getWriteNumber());<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    memstore.add(kv1);<a name="line.257"></a>
-<span class="sourceLineNo">258</span><a name="line.258"></a>
-<span class="sourceLineNo">259</span>    KeyValueScanner s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    assertScannerResults(s, new KeyValue[]{});<a name="line.260"></a>
+<span class="sourceLineNo">255</span>    MultiVersionConcurrencyControl.WriteEntry w =<a name="line.255"></a>
+<span class="sourceLineNo">256</span>        mvcc.begin();<a name="line.256"></a>
+<span class="sourceLineNo">257</span><a name="line.257"></a>
+<span class="sourceLineNo">258</span>    KeyValue kv1 = new KeyValue(row, f, q1, v);<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    kv1.setSequenceId(w.getWriteNumber());<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    memstore.add(kv1);<a name="line.260"></a>
 <span class="sourceLineNo">261</span><a name="line.261"></a>
-<span class="sourceLineNo">262</span>    mvcc.completeAndWait(w);<a name="line.262"></a>
-<span class="sourceLineNo">263</span><a name="line.263"></a>
-<span class="sourceLineNo">264</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    assertScannerResults(s, new KeyValue[]{kv1});<a name="line.265"></a>
+<span class="sourceLineNo">262</span>    KeyValueScanner s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    assertScannerResults(s, new KeyValue[]{});<a name="line.263"></a>
+<span class="sourceLineNo">264</span><a name="line.264"></a>
+<span class="sourceLineNo">265</span>    mvcc.completeAndWait(w);<a name="line.265"></a>
 <span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>    w = mvcc.begin();<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    KeyValue kv2 = new KeyValue(row, f, q2, v);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    kv2.setSequenceId(w.getWriteNumber());<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    memstore.add(kv2);<a name="line.270"></a>
-<span class="sourceLineNo">271</span><a name="line.271"></a>
-<span class="sourceLineNo">272</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    assertScannerResults(s, new KeyValue[]{kv1});<a name="line.273"></a>
+<span class="sourceLineNo">267</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    assertScannerResults(s, new KeyValue[]{kv1});<a name="line.268"></a>
+<span class="sourceLineNo">269</span><a name="line.269"></a>
+<span class="sourceLineNo">270</span>    w = mvcc.begin();<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    KeyValue kv2 = new KeyValue(row, f, q2, v);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    kv2.setSequenceId(w.getWriteNumber());<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    memstore.add(kv2);<a name="line.273"></a>
 <span class="sourceLineNo">274</span><a name="line.274"></a>
-<span class="sourceLineNo">275</span>    mvcc.completeAndWait(w);<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    assertScannerResults(s, new KeyValue[]{kv1, kv2});<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>   * Regression test for HBASE-2616, HBASE-2670.<a name="line.282"></a>
-<span class="sourceLineNo">283</span>   * When we insert a higher-memstoreTS version of a cell but with<a name="line.283"></a>
-<span class="sourceLineNo">284</span>   * the same timestamp, we still need to provide consistent reads<a name="line.284"></a>
-<span class="sourceLineNo">285</span>   * for the same scanner.<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   */<a name="line.286"></a>
-<span class="sourceLineNo">287</span>  public void testMemstoreEditsVisibilityWithSameKey() throws IOException {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    final byte[] row = Bytes.toBytes(1);<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    final byte[] f = Bytes.toBytes("family");<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    final byte[] q1 = Bytes.toBytes("q1");<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    final byte[] q2 = Bytes.toBytes("q2");<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    final byte[] v1 = Bytes.toBytes("value1");<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    final byte[] v2 = Bytes.toBytes("value2");<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>    // INSERT 1: Write both columns val1<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    MultiVersionConcurrencyControl.WriteEntry w =<a name="line.296"></a>
-<span class="sourceLineNo">297</span>        mvcc.begin();<a name="line.297"></a>
-<span class="sourceLineNo">298</span><a name="line.298"></a>
-<span class="sourceLineNo">299</span>    KeyValue kv11 = new KeyValue(row, f, q1, v1);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    kv11.setSequenceId(w.getWriteNumber());<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    memstore.add(kv11);<a name="line.301"></a>
-<span class="sourceLineNo">302</span><a name="line.302"></a>
-<span class="sourceLineNo">303</span>    KeyValue kv12 = new KeyValue(row, f, q2, v1);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    kv12.setSequenceId(w.getWriteNumber());<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    memstore.add(kv12);<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    mvcc.completeAndWait(w);<a name="line.306"></a>
-<span class="sourceLineNo">307</span><a name="line.307"></a>
-<span class="sourceLineNo">308</span>    // BEFORE STARTING INSERT 2, SEE FIRST KVS<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    KeyValueScanner s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    assertScannerResults(s, new KeyValue[]{kv11, kv12});<a name="line.310"></a>
-<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span>    // START INSERT 2: Write both columns val2<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    w = mvcc.begin();<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    KeyValue kv21 = new KeyValue(row, f, q1, v2);<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    kv21.setSequenceId(w.getWriteNumber());<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    memstore.add(kv21);<a name="line.316"></a>
-<span class="sourceLineNo">317</span><a name="line.317"></a>
-<span class="sourceLineNo">318</span>    KeyValue kv22 = new KeyValue(row, f, q2, v2);<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    kv22.setSequenceId(w.getWriteNumber());<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    memstore.add(kv22);<a name="line.320"></a>
-<span class="sourceLineNo">321</span><a name="line.321"></a>
-<span class="sourceLineNo">322</span>    // BEFORE COMPLETING INSERT 2, SEE FIRST KVS<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    assertScannerResults(s, new KeyValue[]{kv11, kv12});<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>    // COMPLETE INSERT 2<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    mvcc.completeAndWait(w);<a name="line.327"></a>
+<span class="sourceLineNo">275</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    assertScannerResults(s, new KeyValue[]{kv1});<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>    mvcc.completeAndWait(w);<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    assertScannerResults(s, new KeyValue[]{kv1, kv2});<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>   * Regression test for HBASE-2616, HBASE-2670.<a name="line.285"></a>
+<span class="sourceLineNo">286</span>   * When we insert a higher-memstoreTS version of a cell but with<a name="line.286"></a>
+<span class="sourceLineNo">287</span>   * the same timestamp, we still need to provide consistent reads<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * for the same scanner.<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   */<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  public void testMemstoreEditsVisibilityWithSameKey() throws IOException {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    final byte[] row = Bytes.toBytes(1);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    final byte[] f = Bytes.toBytes("family");<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    final byte[] q1 = Bytes.toBytes("q1");<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    final byte[] q2 = Bytes.toBytes("q2");<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    final byte[] v1 = Bytes.toBytes("value1");<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    final byte[] v2 = Bytes.toBytes("value2");<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>    // INSERT 1: Write both columns val1<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    MultiVersionConcurrencyControl.WriteEntry w =<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        mvcc.begin();<a name="line.300"></a>
+<span class="sourceLineNo">301</span><a name="line.301"></a>
+<span class="sourceLineNo">302</span>    KeyValue kv11 = new KeyValue(row, f, q1, v1);<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    kv11.setSequenceId(w.getWriteNumber());<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    memstore.add(kv11);<a name="line.304"></a>
+<span class="sourceLineNo">305</span><a name="line.305"></a>
+<span class="sourceLineNo">306</span>    KeyValue kv12 = new KeyValue(row, f, q2, v1);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    kv12.setSequenceId(w.getWriteNumber());<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    memstore.add(kv12);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    mvcc.completeAndWait(w);<a name="line.309"></a>
+<span class="sourceLineNo">310</span><a name="line.310"></a>
+<span class="sourceLineNo">311</span>    // BEFORE STARTING INSERT 2, SEE FIRST KVS<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    KeyValueScanner s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    assertScannerResults(s, new KeyValue[]{kv11, kv12});<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>    // START INSERT 2: Write both columns val2<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    w = mvcc.begin();<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    KeyValue kv21 = new KeyValue(row, f, q1, v2);<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    kv21.setSequenceId(w.getWriteNumber());<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    memstore.add(kv21);<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>    KeyValue kv22 = new KeyValue(row, f, q2, v2);<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    kv22.setSequenceId(w.getWriteNumber());<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    memstore.add(kv22);<a name="line.323"></a>
+<span class="sourceLineNo">324</span><a name="line.324"></a>
+<span class="sourceLineNo">325</span>    // BEFORE COMPLETING INSERT 2, SEE FIRST KVS<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    assertScannerResults(s, new KeyValue[]{kv11, kv12});<a name="line.327"></a>
 <span class="sourceLineNo">328</span><a name="line.328"></a>
-<span class="sourceLineNo">329</span>    // NOW SHOULD SEE NEW KVS IN ADDITION TO OLD KVS.<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    // See HBASE-1485 for discussion about what we should do with<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    // the duplicate-TS inserts<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    assertScannerResults(s, new KeyValue[]{kv21, kv11, kv22, kv12});<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  }<a name="line.334"></a>
-<span class="sourceLineNo">335</span><a name="line.335"></a>
-<span class="sourceLineNo">336</span>  /**<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   * When we insert a higher-memstoreTS deletion of a cell but with<a name="line.337"></a>
-<span class="sourceLineNo">338</span>   * the same timestamp, we still need to provide consistent reads<a name="line.338"></a>
-<span class="sourceLineNo">339</span>   * for the same scanner.<a name="line.339"></a>
-<span class="sourceLineNo">340</span>   */<a name="line.340"></a>
-<span class="sourceLineNo">341</span>  public void testMemstoreDeletesVisibilityWithSameKey() throws IOException {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    final byte[] row = Bytes.toBytes(1);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    final byte[] f = Bytes.toBytes("family");<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    final byte[] q1 = Bytes.toBytes("q1");<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    final byte[] q2 = Bytes.toBytes("q2");<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    final byte[] v1 = Bytes.toBytes("value1");<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    // INSERT 1: Write both columns val1<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    MultiVersionConcurrencyControl.WriteEntry w =<a name="line.348"></a>
-<span class="sourceLineNo">349</span>        mvcc.begin();<a name="line.349"></a>
-<span class="sourceLineNo">350</span><a name="line.350"></a>
-<span class="sourceLineNo">351</span>    KeyValue kv11 = new KeyValue(row, f, q1, v1);<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    kv11.setSequenceId(w.getWriteNumber());<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    memstore.add(kv11);<a name="line.353"></a>
-<span class="sourceLineNo">354</span><a name="line.354"></a>
-<span class="sourceLineNo">355</span>    KeyValue kv12 = new KeyValue(row, f, q2, v1);<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    kv12.setSequenceId(w.getWriteNumber());<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    memstore.add(kv12);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    mvcc.completeAndWait(w);<a name="line.358"></a>
-<span class="sourceLineNo">359</span><a name="line.359"></a>
-<span class="sourceLineNo">360</span>    // BEFORE STARTING INSERT 2, SEE FIRST KVS<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    KeyValueScanner s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    assertScannerResults(s, new KeyValue[]{kv11, kv12});<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>    // START DELETE: Insert delete for one of the columns<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    w = mvcc.begin();<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    KeyValue kvDel = new KeyValue(row, f, q2, kv11.getTimestamp(),<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        KeyValue.Type.DeleteColumn);<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    kvDel.setSequenceId(w.getWriteNumber());<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    memstore.add(kvDel);<a name="line.369"></a>
-<span class="sourceLineNo">370</span><a name="line.370"></a>
-<span class="sourceLineNo">371</span>    // BEFORE COMPLETING DELETE, SEE FIRST KVS<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    assertScannerResults(s, new KeyValue[]{kv11, kv12});<a name="line.373"></a>
-<span class="sourceLineNo">374</span><a name="line.374"></a>
-<span class="sourceLineNo">375</span>    // COMPLETE DELETE<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    mvcc.completeAndWait(w);<a name="line.376"></a>
+<span class="sourceLineNo">329</span>    // COMPLETE INSERT 2<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    mvcc.completeAndWait(w);<a name="line.330"></a>
+<span class="sourceLineNo">331</span><a name="line.331"></a>
+<span class="sourceLineNo">332</span>    // NOW SHOULD SEE NEW KVS IN ADDITION TO OLD KVS.<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    // See HBASE-1485 for discussion about what we should do with<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    // the duplicate-TS inserts<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    assertScannerResults(s, new KeyValue[]{kv21, kv11, kv22, kv12});<a name="line.336"></a>
+<span class="sourceLineNo">337</span>  }<a name="line.337"></a>
+<span class="sourceLineNo">338</span><a name="line.338"></a>
+<span class="sourceLineNo">339</span>  /**<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   * When we insert a higher-memstoreTS deletion of a cell but with<a name="line.340"></a>
+<span class="sourceLineNo">341</span>   * the same timestamp, we still need to provide consistent reads<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   * for the same scanner.<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   */<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  public void testMemstoreDeletesVisibilityWithSameKey() throws IOException {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    final byte[] row = Bytes.toBytes(1);<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    final byte[] f = Bytes.toBytes("family");<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    final byte[] q1 = Bytes.toBytes("q1");<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    final byte[] q2 = Bytes.toBytes("q2");<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    final byte[] v1 = Bytes.toBytes("value1");<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    // INSERT 1: Write both columns val1<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    MultiVersionConcurrencyControl.WriteEntry w =<a name="line.351"></a>
+<span class="sourceLineNo">352</span>        mvcc.begin();<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>    KeyValue kv11 = new KeyValue(row, f, q1, v1);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    kv11.setSequenceId(w.getWriteNumber());<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    memstore.add(kv11);<a name="line.356"></a>
+<span class="sourceLineNo">357</span><a name="line.357"></a>
+<span class="sourceLineNo">358</span>    KeyValue kv12 = new KeyValue(row, f, q2, v1);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    kv12.setSequenceId(w.getWriteNumber());<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    memstore.add(kv12);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    mvcc.completeAndWait(w);<a name="line.361"></a>
+<span class="sourceLineNo">362</span><a name="line.362"></a>
+<span class="sourceLineNo">363</span>    // BEFORE STARTING INSERT 2, SEE FIRST KVS<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    KeyValueScanner s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    assertScannerResults(s, new KeyValue[]{kv11, kv12});<a name="line.365"></a>
+<span class="sourceLineNo">366</span><a name="line.366"></a>
+<span class="sourceLineNo">367</span>    // START DELETE: Insert delete for one of the columns<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    w = mvcc.begin();<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    KeyValue kvDel = new KeyValue(row, f, q2, kv11.getTimestamp(),<a name="line.369"></a>
+<span class="sourceLineNo">370</span>        KeyValue.Type.DeleteColumn);<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    kvDel.setSequenceId(w.getWriteNumber());<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    memstore.add(kvDel);<a name="line.372"></a>
+<span class="sourceLineNo">373</span><a name="line.373"></a>
+<span class="sourceLineNo">374</span>    // BEFORE COMPLETING DELETE, SEE FIRST KVS<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    assertScannerResults(s, new KeyValue[]{kv11, kv12});<a name="line.376"></a>
 <span class="sourceLineNo">377</span><a name="line.377"></a>
-<span class="sourceLineNo">378</span>    // NOW WE SHOULD SEE DELETE<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    assertScannerResults(s, new KeyValue[]{kv11, kvDel, kv12});<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  }<a name="line.381"></a>
-<span class="sourceLineNo">382</span><a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>  private static class ReadOwnWritesTester extends Thread {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    static final int NUM_TRIES = 1000;<a name="line.385"></a>
+<span class="sourceLineNo">378</span>    // COMPLETE DELETE<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    mvcc.completeAndWait(w);<a name="line.379"></a>
+<span class="sourceLineNo">380</span><a name="line.380"></a>
+<span class="sourceLineNo">381</span>    // NOW WE SHOULD SEE DELETE<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    assertScannerResults(s, new KeyValue[]{kv11, kvDel, kv12});<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><a name="line.386"></a>
-<span class="sourceLineNo">387</span>    final byte[] row;<a name="line.387"></a>
-<span class="sourceLineNo">388</span><a name="line.388"></a>
-<span class="sourceLineNo">389</span>    final byte[] f = Bytes.toBytes("family");<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    final byte[] q1 = Bytes.toBytes("q1");<a name="line.390"></a>
+<span class="sourceLineNo">387</span>  private static class ReadOwnWritesTester extends Thread {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    static final int NUM_TRIES = 1000;<a name="line.388"></a>
+<span class="sourceLineNo">389</span><a name="line.389"></a>
+<span class="sourceLineNo">390</span>    final byte[] row;<a name="line.390"></a>
 <span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span>    final MultiVersionConcurrencyControl mvcc;<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    final MemStore memstore;<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    final AtomicLong startSeqNum;<a name="line.394"></a>
-<span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>    AtomicReference&lt;Throwable&gt; caughtException;<a name="line.396"></a>
-<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">392</span>    final byte[] f = Bytes.toBytes("family");<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    final byte[] q1 = Bytes.toBytes("q1");<a name="line.393"></a>
+<span class="sourceLineNo">394</span><a name="line.394"></a>
+<span class="sourceLineNo">395</span>    final MultiVersionConcurrencyControl mvcc;<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    final MemStore memstore;<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    final AtomicLong startSeqNum;<a name="line.397"></a>
 <span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>    public ReadOwnWritesTester(int id,<a name="line.399"></a>
-<span class="sourceLineNo">400</span>                               MemStore memstore,<a name="line.400"></a>
-<span class="sourceLineNo">401</span>                               MultiVersionConcurrencyControl mvcc,<a name="line.401"></a>
-<span class="sourceLineNo">402</span>                               AtomicReference&lt;Throwable&gt; caughtException,<a name="line.402"></a>
-<span class="sourceLineNo">403</span>                               AtomicLong startSeqNum)<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      this.mvcc = mvcc;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      this.memstore = memstore;<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      this.caughtException = caughtException;<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      row = Bytes.toBytes(id);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>      this.startSeqNum = startSeqNum;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    }<a name="line.410"></a>
-<span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>    public void run() {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      try {<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        internalRun();<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      } catch (Throwable t) {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        caughtException.compareAndSet(null, t);<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>    private void internalRun() throws IOException {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      for (long i = 0; i &lt; NUM_TRIES &amp;&amp; caughtException.get() == null; i++) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        MultiVersionConcurrencyControl.WriteEntry w =<a name="line.422"></a>
-<span class="sourceLineNo">423</span>            mvcc.begin();<a name="line.423"></a>
-<span class="sourceLineNo">424</span><a name="line.424"></a>
-<span class="sourceLineNo">425</span>        // Insert the sequence value (i)<a name="line.425"></a>
-<span class="sourceLineNo">426</span>        byte[] v = Bytes.toBytes(i);<a name="line.426"></a>
+<span class="sourceLineNo">399</span>    AtomicReference&lt;Throwable&gt; caughtException;<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 ReadOwnWritesTester(int id,<a name="line.402"></a>
+<span class="sourceLineNo">403</span>                               MemStore memstore,<a name="line.403"></a>
+<span class="sourceLineNo">404</span>                               MultiVersionConcurrencyControl mvcc,<a name="line.404"></a>
+<span class="sourceLineNo">405</span>                               AtomicReference&lt;Throwable&gt; caughtException,<a name="line.405"></a>
+<span class="sourceLineNo">406</span>                               AtomicLong startSeqNum)<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      this.mvcc = mvcc;<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      this.memstore = memstore;<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      this.caughtException = caughtException;<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      row = Bytes.toBytes(id);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      this.startSeqNum = startSeqNum;<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>    public void run() {<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      try {<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        internalRun();<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      } catch (Throwable t) {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>        caughtException.compareAndSet(null, t);<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 void internalRun() throws IOException {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      for (long i = 0; i &lt; NUM_TRIES &amp;&amp; caughtException.get() == null; i++) {<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        MultiVersionConcurrencyControl.WriteEntry w =<a name="line.425"></a>
+<span class="sourceLineNo">426</span>            mvcc.begin();<a name="line.426"></a>
 <span class="sourceLineNo">427</span><a name="line.427"></a>
-<span class="sourceLineNo">428</span>        KeyValue kv = new KeyValue(row, f, q1, i, v);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>        kv.setSequenceId(w.getWriteNumber());<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        memstore.add(kv);<a name="line.430"></a>
-<span class="sourceLineNo">431</span>        mvcc.completeAndWait(w);<a name="line.431"></a>
-<span class="sourceLineNo">432</span><a name="line.432"></a>
-<span class="sourceLineNo">433</span>        // Assert that we can read back<a name="line.433"></a>
-<span class="sourceLineNo">434</span>        KeyValueScanner s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.434"></a>
-<span class="sourceLineNo">435</span>        s.seek(kv);<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>        Cell ret = s.next();<a name="line.437"></a>
-<span class="sourceLineNo">438</span>        assertNotNull("Didnt find own write at all", ret);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>        assertEquals("Didnt read own writes",<a name="line.439"></a>
-<span class="sourceLineNo">440</span>                     kv.getTimestamp(), ret.getTimestamp());<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>  }<a name="line.443"></a>
-<span class="sourceLineNo">444</span><a name="line.444"></a>
-<span class="sourceLineNo">445</span>  public void testReadOwnWritesUnderConcurrency() throws Throwable {<a name="line.445"></a>
-<span class="sourceLineNo">446</span><a name="line.446"></a>
-<span class="sourceLineNo">447</span>    int NUM_THREADS = 8;<a name="line.447"></a>
-<span class="sourceLineNo">448</span><a name="line.448"></a>
-<span class="sourceLineNo">449</span>    ReadOwnWritesTester threads[] = new ReadOwnWritesTester[NUM_THREADS];<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    AtomicReference&lt;Throwable&gt; caught = new AtomicReference&lt;Throwable&gt;();<a name="line.450"></a>
+<span class="sourceLineNo">428</span>        // Insert the sequence value (i)<a name="line.428"></a>
+<span class="sourceLineNo">429</span>        byte[] v = Bytes.toBytes(i);<a name="line.429"></a>
+<span class="sourceLineNo">430</span><a name="line.430"></a>
+<span class="sourceLineNo">431</span>        KeyValue kv = new KeyValue(row, f, q1, i, v);<a name="line.431"></a>
+<span class="sourceLineNo">432</span>        kv.setSequenceId(w.getWriteNumber());<a name="line.432"></a>
+<span class="sourceLineNo">433</span>        memstore.add(kv);<a name="line.433"></a>
+<span class="sourceLineNo">434</span>        mvcc.completeAndWait(w);<a name="line.434"></a>
+<span class="sourceLineNo">435</span><a name="line.435"></a>
+<span class="sourceLineNo">436</span>        // Assert that we can read back<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        KeyValueScanner s = this.memstore.getScanners(mvcc.getReadPoint()).get(0);<a name="line.437"></a>
+<span class="sourceLineNo">438</span>        s.seek(kv);<a name="line.438"></a>
+<span class="sourceLineNo">439</span><a name="line.439"></a>
+<span class="sourceLineNo">440</span>        Cell ret = s.next();<a name="line.440"></a>
+<span class="sourceLineNo">441</span>        assertNotNull("Didnt find own write at all", ret);<a name="line.441"></a>
+<span class="sourceLineNo">442</span>        assertEquals("Didnt read own writes",<a name="line.442"></a>
+<span class="sourceLineNo">443</span>                     kv.getTimestamp(), ret.getTimestamp());<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><a name="line.447"></a>
+<span class="sourceLineNo">448</span>  public void testReadOwnWritesUnderConcurrency() throws Throwable {<a name="line.448"></a>
+<span class="sourceLineNo">449</span><a name="line.449"></a>
+<span class="sourceLineNo">450</span>    int NUM_THREADS = 8;<a name="line.450"></a>
 <span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>    for (int i = 0; i &lt; NUM_THREADS; i++) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      threads[i] = new ReadOwnWritesTester(i, memstore, mvcc, caught, this.startSeqNum);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      threads[i].start();<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>    for (int i = 0; i &lt; NUM_THREADS; i++) {<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      threads[i].join();<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>    if (caught.get() != null) {<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      throw caught.get();<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    }<a name="line.463"></a>
-<span class="sourceLineNo">464</span>  }<a name="line.464"></a>
-<span class="sourceLineNo">465</span><a name="line.465"></a>
-<span class="sourceLineNo">466</span>  /**<a name="line.466"></a>
-<span class="sourceLineNo">467</span>   * Test memstore snapshots<a name="line.467"></a>
-<span class="sourceLineNo">468</span>   * @throws IOException<a name="line.468"></a>
-<span class="sourceLineNo">469</span>   */<a name="line.469"></a>
-<span class="sourceLineNo">470</span>  public void testSnapshotting() throws IOException {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    final int snapshotCount = 5;<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    // Add some rows, run a snapshot. Do it a few times.<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    for (int i = 0; i &lt; snapshotCount; i++) {<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      addRows(this.memstore);<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      runSnapshot(this.memstore);<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      assertEquals("History not being cleared", 0, this.memstore.snapshot.size());<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    }<a name="line.477"></a>
-<span class="sourceLineNo">478</span>  }<a name="line.478"></a>
-<span class="sourceLineNo">479</span><a name="line.479"></a>
-<span class="sourceLineNo">480</span>  public void testMultipleVersionsSimple() throws Exception {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    DefaultMemStore m = new DefaultMemStore(new Configuration(), CellComparator.COMPARATOR);<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    byte [] row = Bytes.toBytes("testRow");<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    byte [] family = Bytes.toBytes("testFamily");<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    byte [] qf = Bytes.toBytes("testQualifier");<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    long [] stamps = {1,2,3};<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    byte [][] values = {Bytes.toBytes("value0"), Bytes.toBytes("value1"),<a name="line.486"></a>
-<span class="sourceLineNo">487</span>        Bytes.toBytes("value2")};<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    KeyValue key0 = new KeyValue(row, family, qf, stamps[0], values[0]);<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    KeyValue key1 = new KeyValue(row, family, qf, stamps[1], values[1]);<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    KeyValue key2 = new KeyValue(row, family, qf, stamps[2], values[2]);<a name="line.490"></a>
-<span class="sourceLineNo">491</span><a name="line.491"></a>
-<span class="sourceLineNo">492</span>    m.add(key0);<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    m.add(key1);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    m.add(key2);<a name="line.494"></a>
-<span class="sourceLineNo">495</span><a name="line.495"></a>
-<span class="sourceLineNo">496</span>    assertTrue("Expected memstore to hold 3 values, actually has " +<a name="line.496"></a>
-<span class="sourceLineNo">497</span>        m.cellSet.size(), m.cellSet.size() == 3);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>  }<a name="line.498"></a>
-<span class="sourceLineNo">499</span><a name="line.499"></a>
-<span class="sourceLineNo">500</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.500"></a>
-<span class="sourceLineNo">501</span>  // Get tests<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>  /** Test getNextRow from memstore<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * @throws InterruptedException<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   */<a name="line.506"></a>
-<span class="sourceLineNo">507</span>  public void testGetNextRow() throws Exception {<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    addRows(this.memstore);<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    // Add more versions to make it a little more interesting.<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    Thread.sleep(1);<a name="line.510"></a>
+<span class="sourceLineNo">452</span>    ReadOwnWritesTester threads[] = new ReadOwnWritesTester[NUM_THREADS];<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    AtomicReference&lt;Throwable&gt; caught = new AtomicReference&lt;Throwable&gt;();<a name="line.453"></a>
+<span class="sourceLineNo">454</span><a name="line.454"></a>
+<span class="sourceLineNo">455</span>    for (int i = 0; i &lt; NUM_THREADS; i++) {<a name="line.455"></a>
+<span class="sourceLineNo">456</span>      threads[i] = new ReadOwnWritesTester(i, memstore, mvcc, caught, this.startSeqNum);<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      threads[i].start();<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>    for (int i = 0; i &lt; NUM_THREADS; i++) {<a name="line.460"></a>
+<span class="sourceLineNo">461</span>      threads[i].join();<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>    if (caught.get() != null) {<a name="line.464"></a>
+<span class="sourceLineNo">465</span>      throw caught.get();<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    }<a name="line.466"></a>
+<span class="sourceLineNo">467</span>  }<a name="line.467"></a>
+<span class="sourceLineNo">468</span><a name="line.468"></a>
+<span class="sourceLineNo">469</span>  /**<a name="line.469"></a>
+<span class="sourceLineNo">470</span>   * Test memstore snapshots<a name="line.470"></a>
+<span class="sourceLineNo">471</span>   * @throws IOException<a name="line.471"></a>
+<span class="sourceLineNo">472</span>   */<a name="line.472"></a>
+<span class="sourceLineNo">473</span>  public void testSnapshotting() throws IOException {<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    final int snapshotCount = 5;<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    // Add some rows, run a snapshot. Do it a few times.<a name="line.475"></a>
+<span class="sourceLineNo">476</span>    for (int i = 0; i &lt; snapshotCount; i++) {<a name="line.476"></a>
+<span class="sourceLineNo">477</span>      addRows(this.memstore);<a name="line.477"></a>
+<span class="sourceLineNo">478</span>      runSnapshot(this.memstore);<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      assertEquals("History not being cleared", 0, this.memstore.snapshot.size());<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><a name="line.482"></a>
+<span class="sourceLineNo">483</span>  public void testMultipleVersionsSimple() throws Exception {<a name="line.483"></a>
+<span class="sourceLineNo">484</span>    DefaultMemStore m = new DefaultMemStore(new Configuration(), CellComparator.COMPARATOR);<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    byte [] row = Bytes.toBytes("testRow");<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    byte [] family = Bytes.toBytes("testFamily");<a name="line.486"></a>
+<span class="sourceLineNo">487</span>    byte [] qf = Bytes.toBytes("testQualifier");<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    long [] stamps = {1,2,3};<a name="line.488"></a>
+<span class="sourceLineNo">489</span>    byte [][] values = {Bytes.toBytes("value0"), Bytes.toBytes("value1"),<a name="line.489"></a>
+<span class="sourceLineNo">490</span>        Bytes.toBytes("value2")};<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    KeyValue key0 = new KeyValue(row, family, qf, stamps[0], values[0]);<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    KeyValue key1 = new KeyValue(row, family, qf, stamps[1], values[1]);<a name="line.492"></a>
+<span class="sourceLineNo">493</span>    KeyValue key2 = new KeyValue(row, family, qf, stamps[2], values[2]);<a name="line.493"></a>
+<span class="sourceLineNo">494</span><a name="line.494"></a>
+<span class="sourceLineNo">495</span>    m.add(key0);<a name="line.495"></a>
+<span class="sourceLineNo">496</span>    m.add(key1);<a name="line.496"></a>
+<span class="sourceLineNo">497</span>    m.add(key2);<a name="line.497"></a>
+<span class="sourceLineNo">498</span><a name="line.498"></a>
+<span class="sourceLineNo">499</span>    assertTrue("Expected memstore to hold 3 values, actually has " +<a name="line.499"></a>
+<span class="sourceLineNo">500</span>        m.cellSet.size(), m.cellSet.size() == 3);<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>  // Get tests<a name="line.504"></a>
+<span class="sourceLineNo">505</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.505"></a>
+<span class="sourceLineNo">506</span><a name="line.506"></a>
+<span class="sourceLineNo">507</span>  /** Test getNextRow from memstore<a name="line.507"></a>
+<span class="sourceLineNo">508</span>   * @throws InterruptedException<a name="line.508"></a>
+<span class="sourceLineNo">509</span>   */<a name="line.509"></a>
+<span class="sourceLineNo">510</span>  public void testGetNextRow() throws Exception {<a name="line.510"></a>
 <span class="sourceLineNo">511</span>    addRows(this.memstore);<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    Cell closestToEmpty = this.memstore.getNextRow(KeyValue.LOWESTKEY);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    assertTrue(CellComparator.COMPARATOR.compareRows(closestToEmpty,<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      new KeyValue(Bytes.toBytes(0), System.currentTimeMillis())) == 0);<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    for (int i = 0; i &lt; ROW_COUNT; i++) {<a name="line.515"></a>
-<span class="sourceLineNo">516</span>      Cell nr = this.memstore.getNextRow(new KeyValue(Bytes.toBytes(i),<a name="line.516"></a>
-<span class="sourceLineNo">517</span>        System.currentTimeMillis()));<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      if (i + 1 == ROW_COUNT) {<a name="line.518"></a>
-<span class="sourceLineNo">519</span>        assertEquals(nr, null);<a name="line.519"></a>
-<span class="sourceLineNo">520</span>      } else {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>        assertTrue(CellComparator.COMPARATOR.compareRows(nr,<a name="line.521"></a>
-<span class="sourceLineNo">522</span>          new KeyValue(Bytes.toBytes(i + 1), System.currentTimeMillis())) == 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>    //starting from each row, validate results should contain the starting row<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    Configuration conf = HBaseConfiguration.create();<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    for (int startRowId = 0; startRowId &lt; ROW_COUNT; startRowId++) {<a name="line.527"></a>
-<span class="sourceLineNo">528</span>      ScanInfo scanInfo = new ScanInfo(conf, FAMILY, 0, 1, Integer.MAX_VALUE,<a name="line.528"></a>
-<span class="sourceLineNo">529</span>        KeepDeletedCells.FALSE, 0, this.memstore.comparator);<a name="line.529"></a>
-<span class="sourceLineNo">530</span>      ScanType scanType = ScanType.USER_SCAN;<a name="line.530"></a>
-<span class="sourceLineNo">531</span>      InternalScanner scanner = new StoreScanner(new Scan(<a name="line.531"></a>
-<span class="sourceLineNo">532</span>          Bytes.toBytes(startRowId)), scanInfo, scanType, null,<a name="line.532"></a>
-<span class="sourceLineNo">533</span>          memstore.getScanners(0));<a name="line.533"></a>
-<span class="sourceLineNo">534</span>      List&lt;Cell&gt; results = new ArrayList&lt;Cell&gt;();<a name="line.534"></a>
-<span class="sourceLineNo">535</span>      for (int i = 0; scanner.next(results); i++) {<a name="line.535"></a>
-<span class="sourceLineNo">536</span>        int rowId = startRowId + i;<a name="line.536"></a>
-<span class="sourceLineNo">537</span>        Cell left = results.get(0);<a name="line.537"></a>
-<span class="sourceLineNo">538</span>        byte[] row1 = Bytes.toBytes(rowId);<a name="line.538"></a>
-<span class="sourceLineNo">539</span>        assertTrue(<a name="line.539"></a>
-<span class="sourceLineNo">540</span>            "Row name",<a name="line.540"></a>
-<span class="sourceLineNo">541</span>            CellComparator.COMPARATOR.compareRows(left, row1, 0, row1.length) == 0);<a name="line.541"></a>
-<span class="sourceLineNo">542</span>        assertEquals("Count of columns", QUALIFIER_COUNT, results.size());<a name="line.542"></a>
-<span class="sourceLineNo">543</span>        List&lt;Cell&gt; row = new ArrayList&lt;Cell&gt;();<a name="line.543"></a>
-<span class="sourceLineNo">544</span>        for (Cell kv : results) {<a name="line.544"></a>
-<span class="sourceLineNo">545</span>          row.add(kv);<a name="line.545"></a>
-<span class="sourceLineNo">546</span>        }<a name="line.

<TRUNCATED>

[11/24] hbase git commit: Published site at 0d72849581c1e5a50a2aa7757b909e5531b8d12c.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/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 5d6ae0a..7aac442 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,14 +67,14 @@
 <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 = "metaLocation", type = "ServerName"),<a name="line.62"></a>
+<span class="sourceLineNo">062</span>    @org.jamon.annotations.Argument(name = "assignmentManager", type = "AssignmentManager"),<a name="line.62"></a>
 <span class="sourceLineNo">063</span>    @org.jamon.annotations.Argument(name = "servers", type = "List&lt;ServerName&gt;"),<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    @org.jamon.annotations.Argument(name = "frags", type = "Map&lt;String,Integer&gt;"),<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    @org.jamon.annotations.Argument(name = "catalogJanitorEnabled", type = "boolean"),<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    @org.jamon.annotations.Argument(name = "assignmentManager", type = "AssignmentManager"),<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    @org.jamon.annotations.Argument(name = "serverManager", type = "ServerManager"),<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    @org.jamon.annotations.Argument(name = "deadServers", type = "Set&lt;ServerName&gt;"),<a name="line.69"></a>
+<span class="sourceLineNo">064</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    @org.jamon.annotations.Argument(name = "deadServers", type = "Set&lt;ServerName&gt;"),<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    @org.jamon.annotations.Argument(name = "frags", type = "Map&lt;String,Integer&gt;"),<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    @org.jamon.annotations.Argument(name = "serverManager", type = "ServerManager"),<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    @org.jamon.annotations.Argument(name = "catalogJanitorEnabled", type = "boolean"),<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    @org.jamon.annotations.Argument(name = "metaLocation", type = "ServerName"),<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>
@@ -116,23 +116,23 @@
 <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>    // 22, 1<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    public void setMetaLocation(ServerName metaLocation)<a name="line.112"></a>
+<span class="sourceLineNo">111</span>    // 29, 1<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    public void setAssignmentManager(AssignmentManager assignmentManager)<a name="line.112"></a>
 <span class="sourceLineNo">113</span>    {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      // 22, 1<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      m_metaLocation = metaLocation;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      m_metaLocation__IsNotDefault = true;<a name="line.116"></a>
+<span class="sourceLineNo">114</span>      // 29, 1<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      m_assignmentManager = assignmentManager;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      m_assignmentManager__IsNotDefault = true;<a name="line.116"></a>
 <span class="sourceLineNo">117</span>    }<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    public ServerName getMetaLocation()<a name="line.118"></a>
+<span class="sourceLineNo">118</span>    public AssignmentManager getAssignmentManager()<a name="line.118"></a>
 <span class="sourceLineNo">119</span>    {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      return m_metaLocation;<a name="line.120"></a>
+<span class="sourceLineNo">120</span>      return m_assignmentManager;<a name="line.120"></a>
 <span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    private ServerName m_metaLocation;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    public boolean getMetaLocation__IsNotDefault()<a name="line.123"></a>
+<span class="sourceLineNo">122</span>    private AssignmentManager m_assignmentManager;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    public boolean getAssignmentManager__IsNotDefault()<a name="line.123"></a>
 <span class="sourceLineNo">124</span>    {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      return m_metaLocation__IsNotDefault;<a name="line.125"></a>
+<span class="sourceLineNo">125</span>      return m_assignmentManager__IsNotDefault;<a name="line.125"></a>
 <span class="sourceLineNo">126</span>    }<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    private boolean m_metaLocation__IsNotDefault;<a name="line.127"></a>
+<span class="sourceLineNo">127</span>    private boolean m_assignmentManager__IsNotDefault;<a name="line.127"></a>
 <span class="sourceLineNo">128</span>    // 23, 1<a name="line.128"></a>
 <span class="sourceLineNo">129</span>    public void setServers(List&lt;ServerName&gt; servers)<a name="line.129"></a>
 <span class="sourceLineNo">130</span>    {<a name="line.130"></a>
@@ -150,108 +150,108 @@
 <span class="sourceLineNo">142</span>      return m_servers__IsNotDefault;<a name="line.142"></a>
 <span class="sourceLineNo">143</span>    }<a name="line.143"></a>
 <span class="sourceLineNo">144</span>    private boolean m_servers__IsNotDefault;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    // 21, 1<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    public void setFrags(Map&lt;String,Integer&gt; frags)<a name="line.146"></a>
+<span class="sourceLineNo">145</span>    // 26, 1<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    public void setFilter(String filter)<a name="line.146"></a>
 <span class="sourceLineNo">147</span>    {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      // 21, 1<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      m_frags = frags;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      m_frags__IsNotDefault = true;<a name="line.150"></a>
+<span class="sourceLineNo">148</span>      // 26, 1<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      m_filter = filter;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      m_filter__IsNotDefault = true;<a name="line.150"></a>
 <span class="sourceLineNo">151</span>    }<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    public Map&lt;String,Integer&gt; getFrags()<a name="line.152"></a>
+<span class="sourceLineNo">152</span>    public String getFilter()<a name="line.152"></a>
 <span class="sourceLineNo">153</span>    {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      return m_frags;<a name="line.154"></a>
+<span class="sourceLineNo">154</span>      return m_filter;<a name="line.154"></a>
 <span class="sourceLineNo">155</span>    }<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    private Map&lt;String,Integer&gt; m_frags;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    public boolean getFrags__IsNotDefault()<a name="line.157"></a>
+<span class="sourceLineNo">156</span>    private String m_filter;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    public boolean getFilter__IsNotDefault()<a name="line.157"></a>
 <span class="sourceLineNo">158</span>    {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      return m_frags__IsNotDefault;<a name="line.159"></a>
+<span class="sourceLineNo">159</span>      return m_filter__IsNotDefault;<a name="line.159"></a>
 <span class="sourceLineNo">160</span>    }<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    private boolean m_frags__IsNotDefault;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    // 25, 1<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    public void setCatalogJanitorEnabled(boolean catalogJanitorEnabled)<a name="line.163"></a>
+<span class="sourceLineNo">161</span>    private boolean m_filter__IsNotDefault;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    // 24, 1<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    public void setDeadServers(Set&lt;ServerName&gt; deadServers)<a name="line.163"></a>
 <span class="sourceLineNo">164</span>    {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      // 25, 1<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      m_catalogJanitorEnabled = catalogJanitorEnabled;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      m_catalogJanitorEnabled__IsNotDefault = true;<a name="line.167"></a>
+<span class="sourceLineNo">165</span>      // 24, 1<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      m_deadServers = deadServers;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      m_deadServers__IsNotDefault = true;<a name="line.167"></a>
 <span class="sourceLineNo">168</span>    }<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    public boolean getCatalogJanitorEnabled()<a name="line.169"></a>
+<span class="sourceLineNo">169</span>    public Set&lt;ServerName&gt; getDeadServers()<a name="line.169"></a>
 <span class="sourceLineNo">170</span>    {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      return m_catalogJanitorEnabled;<a name="line.171"></a>
+<span class="sourceLineNo">171</span>      return m_deadServers;<a name="line.171"></a>
 <span class="sourceLineNo">172</span>    }<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    private boolean m_catalogJanitorEnabled;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    public boolean getCatalogJanitorEnabled__IsNotDefault()<a name="line.174"></a>
+<span class="sourceLineNo">173</span>    private Set&lt;ServerName&gt; m_deadServers;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    public boolean getDeadServers__IsNotDefault()<a name="line.174"></a>
 <span class="sourceLineNo">175</span>    {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      return m_catalogJanitorEnabled__IsNotDefault;<a name="line.176"></a>
+<span class="sourceLineNo">176</span>      return m_deadServers__IsNotDefault;<a name="line.176"></a>
 <span class="sourceLineNo">177</span>    }<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    private boolean m_catalogJanitorEnabled__IsNotDefault;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    // 29, 1<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    public void setAssignmentManager(AssignmentManager assignmentManager)<a name="line.180"></a>
+<span class="sourceLineNo">178</span>    private boolean m_deadServers__IsNotDefault;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    // 21, 1<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    public void setFrags(Map&lt;String,Integer&gt; frags)<a name="line.180"></a>
 <span class="sourceLineNo">181</span>    {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      // 29, 1<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      m_assignmentManager = assignmentManager;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      m_assignmentManager__IsNotDefault = true;<a name="line.184"></a>
+<span class="sourceLineNo">182</span>      // 21, 1<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      m_frags = frags;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      m_frags__IsNotDefault = true;<a name="line.184"></a>
 <span class="sourceLineNo">185</span>    }<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    public AssignmentManager getAssignmentManager()<a name="line.186"></a>
+<span class="sourceLineNo">186</span>    public Map&lt;String,Integer&gt; getFrags()<a name="line.186"></a>
 <span class="sourceLineNo">187</span>    {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      return m_assignmentManager;<a name="line.188"></a>
+<span class="sourceLineNo">188</span>      return m_frags;<a name="line.188"></a>
 <span class="sourceLineNo">189</span>    }<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    private AssignmentManager m_assignmentManager;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    public boolean getAssignmentManager__IsNotDefault()<a name="line.191"></a>
+<span class="sourceLineNo">190</span>    private Map&lt;String,Integer&gt; m_frags;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    public boolean getFrags__IsNotDefault()<a name="line.191"></a>
 <span class="sourceLineNo">192</span>    {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      return m_assignmentManager__IsNotDefault;<a name="line.193"></a>
+<span class="sourceLineNo">193</span>      return m_frags__IsNotDefault;<a name="line.193"></a>
 <span class="sourceLineNo">194</span>    }<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    private boolean m_assignmentManager__IsNotDefault;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    // 26, 1<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    public void setFilter(String filter)<a name="line.197"></a>
+<span class="sourceLineNo">195</span>    private boolean m_frags__IsNotDefault;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    // 28, 1<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    public void setServerManager(ServerManager serverManager)<a name="line.197"></a>
 <span class="sourceLineNo">198</span>    {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      // 26, 1<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      m_filter = filter;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      m_filter__IsNotDefault = true;<a name="line.201"></a>
+<span class="sourceLineNo">199</span>      // 28, 1<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      m_serverManager = serverManager;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      m_serverManager__IsNotDefault = true;<a name="line.201"></a>
 <span class="sourceLineNo">202</span>    }<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    public String getFilter()<a name="line.203"></a>
+<span class="sourceLineNo">203</span>    public ServerManager getServerManager()<a name="line.203"></a>
 <span class="sourceLineNo">204</span>    {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      return m_filter;<a name="line.205"></a>
+<span class="sourceLineNo">205</span>      return m_serverManager;<a name="line.205"></a>
 <span class="sourceLineNo">206</span>    }<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    private String m_filter;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    public boolean getFilter__IsNotDefault()<a name="line.208"></a>
+<span class="sourceLineNo">207</span>    private ServerManager m_serverManager;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    public boolean getServerManager__IsNotDefault()<a name="line.208"></a>
 <span class="sourceLineNo">209</span>    {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      return m_filter__IsNotDefault;<a name="line.210"></a>
+<span class="sourceLineNo">210</span>      return m_serverManager__IsNotDefault;<a name="line.210"></a>
 <span class="sourceLineNo">211</span>    }<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    private boolean m_filter__IsNotDefault;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    // 28, 1<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    public void setServerManager(ServerManager serverManager)<a name="line.214"></a>
+<span class="sourceLineNo">212</span>    private boolean m_serverManager__IsNotDefault;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    // 25, 1<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    public void setCatalogJanitorEnabled(boolean catalogJanitorEnabled)<a name="line.214"></a>
 <span class="sourceLineNo">215</span>    {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      // 28, 1<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      m_serverManager = serverManager;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      m_serverManager__IsNotDefault = true;<a name="line.218"></a>
+<span class="sourceLineNo">216</span>      // 25, 1<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      m_catalogJanitorEnabled = catalogJanitorEnabled;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      m_catalogJanitorEnabled__IsNotDefault = true;<a name="line.218"></a>
 <span class="sourceLineNo">219</span>    }<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    public ServerManager getServerManager()<a name="line.220"></a>
+<span class="sourceLineNo">220</span>    public boolean getCatalogJanitorEnabled()<a name="line.220"></a>
 <span class="sourceLineNo">221</span>    {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      return m_serverManager;<a name="line.222"></a>
+<span class="sourceLineNo">222</span>      return m_catalogJanitorEnabled;<a name="line.222"></a>
 <span class="sourceLineNo">223</span>    }<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    private ServerManager m_serverManager;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    public boolean getServerManager__IsNotDefault()<a name="line.225"></a>
+<span class="sourceLineNo">224</span>    private boolean m_catalogJanitorEnabled;<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    public boolean getCatalogJanitorEnabled__IsNotDefault()<a name="line.225"></a>
 <span class="sourceLineNo">226</span>    {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      return m_serverManager__IsNotDefault;<a name="line.227"></a>
+<span class="sourceLineNo">227</span>      return m_catalogJanitorEnabled__IsNotDefault;<a name="line.227"></a>
 <span class="sourceLineNo">228</span>    }<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    private boolean m_serverManager__IsNotDefault;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    // 24, 1<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    public void setDeadServers(Set&lt;ServerName&gt; deadServers)<a name="line.231"></a>
+<span class="sourceLineNo">229</span>    private boolean m_catalogJanitorEnabled__IsNotDefault;<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    // 22, 1<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    public void setMetaLocation(ServerName metaLocation)<a name="line.231"></a>
 <span class="sourceLineNo">232</span>    {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      // 24, 1<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      m_deadServers = deadServers;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      m_deadServers__IsNotDefault = true;<a name="line.235"></a>
+<span class="sourceLineNo">233</span>      // 22, 1<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      m_metaLocation = metaLocation;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      m_metaLocation__IsNotDefault = true;<a name="line.235"></a>
 <span class="sourceLineNo">236</span>    }<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    public Set&lt;ServerName&gt; getDeadServers()<a name="line.237"></a>
+<span class="sourceLineNo">237</span>    public ServerName getMetaLocation()<a name="line.237"></a>
 <span class="sourceLineNo">238</span>    {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      return m_deadServers;<a name="line.239"></a>
+<span class="sourceLineNo">239</span>      return m_metaLocation;<a name="line.239"></a>
 <span class="sourceLineNo">240</span>    }<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    private Set&lt;ServerName&gt; m_deadServers;<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    public boolean getDeadServers__IsNotDefault()<a name="line.242"></a>
+<span class="sourceLineNo">241</span>    private ServerName m_metaLocation;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    public boolean getMetaLocation__IsNotDefault()<a name="line.242"></a>
 <span class="sourceLineNo">243</span>    {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      return m_deadServers__IsNotDefault;<a name="line.244"></a>
+<span class="sourceLineNo">244</span>      return m_metaLocation__IsNotDefault;<a name="line.244"></a>
 <span class="sourceLineNo">245</span>    }<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    private boolean m_deadServers__IsNotDefault;<a name="line.246"></a>
+<span class="sourceLineNo">246</span>    private boolean m_metaLocation__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>
@@ -280,10 +280,10 @@
 <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 ServerName metaLocation;<a name="line.275"></a>
-<span class="sourceLineNo">276</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setMetaLocation(ServerName p_metaLocation)<a name="line.276"></a>
+<span class="sourceLineNo">275</span>  protected AssignmentManager assignmentManager;<a name="line.275"></a>
+<span class="sourceLineNo">276</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setAssignmentManager(AssignmentManager p_assignmentManager)<a name="line.276"></a>
 <span class="sourceLineNo">277</span>  {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    (getImplData()).setMetaLocation(p_metaLocation);<a name="line.278"></a>
+<span class="sourceLineNo">278</span>    (getImplData()).setAssignmentManager(p_assignmentManager);<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>
@@ -294,45 +294,45 @@
 <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 Map&lt;String,Integer&gt; frags;<a name="line.289"></a>
-<span class="sourceLineNo">290</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFrags(Map&lt;String,Integer&gt; p_frags)<a name="line.290"></a>
+<span class="sourceLineNo">289</span>  protected String filter;<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFilter(String p_filter)<a name="line.290"></a>
 <span class="sourceLineNo">291</span>  {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    (getImplData()).setFrags(p_frags);<a name="line.292"></a>
+<span class="sourceLineNo">292</span>    (getImplData()).setFilter(p_filter);<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 boolean catalogJanitorEnabled;<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setCatalogJanitorEnabled(boolean p_catalogJanitorEnabled)<a name="line.297"></a>
+<span class="sourceLineNo">296</span>  protected Set&lt;ServerName&gt; deadServers;<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setDeadServers(Set&lt;ServerName&gt; p_deadServers)<a name="line.297"></a>
 <span class="sourceLineNo">298</span>  {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    (getImplData()).setCatalogJanitorEnabled(p_catalogJanitorEnabled);<a name="line.299"></a>
+<span class="sourceLineNo">299</span>    (getImplData()).setDeadServers(p_deadServers);<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 AssignmentManager assignmentManager;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setAssignmentManager(AssignmentManager p_assignmentManager)<a name="line.304"></a>
+<span class="sourceLineNo">303</span>  protected Map&lt;String,Integer&gt; frags;<a name="line.303"></a>
+<span class="sourceLineNo">304</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFrags(Map&lt;String,Integer&gt; p_frags)<a name="line.304"></a>
 <span class="sourceLineNo">305</span>  {<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    (getImplData()).setAssignmentManager(p_assignmentManager);<a name="line.306"></a>
+<span class="sourceLineNo">306</span>    (getImplData()).setFrags(p_frags);<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 filter;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFilter(String p_filter)<a name="line.311"></a>
+<span class="sourceLineNo">310</span>  protected ServerManager serverManager;<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServerManager(ServerManager p_serverManager)<a name="line.311"></a>
 <span class="sourceLineNo">312</span>  {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    (getImplData()).setFilter(p_filter);<a name="line.313"></a>
+<span class="sourceLineNo">313</span>    (getImplData()).setServerManager(p_serverManager);<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 ServerManager serverManager;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServerManager(ServerManager p_serverManager)<a name="line.318"></a>
+<span class="sourceLineNo">317</span>  protected boolean catalogJanitorEnabled;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setCatalogJanitorEnabled(boolean p_catalogJanitorEnabled)<a name="line.318"></a>
 <span class="sourceLineNo">319</span>  {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    (getImplData()).setServerManager(p_serverManager);<a name="line.320"></a>
+<span class="sourceLineNo">320</span>    (getImplData()).setCatalogJanitorEnabled(p_catalogJanitorEnabled);<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 Set&lt;ServerName&gt; deadServers;<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setDeadServers(Set&lt;ServerName&gt; p_deadServers)<a name="line.325"></a>
+<span class="sourceLineNo">324</span>  protected ServerName metaLocation;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setMetaLocation(ServerName p_metaLocation)<a name="line.325"></a>
 <span class="sourceLineNo">326</span>  {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    (getImplData()).setDeadServers(p_deadServers);<a name="line.327"></a>
+<span class="sourceLineNo">327</span>    (getImplData()).setMetaLocation(p_metaLocation);<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>

http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/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 aa1f969..b5db3e0 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,14 +68,14 @@
 <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 ServerName metaLocation;<a name="line.63"></a>
+<span class="sourceLineNo">063</span>  private final AssignmentManager assignmentManager;<a name="line.63"></a>
 <span class="sourceLineNo">064</span>  private final List&lt;ServerName&gt; servers;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  private final Map&lt;String,Integer&gt; frags;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  private final boolean catalogJanitorEnabled;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  private final AssignmentManager assignmentManager;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>  private final String filter;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  private final ServerManager serverManager;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  private final Set&lt;ServerName&gt; deadServers;<a name="line.70"></a>
+<span class="sourceLineNo">065</span>  private final String filter;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  private final Set&lt;ServerName&gt; deadServers;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>  private final Map&lt;String,Integer&gt; frags;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  private final ServerManager serverManager;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>  private final boolean catalogJanitorEnabled;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  private final ServerName metaLocation;<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>
@@ -106,37 +106,37 @@
 <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.getMetaLocation__IsNotDefault())<a name="line.101"></a>
+<span class="sourceLineNo">101</span>    if(! p_implData.getAssignmentManager__IsNotDefault())<a name="line.101"></a>
 <span class="sourceLineNo">102</span>    {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      p_implData.setMetaLocation(null);<a name="line.103"></a>
+<span class="sourceLineNo">103</span>      p_implData.setAssignmentManager(null);<a name="line.103"></a>
 <span class="sourceLineNo">104</span>    }<a name="line.104"></a>
 <span class="sourceLineNo">105</span>    if(! p_implData.getServers__IsNotDefault())<a name="line.105"></a>
 <span class="sourceLineNo">106</span>    {<a name="line.106"></a>
 <span class="sourceLineNo">107</span>      p_implData.setServers(null);<a name="line.107"></a>
 <span class="sourceLineNo">108</span>    }<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    if(! p_implData.getFrags__IsNotDefault())<a name="line.109"></a>
+<span class="sourceLineNo">109</span>    if(! p_implData.getFilter__IsNotDefault())<a name="line.109"></a>
 <span class="sourceLineNo">110</span>    {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      p_implData.setFrags(null);<a name="line.111"></a>
+<span class="sourceLineNo">111</span>      p_implData.setFilter("general");<a name="line.111"></a>
 <span class="sourceLineNo">112</span>    }<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    if(! p_implData.getCatalogJanitorEnabled__IsNotDefault())<a name="line.113"></a>
+<span class="sourceLineNo">113</span>    if(! p_implData.getDeadServers__IsNotDefault())<a name="line.113"></a>
 <span class="sourceLineNo">114</span>    {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      p_implData.setCatalogJanitorEnabled(true);<a name="line.115"></a>
+<span class="sourceLineNo">115</span>      p_implData.setDeadServers(null);<a name="line.115"></a>
 <span class="sourceLineNo">116</span>    }<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    if(! p_implData.getAssignmentManager__IsNotDefault())<a name="line.117"></a>
+<span class="sourceLineNo">117</span>    if(! p_implData.getFrags__IsNotDefault())<a name="line.117"></a>
 <span class="sourceLineNo">118</span>    {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      p_implData.setAssignmentManager(null);<a name="line.119"></a>
+<span class="sourceLineNo">119</span>      p_implData.setFrags(null);<a name="line.119"></a>
 <span class="sourceLineNo">120</span>    }<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    if(! p_implData.getFilter__IsNotDefault())<a name="line.121"></a>
+<span class="sourceLineNo">121</span>    if(! p_implData.getServerManager__IsNotDefault())<a name="line.121"></a>
 <span class="sourceLineNo">122</span>    {<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      p_implData.setFilter("general");<a name="line.123"></a>
+<span class="sourceLineNo">123</span>      p_implData.setServerManager(null);<a name="line.123"></a>
 <span class="sourceLineNo">124</span>    }<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    if(! p_implData.getServerManager__IsNotDefault())<a name="line.125"></a>
+<span class="sourceLineNo">125</span>    if(! p_implData.getCatalogJanitorEnabled__IsNotDefault())<a name="line.125"></a>
 <span class="sourceLineNo">126</span>    {<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      p_implData.setServerManager(null);<a name="line.127"></a>
+<span class="sourceLineNo">127</span>      p_implData.setCatalogJanitorEnabled(true);<a name="line.127"></a>
 <span class="sourceLineNo">128</span>    }<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    if(! p_implData.getDeadServers__IsNotDefault())<a name="line.129"></a>
+<span class="sourceLineNo">129</span>    if(! p_implData.getMetaLocation__IsNotDefault())<a name="line.129"></a>
 <span class="sourceLineNo">130</span>    {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      p_implData.setDeadServers(null);<a name="line.131"></a>
+<span class="sourceLineNo">131</span>      p_implData.setMetaLocation(null);<a name="line.131"></a>
 <span class="sourceLineNo">132</span>    }<a name="line.132"></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>
@@ -148,14 +148,14 @@
 <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>    metaLocation = p_implData.getMetaLocation();<a name="line.143"></a>
+<span class="sourceLineNo">143</span>    assignmentManager = p_implData.getAssignmentManager();<a name="line.143"></a>
 <span class="sourceLineNo">144</span>    servers = p_implData.getServers();<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    frags = p_implData.getFrags();<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    catalogJanitorEnabled = p_implData.getCatalogJanitorEnabled();<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    assignmentManager = p_implData.getAssignmentManager();<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    filter = p_implData.getFilter();<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    serverManager = p_implData.getServerManager();<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    deadServers = p_implData.getDeadServers();<a name="line.150"></a>
+<span class="sourceLineNo">145</span>    filter = p_implData.getFilter();<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    deadServers = p_implData.getDeadServers();<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    frags = p_implData.getFrags();<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    serverManager = p_implData.getServerManager();<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    catalogJanitorEnabled = p_implData.getCatalogJanitorEnabled();<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    metaLocation = p_implData.getMetaLocation();<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>
@@ -170,8 +170,8 @@
 <span class="sourceLineNo">162</span>      // 60, 3<a name="line.162"></a>
 <span class="sourceLineNo">163</span>      {<a name="line.163"></a>
 <span class="sourceLineNo">164</span>        org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl __jamon__var_0 = new org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl(this.getTemplateManager());<a name="line.164"></a>
-<span class="sourceLineNo">165</span>        __jamon__var_0.setFormat("json" );<a name="line.165"></a>
-<span class="sourceLineNo">166</span>        __jamon__var_0.setFilter(filter);<a name="line.166"></a>
+<span class="sourceLineNo">165</span>        __jamon__var_0.setFilter(filter);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>        __jamon__var_0.setFormat("json" );<a name="line.166"></a>
 <span class="sourceLineNo">167</span>        __jamon__var_0.renderNoFlush(jamonWriter);<a name="line.167"></a>
 <span class="sourceLineNo">168</span>      }<a name="line.168"></a>
 <span class="sourceLineNo">169</span>      // 60, 68<a name="line.169"></a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/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 ab22e09..fc0959f 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,9 +33,9 @@
 <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 = "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">028</span>    @org.jamon.annotations.Argument(name = "bcv", type = "String"),<a name="line.28"></a>
+<span class="sourceLineNo">029</span>    @org.jamon.annotations.Argument(name = "filter", 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 = "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>
@@ -77,57 +77,57 @@
 <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>    // 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">072</span>    // 24, 1<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    public void setBcv(String bcv)<a name="line.73"></a>
 <span class="sourceLineNo">074</span>    {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      // 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">075</span>      // 24, 1<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      m_bcv = bcv;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>      m_bcv__IsNotDefault = true;<a name="line.77"></a>
 <span class="sourceLineNo">078</span>    }<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    public String getBcn()<a name="line.79"></a>
+<span class="sourceLineNo">079</span>    public String getBcv()<a name="line.79"></a>
 <span class="sourceLineNo">080</span>    {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      return m_bcn;<a name="line.81"></a>
+<span class="sourceLineNo">081</span>      return m_bcv;<a name="line.81"></a>
 <span class="sourceLineNo">082</span>    }<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    private String m_bcn;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    public boolean getBcn__IsNotDefault()<a name="line.84"></a>
+<span class="sourceLineNo">083</span>    private String m_bcv;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    public boolean getBcv__IsNotDefault()<a name="line.84"></a>
 <span class="sourceLineNo">085</span>    {<a name="line.85"></a>
-<span class="sourceLineNo">086</span>      return m_bcn__IsNotDefault;<a name="line.86"></a>
+<span class="sourceLineNo">086</span>      return m_bcv__IsNotDefault;<a name="line.86"></a>
 <span class="sourceLineNo">087</span>    }<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    private boolean m_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">088</span>    private boolean m_bcv__IsNotDefault;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    // 21, 1<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    public void setFilter(String filter)<a name="line.90"></a>
 <span class="sourceLineNo">091</span>    {<a name="line.91"></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">092</span>      // 21, 1<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      m_filter = filter;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      m_filter__IsNotDefault = true;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>    }<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    public String getBcv()<a name="line.96"></a>
+<span class="sourceLineNo">096</span>    public String getFilter()<a name="line.96"></a>
 <span class="sourceLineNo">097</span>    {<a name="line.97"></a>
-<span class="sourceLineNo">098</span>      return m_bcv;<a name="line.98"></a>
+<span class="sourceLineNo">098</span>      return m_filter;<a name="line.98"></a>
 <span class="sourceLineNo">099</span>    }<a name="line.99"></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">100</span>    private String m_filter;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    public boolean getFilter__IsNotDefault()<a name="line.101"></a>
 <span class="sourceLineNo">102</span>    {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      return m_bcv__IsNotDefault;<a name="line.103"></a>
+<span class="sourceLineNo">103</span>      return m_filter__IsNotDefault;<a name="line.103"></a>
 <span class="sourceLineNo">104</span>    }<a name="line.104"></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">105</span>    private boolean m_filter__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">108</span>    {<a name="line.108"></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">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">112</span>    }<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    public String getFilter()<a name="line.113"></a>
+<span class="sourceLineNo">113</span>    public String getBcn()<a name="line.113"></a>
 <span class="sourceLineNo">114</span>    {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      return m_filter;<a name="line.115"></a>
+<span class="sourceLineNo">115</span>      return m_bcn;<a name="line.115"></a>
 <span class="sourceLineNo">116</span>    }<a name="line.116"></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">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">119</span>    {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      return m_filter__IsNotDefault;<a name="line.120"></a>
+<span class="sourceLineNo">120</span>      return m_bcn__IsNotDefault;<a name="line.120"></a>
 <span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    private boolean m_filter__IsNotDefault;<a name="line.122"></a>
+<span class="sourceLineNo">122</span>    private boolean m_bcn__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>
@@ -156,24 +156,24 @@
 <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 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">151</span>  protected String bcv;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcv(String p_bcv)<a name="line.152"></a>
 <span class="sourceLineNo">153</span>  {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    (getImplData()).setBcn(p_bcn);<a name="line.154"></a>
+<span class="sourceLineNo">154</span>    (getImplData()).setBcv(p_bcv);<a name="line.154"></a>
 <span class="sourceLineNo">155</span>    return this;<a name="line.155"></a>
 <span class="sourceLineNo">156</span>  }<a name="line.156"></a>
 <span class="sourceLineNo">157</span>  <a name="line.157"></a>
-<span class="sourceLineNo">158</span>  protected String 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">158</span>  protected String filter;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFilter(String p_filter)<a name="line.159"></a>
 <span class="sourceLineNo">160</span>  {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    (getImplData()).setBcv(p_bcv);<a name="line.161"></a>
+<span class="sourceLineNo">161</span>    (getImplData()).setFilter(p_filter);<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 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">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">167</span>  {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    (getImplData()).setFilter(p_filter);<a name="line.168"></a>
+<span class="sourceLineNo">168</span>    (getImplData()).setBcn(p_bcn);<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>

http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/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 ab22e09..fc0959f 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,9 +33,9 @@
 <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 = "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">028</span>    @org.jamon.annotations.Argument(name = "bcv", type = "String"),<a name="line.28"></a>
+<span class="sourceLineNo">029</span>    @org.jamon.annotations.Argument(name = "filter", 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 = "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>
@@ -77,57 +77,57 @@
 <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>    // 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">072</span>    // 24, 1<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    public void setBcv(String bcv)<a name="line.73"></a>
 <span class="sourceLineNo">074</span>    {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      // 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">075</span>      // 24, 1<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      m_bcv = bcv;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>      m_bcv__IsNotDefault = true;<a name="line.77"></a>
 <span class="sourceLineNo">078</span>    }<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    public String getBcn()<a name="line.79"></a>
+<span class="sourceLineNo">079</span>    public String getBcv()<a name="line.79"></a>
 <span class="sourceLineNo">080</span>    {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      return m_bcn;<a name="line.81"></a>
+<span class="sourceLineNo">081</span>      return m_bcv;<a name="line.81"></a>
 <span class="sourceLineNo">082</span>    }<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    private String m_bcn;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    public boolean getBcn__IsNotDefault()<a name="line.84"></a>
+<span class="sourceLineNo">083</span>    private String m_bcv;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    public boolean getBcv__IsNotDefault()<a name="line.84"></a>
 <span class="sourceLineNo">085</span>    {<a name="line.85"></a>
-<span class="sourceLineNo">086</span>      return m_bcn__IsNotDefault;<a name="line.86"></a>
+<span class="sourceLineNo">086</span>      return m_bcv__IsNotDefault;<a name="line.86"></a>
 <span class="sourceLineNo">087</span>    }<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    private boolean m_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">088</span>    private boolean m_bcv__IsNotDefault;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    // 21, 1<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    public void setFilter(String filter)<a name="line.90"></a>
 <span class="sourceLineNo">091</span>    {<a name="line.91"></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">092</span>      // 21, 1<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      m_filter = filter;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      m_filter__IsNotDefault = true;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>    }<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    public String getBcv()<a name="line.96"></a>
+<span class="sourceLineNo">096</span>    public String getFilter()<a name="line.96"></a>
 <span class="sourceLineNo">097</span>    {<a name="line.97"></a>
-<span class="sourceLineNo">098</span>      return m_bcv;<a name="line.98"></a>
+<span class="sourceLineNo">098</span>      return m_filter;<a name="line.98"></a>
 <span class="sourceLineNo">099</span>    }<a name="line.99"></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">100</span>    private String m_filter;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    public boolean getFilter__IsNotDefault()<a name="line.101"></a>
 <span class="sourceLineNo">102</span>    {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      return m_bcv__IsNotDefault;<a name="line.103"></a>
+<span class="sourceLineNo">103</span>      return m_filter__IsNotDefault;<a name="line.103"></a>
 <span class="sourceLineNo">104</span>    }<a name="line.104"></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">105</span>    private boolean m_filter__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">108</span>    {<a name="line.108"></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">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">112</span>    }<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    public String getFilter()<a name="line.113"></a>
+<span class="sourceLineNo">113</span>    public String getBcn()<a name="line.113"></a>
 <span class="sourceLineNo">114</span>    {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      return m_filter;<a name="line.115"></a>
+<span class="sourceLineNo">115</span>      return m_bcn;<a name="line.115"></a>
 <span class="sourceLineNo">116</span>    }<a name="line.116"></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">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">119</span>    {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      return m_filter__IsNotDefault;<a name="line.120"></a>
+<span class="sourceLineNo">120</span>      return m_bcn__IsNotDefault;<a name="line.120"></a>
 <span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    private boolean m_filter__IsNotDefault;<a name="line.122"></a>
+<span class="sourceLineNo">122</span>    private boolean m_bcn__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>
@@ -156,24 +156,24 @@
 <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 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">151</span>  protected String bcv;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcv(String p_bcv)<a name="line.152"></a>
 <span class="sourceLineNo">153</span>  {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    (getImplData()).setBcn(p_bcn);<a name="line.154"></a>
+<span class="sourceLineNo">154</span>    (getImplData()).setBcv(p_bcv);<a name="line.154"></a>
 <span class="sourceLineNo">155</span>    return this;<a name="line.155"></a>
 <span class="sourceLineNo">156</span>  }<a name="line.156"></a>
 <span class="sourceLineNo">157</span>  <a name="line.157"></a>
-<span class="sourceLineNo">158</span>  protected String 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">158</span>  protected String filter;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFilter(String p_filter)<a name="line.159"></a>
 <span class="sourceLineNo">160</span>  {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    (getImplData()).setBcv(p_bcv);<a name="line.161"></a>
+<span class="sourceLineNo">161</span>    (getImplData()).setFilter(p_filter);<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 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">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">167</span>  {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    (getImplData()).setFilter(p_filter);<a name="line.168"></a>
+<span class="sourceLineNo">168</span>    (getImplData()).setBcn(p_bcn);<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>

http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/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 ab22e09..fc0959f 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,9 +33,9 @@
 <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 = "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">028</span>    @org.jamon.annotations.Argument(name = "bcv", type = "String"),<a name="line.28"></a>
+<span class="sourceLineNo">029</span>    @org.jamon.annotations.Argument(name = "filter", 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 = "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>
@@ -77,57 +77,57 @@
 <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>    // 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">072</span>    // 24, 1<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    public void setBcv(String bcv)<a name="line.73"></a>
 <span class="sourceLineNo">074</span>    {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      // 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">075</span>      // 24, 1<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      m_bcv = bcv;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>      m_bcv__IsNotDefault = true;<a name="line.77"></a>
 <span class="sourceLineNo">078</span>    }<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    public String getBcn()<a name="line.79"></a>
+<span class="sourceLineNo">079</span>    public String getBcv()<a name="line.79"></a>
 <span class="sourceLineNo">080</span>    {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      return m_bcn;<a name="line.81"></a>
+<span class="sourceLineNo">081</span>      return m_bcv;<a name="line.81"></a>
 <span class="sourceLineNo">082</span>    }<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    private String m_bcn;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    public boolean getBcn__IsNotDefault()<a name="line.84"></a>
+<span class="sourceLineNo">083</span>    private String m_bcv;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    public boolean getBcv__IsNotDefault()<a name="line.84"></a>
 <span class="sourceLineNo">085</span>    {<a name="line.85"></a>
-<span class="sourceLineNo">086</span>      return m_bcn__IsNotDefault;<a name="line.86"></a>
+<span class="sourceLineNo">086</span>      return m_bcv__IsNotDefault;<a name="line.86"></a>
 <span class="sourceLineNo">087</span>    }<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    private boolean m_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">088</span>    private boolean m_bcv__IsNotDefault;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    // 21, 1<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    public void setFilter(String filter)<a name="line.90"></a>
 <span class="sourceLineNo">091</span>    {<a name="line.91"></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">092</span>      // 21, 1<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      m_filter = filter;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      m_filter__IsNotDefault = true;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>    }<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    public String getBcv()<a name="line.96"></a>
+<span class="sourceLineNo">096</span>    public String getFilter()<a name="line.96"></a>
 <span class="sourceLineNo">097</span>    {<a name="line.97"></a>
-<span class="sourceLineNo">098</span>      return m_bcv;<a name="line.98"></a>
+<span class="sourceLineNo">098</span>      return m_filter;<a name="line.98"></a>
 <span class="sourceLineNo">099</span>    }<a name="line.99"></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">100</span>    private String m_filter;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    public boolean getFilter__IsNotDefault()<a name="line.101"></a>
 <span class="sourceLineNo">102</span>    {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      return m_bcv__IsNotDefault;<a name="line.103"></a>
+<span class="sourceLineNo">103</span>      return m_filter__IsNotDefault;<a name="line.103"></a>
 <span class="sourceLineNo">104</span>    }<a name="line.104"></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">105</span>    private boolean m_filter__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">108</span>    {<a name="line.108"></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">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">112</span>    }<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    public String getFilter()<a name="line.113"></a>
+<span class="sourceLineNo">113</span>    public String getBcn()<a name="line.113"></a>
 <span class="sourceLineNo">114</span>    {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      return m_filter;<a name="line.115"></a>
+<span class="sourceLineNo">115</span>      return m_bcn;<a name="line.115"></a>
 <span class="sourceLineNo">116</span>    }<a name="line.116"></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">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">119</span>    {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      return m_filter__IsNotDefault;<a name="line.120"></a>
+<span class="sourceLineNo">120</span>      return m_bcn__IsNotDefault;<a name="line.120"></a>
 <span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    private boolean m_filter__IsNotDefault;<a name="line.122"></a>
+<span class="sourceLineNo">122</span>    private boolean m_bcn__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>
@@ -156,24 +156,24 @@
 <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 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">151</span>  protected String bcv;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcv(String p_bcv)<a name="line.152"></a>
 <span class="sourceLineNo">153</span>  {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    (getImplData()).setBcn(p_bcn);<a name="line.154"></a>
+<span class="sourceLineNo">154</span>    (getImplData()).setBcv(p_bcv);<a name="line.154"></a>
 <span class="sourceLineNo">155</span>    return this;<a name="line.155"></a>
 <span class="sourceLineNo">156</span>  }<a name="line.156"></a>
 <span class="sourceLineNo">157</span>  <a name="line.157"></a>
-<span class="sourceLineNo">158</span>  protected String 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">158</span>  protected String filter;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFilter(String p_filter)<a name="line.159"></a>
 <span class="sourceLineNo">160</span>  {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    (getImplData()).setBcv(p_bcv);<a name="line.161"></a>
+<span class="sourceLineNo">161</span>    (getImplData()).setFilter(p_filter);<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 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">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">167</span>  {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    (getImplData()).setFilter(p_filter);<a name="line.168"></a>
+<span class="sourceLineNo">168</span>    (getImplData()).setBcn(p_bcn);<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>

http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/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 60fcecd..f226a3f 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,23 +34,23 @@
 <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 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">029</span>  private final String bcv;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>  private final String filter;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>  private final String bcn;<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.getBcn__IsNotDefault())<a name="line.35"></a>
+<span class="sourceLineNo">035</span>    if(! p_implData.getBcv__IsNotDefault())<a name="line.35"></a>
 <span class="sourceLineNo">036</span>    {<a name="line.36"></a>
-<span class="sourceLineNo">037</span>      p_implData.setBcn("");<a name="line.37"></a>
+<span class="sourceLineNo">037</span>      p_implData.setBcv("");<a name="line.37"></a>
 <span class="sourceLineNo">038</span>    }<a name="line.38"></a>
-<span class="sourceLineNo">039</span>    if(! p_implData.getBcv__IsNotDefault())<a name="line.39"></a>
+<span class="sourceLineNo">039</span>    if(! p_implData.getFilter__IsNotDefault())<a name="line.39"></a>
 <span class="sourceLineNo">040</span>    {<a name="line.40"></a>
-<span class="sourceLineNo">041</span>      p_implData.setBcv("");<a name="line.41"></a>
+<span class="sourceLineNo">041</span>      p_implData.setFilter("general");<a name="line.41"></a>
 <span class="sourceLineNo">042</span>    }<a name="line.42"></a>
-<span class="sourceLineNo">043</span>    if(! p_implData.getFilter__IsNotDefault())<a name="line.43"></a>
+<span class="sourceLineNo">043</span>    if(! p_implData.getBcn__IsNotDefault())<a name="line.43"></a>
 <span class="sourceLineNo">044</span>    {<a name="line.44"></a>
-<span class="sourceLineNo">045</span>      p_implData.setFilter("general");<a name="line.45"></a>
+<span class="sourceLineNo">045</span>      p_implData.setBcn("");<a name="line.45"></a>
 <span class="sourceLineNo">046</span>    }<a name="line.46"></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>
@@ -62,9 +62,9 @@
 <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>    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">057</span>    bcv = p_implData.getBcv();<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    filter = p_implData.getFilter();<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    bcn = p_implData.getBcn();<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>
@@ -94,8 +94,8 @@
 <span class="sourceLineNo">086</span>      // 41, 3<a name="line.86"></a>
 <span class="sourceLineNo">087</span>      {<a name="line.87"></a>
 <span class="sourceLineNo">088</span>        org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl __jamon__var_7 = new org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl(this.getTemplateManager());<a name="line.88"></a>
-<span class="sourceLineNo">089</span>        __jamon__var_7.setFormat("json" );<a name="line.89"></a>
-<span class="sourceLineNo">090</span>        __jamon__var_7.setFilter(filter);<a name="line.90"></a>
+<span class="sourceLineNo">089</span>        __jamon__var_7.setFilter(filter);<a name="line.89"></a>
+<span class="sourceLineNo">090</span>        __jamon__var_7.setFormat("json" );<a name="line.90"></a>
 <span class="sourceLineNo">091</span>        __jamon__var_7.renderNoFlush(jamonWriter);<a name="line.91"></a>
 <span class="sourceLineNo">092</span>      }<a name="line.92"></a>
 <span class="sourceLineNo">093</span>      // 41, 68<a name="line.93"></a>

http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
index c9eba76..1dd4df1 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -155,9 +155,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.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="strong">TestCacheOnWrite.CacheOnWriteType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TestHFileBlockCompatibility.Writer.State.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="strong">TestHFileBlockCompatibility.Writer.State</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TagUsage.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="strong">TagUsage</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="strong">TestCacheOnWrite.CacheOnWriteType</span></a></li>
 </ul>
 </li>
 </ul>


[12/24] hbase git commit: Published site at 0d72849581c1e5a50a2aa7757b909e5531b8d12c.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/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 5d6ae0a..7aac442 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,14 +67,14 @@
 <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 = "metaLocation", type = "ServerName"),<a name="line.62"></a>
+<span class="sourceLineNo">062</span>    @org.jamon.annotations.Argument(name = "assignmentManager", type = "AssignmentManager"),<a name="line.62"></a>
 <span class="sourceLineNo">063</span>    @org.jamon.annotations.Argument(name = "servers", type = "List&lt;ServerName&gt;"),<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    @org.jamon.annotations.Argument(name = "frags", type = "Map&lt;String,Integer&gt;"),<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    @org.jamon.annotations.Argument(name = "catalogJanitorEnabled", type = "boolean"),<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    @org.jamon.annotations.Argument(name = "assignmentManager", type = "AssignmentManager"),<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    @org.jamon.annotations.Argument(name = "serverManager", type = "ServerManager"),<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    @org.jamon.annotations.Argument(name = "deadServers", type = "Set&lt;ServerName&gt;"),<a name="line.69"></a>
+<span class="sourceLineNo">064</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    @org.jamon.annotations.Argument(name = "deadServers", type = "Set&lt;ServerName&gt;"),<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    @org.jamon.annotations.Argument(name = "frags", type = "Map&lt;String,Integer&gt;"),<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    @org.jamon.annotations.Argument(name = "serverManager", type = "ServerManager"),<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    @org.jamon.annotations.Argument(name = "catalogJanitorEnabled", type = "boolean"),<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    @org.jamon.annotations.Argument(name = "metaLocation", type = "ServerName"),<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>
@@ -116,23 +116,23 @@
 <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>    // 22, 1<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    public void setMetaLocation(ServerName metaLocation)<a name="line.112"></a>
+<span class="sourceLineNo">111</span>    // 29, 1<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    public void setAssignmentManager(AssignmentManager assignmentManager)<a name="line.112"></a>
 <span class="sourceLineNo">113</span>    {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      // 22, 1<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      m_metaLocation = metaLocation;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      m_metaLocation__IsNotDefault = true;<a name="line.116"></a>
+<span class="sourceLineNo">114</span>      // 29, 1<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      m_assignmentManager = assignmentManager;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      m_assignmentManager__IsNotDefault = true;<a name="line.116"></a>
 <span class="sourceLineNo">117</span>    }<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    public ServerName getMetaLocation()<a name="line.118"></a>
+<span class="sourceLineNo">118</span>    public AssignmentManager getAssignmentManager()<a name="line.118"></a>
 <span class="sourceLineNo">119</span>    {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      return m_metaLocation;<a name="line.120"></a>
+<span class="sourceLineNo">120</span>      return m_assignmentManager;<a name="line.120"></a>
 <span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    private ServerName m_metaLocation;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    public boolean getMetaLocation__IsNotDefault()<a name="line.123"></a>
+<span class="sourceLineNo">122</span>    private AssignmentManager m_assignmentManager;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    public boolean getAssignmentManager__IsNotDefault()<a name="line.123"></a>
 <span class="sourceLineNo">124</span>    {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      return m_metaLocation__IsNotDefault;<a name="line.125"></a>
+<span class="sourceLineNo">125</span>      return m_assignmentManager__IsNotDefault;<a name="line.125"></a>
 <span class="sourceLineNo">126</span>    }<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    private boolean m_metaLocation__IsNotDefault;<a name="line.127"></a>
+<span class="sourceLineNo">127</span>    private boolean m_assignmentManager__IsNotDefault;<a name="line.127"></a>
 <span class="sourceLineNo">128</span>    // 23, 1<a name="line.128"></a>
 <span class="sourceLineNo">129</span>    public void setServers(List&lt;ServerName&gt; servers)<a name="line.129"></a>
 <span class="sourceLineNo">130</span>    {<a name="line.130"></a>
@@ -150,108 +150,108 @@
 <span class="sourceLineNo">142</span>      return m_servers__IsNotDefault;<a name="line.142"></a>
 <span class="sourceLineNo">143</span>    }<a name="line.143"></a>
 <span class="sourceLineNo">144</span>    private boolean m_servers__IsNotDefault;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    // 21, 1<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    public void setFrags(Map&lt;String,Integer&gt; frags)<a name="line.146"></a>
+<span class="sourceLineNo">145</span>    // 26, 1<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    public void setFilter(String filter)<a name="line.146"></a>
 <span class="sourceLineNo">147</span>    {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      // 21, 1<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      m_frags = frags;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      m_frags__IsNotDefault = true;<a name="line.150"></a>
+<span class="sourceLineNo">148</span>      // 26, 1<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      m_filter = filter;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      m_filter__IsNotDefault = true;<a name="line.150"></a>
 <span class="sourceLineNo">151</span>    }<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    public Map&lt;String,Integer&gt; getFrags()<a name="line.152"></a>
+<span class="sourceLineNo">152</span>    public String getFilter()<a name="line.152"></a>
 <span class="sourceLineNo">153</span>    {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      return m_frags;<a name="line.154"></a>
+<span class="sourceLineNo">154</span>      return m_filter;<a name="line.154"></a>
 <span class="sourceLineNo">155</span>    }<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    private Map&lt;String,Integer&gt; m_frags;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    public boolean getFrags__IsNotDefault()<a name="line.157"></a>
+<span class="sourceLineNo">156</span>    private String m_filter;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    public boolean getFilter__IsNotDefault()<a name="line.157"></a>
 <span class="sourceLineNo">158</span>    {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      return m_frags__IsNotDefault;<a name="line.159"></a>
+<span class="sourceLineNo">159</span>      return m_filter__IsNotDefault;<a name="line.159"></a>
 <span class="sourceLineNo">160</span>    }<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    private boolean m_frags__IsNotDefault;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    // 25, 1<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    public void setCatalogJanitorEnabled(boolean catalogJanitorEnabled)<a name="line.163"></a>
+<span class="sourceLineNo">161</span>    private boolean m_filter__IsNotDefault;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    // 24, 1<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    public void setDeadServers(Set&lt;ServerName&gt; deadServers)<a name="line.163"></a>
 <span class="sourceLineNo">164</span>    {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      // 25, 1<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      m_catalogJanitorEnabled = catalogJanitorEnabled;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      m_catalogJanitorEnabled__IsNotDefault = true;<a name="line.167"></a>
+<span class="sourceLineNo">165</span>      // 24, 1<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      m_deadServers = deadServers;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      m_deadServers__IsNotDefault = true;<a name="line.167"></a>
 <span class="sourceLineNo">168</span>    }<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    public boolean getCatalogJanitorEnabled()<a name="line.169"></a>
+<span class="sourceLineNo">169</span>    public Set&lt;ServerName&gt; getDeadServers()<a name="line.169"></a>
 <span class="sourceLineNo">170</span>    {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      return m_catalogJanitorEnabled;<a name="line.171"></a>
+<span class="sourceLineNo">171</span>      return m_deadServers;<a name="line.171"></a>
 <span class="sourceLineNo">172</span>    }<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    private boolean m_catalogJanitorEnabled;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    public boolean getCatalogJanitorEnabled__IsNotDefault()<a name="line.174"></a>
+<span class="sourceLineNo">173</span>    private Set&lt;ServerName&gt; m_deadServers;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    public boolean getDeadServers__IsNotDefault()<a name="line.174"></a>
 <span class="sourceLineNo">175</span>    {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      return m_catalogJanitorEnabled__IsNotDefault;<a name="line.176"></a>
+<span class="sourceLineNo">176</span>      return m_deadServers__IsNotDefault;<a name="line.176"></a>
 <span class="sourceLineNo">177</span>    }<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    private boolean m_catalogJanitorEnabled__IsNotDefault;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    // 29, 1<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    public void setAssignmentManager(AssignmentManager assignmentManager)<a name="line.180"></a>
+<span class="sourceLineNo">178</span>    private boolean m_deadServers__IsNotDefault;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    // 21, 1<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    public void setFrags(Map&lt;String,Integer&gt; frags)<a name="line.180"></a>
 <span class="sourceLineNo">181</span>    {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      // 29, 1<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      m_assignmentManager = assignmentManager;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      m_assignmentManager__IsNotDefault = true;<a name="line.184"></a>
+<span class="sourceLineNo">182</span>      // 21, 1<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      m_frags = frags;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      m_frags__IsNotDefault = true;<a name="line.184"></a>
 <span class="sourceLineNo">185</span>    }<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    public AssignmentManager getAssignmentManager()<a name="line.186"></a>
+<span class="sourceLineNo">186</span>    public Map&lt;String,Integer&gt; getFrags()<a name="line.186"></a>
 <span class="sourceLineNo">187</span>    {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      return m_assignmentManager;<a name="line.188"></a>
+<span class="sourceLineNo">188</span>      return m_frags;<a name="line.188"></a>
 <span class="sourceLineNo">189</span>    }<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    private AssignmentManager m_assignmentManager;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    public boolean getAssignmentManager__IsNotDefault()<a name="line.191"></a>
+<span class="sourceLineNo">190</span>    private Map&lt;String,Integer&gt; m_frags;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    public boolean getFrags__IsNotDefault()<a name="line.191"></a>
 <span class="sourceLineNo">192</span>    {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      return m_assignmentManager__IsNotDefault;<a name="line.193"></a>
+<span class="sourceLineNo">193</span>      return m_frags__IsNotDefault;<a name="line.193"></a>
 <span class="sourceLineNo">194</span>    }<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    private boolean m_assignmentManager__IsNotDefault;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    // 26, 1<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    public void setFilter(String filter)<a name="line.197"></a>
+<span class="sourceLineNo">195</span>    private boolean m_frags__IsNotDefault;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    // 28, 1<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    public void setServerManager(ServerManager serverManager)<a name="line.197"></a>
 <span class="sourceLineNo">198</span>    {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      // 26, 1<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      m_filter = filter;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      m_filter__IsNotDefault = true;<a name="line.201"></a>
+<span class="sourceLineNo">199</span>      // 28, 1<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      m_serverManager = serverManager;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      m_serverManager__IsNotDefault = true;<a name="line.201"></a>
 <span class="sourceLineNo">202</span>    }<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    public String getFilter()<a name="line.203"></a>
+<span class="sourceLineNo">203</span>    public ServerManager getServerManager()<a name="line.203"></a>
 <span class="sourceLineNo">204</span>    {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      return m_filter;<a name="line.205"></a>
+<span class="sourceLineNo">205</span>      return m_serverManager;<a name="line.205"></a>
 <span class="sourceLineNo">206</span>    }<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    private String m_filter;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    public boolean getFilter__IsNotDefault()<a name="line.208"></a>
+<span class="sourceLineNo">207</span>    private ServerManager m_serverManager;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    public boolean getServerManager__IsNotDefault()<a name="line.208"></a>
 <span class="sourceLineNo">209</span>    {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      return m_filter__IsNotDefault;<a name="line.210"></a>
+<span class="sourceLineNo">210</span>      return m_serverManager__IsNotDefault;<a name="line.210"></a>
 <span class="sourceLineNo">211</span>    }<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    private boolean m_filter__IsNotDefault;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    // 28, 1<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    public void setServerManager(ServerManager serverManager)<a name="line.214"></a>
+<span class="sourceLineNo">212</span>    private boolean m_serverManager__IsNotDefault;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    // 25, 1<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    public void setCatalogJanitorEnabled(boolean catalogJanitorEnabled)<a name="line.214"></a>
 <span class="sourceLineNo">215</span>    {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      // 28, 1<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      m_serverManager = serverManager;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      m_serverManager__IsNotDefault = true;<a name="line.218"></a>
+<span class="sourceLineNo">216</span>      // 25, 1<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      m_catalogJanitorEnabled = catalogJanitorEnabled;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      m_catalogJanitorEnabled__IsNotDefault = true;<a name="line.218"></a>
 <span class="sourceLineNo">219</span>    }<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    public ServerManager getServerManager()<a name="line.220"></a>
+<span class="sourceLineNo">220</span>    public boolean getCatalogJanitorEnabled()<a name="line.220"></a>
 <span class="sourceLineNo">221</span>    {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      return m_serverManager;<a name="line.222"></a>
+<span class="sourceLineNo">222</span>      return m_catalogJanitorEnabled;<a name="line.222"></a>
 <span class="sourceLineNo">223</span>    }<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    private ServerManager m_serverManager;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    public boolean getServerManager__IsNotDefault()<a name="line.225"></a>
+<span class="sourceLineNo">224</span>    private boolean m_catalogJanitorEnabled;<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    public boolean getCatalogJanitorEnabled__IsNotDefault()<a name="line.225"></a>
 <span class="sourceLineNo">226</span>    {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      return m_serverManager__IsNotDefault;<a name="line.227"></a>
+<span class="sourceLineNo">227</span>      return m_catalogJanitorEnabled__IsNotDefault;<a name="line.227"></a>
 <span class="sourceLineNo">228</span>    }<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    private boolean m_serverManager__IsNotDefault;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    // 24, 1<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    public void setDeadServers(Set&lt;ServerName&gt; deadServers)<a name="line.231"></a>
+<span class="sourceLineNo">229</span>    private boolean m_catalogJanitorEnabled__IsNotDefault;<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    // 22, 1<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    public void setMetaLocation(ServerName metaLocation)<a name="line.231"></a>
 <span class="sourceLineNo">232</span>    {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      // 24, 1<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      m_deadServers = deadServers;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      m_deadServers__IsNotDefault = true;<a name="line.235"></a>
+<span class="sourceLineNo">233</span>      // 22, 1<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      m_metaLocation = metaLocation;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      m_metaLocation__IsNotDefault = true;<a name="line.235"></a>
 <span class="sourceLineNo">236</span>    }<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    public Set&lt;ServerName&gt; getDeadServers()<a name="line.237"></a>
+<span class="sourceLineNo">237</span>    public ServerName getMetaLocation()<a name="line.237"></a>
 <span class="sourceLineNo">238</span>    {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      return m_deadServers;<a name="line.239"></a>
+<span class="sourceLineNo">239</span>      return m_metaLocation;<a name="line.239"></a>
 <span class="sourceLineNo">240</span>    }<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    private Set&lt;ServerName&gt; m_deadServers;<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    public boolean getDeadServers__IsNotDefault()<a name="line.242"></a>
+<span class="sourceLineNo">241</span>    private ServerName m_metaLocation;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    public boolean getMetaLocation__IsNotDefault()<a name="line.242"></a>
 <span class="sourceLineNo">243</span>    {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      return m_deadServers__IsNotDefault;<a name="line.244"></a>
+<span class="sourceLineNo">244</span>      return m_metaLocation__IsNotDefault;<a name="line.244"></a>
 <span class="sourceLineNo">245</span>    }<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    private boolean m_deadServers__IsNotDefault;<a name="line.246"></a>
+<span class="sourceLineNo">246</span>    private boolean m_metaLocation__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>
@@ -280,10 +280,10 @@
 <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 ServerName metaLocation;<a name="line.275"></a>
-<span class="sourceLineNo">276</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setMetaLocation(ServerName p_metaLocation)<a name="line.276"></a>
+<span class="sourceLineNo">275</span>  protected AssignmentManager assignmentManager;<a name="line.275"></a>
+<span class="sourceLineNo">276</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setAssignmentManager(AssignmentManager p_assignmentManager)<a name="line.276"></a>
 <span class="sourceLineNo">277</span>  {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    (getImplData()).setMetaLocation(p_metaLocation);<a name="line.278"></a>
+<span class="sourceLineNo">278</span>    (getImplData()).setAssignmentManager(p_assignmentManager);<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>
@@ -294,45 +294,45 @@
 <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 Map&lt;String,Integer&gt; frags;<a name="line.289"></a>
-<span class="sourceLineNo">290</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFrags(Map&lt;String,Integer&gt; p_frags)<a name="line.290"></a>
+<span class="sourceLineNo">289</span>  protected String filter;<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFilter(String p_filter)<a name="line.290"></a>
 <span class="sourceLineNo">291</span>  {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    (getImplData()).setFrags(p_frags);<a name="line.292"></a>
+<span class="sourceLineNo">292</span>    (getImplData()).setFilter(p_filter);<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 boolean catalogJanitorEnabled;<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setCatalogJanitorEnabled(boolean p_catalogJanitorEnabled)<a name="line.297"></a>
+<span class="sourceLineNo">296</span>  protected Set&lt;ServerName&gt; deadServers;<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setDeadServers(Set&lt;ServerName&gt; p_deadServers)<a name="line.297"></a>
 <span class="sourceLineNo">298</span>  {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    (getImplData()).setCatalogJanitorEnabled(p_catalogJanitorEnabled);<a name="line.299"></a>
+<span class="sourceLineNo">299</span>    (getImplData()).setDeadServers(p_deadServers);<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 AssignmentManager assignmentManager;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setAssignmentManager(AssignmentManager p_assignmentManager)<a name="line.304"></a>
+<span class="sourceLineNo">303</span>  protected Map&lt;String,Integer&gt; frags;<a name="line.303"></a>
+<span class="sourceLineNo">304</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFrags(Map&lt;String,Integer&gt; p_frags)<a name="line.304"></a>
 <span class="sourceLineNo">305</span>  {<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    (getImplData()).setAssignmentManager(p_assignmentManager);<a name="line.306"></a>
+<span class="sourceLineNo">306</span>    (getImplData()).setFrags(p_frags);<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 filter;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFilter(String p_filter)<a name="line.311"></a>
+<span class="sourceLineNo">310</span>  protected ServerManager serverManager;<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServerManager(ServerManager p_serverManager)<a name="line.311"></a>
 <span class="sourceLineNo">312</span>  {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    (getImplData()).setFilter(p_filter);<a name="line.313"></a>
+<span class="sourceLineNo">313</span>    (getImplData()).setServerManager(p_serverManager);<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 ServerManager serverManager;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServerManager(ServerManager p_serverManager)<a name="line.318"></a>
+<span class="sourceLineNo">317</span>  protected boolean catalogJanitorEnabled;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setCatalogJanitorEnabled(boolean p_catalogJanitorEnabled)<a name="line.318"></a>
 <span class="sourceLineNo">319</span>  {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    (getImplData()).setServerManager(p_serverManager);<a name="line.320"></a>
+<span class="sourceLineNo">320</span>    (getImplData()).setCatalogJanitorEnabled(p_catalogJanitorEnabled);<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 Set&lt;ServerName&gt; deadServers;<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setDeadServers(Set&lt;ServerName&gt; p_deadServers)<a name="line.325"></a>
+<span class="sourceLineNo">324</span>  protected ServerName metaLocation;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setMetaLocation(ServerName p_metaLocation)<a name="line.325"></a>
 <span class="sourceLineNo">326</span>  {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    (getImplData()).setDeadServers(p_deadServers);<a name="line.327"></a>
+<span class="sourceLineNo">327</span>    (getImplData()).setMetaLocation(p_metaLocation);<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>

http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/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 5d6ae0a..7aac442 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,14 +67,14 @@
 <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 = "metaLocation", type = "ServerName"),<a name="line.62"></a>
+<span class="sourceLineNo">062</span>    @org.jamon.annotations.Argument(name = "assignmentManager", type = "AssignmentManager"),<a name="line.62"></a>
 <span class="sourceLineNo">063</span>    @org.jamon.annotations.Argument(name = "servers", type = "List&lt;ServerName&gt;"),<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    @org.jamon.annotations.Argument(name = "frags", type = "Map&lt;String,Integer&gt;"),<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    @org.jamon.annotations.Argument(name = "catalogJanitorEnabled", type = "boolean"),<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    @org.jamon.annotations.Argument(name = "assignmentManager", type = "AssignmentManager"),<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    @org.jamon.annotations.Argument(name = "serverManager", type = "ServerManager"),<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    @org.jamon.annotations.Argument(name = "deadServers", type = "Set&lt;ServerName&gt;"),<a name="line.69"></a>
+<span class="sourceLineNo">064</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    @org.jamon.annotations.Argument(name = "deadServers", type = "Set&lt;ServerName&gt;"),<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    @org.jamon.annotations.Argument(name = "frags", type = "Map&lt;String,Integer&gt;"),<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    @org.jamon.annotations.Argument(name = "serverManager", type = "ServerManager"),<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    @org.jamon.annotations.Argument(name = "catalogJanitorEnabled", type = "boolean"),<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    @org.jamon.annotations.Argument(name = "metaLocation", type = "ServerName"),<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>
@@ -116,23 +116,23 @@
 <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>    // 22, 1<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    public void setMetaLocation(ServerName metaLocation)<a name="line.112"></a>
+<span class="sourceLineNo">111</span>    // 29, 1<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    public void setAssignmentManager(AssignmentManager assignmentManager)<a name="line.112"></a>
 <span class="sourceLineNo">113</span>    {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      // 22, 1<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      m_metaLocation = metaLocation;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      m_metaLocation__IsNotDefault = true;<a name="line.116"></a>
+<span class="sourceLineNo">114</span>      // 29, 1<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      m_assignmentManager = assignmentManager;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      m_assignmentManager__IsNotDefault = true;<a name="line.116"></a>
 <span class="sourceLineNo">117</span>    }<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    public ServerName getMetaLocation()<a name="line.118"></a>
+<span class="sourceLineNo">118</span>    public AssignmentManager getAssignmentManager()<a name="line.118"></a>
 <span class="sourceLineNo">119</span>    {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      return m_metaLocation;<a name="line.120"></a>
+<span class="sourceLineNo">120</span>      return m_assignmentManager;<a name="line.120"></a>
 <span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    private ServerName m_metaLocation;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    public boolean getMetaLocation__IsNotDefault()<a name="line.123"></a>
+<span class="sourceLineNo">122</span>    private AssignmentManager m_assignmentManager;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    public boolean getAssignmentManager__IsNotDefault()<a name="line.123"></a>
 <span class="sourceLineNo">124</span>    {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      return m_metaLocation__IsNotDefault;<a name="line.125"></a>
+<span class="sourceLineNo">125</span>      return m_assignmentManager__IsNotDefault;<a name="line.125"></a>
 <span class="sourceLineNo">126</span>    }<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    private boolean m_metaLocation__IsNotDefault;<a name="line.127"></a>
+<span class="sourceLineNo">127</span>    private boolean m_assignmentManager__IsNotDefault;<a name="line.127"></a>
 <span class="sourceLineNo">128</span>    // 23, 1<a name="line.128"></a>
 <span class="sourceLineNo">129</span>    public void setServers(List&lt;ServerName&gt; servers)<a name="line.129"></a>
 <span class="sourceLineNo">130</span>    {<a name="line.130"></a>
@@ -150,108 +150,108 @@
 <span class="sourceLineNo">142</span>      return m_servers__IsNotDefault;<a name="line.142"></a>
 <span class="sourceLineNo">143</span>    }<a name="line.143"></a>
 <span class="sourceLineNo">144</span>    private boolean m_servers__IsNotDefault;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    // 21, 1<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    public void setFrags(Map&lt;String,Integer&gt; frags)<a name="line.146"></a>
+<span class="sourceLineNo">145</span>    // 26, 1<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    public void setFilter(String filter)<a name="line.146"></a>
 <span class="sourceLineNo">147</span>    {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      // 21, 1<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      m_frags = frags;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      m_frags__IsNotDefault = true;<a name="line.150"></a>
+<span class="sourceLineNo">148</span>      // 26, 1<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      m_filter = filter;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      m_filter__IsNotDefault = true;<a name="line.150"></a>
 <span class="sourceLineNo">151</span>    }<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    public Map&lt;String,Integer&gt; getFrags()<a name="line.152"></a>
+<span class="sourceLineNo">152</span>    public String getFilter()<a name="line.152"></a>
 <span class="sourceLineNo">153</span>    {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      return m_frags;<a name="line.154"></a>
+<span class="sourceLineNo">154</span>      return m_filter;<a name="line.154"></a>
 <span class="sourceLineNo">155</span>    }<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    private Map&lt;String,Integer&gt; m_frags;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    public boolean getFrags__IsNotDefault()<a name="line.157"></a>
+<span class="sourceLineNo">156</span>    private String m_filter;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    public boolean getFilter__IsNotDefault()<a name="line.157"></a>
 <span class="sourceLineNo">158</span>    {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      return m_frags__IsNotDefault;<a name="line.159"></a>
+<span class="sourceLineNo">159</span>      return m_filter__IsNotDefault;<a name="line.159"></a>
 <span class="sourceLineNo">160</span>    }<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    private boolean m_frags__IsNotDefault;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    // 25, 1<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    public void setCatalogJanitorEnabled(boolean catalogJanitorEnabled)<a name="line.163"></a>
+<span class="sourceLineNo">161</span>    private boolean m_filter__IsNotDefault;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    // 24, 1<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    public void setDeadServers(Set&lt;ServerName&gt; deadServers)<a name="line.163"></a>
 <span class="sourceLineNo">164</span>    {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      // 25, 1<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      m_catalogJanitorEnabled = catalogJanitorEnabled;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      m_catalogJanitorEnabled__IsNotDefault = true;<a name="line.167"></a>
+<span class="sourceLineNo">165</span>      // 24, 1<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      m_deadServers = deadServers;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      m_deadServers__IsNotDefault = true;<a name="line.167"></a>
 <span class="sourceLineNo">168</span>    }<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    public boolean getCatalogJanitorEnabled()<a name="line.169"></a>
+<span class="sourceLineNo">169</span>    public Set&lt;ServerName&gt; getDeadServers()<a name="line.169"></a>
 <span class="sourceLineNo">170</span>    {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      return m_catalogJanitorEnabled;<a name="line.171"></a>
+<span class="sourceLineNo">171</span>      return m_deadServers;<a name="line.171"></a>
 <span class="sourceLineNo">172</span>    }<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    private boolean m_catalogJanitorEnabled;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    public boolean getCatalogJanitorEnabled__IsNotDefault()<a name="line.174"></a>
+<span class="sourceLineNo">173</span>    private Set&lt;ServerName&gt; m_deadServers;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    public boolean getDeadServers__IsNotDefault()<a name="line.174"></a>
 <span class="sourceLineNo">175</span>    {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      return m_catalogJanitorEnabled__IsNotDefault;<a name="line.176"></a>
+<span class="sourceLineNo">176</span>      return m_deadServers__IsNotDefault;<a name="line.176"></a>
 <span class="sourceLineNo">177</span>    }<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    private boolean m_catalogJanitorEnabled__IsNotDefault;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    // 29, 1<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    public void setAssignmentManager(AssignmentManager assignmentManager)<a name="line.180"></a>
+<span class="sourceLineNo">178</span>    private boolean m_deadServers__IsNotDefault;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    // 21, 1<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    public void setFrags(Map&lt;String,Integer&gt; frags)<a name="line.180"></a>
 <span class="sourceLineNo">181</span>    {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      // 29, 1<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      m_assignmentManager = assignmentManager;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      m_assignmentManager__IsNotDefault = true;<a name="line.184"></a>
+<span class="sourceLineNo">182</span>      // 21, 1<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      m_frags = frags;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      m_frags__IsNotDefault = true;<a name="line.184"></a>
 <span class="sourceLineNo">185</span>    }<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    public AssignmentManager getAssignmentManager()<a name="line.186"></a>
+<span class="sourceLineNo">186</span>    public Map&lt;String,Integer&gt; getFrags()<a name="line.186"></a>
 <span class="sourceLineNo">187</span>    {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      return m_assignmentManager;<a name="line.188"></a>
+<span class="sourceLineNo">188</span>      return m_frags;<a name="line.188"></a>
 <span class="sourceLineNo">189</span>    }<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    private AssignmentManager m_assignmentManager;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    public boolean getAssignmentManager__IsNotDefault()<a name="line.191"></a>
+<span class="sourceLineNo">190</span>    private Map&lt;String,Integer&gt; m_frags;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    public boolean getFrags__IsNotDefault()<a name="line.191"></a>
 <span class="sourceLineNo">192</span>    {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      return m_assignmentManager__IsNotDefault;<a name="line.193"></a>
+<span class="sourceLineNo">193</span>      return m_frags__IsNotDefault;<a name="line.193"></a>
 <span class="sourceLineNo">194</span>    }<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    private boolean m_assignmentManager__IsNotDefault;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    // 26, 1<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    public void setFilter(String filter)<a name="line.197"></a>
+<span class="sourceLineNo">195</span>    private boolean m_frags__IsNotDefault;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    // 28, 1<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    public void setServerManager(ServerManager serverManager)<a name="line.197"></a>
 <span class="sourceLineNo">198</span>    {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      // 26, 1<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      m_filter = filter;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      m_filter__IsNotDefault = true;<a name="line.201"></a>
+<span class="sourceLineNo">199</span>      // 28, 1<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      m_serverManager = serverManager;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      m_serverManager__IsNotDefault = true;<a name="line.201"></a>
 <span class="sourceLineNo">202</span>    }<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    public String getFilter()<a name="line.203"></a>
+<span class="sourceLineNo">203</span>    public ServerManager getServerManager()<a name="line.203"></a>
 <span class="sourceLineNo">204</span>    {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      return m_filter;<a name="line.205"></a>
+<span class="sourceLineNo">205</span>      return m_serverManager;<a name="line.205"></a>
 <span class="sourceLineNo">206</span>    }<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    private String m_filter;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    public boolean getFilter__IsNotDefault()<a name="line.208"></a>
+<span class="sourceLineNo">207</span>    private ServerManager m_serverManager;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    public boolean getServerManager__IsNotDefault()<a name="line.208"></a>
 <span class="sourceLineNo">209</span>    {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      return m_filter__IsNotDefault;<a name="line.210"></a>
+<span class="sourceLineNo">210</span>      return m_serverManager__IsNotDefault;<a name="line.210"></a>
 <span class="sourceLineNo">211</span>    }<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    private boolean m_filter__IsNotDefault;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    // 28, 1<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    public void setServerManager(ServerManager serverManager)<a name="line.214"></a>
+<span class="sourceLineNo">212</span>    private boolean m_serverManager__IsNotDefault;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    // 25, 1<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    public void setCatalogJanitorEnabled(boolean catalogJanitorEnabled)<a name="line.214"></a>
 <span class="sourceLineNo">215</span>    {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      // 28, 1<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      m_serverManager = serverManager;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      m_serverManager__IsNotDefault = true;<a name="line.218"></a>
+<span class="sourceLineNo">216</span>      // 25, 1<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      m_catalogJanitorEnabled = catalogJanitorEnabled;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      m_catalogJanitorEnabled__IsNotDefault = true;<a name="line.218"></a>
 <span class="sourceLineNo">219</span>    }<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    public ServerManager getServerManager()<a name="line.220"></a>
+<span class="sourceLineNo">220</span>    public boolean getCatalogJanitorEnabled()<a name="line.220"></a>
 <span class="sourceLineNo">221</span>    {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      return m_serverManager;<a name="line.222"></a>
+<span class="sourceLineNo">222</span>      return m_catalogJanitorEnabled;<a name="line.222"></a>
 <span class="sourceLineNo">223</span>    }<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    private ServerManager m_serverManager;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    public boolean getServerManager__IsNotDefault()<a name="line.225"></a>
+<span class="sourceLineNo">224</span>    private boolean m_catalogJanitorEnabled;<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    public boolean getCatalogJanitorEnabled__IsNotDefault()<a name="line.225"></a>
 <span class="sourceLineNo">226</span>    {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      return m_serverManager__IsNotDefault;<a name="line.227"></a>
+<span class="sourceLineNo">227</span>      return m_catalogJanitorEnabled__IsNotDefault;<a name="line.227"></a>
 <span class="sourceLineNo">228</span>    }<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    private boolean m_serverManager__IsNotDefault;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    // 24, 1<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    public void setDeadServers(Set&lt;ServerName&gt; deadServers)<a name="line.231"></a>
+<span class="sourceLineNo">229</span>    private boolean m_catalogJanitorEnabled__IsNotDefault;<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    // 22, 1<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    public void setMetaLocation(ServerName metaLocation)<a name="line.231"></a>
 <span class="sourceLineNo">232</span>    {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      // 24, 1<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      m_deadServers = deadServers;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      m_deadServers__IsNotDefault = true;<a name="line.235"></a>
+<span class="sourceLineNo">233</span>      // 22, 1<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      m_metaLocation = metaLocation;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      m_metaLocation__IsNotDefault = true;<a name="line.235"></a>
 <span class="sourceLineNo">236</span>    }<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    public Set&lt;ServerName&gt; getDeadServers()<a name="line.237"></a>
+<span class="sourceLineNo">237</span>    public ServerName getMetaLocation()<a name="line.237"></a>
 <span class="sourceLineNo">238</span>    {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      return m_deadServers;<a name="line.239"></a>
+<span class="sourceLineNo">239</span>      return m_metaLocation;<a name="line.239"></a>
 <span class="sourceLineNo">240</span>    }<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    private Set&lt;ServerName&gt; m_deadServers;<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    public boolean getDeadServers__IsNotDefault()<a name="line.242"></a>
+<span class="sourceLineNo">241</span>    private ServerName m_metaLocation;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    public boolean getMetaLocation__IsNotDefault()<a name="line.242"></a>
 <span class="sourceLineNo">243</span>    {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      return m_deadServers__IsNotDefault;<a name="line.244"></a>
+<span class="sourceLineNo">244</span>      return m_metaLocation__IsNotDefault;<a name="line.244"></a>
 <span class="sourceLineNo">245</span>    }<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    private boolean m_deadServers__IsNotDefault;<a name="line.246"></a>
+<span class="sourceLineNo">246</span>    private boolean m_metaLocation__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>
@@ -280,10 +280,10 @@
 <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 ServerName metaLocation;<a name="line.275"></a>
-<span class="sourceLineNo">276</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setMetaLocation(ServerName p_metaLocation)<a name="line.276"></a>
+<span class="sourceLineNo">275</span>  protected AssignmentManager assignmentManager;<a name="line.275"></a>
+<span class="sourceLineNo">276</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setAssignmentManager(AssignmentManager p_assignmentManager)<a name="line.276"></a>
 <span class="sourceLineNo">277</span>  {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    (getImplData()).setMetaLocation(p_metaLocation);<a name="line.278"></a>
+<span class="sourceLineNo">278</span>    (getImplData()).setAssignmentManager(p_assignmentManager);<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>
@@ -294,45 +294,45 @@
 <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 Map&lt;String,Integer&gt; frags;<a name="line.289"></a>
-<span class="sourceLineNo">290</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFrags(Map&lt;String,Integer&gt; p_frags)<a name="line.290"></a>
+<span class="sourceLineNo">289</span>  protected String filter;<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFilter(String p_filter)<a name="line.290"></a>
 <span class="sourceLineNo">291</span>  {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    (getImplData()).setFrags(p_frags);<a name="line.292"></a>
+<span class="sourceLineNo">292</span>    (getImplData()).setFilter(p_filter);<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 boolean catalogJanitorEnabled;<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setCatalogJanitorEnabled(boolean p_catalogJanitorEnabled)<a name="line.297"></a>
+<span class="sourceLineNo">296</span>  protected Set&lt;ServerName&gt; deadServers;<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setDeadServers(Set&lt;ServerName&gt; p_deadServers)<a name="line.297"></a>
 <span class="sourceLineNo">298</span>  {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    (getImplData()).setCatalogJanitorEnabled(p_catalogJanitorEnabled);<a name="line.299"></a>
+<span class="sourceLineNo">299</span>    (getImplData()).setDeadServers(p_deadServers);<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 AssignmentManager assignmentManager;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setAssignmentManager(AssignmentManager p_assignmentManager)<a name="line.304"></a>
+<span class="sourceLineNo">303</span>  protected Map&lt;String,Integer&gt; frags;<a name="line.303"></a>
+<span class="sourceLineNo">304</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFrags(Map&lt;String,Integer&gt; p_frags)<a name="line.304"></a>
 <span class="sourceLineNo">305</span>  {<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    (getImplData()).setAssignmentManager(p_assignmentManager);<a name="line.306"></a>
+<span class="sourceLineNo">306</span>    (getImplData()).setFrags(p_frags);<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 filter;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFilter(String p_filter)<a name="line.311"></a>
+<span class="sourceLineNo">310</span>  protected ServerManager serverManager;<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServerManager(ServerManager p_serverManager)<a name="line.311"></a>
 <span class="sourceLineNo">312</span>  {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    (getImplData()).setFilter(p_filter);<a name="line.313"></a>
+<span class="sourceLineNo">313</span>    (getImplData()).setServerManager(p_serverManager);<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 ServerManager serverManager;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServerManager(ServerManager p_serverManager)<a name="line.318"></a>
+<span class="sourceLineNo">317</span>  protected boolean catalogJanitorEnabled;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setCatalogJanitorEnabled(boolean p_catalogJanitorEnabled)<a name="line.318"></a>
 <span class="sourceLineNo">319</span>  {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    (getImplData()).setServerManager(p_serverManager);<a name="line.320"></a>
+<span class="sourceLineNo">320</span>    (getImplData()).setCatalogJanitorEnabled(p_catalogJanitorEnabled);<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 Set&lt;ServerName&gt; deadServers;<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setDeadServers(Set&lt;ServerName&gt; p_deadServers)<a name="line.325"></a>
+<span class="sourceLineNo">324</span>  protected ServerName metaLocation;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setMetaLocation(ServerName p_metaLocation)<a name="line.325"></a>
 <span class="sourceLineNo">326</span>  {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    (getImplData()).setDeadServers(p_deadServers);<a name="line.327"></a>
+<span class="sourceLineNo">327</span>    (getImplData()).setMetaLocation(p_metaLocation);<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>


[20/24] hbase git commit: Published site at 0d72849581c1e5a50a2aa7757b909e5531b8d12c.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/devapidocs/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html
index 0229ebf..bc7565a 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html
@@ -115,7 +115,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/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.65">HBaseInterClusterReplicationEndpoint</a>
+public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.68">HBaseInterClusterReplicationEndpoint</a>
 extends <a href="../../../../../../org/apache/hadoop/hbase/replication/HBaseReplicationEndpoint.html" title="class in org.apache.hadoop.hbase.replication">HBaseReplicationEndpoint</a></pre>
 <div class="block">A <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationEndpoint.html" title="interface in org.apache.hadoop.hbase.replication"><code>ReplicationEndpoint</code></a> 
  implementation for replicating to another HBase cluster.
@@ -367,7 +367,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/replication/HBaseRepl
 <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/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.67">LOG</a></pre>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.70">LOG</a></pre>
 </li>
 </ul>
 <a name="conn">
@@ -376,7 +376,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/replication/HBaseRepl
 <ul class="blockList">
 <li class="blockList">
 <h4>conn</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/HConnection.html" title="interface in org.apache.hadoop.hbase.client">HConnection</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.68">conn</a></pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/HConnection.html" title="interface in org.apache.hadoop.hbase.client">HConnection</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.71">conn</a></pre>
 </li>
 </ul>
 <a name="conf">
@@ -385,7 +385,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/replication/HBaseRepl
 <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/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.70">conf</a></pre>
+<pre>private&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.73">conf</a></pre>
 </li>
 </ul>
 <a name="sleepForRetries">
@@ -394,7 +394,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/replication/HBaseRepl
 <ul class="blockList">
 <li class="blockList">
 <h4>sleepForRetries</h4>
-<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.73">sleepForRetries</a></pre>
+<pre>private&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.76">sleepForRetries</a></pre>
 </li>
 </ul>
 <a name="maxRetriesMultiplier">
@@ -403,7 +403,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/replication/HBaseRepl
 <ul class="blockList">
 <li class="blockList">
 <h4>maxRetriesMultiplier</h4>
-<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.76">maxRetriesMultiplier</a></pre>
+<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.79">maxRetriesMultiplier</a></pre>
 </li>
 </ul>
 <a name="socketTimeoutMultiplier">
@@ -412,7 +412,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/replication/HBaseRepl
 <ul class="blockList">
 <li class="blockList">
 <h4>socketTimeoutMultiplier</h4>
-<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.78">socketTimeoutMultiplier</a></pre>
+<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.81">socketTimeoutMultiplier</a></pre>
 </li>
 </ul>
 <a name="metrics">
@@ -421,7 +421,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/replication/HBaseRepl
 <ul class="blockList">
 <li class="blockList">
 <h4>metrics</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html" title="class in org.apache.hadoop.hbase.replication.regionserver">MetricsSource</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.80">metrics</a></pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSource.html" title="class in org.apache.hadoop.hbase.replication.regionserver">MetricsSource</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.83">metrics</a></pre>
 </li>
 </ul>
 <a name="replicationSinkMgr">
@@ -430,7 +430,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/replication/HBaseRepl
 <ul class="blockList">
 <li class="blockList">
 <h4>replicationSinkMgr</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSinkManager.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSinkManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.82">replicationSinkMgr</a></pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSinkManager.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSinkManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.85">replicationSinkMgr</a></pre>
 </li>
 </ul>
 <a name="peersSelected">
@@ -439,7 +439,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/replication/HBaseRepl
 <ul class="blockList">
 <li class="blockList">
 <h4>peersSelected</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.83">peersSelected</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.86">peersSelected</a></pre>
 </li>
 </ul>
 <a name="exec">
@@ -448,7 +448,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/replication/HBaseRepl
 <ul class="blockList">
 <li class="blockList">
 <h4>exec</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ThreadPoolExecutor.html?is-external=true" title="class or interface in java.util.concurrent">ThreadPoolExecutor</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.84">exec</a></pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ThreadPoolExecutor.html?is-external=true" title="class or interface in java.util.concurrent">ThreadPoolExecutor</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.87">exec</a></pre>
 </li>
 </ul>
 <a name="maxThreads">
@@ -457,7 +457,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/replication/HBaseRepl
 <ul class="blockListLast">
 <li class="blockList">
 <h4>maxThreads</h4>
-<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.85">maxThreads</a></pre>
+<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.88">maxThreads</a></pre>
 </li>
 </ul>
 </li>
@@ -474,7 +474,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/replication/HBaseRepl
 <ul class="blockListLast">
 <li class="blockList">
 <h4>HBaseInterClusterReplicationEndpoint</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.65">HBaseInterClusterReplicationEndpoint</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.68">HBaseInterClusterReplicationEndpoint</a>()</pre>
 </li>
 </ul>
 </li>
@@ -491,7 +491,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/replication/HBaseRepl
 <ul class="blockList">
 <li class="blockList">
 <h4>init</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.88">init</a>(<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationEndpoint.Context.html" title="class in org.apache.hadoop.hbase.replication">ReplicationEndpoint.Context</a>&nbsp;context)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.91">init</a>(<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationEndpoint.Context.html" title="class in org.apache.hadoop.hbase.replication">ReplicationEndpoint.Context</a>&nbsp;context)
           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/replication/ReplicationEndpoint.html#init(org.apache.hadoop.hbase.replication.ReplicationEndpoint.Context)">ReplicationEndpoint</a></code></strong></div>
 <div class="block">Initialize the replication endpoint with the given context.</div>
@@ -511,7 +511,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/replication/HBaseRepl
 <ul class="blockList">
 <li class="blockList">
 <h4>decorateConf</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.111">decorateConf</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.114">decorateConf</a>()</pre>
 </li>
 </ul>
 <a name="connectToPeers()">
@@ -520,7 +520,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/replication/HBaseRepl
 <ul class="blockList">
 <li class="blockList">
 <h4>connectToPeers</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.118">connectToPeers</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.121">connectToPeers</a>()</pre>
 </li>
 </ul>
 <a name="sleepForRetries(java.lang.String, int)">
@@ -529,7 +529,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/replication/HBaseRepl
 <ul class="blockList">
 <li class="blockList">
 <h4>sleepForRetries</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.140">sleepForRetries</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;msg,
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.143">sleepForRetries</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;msg,
                       int&nbsp;sleepMultiplier)</pre>
 <div class="block">Do the sleeping logic</div>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>msg</code> - Why we sleep</dd><dd><code>sleepMultiplier</code> - by how many times the default sleeping time is augmented</dd>
@@ -542,7 +542,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/replication/HBaseRepl
 <ul class="blockList">
 <li class="blockList">
 <h4>replicate</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.156">replicate</a>(<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationEndpoint.ReplicateContext.html" title="class in org.apache.hadoop.hbase.replication">ReplicationEndpoint.ReplicateContext</a>&nbsp;replicateContext)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.159">replicate</a>(<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationEndpoint.ReplicateContext.html" title="class in org.apache.hadoop.hbase.replication">ReplicationEndpoint.ReplicateContext</a>&nbsp;replicateContext)</pre>
 <div class="block">Do the shipping logic</div>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>replicateContext</code> - a context where WAL entries and other
  parameters can be obtained.</dd></dl>
@@ -554,7 +554,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/replication/HBaseRepl
 <ul class="blockList">
 <li class="blockList">
 <h4>isPeerEnabled</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.268">isPeerEnabled</a>()</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.274">isPeerEnabled</a>()</pre>
 </li>
 </ul>
 <a name="doStop()">
@@ -563,7 +563,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/replication/HBaseRepl
 <ul class="blockList">
 <li class="blockList">
 <h4>doStop</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.273">doStop</a>()</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.279">doStop</a>()</pre>
 <dl>
 <dt><strong>Overrides:</strong></dt>
 <dd><code><a href="../../../../../../org/apache/hadoop/hbase/replication/HBaseReplicationEndpoint.html#doStop()">doStop</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/replication/HBaseReplicationEndpoint.html" title="class in org.apache.hadoop.hbase.replication">HBaseReplicationEndpoint</a></code></dd>
@@ -576,7 +576,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/replication/HBaseRepl
 <ul class="blockList">
 <li class="blockList">
 <h4>stopAndWait</h4>
-<pre>public&nbsp;com.google.common.util.concurrent.Service.State&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.289">stopAndWait</a>()</pre>
+<pre>public&nbsp;com.google.common.util.concurrent.Service.State&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.295">stopAndWait</a>()</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code>stopAndWait</code>&nbsp;in interface&nbsp;<code>com.google.common.util.concurrent.Service</code></dd>
@@ -591,7 +591,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/replication/HBaseRepl
 <ul class="blockListLast">
 <li class="blockList">
 <h4>createReplicator</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.Replicator.html" title="class in org.apache.hadoop.hbase.replication.regionserver">HBaseInterClusterReplicationEndpoint.Replicator</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.295">createReplicator</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/wal/WAL.Entry.html" title="class in org.apache.hadoop.hbase.wal">WAL.Entry</a>&gt;&nbsp;entries,
+<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.Replicator.html" title="class in org.apache.hadoop.hbase.replication.regionserver">HBaseInterClusterReplicationEndpoint.Replicator</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#line.301">createReplicator</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/wal/WAL.Entry.html" title="class in org.apache.hadoop.hbase.wal">WAL.Entry</a>&gt;&nbsp;entries,
                                                                int&nbsp;ordinal)</pre>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/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..193dddb 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
@@ -141,8 +141,8 @@
 <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/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>
+<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>
 </ul>
 </li>
 </ul>

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

http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/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 49ad6d0..b293dd9 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html
@@ -379,22 +379,22 @@ 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_metaLocation">
+<a name="m_assignmentManager">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_metaLocation</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.122">m_metaLocation</a></pre>
+<h4>m_assignmentManager</h4>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master">AssignmentManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.122">m_assignmentManager</a></pre>
 </li>
 </ul>
-<a name="m_metaLocation__IsNotDefault">
+<a name="m_assignmentManager__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_metaLocation__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.127">m_metaLocation__IsNotDefault</a></pre>
+<h4>m_assignmentManager__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.127">m_assignmentManager__IsNotDefault</a></pre>
 </li>
 </ul>
 <a name="m_servers">
@@ -415,112 +415,112 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.144">m_servers__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_frags">
+<a name="m_filter">
 <!--   -->
 </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.156">m_frags</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.156">m_filter</a></pre>
 </li>
 </ul>
-<a name="m_frags__IsNotDefault">
+<a name="m_filter__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_frags__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.161">m_frags__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.161">m_filter__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_catalogJanitorEnabled">
+<a name="m_deadServers">
 <!--   -->
 </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.173">m_catalogJanitorEnabled</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.173">m_deadServers</a></pre>
 </li>
 </ul>
-<a name="m_catalogJanitorEnabled__IsNotDefault">
+<a name="m_deadServers__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.178">m_catalogJanitorEnabled__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.178">m_deadServers__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_assignmentManager">
+<a name="m_frags">
 <!--   -->
 </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.190">m_assignmentManager</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.190">m_frags</a></pre>
 </li>
 </ul>
-<a name="m_assignmentManager__IsNotDefault">
+<a name="m_frags__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.195">m_assignmentManager__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.195">m_frags__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_filter">
+<a name="m_serverManager">
 <!--   -->
 </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.207">m_filter</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.207">m_serverManager</a></pre>
 </li>
 </ul>
-<a name="m_filter__IsNotDefault">
+<a name="m_serverManager__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.212">m_filter__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.212">m_serverManager__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_serverManager">
+<a name="m_catalogJanitorEnabled">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_serverManager</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.224">m_serverManager</a></pre>
+<h4>m_catalogJanitorEnabled</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.224">m_catalogJanitorEnabled</a></pre>
 </li>
 </ul>
-<a name="m_serverManager__IsNotDefault">
+<a name="m_catalogJanitorEnabled__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.229">m_serverManager__IsNotDefault</a></pre>
+<h4>m_catalogJanitorEnabled__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.229">m_catalogJanitorEnabled__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_deadServers">
+<a name="m_metaLocation">
 <!--   -->
 </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.241">m_deadServers</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.241">m_metaLocation</a></pre>
 </li>
 </ul>
-<a name="m_deadServers__IsNotDefault">
+<a name="m_metaLocation__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.246">m_deadServers__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.246">m_metaLocation__IsNotDefault</a></pre>
 </li>
 </ul>
 <a name="m_format">
@@ -584,31 +584,31 @@ 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="setMetaLocation(org.apache.hadoop.hbase.ServerName)">
+<a name="setAssignmentManager(org.apache.hadoop.hbase.master.AssignmentManager)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setMetaLocation</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.112">setMetaLocation</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;metaLocation)</pre>
+<h4>setAssignmentManager</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.112">setAssignmentManager</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master">AssignmentManager</a>&nbsp;assignmentManager)</pre>
 </li>
 </ul>
-<a name="getMetaLocation()">
+<a name="getAssignmentManager()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getMetaLocation</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.118">getMetaLocation</a>()</pre>
+<h4>getAssignmentManager</h4>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master">AssignmentManager</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.118">getAssignmentManager</a>()</pre>
 </li>
 </ul>
-<a name="getMetaLocation__IsNotDefault()">
+<a name="getAssignmentManager__IsNotDefault()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getMetaLocation__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.123">getMetaLocation__IsNotDefault</a>()</pre>
+<h4>getAssignmentManager__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.123">getAssignmentManager__IsNotDefault</a>()</pre>
 </li>
 </ul>
 <a name="setServers(java.util.List)">
@@ -638,166 +638,166 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.140">getServers__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setFrags(java.util.Map)">
+<a name="setFilter(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.146">setFrags</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;frags)</pre>
+<h4>setFilter</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.146">setFilter</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;filter)</pre>
 </li>
 </ul>
-<a name="getFrags()">
+<a name="getFilter()">
 <!--   -->
 </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.152">getFrags</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.152">getFilter</a>()</pre>
 </li>
 </ul>
-<a name="getFrags__IsNotDefault()">
+<a name="getFilter__IsNotDefault()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getFrags__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.157">getFrags__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.157">getFilter__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setCatalogJanitorEnabled(boolean)">
+<a name="setDeadServers(java.util.Set)">
 <!--   -->
 </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.163">setCatalogJanitorEnabled</a>(boolean&nbsp;catalogJanitorEnabled)</pre>
+<h4>setDeadServers</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.163">setDeadServers</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;deadServers)</pre>
 </li>
 </ul>
-<a name="getCatalogJanitorEnabled()">
+<a name="getDeadServers()">
 <!--   -->
 </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.169">getCatalogJanitorEnabled</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.169">getDeadServers</a>()</pre>
 </li>
 </ul>
-<a name="getCatalogJanitorEnabled__IsNotDefault()">
+<a name="getDeadServers__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.174">getCatalogJanitorEnabled__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.174">getDeadServers__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setAssignmentManager(org.apache.hadoop.hbase.master.AssignmentManager)">
+<a name="setFrags(java.util.Map)">
 <!--   -->
 </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.180">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>setFrags</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.180">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="getAssignmentManager()">
+<a name="getFrags()">
 <!--   -->
 </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.186">getAssignmentManager</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.186">getFrags</a>()</pre>
 </li>
 </ul>
-<a name="getAssignmentManager__IsNotDefault()">
+<a name="getFrags__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.191">getAssignmentManager__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.191">getFrags__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setFilter(java.lang.String)">
+<a name="setServerManager(org.apache.hadoop.hbase.master.ServerManager)">
 <!--   -->
 </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.197">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>setServerManager</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.197">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="getFilter()">
+<a name="getServerManager()">
 <!--   -->
 </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.203">getFilter</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.203">getServerManager</a>()</pre>
 </li>
 </ul>
-<a name="getFilter__IsNotDefault()">
+<a name="getServerManager__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.208">getFilter__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.208">getServerManager__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setServerManager(org.apache.hadoop.hbase.master.ServerManager)">
+<a name="setCatalogJanitorEnabled(boolean)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setServerManager</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.214">setServerManager</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a>&nbsp;serverManager)</pre>
+<h4>setCatalogJanitorEnabled</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.214">setCatalogJanitorEnabled</a>(boolean&nbsp;catalogJanitorEnabled)</pre>
 </li>
 </ul>
-<a name="getServerManager()">
+<a name="getCatalogJanitorEnabled()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getServerManager</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.220">getServerManager</a>()</pre>
+<h4>getCatalogJanitorEnabled</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.220">getCatalogJanitorEnabled</a>()</pre>
 </li>
 </ul>
-<a name="getServerManager__IsNotDefault()">
+<a name="getCatalogJanitorEnabled__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.225">getServerManager__IsNotDefault</a>()</pre>
+<h4>getCatalogJanitorEnabled__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.225">getCatalogJanitorEnabled__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setDeadServers(java.util.Set)">
+<a name="setMetaLocation(org.apache.hadoop.hbase.ServerName)">
 <!--   -->
 </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.231">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>setMetaLocation</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.231">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="getDeadServers()">
+<a name="getMetaLocation()">
 <!--   -->
 </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.237">getDeadServers</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.237">getMetaLocation</a>()</pre>
 </li>
 </ul>
-<a name="getDeadServers__IsNotDefault()">
+<a name="getMetaLocation__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.242">getDeadServers__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.242">getMetaLocation__IsNotDefault</a>()</pre>
 </li>
 </ul>
 <a name="setFormat(java.lang.String)">

http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/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 aedd9ca..53184bc 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
@@ -323,13 +323,13 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <!--   -->
 </a>
 <h3>Field Detail</h3>
-<a name="metaLocation">
+<a name="assignmentManager">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>metaLocation</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.275">metaLocation</a></pre>
+<h4>assignmentManager</h4>
+<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master">AssignmentManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.275">assignmentManager</a></pre>
 </li>
 </ul>
 <a name="servers">
@@ -341,58 +341,58 @@ extends org.jamon.AbstractTemplateProxy</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/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.282">servers</a></pre>
 </li>
 </ul>
-<a name="frags">
+<a name="filter">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>frags</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.289">frags</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.289">filter</a></pre>
 </li>
 </ul>
-<a name="catalogJanitorEnabled">
+<a name="deadServers">
 <!--   -->
 </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.296">catalogJanitorEnabled</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.296">deadServers</a></pre>
 </li>
 </ul>
-<a name="assignmentManager">
+<a name="frags">
 <!--   -->
 </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.303">assignmentManager</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.303">frags</a></pre>
 </li>
 </ul>
-<a name="filter">
+<a name="serverManager">
 <!--   -->
 </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.310">filter</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.310">serverManager</a></pre>
 </li>
 </ul>
-<a name="serverManager">
+<a name="catalogJanitorEnabled">
 <!--   -->
 </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.317">serverManager</a></pre>
+<h4>catalogJanitorEnabled</h4>
+<pre>protected&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.317">catalogJanitorEnabled</a></pre>
 </li>
 </ul>
-<a name="deadServers">
+<a name="metaLocation">
 <!--   -->
 </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.324">deadServers</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.324">metaLocation</a></pre>
 </li>
 </ul>
 <a name="format">
@@ -473,13 +473,13 @@ extends org.jamon.AbstractTemplateProxy</pre>
 </dl>
 </li>
 </ul>
-<a name="setMetaLocation(org.apache.hadoop.hbase.ServerName)">
+<a name="setAssignmentManager(org.apache.hadoop.hbase.master.AssignmentManager)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setMetaLocation</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.276">setMetaLocation</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;p_metaLocation)</pre>
+<h4>setAssignmentManager</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.276">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="setServers(java.util.List)">
@@ -491,58 +491,58 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <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">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="setFilter(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.290">setFrags</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;p_frags)</pre>
+<h4>setFilter</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.290">setFilter</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_filter)</pre>
 </li>
 </ul>
-<a name="setCatalogJanitorEnabled(boolean)">
+<a name="setDeadServers(java.util.Set)">
 <!--   -->
 </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.297">setCatalogJanitorEnabled</a>(boolean&nbsp;p_catalogJanitorEnabled)</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.297">setDeadServers</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;p_deadServers)</pre>
 </li>
 </ul>
-<a name="setAssignmentManager(org.apache.hadoop.hbase.master.AssignmentManager)">
+<a name="setFrags(java.util.Map)">
 <!--   -->
 </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.304">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>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.304">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="setFilter(java.lang.String)">
+<a name="setServerManager(org.apache.hadoop.hbase.master.ServerManager)">
 <!--   -->
 </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.311">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>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.311">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="setCatalogJanitorEnabled(boolean)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setServerManager</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.318">setServerManager</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a>&nbsp;p_serverManager)</pre>
+<h4>setCatalogJanitorEnabled</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.318">setCatalogJanitorEnabled</a>(boolean&nbsp;p_catalogJanitorEnabled)</pre>
 </li>
 </ul>
-<a name="setDeadServers(java.util.Set)">
+<a name="setMetaLocation(org.apache.hadoop.hbase.ServerName)">
 <!--   -->
 </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.325">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>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.325">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="setFormat(java.lang.String)">

http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/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 a39d6fa..946f176 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
@@ -264,13 +264,13 @@ 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="metaLocation">
+<a name="assignmentManager">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>metaLocation</h4>
-<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.63">metaLocation</a></pre>
+<h4>assignmentManager</h4>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master">AssignmentManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.63">assignmentManager</a></pre>
 </li>
 </ul>
 <a name="servers">
@@ -282,58 +282,58 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/Master
 <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.64">servers</a></pre>
 </li>
 </ul>
-<a name="frags">
+<a name="filter">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>frags</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.65">frags</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.65">filter</a></pre>
 </li>
 </ul>
-<a name="catalogJanitorEnabled">
+<a name="deadServers">
 <!--   -->
 </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.66">catalogJanitorEnabled</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.66">deadServers</a></pre>
 </li>
 </ul>
-<a name="assignmentManager">
+<a name="frags">
 <!--   -->
 </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.67">assignmentManager</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.67">frags</a></pre>
 </li>
 </ul>
-<a name="filter">
+<a name="serverManager">
 <!--   -->
 </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.68">filter</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.68">serverManager</a></pre>
 </li>
 </ul>
-<a name="serverManager">
+<a name="catalogJanitorEnabled">
 <!--   -->
 </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.69">serverManager</a></pre>
+<h4>catalogJanitorEnabled</h4>
+<pre>private final&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.69">catalogJanitorEnabled</a></pre>
 </li>
 </ul>
-<a name="deadServers">
+<a name="metaLocation">
 <!--   -->
 </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.70">deadServers</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.70">metaLocation</a></pre>
 </li>
 </ul>
 <a name="format">

http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/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 aba0ffe..880b127 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html
@@ -279,58 +279,58 @@ 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_bcn">
+<a name="m_bcv">
 <!--   -->
 </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.83">m_bcn</a></pre>
+<h4>m_bcv</h4>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.83">m_bcv</a></pre>
 </li>
 </ul>
-<a name="m_bcn__IsNotDefault">
+<a name="m_bcv__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.88">m_bcn__IsNotDefault</a></pre>
+<h4>m_bcv__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.88">m_bcv__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_bcv">
+<a name="m_filter">
 <!--   -->
 </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.100">m_bcv</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.100">m_filter</a></pre>
 </li>
 </ul>
-<a name="m_bcv__IsNotDefault">
+<a name="m_filter__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_bcv__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.105">m_bcv__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.105">m_filter__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_filter">
+<a name="m_bcn">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_filter</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.117">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.117">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.122">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.122">m_bcn__IsNotDefault</a></pre>
 </li>
 </ul>
 <a name="m_format">
@@ -394,85 +394,85 @@ 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="setBcn(java.lang.String)">
+<a name="setBcv(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.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>
+<h4>setBcv</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.73">setBcv</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;bcv)</pre>
 </li>
 </ul>
-<a name="getBcn()">
+<a name="getBcv()">
 <!--   -->
 </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.79">getBcn</a>()</pre>
+<h4>getBcv</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.79">getBcv</a>()</pre>
 </li>
 </ul>
-<a name="getBcn__IsNotDefault()">
+<a name="getBcv__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.84">getBcn__IsNotDefault</a>()</pre>
+<h4>getBcv__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.84">getBcv__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setBcv(java.lang.String)">
+<a name="setFilter(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.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>
+<h4>setFilter</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.90">setFilter</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;filter)</pre>
 </li>
 </ul>
-<a name="getBcv()">
+<a name="getFilter()">
 <!--   -->
 </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.96">getBcv</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.96">getFilter</a>()</pre>
 </li>
 </ul>
-<a name="getBcv__IsNotDefault()">
+<a name="getFilter__IsNotDefault()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getBcv__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.101">getBcv__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.101">getFilter__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setFilter(java.lang.String)">
+<a name="setBcn(java.lang.String)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setFilter</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.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>
+<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>
 </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.113">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.113">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.118">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.118">getBcn__IsNotDefault</a>()</pre>
 </li>
 </ul>
 <a name="setFormat(java.lang.String)">


[24/24] hbase git commit: Published site at 0d72849581c1e5a50a2aa7757b909e5531b8d12c.

Posted by mi...@apache.org.
Published site at 0d72849581c1e5a50a2aa7757b909e5531b8d12c.


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

Branch: refs/heads/asf-site
Commit: 2fa570dde25f66079638d8af2ce7823d39a1ccaa
Parents: a986dfe
Author: jenkins <bu...@apache.org>
Authored: Thu Nov 26 15:16:05 2015 +0000
Committer: Misty Stanley-Jones <ms...@cloudera.com>
Committed: Fri Nov 27 07:52:14 2015 +1000

----------------------------------------------------------------------
 apache_hbase_reference_guide.pdf                |  Bin 14185289 -> 14185289 bytes
 apache_hbase_reference_guide.pdfmarks           |    4 +-
 book.html                                       |    2 +-
 checkstyle-aggregate.html                       | 9848 +++++++++---------
 devapidocs/index-all.html                       |    2 +-
 .../hbase/classification/package-tree.html      |    6 +-
 .../hadoop/hbase/client/class-use/Scan.html     |    3 +-
 .../hadoop/hbase/client/package-tree.html       |    2 +-
 .../hadoop/hbase/filter/package-tree.html       |    8 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |    8 +-
 .../hadoop/hbase/master/package-tree.html       |    4 +-
 .../org/apache/hadoop/hbase/package-tree.html   |   10 +-
 .../hadoop/hbase/quotas/package-tree.html       |    6 +-
 .../DefaultMemStore.MemStoreScanner.html        |   58 +-
 .../hbase/regionserver/DefaultMemStore.html     |  106 +-
 .../ScanQueryMatcher.MatchCode.html             |   22 +-
 .../hbase/regionserver/ScanQueryMatcher.html    |   34 +-
 .../hbase/regionserver/class-use/Store.html     |   14 +-
 .../hadoop/hbase/regionserver/package-tree.html |   24 +-
 ...erClusterReplicationEndpoint.Replicator.html |   10 +-
 .../HBaseInterClusterReplicationEndpoint.html   |   44 +-
 .../hbase/security/access/package-tree.html     |    2 +-
 .../hadoop/hbase/security/package-tree.html     |    4 +-
 .../tmpl/master/MasterStatusTmpl.ImplData.html  |  210 +-
 .../hbase/tmpl/master/MasterStatusTmpl.html     |   84 +-
 .../hbase/tmpl/master/MasterStatusTmplImpl.html |   42 +-
 .../regionserver/RSStatusTmpl.ImplData.html     |   90 +-
 .../hbase/tmpl/regionserver/RSStatusTmpl.html   |   36 +-
 .../tmpl/regionserver/RSStatusTmplImpl.html     |   18 +-
 .../apache/hadoop/hbase/util/package-tree.html  |    6 +-
 .../apache/hadoop/hbase/wal/package-tree.html   |    2 +-
 .../DefaultMemStore.MemStoreScanner.html        | 1882 ++--
 .../hbase/regionserver/DefaultMemStore.html     | 1882 ++--
 .../ScanQueryMatcher.MatchCode.html             |  975 +-
 .../hbase/regionserver/ScanQueryMatcher.html    |  975 +-
 ...erClusterReplicationEndpoint.Replicator.html |  604 +-
 .../HBaseInterClusterReplicationEndpoint.html   |  604 +-
 .../tmpl/master/MasterStatusTmpl.ImplData.html  |  210 +-
 .../tmpl/master/MasterStatusTmpl.Intf.html      |  210 +-
 .../hbase/tmpl/master/MasterStatusTmpl.html     |  210 +-
 .../hbase/tmpl/master/MasterStatusTmplImpl.html |   60 +-
 .../regionserver/RSStatusTmpl.ImplData.html     |   90 +-
 .../tmpl/regionserver/RSStatusTmpl.Intf.html    |   90 +-
 .../hbase/tmpl/regionserver/RSStatusTmpl.html   |   90 +-
 .../tmpl/regionserver/RSStatusTmplImpl.html     |   28 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |    2 +-
 .../org/apache/hadoop/hbase/package-tree.html   |    8 +-
 .../hadoop/hbase/procedure2/package-tree.html   |    2 +-
 ...MemStore.EnvironmentEdgeForMemstoreTest.html |   10 +-
 ...TestDefaultMemStore.ReadOwnWritesTester.html |   24 +-
 .../hbase/regionserver/TestDefaultMemStore.html |   94 +-
 .../hadoop/hbase/regionserver/package-tree.html |    2 +-
 .../apache/hadoop/hbase/wal/package-tree.html   |    2 +-
 ...MemStore.EnvironmentEdgeForMemstoreTest.html | 2014 ++--
 ...TestDefaultMemStore.ReadOwnWritesTester.html | 2014 ++--
 .../hbase/regionserver/TestDefaultMemStore.html | 2014 ++--
 .../hbase/regionserver/TestDefaultMemStore.html | 2014 ++--
 .../hbase/regionserver/DefaultMemStore.html     | 1882 ++--
 .../hbase/regionserver/ScanQueryMatcher.html    |  979 +-
 .../HBaseInterClusterReplicationEndpoint.html   |  604 +-
 .../hbase/tmpl/common/TaskMonitorTmpl.html      |   60 +-
 .../hbase/tmpl/common/TaskMonitorTmplImpl.html  |   16 +-
 .../hbase/tmpl/master/MasterStatusTmpl.html     |  210 +-
 .../hbase/tmpl/master/MasterStatusTmplImpl.html |   60 +-
 .../hbase/tmpl/regionserver/RSStatusTmpl.html   |   90 +-
 .../tmpl/regionserver/RSStatusTmplImpl.html     |   28 +-
 66 files changed, 15423 insertions(+), 15325 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/apache_hbase_reference_guide.pdf
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index fed907a..293e61c 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/blob/2fa570dd/apache_hbase_reference_guide.pdfmarks
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdfmarks b/apache_hbase_reference_guide.pdfmarks
index 4397422..6011090 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:20151126011713)
-  /CreationDate (D:20151126011713)
+  /ModDate (D:20151126151221)
+  /CreationDate (D:20151126151221)
   /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/blob/2fa570dd/book.html
----------------------------------------------------------------------
diff --git a/book.html b/book.html
index 6a17bb0..7a05935 100644
--- a/book.html
+++ b/book.html
@@ -32882,7 +32882,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-11-26 00:52:55 UTC
+Last updated 2015-11-26 14:44:31 UTC
 </div>
 </div>
 </body>


[18/24] hbase git commit: Published site at 0d72849581c1e5a50a2aa7757b909e5531b8d12c.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html
index c069622..c031492 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.MemStoreScanner.html
@@ -48,949 +48,957 @@
 <span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.40"></a>
 <span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.41"></a>
 <span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.util.ByteRange;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.util.CollectionBackedScanner;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.util.ReflectionUtils;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.htrace.Trace;<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 MemStore holds in-memory modifications to the Store.  Modifications<a name="line.52"></a>
-<span class="sourceLineNo">053</span> * are {@link Cell}s.  When asked to flush, current memstore is moved<a name="line.53"></a>
-<span class="sourceLineNo">054</span> * to snapshot and is cleared.  We continue to serve edits out of new memstore<a name="line.54"></a>
-<span class="sourceLineNo">055</span> * and backing snapshot until flusher reports in that the flush succeeded. At<a name="line.55"></a>
-<span class="sourceLineNo">056</span> * this point we let the snapshot go.<a name="line.56"></a>
-<span class="sourceLineNo">057</span> *  &lt;p&gt;<a name="line.57"></a>
-<span class="sourceLineNo">058</span> * The MemStore functions should not be called in parallel. Callers should hold<a name="line.58"></a>
-<span class="sourceLineNo">059</span> *  write and read locks. This is done in {@link HStore}.<a name="line.59"></a>
-<span class="sourceLineNo">060</span> *  &lt;/p&gt;<a name="line.60"></a>
-<span class="sourceLineNo">061</span> *<a name="line.61"></a>
-<span class="sourceLineNo">062</span> * TODO: Adjust size of the memstore when we remove items because they have<a name="line.62"></a>
-<span class="sourceLineNo">063</span> * been deleted.<a name="line.63"></a>
-<span class="sourceLineNo">064</span> * TODO: With new KVSLS, need to make sure we update HeapSize with difference<a name="line.64"></a>
-<span class="sourceLineNo">065</span> * in KV size.<a name="line.65"></a>
-<span class="sourceLineNo">066</span> */<a name="line.66"></a>
-<span class="sourceLineNo">067</span>@InterfaceAudience.Private<a name="line.67"></a>
-<span class="sourceLineNo">068</span>public class DefaultMemStore implements MemStore {<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  private static final Log LOG = LogFactory.getLog(DefaultMemStore.class);<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  static final String USEMSLAB_KEY = "hbase.hregion.memstore.mslab.enabled";<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  private static final boolean USEMSLAB_DEFAULT = true;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  static final String MSLAB_CLASS_NAME = "hbase.regionserver.mslab.class";<a name="line.72"></a>
-<span class="sourceLineNo">073</span><a name="line.73"></a>
-<span class="sourceLineNo">074</span>  private Configuration conf;<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>  // MemStore.  Use a CellSkipListSet rather than SkipListSet because of the<a name="line.76"></a>
-<span class="sourceLineNo">077</span>  // better semantics.  The Map will overwrite if passed a key it already had<a name="line.77"></a>
-<span class="sourceLineNo">078</span>  // whereas the Set will not add new Cell if key is same though value might be<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  // different.  Value is not important -- just make sure always same<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  // reference passed.<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  volatile CellSkipListSet cellSet;<a name="line.81"></a>
-<span class="sourceLineNo">082</span><a name="line.82"></a>
-<span class="sourceLineNo">083</span>  // Snapshot of memstore.  Made for flusher.<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  volatile CellSkipListSet snapshot;<a name="line.84"></a>
-<span class="sourceLineNo">085</span><a name="line.85"></a>
-<span class="sourceLineNo">086</span>  final CellComparator comparator;<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>  // Used to track own heapSize<a name="line.88"></a>
-<span class="sourceLineNo">089</span>  final AtomicLong size;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  private volatile long snapshotSize;<a name="line.90"></a>
-<span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>  // Used to track when to flush<a name="line.92"></a>
-<span class="sourceLineNo">093</span>  volatile long timeOfOldestEdit = Long.MAX_VALUE;<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>  TimeRangeTracker timeRangeTracker;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  TimeRangeTracker snapshotTimeRangeTracker;<a name="line.96"></a>
-<span class="sourceLineNo">097</span><a name="line.97"></a>
-<span class="sourceLineNo">098</span>  volatile MemStoreLAB allocator;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  volatile MemStoreLAB snapshotAllocator;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>  volatile long snapshotId;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  volatile boolean tagsPresent;<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>   * Default constructor. Used for tests.<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   */<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public DefaultMemStore() {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    this(HBaseConfiguration.create(), CellComparator.COMPARATOR);<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>   * Constructor.<a name="line.111"></a>
-<span class="sourceLineNo">112</span>   * @param c Comparator<a name="line.112"></a>
-<span class="sourceLineNo">113</span>   */<a name="line.113"></a>
-<span class="sourceLineNo">114</span>  public DefaultMemStore(final Configuration conf,<a name="line.114"></a>
-<span class="sourceLineNo">115</span>                  final CellComparator c) {<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    this.conf = conf;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    this.comparator = c;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    this.cellSet = new CellSkipListSet(c);<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    this.snapshot = new CellSkipListSet(c);<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    timeRangeTracker = new TimeRangeTracker();<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    snapshotTimeRangeTracker = new TimeRangeTracker();<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    this.size = new AtomicLong(DEEP_OVERHEAD);<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    this.snapshotSize = 0;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    if (conf.getBoolean(USEMSLAB_KEY, USEMSLAB_DEFAULT)) {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      String className = conf.get(MSLAB_CLASS_NAME, HeapMemStoreLAB.class.getName());<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      this.allocator = ReflectionUtils.instantiateWithCustomCtor(className,<a name="line.126"></a>
-<span class="sourceLineNo">127</span>          new Class[] { Configuration.class }, new Object[] { conf });<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    } else {<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      this.allocator = null;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    }<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  }<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>  void dump() {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    for (Cell cell: this.cellSet) {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      LOG.info(cell);<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    }<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    for (Cell cell: this.snapshot) {<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      LOG.info(cell);<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><a name="line.141"></a>
-<span class="sourceLineNo">142</span>  /**<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * Creates a snapshot of the current memstore.<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   * Snapshot must be cleared by call to {@link #clearSnapshot(long)}<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   */<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  @Override<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  public MemStoreSnapshot snapshot() {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    // If snapshot currently has entries, then flusher failed or didn't call<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    // cleanup.  Log a warning.<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    if (!this.snapshot.isEmpty()) {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      LOG.warn("Snapshot called again without clearing previous. " +<a name="line.151"></a>
-<span class="sourceLineNo">152</span>          "Doing nothing. Another ongoing flush or did we fail last attempt?");<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    } else {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      this.snapshotId = EnvironmentEdgeManager.currentTime();<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      this.snapshotSize = keySize();<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      if (!this.cellSet.isEmpty()) {<a name="line.156"></a>
-<span class="sourceLineNo">157</span>        this.snapshot = this.cellSet;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>        this.cellSet = new CellSkipListSet(this.comparator);<a name="line.158"></a>
-<span class="sourceLineNo">159</span>        this.snapshotTimeRangeTracker = this.timeRangeTracker;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>        this.timeRangeTracker = new TimeRangeTracker();<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        // Reset heap to not include any keys<a name="line.161"></a>
-<span class="sourceLineNo">162</span>        this.size.set(DEEP_OVERHEAD);<a name="line.162"></a>
-<span class="sourceLineNo">163</span>        this.snapshotAllocator = this.allocator;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>        // Reset allocator so we get a fresh buffer for the new memstore<a name="line.164"></a>
-<span class="sourceLineNo">165</span>        if (allocator != null) {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>          String className = conf.get(MSLAB_CLASS_NAME, HeapMemStoreLAB.class.getName());<a name="line.166"></a>
-<span class="sourceLineNo">167</span>          this.allocator = ReflectionUtils.instantiateWithCustomCtor(className,<a name="line.167"></a>
-<span class="sourceLineNo">168</span>              new Class[] { Configuration.class }, new Object[] { conf });<a name="line.168"></a>
-<span class="sourceLineNo">169</span>        }<a name="line.169"></a>
-<span class="sourceLineNo">170</span>        timeOfOldestEdit = Long.MAX_VALUE;<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>    MemStoreSnapshot memStoreSnapshot = new MemStoreSnapshot(this.snapshotId, snapshot.size(), this.snapshotSize,<a name="line.173"></a>
-<span class="sourceLineNo">174</span>        this.snapshotTimeRangeTracker, new CollectionBackedScanner(snapshot, this.comparator),<a name="line.174"></a>
-<span class="sourceLineNo">175</span>        this.tagsPresent);<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    this.tagsPresent = false;<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    return memStoreSnapshot;<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>   * The passed snapshot was successfully persisted; it can be let go.<a name="line.181"></a>
-<span class="sourceLineNo">182</span>   * @param id Id of the snapshot to clean out.<a name="line.182"></a>
-<span class="sourceLineNo">183</span>   * @throws UnexpectedStateException<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   * @see #snapshot()<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 clearSnapshot(long id) throws UnexpectedStateException {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    MemStoreLAB tmpAllocator = null;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    if (this.snapshotId != id) {<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      throw new UnexpectedStateException("Current snapshot id is " + this.snapshotId + ",passed "<a name="line.190"></a>
-<span class="sourceLineNo">191</span>          + id);<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    }<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    // OK. Passed in snapshot is same as current snapshot. If not-empty,<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    // create a new snapshot and let the old one go.<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    if (!this.snapshot.isEmpty()) {<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      this.snapshot = new CellSkipListSet(this.comparator);<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      this.snapshotTimeRangeTracker = new TimeRangeTracker();<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    }<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    this.snapshotSize = 0;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    this.snapshotId = -1;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    if (this.snapshotAllocator != null) {<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      tmpAllocator = this.snapshotAllocator;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      this.snapshotAllocator = null;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    }<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    if (tmpAllocator != null) {<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      tmpAllocator.close();<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>  @Override<a name="line.210"></a>
-<span class="sourceLineNo">211</span>  public long getFlushableSize() {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    return this.snapshotSize &gt; 0 ? this.snapshotSize : keySize();<a name="line.212"></a>
-<span class="sourceLineNo">213</span>  }<a name="line.213"></a>
-<span class="sourceLineNo">214</span><a name="line.214"></a>
-<span class="sourceLineNo">215</span>  @Override<a name="line.215"></a>
-<span class="sourceLineNo">216</span>  public long getSnapshotSize() {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    return this.snapshotSize;<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>   * Write an update<a name="line.221"></a>
-<span class="sourceLineNo">222</span>   * @param cell<a name="line.222"></a>
-<span class="sourceLineNo">223</span>   * @return approximate size of the passed Cell.<a name="line.223"></a>
-<span class="sourceLineNo">224</span>   */<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  @Override<a name="line.225"></a>
-<span class="sourceLineNo">226</span>  public long add(Cell cell) {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    Cell toAdd = maybeCloneWithAllocator(cell);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    return internalAdd(toAdd);<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  }<a name="line.229"></a>
-<span class="sourceLineNo">230</span><a name="line.230"></a>
-<span class="sourceLineNo">231</span>  @Override<a name="line.231"></a>
-<span class="sourceLineNo">232</span>  public long timeOfOldestEdit() {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    return timeOfOldestEdit;<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>  private boolean addToCellSet(Cell e) {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    boolean b = this.cellSet.add(e);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    // In no tags case this NoTagsKeyValue.getTagsLength() is a cheap call.<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    // When we use ACL CP or Visibility CP which deals with Tags during<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    // mutation, the TagRewriteCell.getTagsLength() is a cheaper call. We do not<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    // parse the byte[] to identify the tags length.<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    if(e.getTagsLength() &gt; 0) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      tagsPresent = true;<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    }<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    setOldestEditTimeToNow();<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    return b;<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>  private boolean removeFromCellSet(Cell e) {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    boolean b = this.cellSet.remove(e);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    setOldestEditTimeToNow();<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    return b;<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>  void setOldestEditTimeToNow() {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    if (timeOfOldestEdit == Long.MAX_VALUE) {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      timeOfOldestEdit = EnvironmentEdgeManager.currentTime();<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    }<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  }<a name="line.259"></a>
-<span class="sourceLineNo">260</span><a name="line.260"></a>
-<span class="sourceLineNo">261</span>  /**<a name="line.261"></a>
-<span class="sourceLineNo">262</span>   * Internal version of add() that doesn't clone Cells with the<a name="line.262"></a>
-<span class="sourceLineNo">263</span>   * allocator, and doesn't take the lock.<a name="line.263"></a>
-<span class="sourceLineNo">264</span>   *<a name="line.264"></a>
-<span class="sourceLineNo">265</span>   * Callers should ensure they already have the read lock taken<a name="line.265"></a>
-<span class="sourceLineNo">266</span>   */<a name="line.266"></a>
-<span class="sourceLineNo">267</span>  private long internalAdd(final Cell toAdd) {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    long s = heapSizeChange(toAdd, addToCellSet(toAdd));<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    timeRangeTracker.includeTimestamp(toAdd);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    this.size.addAndGet(s);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    return s;<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>  private Cell maybeCloneWithAllocator(Cell cell) {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    if (allocator == null) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>      return cell;<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>    int len = KeyValueUtil.length(cell);<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    ByteRange alloc = allocator.allocateBytes(len);<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    if (alloc == null) {<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      // The allocation was too large, allocator decided<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      // not to do anything with it.<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      return cell;<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    }<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    assert alloc.getBytes() != null;<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    KeyValueUtil.appendToByteArray(cell, alloc.getBytes(), alloc.getOffset());<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    KeyValue newKv = new KeyValue(alloc.getBytes(), alloc.getOffset(), len);<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    newKv.setSequenceId(cell.getSequenceId());<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    return newKv;<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>  /**<a name="line.293"></a>
-<span class="sourceLineNo">294</span>   * Remove n key from the memstore. Only cells that have the same key and the<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   * same memstoreTS are removed.  It is ok to not update timeRangeTracker<a name="line.295"></a>
-<span class="sourceLineNo">296</span>   * in this call. It is possible that we can optimize this method by using<a name="line.296"></a>
-<span class="sourceLineNo">297</span>   * tailMap/iterator, but since this method is called rarely (only for<a name="line.297"></a>
-<span class="sourceLineNo">298</span>   * error recovery), we can leave those optimization for the future.<a name="line.298"></a>
-<span class="sourceLineNo">299</span>   * @param cell<a name="line.299"></a>
-<span class="sourceLineNo">300</span>   */<a name="line.300"></a>
-<span class="sourceLineNo">301</span>  @Override<a name="line.301"></a>
-<span class="sourceLineNo">302</span>  public void rollback(Cell cell) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    // If the key is in the snapshot, delete it. We should not update<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    // this.size, because that tracks the size of only the memstore and<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    // not the snapshot. The flush of this snapshot to disk has not<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    // yet started because Store.flush() waits for all rwcc transactions to<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    // commit before starting the flush to disk.<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    Cell found = this.snapshot.get(cell);<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    if (found != null &amp;&amp; found.getSequenceId() == cell.getSequenceId()) {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      this.snapshot.remove(cell);<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      long sz = heapSizeChange(cell, true);<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      this.snapshotSize -= sz;<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    }<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    // If the key is in the memstore, delete it. Update this.size.<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    found = this.cellSet.get(cell);<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    if (found != null &amp;&amp; found.getSequenceId() == cell.getSequenceId()) {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      removeFromCellSet(cell);<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      long s = heapSizeChange(cell, true);<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      this.size.addAndGet(-s);<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    }<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  }<a name="line.321"></a>
-<span class="sourceLineNo">322</span><a name="line.322"></a>
-<span class="sourceLineNo">323</span>  /**<a name="line.323"></a>
-<span class="sourceLineNo">324</span>   * Write a delete<a name="line.324"></a>
-<span class="sourceLineNo">325</span>   * @param deleteCell<a name="line.325"></a>
-<span class="sourceLineNo">326</span>   * @return approximate size of the passed key and value.<a name="line.326"></a>
-<span class="sourceLineNo">327</span>   */<a name="line.327"></a>
-<span class="sourceLineNo">328</span>  @Override<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  public long delete(Cell deleteCell) {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    long s = 0;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    Cell toAdd = maybeCloneWithAllocator(deleteCell);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    s += heapSizeChange(toAdd, addToCellSet(toAdd));<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    timeRangeTracker.includeTimestamp(toAdd);<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    this.size.addAndGet(s);<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    return s;<a name="line.335"></a>
-<span class="sourceLineNo">336</span>  }<a name="line.336"></a>
-<span class="sourceLineNo">337</span><a name="line.337"></a>
-<span class="sourceLineNo">338</span>  /**<a name="line.338"></a>
-<span class="sourceLineNo">339</span>   * @param cell Find the row that comes after this one.  If null, we return the<a name="line.339"></a>
-<span class="sourceLineNo">340</span>   * first.<a name="line.340"></a>
-<span class="sourceLineNo">341</span>   * @return Next row or null if none found.<a name="line.341"></a>
-<span class="sourceLineNo">342</span>   */<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  Cell getNextRow(final Cell cell) {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    return getLowest(getNextRow(cell, this.cellSet), getNextRow(cell, this.snapshot));<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>   * @param a<a name="line.348"></a>
-<span class="sourceLineNo">349</span>   * @param b<a name="line.349"></a>
-<span class="sourceLineNo">350</span>   * @return Return lowest of a or b or null if both a and b are null<a name="line.350"></a>
-<span class="sourceLineNo">351</span>   */<a name="line.351"></a>
-<span class="sourceLineNo">352</span>  private Cell getLowest(final Cell a, final Cell b) {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    if (a == null) {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>      return b;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    }<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    if (b == null) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      return a;<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    }<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    return comparator.compareRows(a, b) &lt;= 0? a: b;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>  }<a name="line.360"></a>
-<span class="sourceLineNo">361</span><a name="line.361"></a>
-<span class="sourceLineNo">362</span>  /*<a name="line.362"></a>
-<span class="sourceLineNo">363</span>   * @param key Find row that follows this one.  If null, return first.<a name="line.363"></a>
-<span class="sourceLineNo">364</span>   * @param map Set to look in for a row beyond &lt;code&gt;row&lt;/code&gt;.<a name="line.364"></a>
-<span class="sourceLineNo">365</span>   * @return Next row or null if none found.  If one found, will be a new<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   * KeyValue -- can be destroyed by subsequent calls to this method.<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   */<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  private Cell getNextRow(final Cell key,<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      final NavigableSet&lt;Cell&gt; set) {<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    Cell result = null;<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    SortedSet&lt;Cell&gt; tail = key == null? set: set.tailSet(key);<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    // Iterate until we fall into the next row; i.e. move off current row<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    for (Cell cell: tail) {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      if (comparator.compareRows(cell, key) &lt;= 0)<a name="line.374"></a>
-<span class="sourceLineNo">375</span>        continue;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      // Note: Not suppressing deletes or expired cells.  Needs to be handled<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      // by higher up functions.<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      result = cell;<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      break;<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    }<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    return result;<a name="line.381"></a>
-<span class="sourceLineNo">382</span>  }<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>  /**<a name="line.384"></a>
-<span class="sourceLineNo">385</span>   * Only used by tests. TODO: Remove<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   *<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   * Given the specs of a column, update it, first by inserting a new record,<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   * then removing the old one.  Since there is only 1 KeyValue involved, the memstoreTS<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   * will be set to 0, thus ensuring that they instantly appear to anyone. The underlying<a name="line.389"></a>
-<span class="sourceLineNo">390</span>   * store will ensure that the insert/delete each are atomic. A scanner/reader will either<a name="line.390"></a>
-<span class="sourceLineNo">391</span>   * get the new value, or the old value and all readers will eventually only see the new<a name="line.391"></a>
-<span class="sourceLineNo">392</span>   * value after the old was removed.<a name="line.392"></a>
-<span class="sourceLineNo">393</span>   *<a name="line.393"></a>
-<span class="sourceLineNo">394</span>   * @param row<a name="line.394"></a>
-<span class="sourceLineNo">395</span>   * @param family<a name="line.395"></a>
-<span class="sourceLineNo">396</span>   * @param qualifier<a name="line.396"></a>
-<span class="sourceLineNo">397</span>   * @param newValue<a name="line.397"></a>
-<span class="sourceLineNo">398</span>   * @param now<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   * @return  Timestamp<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   */<a name="line.400"></a>
-<span class="sourceLineNo">401</span>  @Override<a name="line.401"></a>
-<span class="sourceLineNo">402</span>  public long updateColumnValue(byte[] row,<a name="line.402"></a>
-<span class="sourceLineNo">403</span>                                byte[] family,<a name="line.403"></a>
-<span class="sourceLineNo">404</span>                                byte[] qualifier,<a name="line.404"></a>
-<span class="sourceLineNo">405</span>                                long newValue,<a name="line.405"></a>
-<span class="sourceLineNo">406</span>                                long now) {<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    Cell firstCell = KeyValueUtil.createFirstOnRow(row, family, qualifier);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    // Is there a Cell in 'snapshot' with the same TS? If so, upgrade the timestamp a bit.<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    SortedSet&lt;Cell&gt; snSs = snapshot.tailSet(firstCell);<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    if (!snSs.isEmpty()) {<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      Cell snc = snSs.first();<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      // is there a matching Cell in the snapshot?<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      if (CellUtil.matchingRow(snc, firstCell) &amp;&amp; CellUtil.matchingQualifier(snc, firstCell)) {<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        if (snc.getTimestamp() == now) {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>          // poop,<a name="line.415"></a>
-<span class="sourceLineNo">416</span>          now += 1;<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><a name="line.420"></a>
-<span class="sourceLineNo">421</span>    // logic here: the new ts MUST be at least 'now'. But it could be larger if necessary.<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    // But the timestamp should also be max(now, mostRecentTsInMemstore)<a name="line.422"></a>
-<span class="sourceLineNo">423</span><a name="line.423"></a>
-<span class="sourceLineNo">424</span>    // so we cant add the new Cell w/o knowing what's there already, but we also<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    // want to take this chance to delete some cells. So two loops (sad)<a name="line.425"></a>
-<span class="sourceLineNo">426</span><a name="line.426"></a>
-<span class="sourceLineNo">427</span>    SortedSet&lt;Cell&gt; ss = cellSet.tailSet(firstCell);<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    for (Cell cell : ss) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      // if this isnt the row we are interested in, then bail:<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      if (!CellUtil.matchingColumn(cell, family, qualifier)<a name="line.430"></a>
-<span class="sourceLineNo">431</span>          || !CellUtil.matchingRow(cell, firstCell)) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>        break; // rows dont match, bail.<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      }<a name="line.433"></a>
-<span class="sourceLineNo">434</span><a name="line.434"></a>
-<span class="sourceLineNo">435</span>      // if the qualifier matches and it's a put, just RM it out of the cellSet.<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      if (cell.getTypeByte() == KeyValue.Type.Put.getCode() &amp;&amp;<a name="line.436"></a>
-<span class="sourceLineNo">437</span>          cell.getTimestamp() &gt; now &amp;&amp; CellUtil.matchingQualifier(firstCell, cell)) {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>        now = cell.getTimestamp();<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>    // create or update (upsert) a new Cell with<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    // 'now' and a 0 memstoreTS == immediately visible<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    List&lt;Cell&gt; cells = new ArrayList&lt;Cell&gt;(1);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    cells.add(new KeyValue(row, family, qualifier, now, Bytes.toBytes(newValue)));<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    return upsert(cells, 1L);<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>   * Update or insert the specified KeyValues.<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   * &lt;p&gt;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   * For each KeyValue, insert into MemStore.  This will atomically upsert the<a name="line.452"></a>
-<span class="sourceLineNo">453</span>   * value for that row/family/qualifier.  If a KeyValue did already exist,<a name="line.453"></a>
-<span class="sourceLineNo">454</span>   * it will then be removed.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>   * &lt;p&gt;<a name="line.455"></a>
-<span class="sourceLineNo">456</span>   * Currently the memstoreTS is kept at 0 so as each insert happens, it will<a name="line.456"></a>
-<span class="sourceLineNo">457</span>   * be immediately visible.  May want to change this so it is atomic across<a name="line.457"></a>
-<span class="sourceLineNo">458</span>   * all KeyValues.<a name="line.458"></a>
-<span class="sourceLineNo">459</span>   * &lt;p&gt;<a name="line.459"></a>
-<span class="sourceLineNo">460</span>   * This is called under row lock, so Get operations will still see updates<a name="line.460"></a>
-<span class="sourceLineNo">461</span>   * atomically.  Scans will only see each KeyValue update as atomic.<a name="line.461"></a>
-<span class="sourceLineNo">462</span>   *<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   * @param cells<a name="line.463"></a>
-<span class="sourceLineNo">464</span>   * @param readpoint readpoint below which we can safely remove duplicate KVs<a name="line.464"></a>
-<span class="sourceLineNo">465</span>   * @return change in memstore size<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 long upsert(Iterable&lt;Cell&gt; cells, long readpoint) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    long size = 0;<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    for (Cell cell : cells) {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      size += upsert(cell, readpoint);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    return size;<a name="line.473"></a>
-<span class="sourceLineNo">474</span>  }<a name="line.474"></a>
-<span class="sourceLineNo">475</span><a name="line.475"></a>
-<span class="sourceLineNo">476</span>  /**<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * Inserts the specified KeyValue into MemStore and deletes any existing<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   * versions of the same row/family/qualifier as the specified KeyValue.<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * &lt;p&gt;<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * First, the specified KeyValue is inserted into the Memstore.<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * &lt;p&gt;<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   * If there are any existing KeyValues in this MemStore with the same row,<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   * family, and qualifier, they are removed.<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   * &lt;p&gt;<a name="line.484"></a>
-<span class="sourceLineNo">485</span>   * Callers must hold the read lock.<a name="line.485"></a>
-<span class="sourceLineNo">486</span>   *<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   * @param cell<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   * @return change in size of MemStore<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   */<a name="line.489"></a>
-<span class="sourceLineNo">490</span>  private long upsert(Cell cell, long readpoint) {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    // Add the Cell to the MemStore<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    // Use the internalAdd method here since we (a) already have a lock<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    // and (b) cannot safely use the MSLAB here without potentially<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    // hitting OOME - see TestMemStore.testUpsertMSLAB for a<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    // test that triggers the pathological case if we don't avoid MSLAB<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    // here.<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    long addedSize = internalAdd(cell);<a name="line.497"></a>
-<span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>    // Get the Cells for the row/family/qualifier regardless of timestamp.<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    // For this case we want to clean up any other puts<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    Cell firstCell = KeyValueUtil.createFirstOnRow(<a name="line.501"></a>
-<span class="sourceLineNo">502</span>        cell.getRowArray(), cell.getRowOffset(), cell.getRowLength(),<a name="line.502"></a>
-<span class="sourceLineNo">503</span>        cell.getFamilyArray(), cell.getFamilyOffset(), cell.getFamilyLength(),<a name="line.503"></a>
-<span class="sourceLineNo">504</span>        cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength());<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    SortedSet&lt;Cell&gt; ss = cellSet.tailSet(firstCell);<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    Iterator&lt;Cell&gt; it = ss.iterator();<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    // versions visible to oldest scanner<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    int versionsVisible = 0;<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    while ( it.hasNext() ) {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>      Cell cur = it.next();<a name="line.510"></a>
-<span class="sourceLineNo">511</span><a name="line.511"></a>
-<span class="sourceLineNo">512</span>      if (cell == cur) {<a name="line.512"></a>
-<span class="sourceLineNo">513</span>        // ignore the one just put in<a name="line.513"></a>
-<span class="sourceLineNo">514</span>        continue;<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      }<a name="line.515"></a>
-<span class="sourceLineNo">516</span>      // check that this is the row and column we are interested in, otherwise bail<a name="line.516"></a>
-<span class="sourceLineNo">517</span>      if (CellUtil.matchingRow(cell, cur) &amp;&amp; CellUtil.matchingQualifier(cell, cur)) {<a name="line.517"></a>
-<span class="sourceLineNo">518</span>        // only remove Puts that concurrent scanners cannot possibly see<a name="line.518"></a>
-<span class="sourceLineNo">519</span>        if (cur.getTypeByte() == KeyValue.Type.Put.getCode() &amp;&amp;<a name="line.519"></a>
-<span class="sourceLineNo">520</span>            cur.getSequenceId() &lt;= readpoint) {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>          if (versionsVisible &gt;= 1) {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>            // if we get here we have seen at least one version visible to the oldest scanner,<a name="line.522"></a>
-<span class="sourceLineNo">523</span>            // which means we can prove that no scanner will see this version<a name="line.523"></a>
-<span class="sourceLineNo">524</span><a name="line.524"></a>
-<span class="sourceLineNo">525</span>            // false means there was a change, so give us the size.<a name="line.525"></a>
-<span class="sourceLineNo">526</span>            long delta = heapSizeChange(cur, true);<a name="line.526"></a>
-<span class="sourceLineNo">527</span>            addedSize -= delta;<a name="line.527"></a>
-<span class="sourceLineNo">528</span>            this.size.addAndGet(-delta);<a name="line.528"></a>
-<span class="sourceLineNo">529</span>            it.remove();<a name="line.529"></a>
-<span class="sourceLineNo">530</span>            setOldestEditTimeToNow();<a name="line.530"></a>
-<span class="sourceLineNo">531</span>          } else {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>            versionsVisible++;<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>      } else {<a name="line.535"></a>
-<span class="sourceLineNo">536</span>        // past the row or column, done<a name="line.536"></a>
-<span class="sourceLineNo">537</span>        break;<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>    return addedSize;<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>  /**<a name="line.543"></a>
-<span class="sourceLineNo">544</span>   * @return scanner on memstore and snapshot in this order.<a name="line.544"></a>
-<span class="sourceLineNo">545</span>   */<a name="line.545"></a>
-<span class="sourceLineNo">546</span>  @Override<a name="line.546"></a>
-<span class="sourceLineNo">547</span>  public List&lt;KeyValueScanner&gt; getScanners(long readPt) {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>    return Collections.&lt;KeyValueScanner&gt; singletonList(new MemStoreScanner(readPt));<a name="line.548"></a>
-<span class="sourceLineNo">549</span>  }<a name="line.549"></a>
-<span class="sourceLineNo">550</span><a name="line.550"></a>
-<span class="sourceLineNo">551</span>  /**<a name="line.551"></a>
-<span class="sourceLineNo">552</span>   * Check if this memstore may contain the required keys<a name="line.552"></a>
-<span class="sourceLineNo">553</span>   * @param scan<a name="line.553"></a>
-<span class="sourceLineNo">554</span>   * @return False if the key definitely does not exist in this Memstore<a name="line.554"></a>
-<span class="sourceLineNo">555</span>   */<a name="line.555"></a>
-<span class="sourceLineNo">556</span>  public boolean shouldSeek(Scan scan, long oldestUnexpiredTS) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    return (timeRangeTracker.includesTimeRange(scan.getTimeRange()) ||<a name="line.557"></a>
-<span class="sourceLineNo">558</span>        snapshotTimeRangeTracker.includesTimeRange(scan.getTimeRange()))<a name="line.558"></a>
-<span class="sourceLineNo">559</span>        &amp;&amp; (Math.max(timeRangeTracker.getMaximumTimestamp(),<a name="line.559"></a>
-<span class="sourceLineNo">560</span>                     snapshotTimeRangeTracker.getMaximumTimestamp()) &gt;=<a name="line.560"></a>
-<span class="sourceLineNo">561</span>            oldestUnexpiredTS);<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>  /*<a name="line.564"></a>
-<span class="sourceLineNo">565</span>   * MemStoreScanner implements the KeyValueScanner.<a name="line.565"></a>
-<span class="sourceLineNo">566</span>   * It lets the caller scan the contents of a memstore -- both current<a name="line.566"></a>
-<span class="sourceLineNo">567</span>   * map and snapshot.<a name="line.567"></a>
-<span class="sourceLineNo">568</span>   * This behaves as if it were a real scanner but does not maintain position.<a name="line.568"></a>
-<span class="sourceLineNo">569</span>   */<a name="line.569"></a>
-<span class="sourceLineNo">570</span>  protected class MemStoreScanner extends NonLazyKeyValueScanner {<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    // Next row information for either cellSet or snapshot<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    private Cell cellSetNextRow = null;<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    private Cell snapshotNextRow = null;<a name="line.573"></a>
-<span class="sourceLineNo">574</span><a name="line.574"></a>
-<span class="sourceLineNo">575</span>    // last iterated Cells for cellSet and snapshot (to restore iterator state after reseek)<a name="line.575"></a>
-<span class="sourceLineNo">576</span>    private Cell cellSetItRow = null;<a name="line.576"></a>
-<span class="sourceLineNo">577</span>    private Cell snapshotItRow = null;<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    <a name="line.578"></a>
-<span class="sourceLineNo">579</span>    // iterator based scanning.<a name="line.579"></a>
-<span class="sourceLineNo">580</span>    private Iterator&lt;Cell&gt; cellSetIt;<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    private Iterator&lt;Cell&gt; snapshotIt;<a name="line.581"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.util.ByteRange;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.util.CollectionBackedScanner;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.util.ReflectionUtils;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.htrace.Trace;<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> * The MemStore holds in-memory modifications to the Store.  Modifications<a name="line.53"></a>
+<span class="sourceLineNo">054</span> * are {@link Cell}s.  When asked to flush, current memstore is moved<a name="line.54"></a>
+<span class="sourceLineNo">055</span> * to snapshot and is cleared.  We continue to serve edits out of new memstore<a name="line.55"></a>
+<span class="sourceLineNo">056</span> * and backing snapshot until flusher reports in that the flush succeeded. At<a name="line.56"></a>
+<span class="sourceLineNo">057</span> * this point we let the snapshot go.<a name="line.57"></a>
+<span class="sourceLineNo">058</span> *  &lt;p&gt;<a name="line.58"></a>
+<span class="sourceLineNo">059</span> * The MemStore functions should not be called in parallel. Callers should hold<a name="line.59"></a>
+<span class="sourceLineNo">060</span> *  write and read locks. This is done in {@link HStore}.<a name="line.60"></a>
+<span class="sourceLineNo">061</span> *  &lt;/p&gt;<a name="line.61"></a>
+<span class="sourceLineNo">062</span> *<a name="line.62"></a>
+<span class="sourceLineNo">063</span> * TODO: Adjust size of the memstore when we remove items because they have<a name="line.63"></a>
+<span class="sourceLineNo">064</span> * been deleted.<a name="line.64"></a>
+<span class="sourceLineNo">065</span> * TODO: With new KVSLS, need to make sure we update HeapSize with difference<a name="line.65"></a>
+<span class="sourceLineNo">066</span> * in KV size.<a name="line.66"></a>
+<span class="sourceLineNo">067</span> */<a name="line.67"></a>
+<span class="sourceLineNo">068</span>@InterfaceAudience.Private<a name="line.68"></a>
+<span class="sourceLineNo">069</span>public class DefaultMemStore implements MemStore {<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  private static final Log LOG = LogFactory.getLog(DefaultMemStore.class);<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  static final String USEMSLAB_KEY = "hbase.hregion.memstore.mslab.enabled";<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  private static final boolean USEMSLAB_DEFAULT = true;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  static final String MSLAB_CLASS_NAME = "hbase.regionserver.mslab.class";<a name="line.73"></a>
+<span class="sourceLineNo">074</span><a name="line.74"></a>
+<span class="sourceLineNo">075</span>  private Configuration conf;<a name="line.75"></a>
+<span class="sourceLineNo">076</span><a name="line.76"></a>
+<span class="sourceLineNo">077</span>  // MemStore.  Use a CellSkipListSet rather than SkipListSet because of the<a name="line.77"></a>
+<span class="sourceLineNo">078</span>  // better semantics.  The Map will overwrite if passed a key it already had<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  // whereas the Set will not add new Cell if key is same though value might be<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  // different.  Value is not important -- just make sure always same<a name="line.80"></a>
+<span class="sourceLineNo">081</span>  // reference passed.<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  volatile CellSkipListSet cellSet;<a name="line.82"></a>
+<span class="sourceLineNo">083</span><a name="line.83"></a>
+<span class="sourceLineNo">084</span>  // Snapshot of memstore.  Made for flusher.<a name="line.84"></a>
+<span class="sourceLineNo">085</span>  volatile CellSkipListSet snapshot;<a name="line.85"></a>
+<span class="sourceLineNo">086</span><a name="line.86"></a>
+<span class="sourceLineNo">087</span>  final CellComparator comparator;<a name="line.87"></a>
+<span class="sourceLineNo">088</span><a name="line.88"></a>
+<span class="sourceLineNo">089</span>  // Used to track own heapSize<a name="line.89"></a>
+<span class="sourceLineNo">090</span>  final AtomicLong size;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  private volatile long snapshotSize;<a name="line.91"></a>
+<span class="sourceLineNo">092</span><a name="line.92"></a>
+<span class="sourceLineNo">093</span>  // Used to track when to flush<a name="line.93"></a>
+<span class="sourceLineNo">094</span>  volatile long timeOfOldestEdit = Long.MAX_VALUE;<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span>  TimeRangeTracker timeRangeTracker;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>  TimeRangeTracker snapshotTimeRangeTracker;<a name="line.97"></a>
+<span class="sourceLineNo">098</span><a name="line.98"></a>
+<span class="sourceLineNo">099</span>  volatile MemStoreLAB allocator;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>  volatile MemStoreLAB snapshotAllocator;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>  volatile long snapshotId;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>  volatile boolean tagsPresent;<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>   * Default constructor. Used for tests.<a name="line.105"></a>
+<span class="sourceLineNo">106</span>   */<a name="line.106"></a>
+<span class="sourceLineNo">107</span>  public DefaultMemStore() {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    this(HBaseConfiguration.create(), CellComparator.COMPARATOR);<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>   * Constructor.<a name="line.112"></a>
+<span class="sourceLineNo">113</span>   * @param c Comparator<a name="line.113"></a>
+<span class="sourceLineNo">114</span>   */<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  public DefaultMemStore(final Configuration conf,<a name="line.115"></a>
+<span class="sourceLineNo">116</span>                  final CellComparator c) {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    this.conf = conf;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    this.comparator = c;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    this.cellSet = new CellSkipListSet(c);<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    this.snapshot = new CellSkipListSet(c);<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    timeRangeTracker = new TimeRangeTracker();<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    snapshotTimeRangeTracker = new TimeRangeTracker();<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    this.size = new AtomicLong(DEEP_OVERHEAD);<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    this.snapshotSize = 0;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    if (conf.getBoolean(USEMSLAB_KEY, USEMSLAB_DEFAULT)) {<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      String className = conf.get(MSLAB_CLASS_NAME, HeapMemStoreLAB.class.getName());<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      this.allocator = ReflectionUtils.instantiateWithCustomCtor(className,<a name="line.127"></a>
+<span class="sourceLineNo">128</span>          new Class[] { Configuration.class }, new Object[] { conf });<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    } else {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      this.allocator = null;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    }<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  }<a name="line.132"></a>
+<span class="sourceLineNo">133</span><a name="line.133"></a>
+<span class="sourceLineNo">134</span>  void dump() {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    for (Cell cell: this.cellSet) {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      LOG.info(cell);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    }<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    for (Cell cell: this.snapshot) {<a name="line.138"></a>
+<span class="sourceLineNo">139</span>      LOG.info(cell);<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>  /**<a name="line.143"></a>
+<span class="sourceLineNo">144</span>   * Creates a snapshot of the current memstore.<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   * Snapshot must be cleared by call to {@link #clearSnapshot(long)}<a name="line.145"></a>
+<span class="sourceLineNo">146</span>   */<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  @Override<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  public MemStoreSnapshot snapshot() {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    // If snapshot currently has entries, then flusher failed or didn't call<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    // cleanup.  Log a warning.<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    if (!this.snapshot.isEmpty()) {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      LOG.warn("Snapshot called again without clearing previous. " +<a name="line.152"></a>
+<span class="sourceLineNo">153</span>          "Doing nothing. Another ongoing flush or did we fail last attempt?");<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    } else {<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      this.snapshotId = EnvironmentEdgeManager.currentTime();<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      this.snapshotSize = keySize();<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      if (!this.cellSet.isEmpty()) {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>        this.snapshot = this.cellSet;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>        this.cellSet = new CellSkipListSet(this.comparator);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>        this.snapshotTimeRangeTracker = this.timeRangeTracker;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>        this.timeRangeTracker = new TimeRangeTracker();<a name="line.161"></a>
+<span class="sourceLineNo">162</span>        // Reset heap to not include any keys<a name="line.162"></a>
+<span class="sourceLineNo">163</span>        this.size.set(DEEP_OVERHEAD);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        this.snapshotAllocator = this.allocator;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        // Reset allocator so we get a fresh buffer for the new memstore<a name="line.165"></a>
+<span class="sourceLineNo">166</span>        if (allocator != null) {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>          String className = conf.get(MSLAB_CLASS_NAME, HeapMemStoreLAB.class.getName());<a name="line.167"></a>
+<span class="sourceLineNo">168</span>          this.allocator = ReflectionUtils.instantiateWithCustomCtor(className,<a name="line.168"></a>
+<span class="sourceLineNo">169</span>              new Class[] { Configuration.class }, new Object[] { conf });<a name="line.169"></a>
+<span class="sourceLineNo">170</span>        }<a name="line.170"></a>
+<span class="sourceLineNo">171</span>        timeOfOldestEdit = Long.MAX_VALUE;<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>    MemStoreSnapshot memStoreSnapshot = new MemStoreSnapshot(this.snapshotId, snapshot.size(), this.snapshotSize,<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        this.snapshotTimeRangeTracker, new CollectionBackedScanner(snapshot, this.comparator),<a name="line.175"></a>
+<span class="sourceLineNo">176</span>        this.tagsPresent);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    this.tagsPresent = false;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    return memStoreSnapshot;<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>   * The passed snapshot was successfully persisted; it can be let go.<a name="line.182"></a>
+<span class="sourceLineNo">183</span>   * @param id Id of the snapshot to clean out.<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   * @throws UnexpectedStateException<a name="line.184"></a>
+<span class="sourceLineNo">185</span>   * @see #snapshot()<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 clearSnapshot(long id) throws UnexpectedStateException {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    MemStoreLAB tmpAllocator = null;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    if (this.snapshotId != id) {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      throw new UnexpectedStateException("Current snapshot id is " + this.snapshotId + ",passed "<a name="line.191"></a>
+<span class="sourceLineNo">192</span>          + id);<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    }<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    // OK. Passed in snapshot is same as current snapshot. If not-empty,<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    // create a new snapshot and let the old one go.<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    if (!this.snapshot.isEmpty()) {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>      this.snapshot = new CellSkipListSet(this.comparator);<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      this.snapshotTimeRangeTracker = new TimeRangeTracker();<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    }<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    this.snapshotSize = 0;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    this.snapshotId = -1;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    if (this.snapshotAllocator != null) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      tmpAllocator = this.snapshotAllocator;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      this.snapshotAllocator = null;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    }<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    if (tmpAllocator != null) {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      tmpAllocator.close();<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>  @Override<a name="line.211"></a>
+<span class="sourceLineNo">212</span>  public long getFlushableSize() {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    return this.snapshotSize &gt; 0 ? this.snapshotSize : keySize();<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  }<a name="line.214"></a>
+<span class="sourceLineNo">215</span><a name="line.215"></a>
+<span class="sourceLineNo">216</span>  @Override<a name="line.216"></a>
+<span class="sourceLineNo">217</span>  public long getSnapshotSize() {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    return this.snapshotSize;<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 name="line.221"></a>
+<span class="sourceLineNo">222</span>   * Write an update<a name="line.222"></a>
+<span class="sourceLineNo">223</span>   * @param cell<a name="line.223"></a>
+<span class="sourceLineNo">224</span>   * @return approximate size of the passed Cell.<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   */<a name="line.225"></a>
+<span class="sourceLineNo">226</span>  @Override<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  public long add(Cell cell) {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    Cell toAdd = maybeCloneWithAllocator(cell);<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    return internalAdd(toAdd);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>  }<a name="line.230"></a>
+<span class="sourceLineNo">231</span><a name="line.231"></a>
+<span class="sourceLineNo">232</span>  @Override<a name="line.232"></a>
+<span class="sourceLineNo">233</span>  public long timeOfOldestEdit() {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    return timeOfOldestEdit;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>  }<a name="line.235"></a>
+<span class="sourceLineNo">236</span><a name="line.236"></a>
+<span class="sourceLineNo">237</span>  private boolean addToCellSet(Cell e) {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    boolean b = this.cellSet.add(e);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    // In no tags case this NoTagsKeyValue.getTagsLength() is a cheap call.<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    // When we use ACL CP or Visibility CP which deals with Tags during<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    // mutation, the TagRewriteCell.getTagsLength() is a cheaper call. We do not<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    // parse the byte[] to identify the tags length.<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    if(e.getTagsLength() &gt; 0) {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      tagsPresent = true;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    }<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    setOldestEditTimeToNow();<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    return b;<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>  private boolean removeFromCellSet(Cell e) {<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    boolean b = this.cellSet.remove(e);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    setOldestEditTimeToNow();<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    return b;<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>  void setOldestEditTimeToNow() {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    if (timeOfOldestEdit == Long.MAX_VALUE) {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      timeOfOldestEdit = EnvironmentEdgeManager.currentTime();<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>  /**<a name="line.262"></a>
+<span class="sourceLineNo">263</span>   * Internal version of add() that doesn't clone Cells with the<a name="line.263"></a>
+<span class="sourceLineNo">264</span>   * allocator, and doesn't take the lock.<a name="line.264"></a>
+<span class="sourceLineNo">265</span>   *<a name="line.265"></a>
+<span class="sourceLineNo">266</span>   * Callers should ensure they already have the read lock taken<a name="line.266"></a>
+<span class="sourceLineNo">267</span>   */<a name="line.267"></a>
+<span class="sourceLineNo">268</span>  private long internalAdd(final Cell toAdd) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    long s = heapSizeChange(toAdd, addToCellSet(toAdd));<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    timeRangeTracker.includeTimestamp(toAdd);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    this.size.addAndGet(s);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    return s;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>  }<a name="line.273"></a>
+<span class="sourceLineNo">274</span><a name="line.274"></a>
+<span class="sourceLineNo">275</span>  private Cell maybeCloneWithAllocator(Cell cell) {<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    if (allocator == null) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      return cell;<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>    int len = KeyValueUtil.length(cell);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    ByteRange alloc = allocator.allocateBytes(len);<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    if (alloc == null) {<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      // The allocation was too large, allocator decided<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      // not to do anything with it.<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      return cell;<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    }<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    assert alloc.getBytes() != null;<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    KeyValueUtil.appendToByteArray(cell, alloc.getBytes(), alloc.getOffset());<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    KeyValue newKv = new KeyValue(alloc.getBytes(), alloc.getOffset(), len);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    newKv.setSequenceId(cell.getSequenceId());<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    return newKv;<a name="line.291"></a>
+<span class="sourceLineNo">292</span>  }<a name="line.292"></a>
+<span class="sourceLineNo">293</span><a name="line.293"></a>
+<span class="sourceLineNo">294</span>  /**<a name="line.294"></a>
+<span class="sourceLineNo">295</span>   * Remove n key from the memstore. Only cells that have the same key and the<a name="line.295"></a>
+<span class="sourceLineNo">296</span>   * same memstoreTS are removed.  It is ok to not update timeRangeTracker<a name="line.296"></a>
+<span class="sourceLineNo">297</span>   * in this call. It is possible that we can optimize this method by using<a name="line.297"></a>
+<span class="sourceLineNo">298</span>   * tailMap/iterator, but since this method is called rarely (only for<a name="line.298"></a>
+<span class="sourceLineNo">299</span>   * error recovery), we can leave those optimization for the future.<a name="line.299"></a>
+<span class="sourceLineNo">300</span>   * @param cell<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 rollback(Cell cell) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    // If the key is in the snapshot, delete it. We should not update<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    // this.size, because that tracks the size of only the memstore and<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    // not the snapshot. The flush of this snapshot to disk has not<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    // yet started because Store.flush() waits for all rwcc transactions to<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    // commit before starting the flush to disk.<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    Cell found = this.snapshot.get(cell);<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    if (found != null &amp;&amp; found.getSequenceId() == cell.getSequenceId()) {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      this.snapshot.remove(cell);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      long sz = heapSizeChange(cell, true);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      this.snapshotSize -= sz;<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    }<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    // If the key is in the memstore, delete it. Update this.size.<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    found = this.cellSet.get(cell);<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    if (found != null &amp;&amp; found.getSequenceId() == cell.getSequenceId()) {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      removeFromCellSet(cell);<a name="line.318"></a>
+<span class="sourceLineNo">319</span>      long s = heapSizeChange(cell, true);<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      this.size.addAndGet(-s);<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>  /**<a name="line.324"></a>
+<span class="sourceLineNo">325</span>   * Write a delete<a name="line.325"></a>
+<span class="sourceLineNo">326</span>   * @param deleteCell<a name="line.326"></a>
+<span class="sourceLineNo">327</span>   * @return approximate size of the passed key and value.<a name="line.327"></a>
+<span class="sourceLineNo">328</span>   */<a name="line.328"></a>
+<span class="sourceLineNo">329</span>  @Override<a name="line.329"></a>
+<span class="sourceLineNo">330</span>  public long delete(Cell deleteCell) {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    long s = 0;<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    Cell toAdd = maybeCloneWithAllocator(deleteCell);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    s += heapSizeChange(toAdd, addToCellSet(toAdd));<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    timeRangeTracker.includeTimestamp(toAdd);<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    this.size.addAndGet(s);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    return s;<a name="line.336"></a>
+<span class="sourceLineNo">337</span>  }<a name="line.337"></a>
+<span class="sourceLineNo">338</span><a name="line.338"></a>
+<span class="sourceLineNo">339</span>  /**<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   * @param cell Find the row that comes after this one.  If null, we return the<a name="line.340"></a>
+<span class="sourceLineNo">341</span>   * first.<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   * @return Next row or null if none found.<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   */<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  Cell getNextRow(final Cell cell) {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    return getLowest(getNextRow(cell, this.cellSet), getNextRow(cell, this.snapshot));<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>   * @param a<a name="line.349"></a>
+<span class="sourceLineNo">350</span>   * @param b<a name="line.350"></a>
+<span class="sourceLineNo">351</span>   * @return Return lowest of a or b or null if both a and b are null<a name="line.351"></a>
+<span class="sourceLineNo">352</span>   */<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  private Cell getLowest(final Cell a, final Cell b) {<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    if (a == null) {<a name="line.354"></a>
+<span class="sourceLineNo">355</span>      return b;<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    }<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    if (b == null) {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      return a;<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    }<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    return comparator.compareRows(a, b) &lt;= 0? a: b;<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  }<a name="line.361"></a>
+<span class="sourceLineNo">362</span><a name="line.362"></a>
+<span class="sourceLineNo">363</span>  /*<a name="line.363"></a>
+<span class="sourceLineNo">364</span>   * @param key Find row that follows this one.  If null, return first.<a name="line.364"></a>
+<span class="sourceLineNo">365</span>   * @param map Set to look in for a row beyond &lt;code&gt;row&lt;/code&gt;.<a name="line.365"></a>
+<span class="sourceLineNo">366</span>   * @return Next row or null if none found.  If one found, will be a new<a name="line.366"></a>
+<span class="sourceLineNo">367</span>   * KeyValue -- can be destroyed by subsequent calls to this method.<a name="line.367"></a>
+<span class="sourceLineNo">368</span>   */<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  private Cell getNextRow(final Cell key,<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      final NavigableSet&lt;Cell&gt; set) {<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    Cell result = null;<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    SortedSet&lt;Cell&gt; tail = key == null? set: set.tailSet(key);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    // Iterate until we fall into the next row; i.e. move off current row<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    for (Cell cell: tail) {<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      if (comparator.compareRows(cell, key) &lt;= 0)<a name="line.375"></a>
+<span class="sourceLineNo">376</span>        continue;<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      // Note: Not suppressing deletes or expired cells.  Needs to be handled<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      // by higher up functions.<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      result = cell;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>      break;<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    }<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    return result;<a name="line.382"></a>
+<span class="sourceLineNo">383</span>  }<a name="line.383"></a>
+<span class="sourceLineNo">384</span><a name="line.384"></a>
+<span class="sourceLineNo">385</span>  /**<a name="line.385"></a>
+<span class="sourceLineNo">386</span>   * Only used by tests. TODO: Remove<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   *<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   * Given the specs of a column, update it, first by inserting a new record,<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   * then removing the old one.  Since there is only 1 KeyValue involved, the memstoreTS<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   * will be set to 0, thus ensuring that they instantly appear to anyone. The underlying<a name="line.390"></a>
+<span class="sourceLineNo">391</span>   * store will ensure that the insert/delete each are atomic. A scanner/reader will either<a name="line.391"></a>
+<span class="sourceLineNo">392</span>   * get the new value, or the old value and all readers will eventually only see the new<a name="line.392"></a>
+<span class="sourceLineNo">393</span>   * value after the old was removed.<a name="line.393"></a>
+<span class="sourceLineNo">394</span>   *<a name="line.394"></a>
+<span class="sourceLineNo">395</span>   * @param row<a name="line.395"></a>
+<span class="sourceLineNo">396</span>   * @param family<a name="line.396"></a>
+<span class="sourceLineNo">397</span>   * @param qualifier<a name="line.397"></a>
+<span class="sourceLineNo">398</span>   * @param newValue<a name="line.398"></a>
+<span class="sourceLineNo">399</span>   * @param now<a name="line.399"></a>
+<span class="sourceLineNo">400</span>   * @return  Timestamp<a name="line.400"></a>
+<span class="sourceLineNo">401</span>   */<a name="line.401"></a>
+<span class="sourceLineNo">402</span>  @Override<a name="line.402"></a>
+<span class="sourceLineNo">403</span>  public long updateColumnValue(byte[] row,<a name="line.403"></a>
+<span class="sourceLineNo">404</span>                                byte[] family,<a name="line.404"></a>
+<span class="sourceLineNo">405</span>                                byte[] qualifier,<a name="line.405"></a>
+<span class="sourceLineNo">406</span>                                long newValue,<a name="line.406"></a>
+<span class="sourceLineNo">407</span>                                long now) {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    Cell firstCell = KeyValueUtil.createFirstOnRow(row, family, qualifier);<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    // Is there a Cell in 'snapshot' with the same TS? If so, upgrade the timestamp a bit.<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    SortedSet&lt;Cell&gt; snSs = snapshot.tailSet(firstCell);<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    if (!snSs.isEmpty()) {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      Cell snc = snSs.first();<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      // is there a matching Cell in the snapshot?<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      if (CellUtil.matchingRow(snc, firstCell) &amp;&amp; CellUtil.matchingQualifier(snc, firstCell)) {<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        if (snc.getTimestamp() == now) {<a name="line.415"></a>
+<span class="sourceLineNo">416</span>          // poop,<a name="line.416"></a>
+<span class="sourceLineNo">417</span>          now += 1;<a name="line.417"></a>
+<span class="sourceLineNo">418</span>        }<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      }<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>    // logic here: the new ts MUST be at least 'now'. But it could be larger if necessary.<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    // But the tim

<TRUNCATED>

[04/24] hbase git commit: Published site at 0d72849581c1e5a50a2aa7757b909e5531b8d12c.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase/blob/2fa570dd/xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html b/xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html
index 59ebc09..48acf8c 100644
--- a/xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html
+++ b/xref/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html
@@ -170,513 +170,518 @@
 <a class="jxr_linenumber" name="160" href="#160">160</a>   <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html">ScanQueryMatcher</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html">Scan</a> scan, <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html">ScanInfo</a> scanInfo, NavigableSet&lt;byte[]&gt; columns,
 <a class="jxr_linenumber" name="161" href="#161">161</a>       <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanType.html">ScanType</a> scanType, <strong class="jxr_keyword">long</strong> readPointToUse, <strong class="jxr_keyword">long</strong> earliestPutTs, <strong class="jxr_keyword">long</strong> oldestUnexpiredTS,
 <a class="jxr_linenumber" name="162" href="#162">162</a>       <strong class="jxr_keyword">long</strong> now, <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.html">RegionCoprocessorHost</a> regionCoprocessorHost) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="163" href="#163">163</a>     <strong class="jxr_keyword">this</strong>.tr = scan.getTimeRange();
-<a class="jxr_linenumber" name="164" href="#164">164</a>     <strong class="jxr_keyword">this</strong>.rowComparator = scanInfo.getComparator();
-<a class="jxr_linenumber" name="165" href="#165">165</a>     <strong class="jxr_keyword">this</strong>.regionCoprocessorHost = regionCoprocessorHost;
-<a class="jxr_linenumber" name="166" href="#166">166</a>     <strong class="jxr_keyword">this</strong>.deletes =  instantiateDeleteTracker();
-<a class="jxr_linenumber" name="167" href="#167">167</a>     <strong class="jxr_keyword">this</strong>.stopRow = scan.getStopRow();
-<a class="jxr_linenumber" name="168" href="#168">168</a>     <strong class="jxr_keyword">this</strong>.startKey = CellUtil.createFirstDeleteFamilyCellOnRow(scan.getStartRow(),
-<a class="jxr_linenumber" name="169" href="#169">169</a>         scanInfo.getFamily());
-<a class="jxr_linenumber" name="170" href="#170">170</a>     <strong class="jxr_keyword">this</strong>.filter = scan.getFilter();
-<a class="jxr_linenumber" name="171" href="#171">171</a>     <strong class="jxr_keyword">this</strong>.earliestPutTs = earliestPutTs;
-<a class="jxr_linenumber" name="172" href="#172">172</a>     <strong class="jxr_keyword">this</strong>.oldestUnexpiredTS = oldestUnexpiredTS;
-<a class="jxr_linenumber" name="173" href="#173">173</a>     <strong class="jxr_keyword">this</strong>.now = now;
-<a class="jxr_linenumber" name="174" href="#174">174</a> 
-<a class="jxr_linenumber" name="175" href="#175">175</a>     <strong class="jxr_keyword">this</strong>.maxReadPointToTrackVersions = readPointToUse;
-<a class="jxr_linenumber" name="176" href="#176">176</a>     <strong class="jxr_keyword">this</strong>.timeToPurgeDeletes = scanInfo.getTimeToPurgeDeletes();
-<a class="jxr_linenumber" name="177" href="#177">177</a>     <strong class="jxr_keyword">this</strong>.ttl = oldestUnexpiredTS;
-<a class="jxr_linenumber" name="178" href="#178">178</a> 
-<a class="jxr_linenumber" name="179" href="#179">179</a>     <em class="jxr_comment">/*<em class="jxr_comment"> how to deal with deletes */</em></em>
-<a class="jxr_linenumber" name="180" href="#180">180</a>     <strong class="jxr_keyword">this</strong>.isUserScan = scanType == ScanType.USER_SCAN;
-<a class="jxr_linenumber" name="181" href="#181">181</a>     <em class="jxr_comment">// keep deleted cells: if compaction or raw scan</em>
-<a class="jxr_linenumber" name="182" href="#182">182</a>     <strong class="jxr_keyword">this</strong>.keepDeletedCells = scan.isRaw() ? KeepDeletedCells.TRUE :
-<a class="jxr_linenumber" name="183" href="#183">183</a>       isUserScan ? KeepDeletedCells.FALSE : scanInfo.getKeepDeletedCells();
-<a class="jxr_linenumber" name="184" href="#184">184</a>     <em class="jxr_comment">// retain deletes: if minor compaction or raw scanisDone</em>
-<a class="jxr_linenumber" name="185" href="#185">185</a>     <strong class="jxr_keyword">this</strong>.retainDeletesInOutput = scanType == ScanType.COMPACT_RETAIN_DELETES || scan.isRaw();
-<a class="jxr_linenumber" name="186" href="#186">186</a>     <em class="jxr_comment">// seePastDeleteMarker: user initiated scans</em>
-<a class="jxr_linenumber" name="187" href="#187">187</a>     <strong class="jxr_keyword">this</strong>.seePastDeleteMarkers =
-<a class="jxr_linenumber" name="188" href="#188">188</a>         scanInfo.getKeepDeletedCells() != KeepDeletedCells.FALSE &amp;&amp; isUserScan;
-<a class="jxr_linenumber" name="189" href="#189">189</a> 
-<a class="jxr_linenumber" name="190" href="#190">190</a>     <strong class="jxr_keyword">int</strong> maxVersions =
-<a class="jxr_linenumber" name="191" href="#191">191</a>         scan.isRaw() ? scan.getMaxVersions() : Math.min(scan.getMaxVersions(),
-<a class="jxr_linenumber" name="192" href="#192">192</a>           scanInfo.getMaxVersions());
-<a class="jxr_linenumber" name="193" href="#193">193</a> 
-<a class="jxr_linenumber" name="194" href="#194">194</a>     <em class="jxr_comment">// Single branch to deal with two types of reads (columns vs all in family)</em>
-<a class="jxr_linenumber" name="195" href="#195">195</a>     <strong class="jxr_keyword">if</strong> (columns == <strong class="jxr_keyword">null</strong> || columns.size() == 0) {
-<a class="jxr_linenumber" name="196" href="#196">196</a>       <em class="jxr_comment">// there is always a null column in the wildcard column query.</em>
-<a class="jxr_linenumber" name="197" href="#197">197</a>       hasNullColumn = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="163" href="#163">163</a>     <a href="../../../../../org/apache/hadoop/hbase/io/TimeRange.html">TimeRange</a> timeRange = scan.getColumnFamilyTimeRange().get(scanInfo.getFamily());
+<a class="jxr_linenumber" name="164" href="#164">164</a>     <strong class="jxr_keyword">if</strong> (timeRange == <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="165" href="#165">165</a>       <strong class="jxr_keyword">this</strong>.tr = scan.getTimeRange();
+<a class="jxr_linenumber" name="166" href="#166">166</a>     } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="167" href="#167">167</a>       <strong class="jxr_keyword">this</strong>.tr = timeRange;
+<a class="jxr_linenumber" name="168" href="#168">168</a>     }
+<a class="jxr_linenumber" name="169" href="#169">169</a>     <strong class="jxr_keyword">this</strong>.rowComparator = scanInfo.getComparator();
+<a class="jxr_linenumber" name="170" href="#170">170</a>     <strong class="jxr_keyword">this</strong>.regionCoprocessorHost = regionCoprocessorHost;
+<a class="jxr_linenumber" name="171" href="#171">171</a>     <strong class="jxr_keyword">this</strong>.deletes =  instantiateDeleteTracker();
+<a class="jxr_linenumber" name="172" href="#172">172</a>     <strong class="jxr_keyword">this</strong>.stopRow = scan.getStopRow();
+<a class="jxr_linenumber" name="173" href="#173">173</a>     <strong class="jxr_keyword">this</strong>.startKey = CellUtil.createFirstDeleteFamilyCellOnRow(scan.getStartRow(),
+<a class="jxr_linenumber" name="174" href="#174">174</a>         scanInfo.getFamily());
+<a class="jxr_linenumber" name="175" href="#175">175</a>     <strong class="jxr_keyword">this</strong>.filter = scan.getFilter();
+<a class="jxr_linenumber" name="176" href="#176">176</a>     <strong class="jxr_keyword">this</strong>.earliestPutTs = earliestPutTs;
+<a class="jxr_linenumber" name="177" href="#177">177</a>     <strong class="jxr_keyword">this</strong>.oldestUnexpiredTS = oldestUnexpiredTS;
+<a class="jxr_linenumber" name="178" href="#178">178</a>     <strong class="jxr_keyword">this</strong>.now = now;
+<a class="jxr_linenumber" name="179" href="#179">179</a> 
+<a class="jxr_linenumber" name="180" href="#180">180</a>     <strong class="jxr_keyword">this</strong>.maxReadPointToTrackVersions = readPointToUse;
+<a class="jxr_linenumber" name="181" href="#181">181</a>     <strong class="jxr_keyword">this</strong>.timeToPurgeDeletes = scanInfo.getTimeToPurgeDeletes();
+<a class="jxr_linenumber" name="182" href="#182">182</a>     <strong class="jxr_keyword">this</strong>.ttl = oldestUnexpiredTS;
+<a class="jxr_linenumber" name="183" href="#183">183</a> 
+<a class="jxr_linenumber" name="184" href="#184">184</a>     <em class="jxr_comment">/*<em class="jxr_comment"> how to deal with deletes */</em></em>
+<a class="jxr_linenumber" name="185" href="#185">185</a>     <strong class="jxr_keyword">this</strong>.isUserScan = scanType == ScanType.USER_SCAN;
+<a class="jxr_linenumber" name="186" href="#186">186</a>     <em class="jxr_comment">// keep deleted cells: if compaction or raw scan</em>
+<a class="jxr_linenumber" name="187" href="#187">187</a>     <strong class="jxr_keyword">this</strong>.keepDeletedCells = scan.isRaw() ? KeepDeletedCells.TRUE :
+<a class="jxr_linenumber" name="188" href="#188">188</a>       isUserScan ? KeepDeletedCells.FALSE : scanInfo.getKeepDeletedCells();
+<a class="jxr_linenumber" name="189" href="#189">189</a>     <em class="jxr_comment">// retain deletes: if minor compaction or raw scanisDone</em>
+<a class="jxr_linenumber" name="190" href="#190">190</a>     <strong class="jxr_keyword">this</strong>.retainDeletesInOutput = scanType == ScanType.COMPACT_RETAIN_DELETES || scan.isRaw();
+<a class="jxr_linenumber" name="191" href="#191">191</a>     <em class="jxr_comment">// seePastDeleteMarker: user initiated scans</em>
+<a class="jxr_linenumber" name="192" href="#192">192</a>     <strong class="jxr_keyword">this</strong>.seePastDeleteMarkers =
+<a class="jxr_linenumber" name="193" href="#193">193</a>         scanInfo.getKeepDeletedCells() != KeepDeletedCells.FALSE &amp;&amp; isUserScan;
+<a class="jxr_linenumber" name="194" href="#194">194</a> 
+<a class="jxr_linenumber" name="195" href="#195">195</a>     <strong class="jxr_keyword">int</strong> maxVersions =
+<a class="jxr_linenumber" name="196" href="#196">196</a>         scan.isRaw() ? scan.getMaxVersions() : Math.min(scan.getMaxVersions(),
+<a class="jxr_linenumber" name="197" href="#197">197</a>           scanInfo.getMaxVersions());
 <a class="jxr_linenumber" name="198" href="#198">198</a> 
-<a class="jxr_linenumber" name="199" href="#199">199</a>       <em class="jxr_comment">// use a specialized scan for wildcard column tracker.</em>
-<a class="jxr_linenumber" name="200" href="#200">200</a>       <strong class="jxr_keyword">this</strong>.columns = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanWildcardColumnTracker.html">ScanWildcardColumnTracker</a>(
-<a class="jxr_linenumber" name="201" href="#201">201</a>           scanInfo.getMinVersions(), maxVersions, oldestUnexpiredTS);
-<a class="jxr_linenumber" name="202" href="#202">202</a>     } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="203" href="#203">203</a>       <em class="jxr_comment">// whether there is null column in the explicit column query</em>
-<a class="jxr_linenumber" name="204" href="#204">204</a>       hasNullColumn = (columns.first().length == 0);
-<a class="jxr_linenumber" name="205" href="#205">205</a> 
-<a class="jxr_linenumber" name="206" href="#206">206</a>       <em class="jxr_comment">// We can share the ExplicitColumnTracker, diff is we reset</em>
-<a class="jxr_linenumber" name="207" href="#207">207</a>       <em class="jxr_comment">// between rows, not between storefiles.</em>
-<a class="jxr_linenumber" name="208" href="#208">208</a>       <strong class="jxr_keyword">this</strong>.columns = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/ExplicitColumnTracker.html">ExplicitColumnTracker</a>(columns, scanInfo.getMinVersions(), maxVersions,
-<a class="jxr_linenumber" name="209" href="#209">209</a>           oldestUnexpiredTS);
-<a class="jxr_linenumber" name="210" href="#210">210</a>     }
-<a class="jxr_linenumber" name="211" href="#211">211</a>     <strong class="jxr_keyword">this</strong>.isReversed = scan.isReversed();
-<a class="jxr_linenumber" name="212" href="#212">212</a>   }
-<a class="jxr_linenumber" name="213" href="#213">213</a> 
-<a class="jxr_linenumber" name="214" href="#214">214</a>   <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/DeleteTracker.html">DeleteTracker</a> instantiateDeleteTracker() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="215" href="#215">215</a>     <a href="../../../../../org/apache/hadoop/hbase/regionserver/DeleteTracker.html">DeleteTracker</a> tracker = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanDeleteTracker.html">ScanDeleteTracker</a>();
-<a class="jxr_linenumber" name="216" href="#216">216</a>     <strong class="jxr_keyword">if</strong> (regionCoprocessorHost != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="217" href="#217">217</a>       tracker = regionCoprocessorHost.postInstantiateDeleteTracker(tracker);
-<a class="jxr_linenumber" name="218" href="#218">218</a>     }
-<a class="jxr_linenumber" name="219" href="#219">219</a>     <strong class="jxr_keyword">return</strong> tracker;
-<a class="jxr_linenumber" name="220" href="#220">220</a>   }
-<a class="jxr_linenumber" name="221" href="#221">221</a> 
-<a class="jxr_linenumber" name="222" href="#222">222</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="223" href="#223">223</a> <em class="jxr_javadoccomment">   * Construct a QueryMatcher for a scan that drop deletes from a limited range of rows.</em>
-<a class="jxr_linenumber" name="224" href="#224">224</a> <em class="jxr_javadoccomment">   * @param scan</em>
-<a class="jxr_linenumber" name="225" href="#225">225</a> <em class="jxr_javadoccomment">   * @param scanInfo The store's immutable scan info</em>
-<a class="jxr_linenumber" name="226" href="#226">226</a> <em class="jxr_javadoccomment">   * @param columns</em>
-<a class="jxr_linenumber" name="227" href="#227">227</a> <em class="jxr_javadoccomment">   * @param earliestPutTs Earliest put seen in any of the store files.</em>
-<a class="jxr_linenumber" name="228" href="#228">228</a> <em class="jxr_javadoccomment">   * @param oldestUnexpiredTS the oldest timestamp we are interested in, based on TTL</em>
-<a class="jxr_linenumber" name="229" href="#229">229</a> <em class="jxr_javadoccomment">   * @param now the current server time</em>
-<a class="jxr_linenumber" name="230" href="#230">230</a> <em class="jxr_javadoccomment">   * @param dropDeletesFromRow The inclusive left bound of the range; can be EMPTY_START_ROW.</em>
-<a class="jxr_linenumber" name="231" href="#231">231</a> <em class="jxr_javadoccomment">   * @param dropDeletesToRow The exclusive right bound of the range; can be EMPTY_END_ROW.</em>
-<a class="jxr_linenumber" name="232" href="#232">232</a> <em class="jxr_javadoccomment">   * @param regionCoprocessorHost </em>
-<a class="jxr_linenumber" name="233" href="#233">233</a> <em class="jxr_javadoccomment">   * @throws IOException </em>
-<a class="jxr_linenumber" name="234" href="#234">234</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="235" href="#235">235</a>   <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html">ScanQueryMatcher</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html">Scan</a> scan, <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html">ScanInfo</a> scanInfo, NavigableSet&lt;byte[]&gt; columns,
-<a class="jxr_linenumber" name="236" href="#236">236</a>       <strong class="jxr_keyword">long</strong> readPointToUse, <strong class="jxr_keyword">long</strong> earliestPutTs, <strong class="jxr_keyword">long</strong> oldestUnexpiredTS, <strong class="jxr_keyword">long</strong> now,
-<a class="jxr_linenumber" name="237" href="#237">237</a>       byte[] dropDeletesFromRow, byte[] dropDeletesToRow,
-<a class="jxr_linenumber" name="238" href="#238">238</a>       <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.html">RegionCoprocessorHost</a> regionCoprocessorHost) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="239" href="#239">239</a>     <strong class="jxr_keyword">this</strong>(scan, scanInfo, columns, ScanType.COMPACT_RETAIN_DELETES, readPointToUse, earliestPutTs,
-<a class="jxr_linenumber" name="240" href="#240">240</a>         oldestUnexpiredTS, now, regionCoprocessorHost);
-<a class="jxr_linenumber" name="241" href="#241">241</a>     Preconditions.checkArgument((dropDeletesFromRow != <strong class="jxr_keyword">null</strong>) &amp;&amp; (dropDeletesToRow != <strong class="jxr_keyword">null</strong>));
-<a class="jxr_linenumber" name="242" href="#242">242</a>     <strong class="jxr_keyword">this</strong>.dropDeletesFromRow = dropDeletesFromRow;
-<a class="jxr_linenumber" name="243" href="#243">243</a>     <strong class="jxr_keyword">this</strong>.dropDeletesToRow = dropDeletesToRow;
-<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>   <em class="jxr_comment">/*</em>
-<a class="jxr_linenumber" name="247" href="#247">247</a> <em class="jxr_comment">   * Constructor for tests</em>
-<a class="jxr_linenumber" name="248" href="#248">248</a> <em class="jxr_comment">   */</em>
-<a class="jxr_linenumber" name="249" href="#249">249</a>   <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html">ScanQueryMatcher</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html">Scan</a> scan, <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html">ScanInfo</a> scanInfo,
-<a class="jxr_linenumber" name="250" href="#250">250</a>       NavigableSet&lt;byte[]&gt; columns, <strong class="jxr_keyword">long</strong> oldestUnexpiredTS, <strong class="jxr_keyword">long</strong> now) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="251" href="#251">251</a>     <strong class="jxr_keyword">this</strong>(scan, scanInfo, columns, ScanType.USER_SCAN,
-<a class="jxr_linenumber" name="252" href="#252">252</a>           Long.MAX_VALUE, <em class="jxr_comment">/*<em class="jxr_comment"> max Readpoint to track versions */</em></em>
-<a class="jxr_linenumber" name="253" href="#253">253</a>         HConstants.LATEST_TIMESTAMP, oldestUnexpiredTS, now, <strong class="jxr_keyword">null</strong>);
-<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>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="257" href="#257">257</a> <em class="jxr_javadoccomment">   *</em>
-<a class="jxr_linenumber" name="258" href="#258">258</a> <em class="jxr_javadoccomment">   * @return  whether there is an null column in the query</em>
-<a class="jxr_linenumber" name="259" href="#259">259</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="260" href="#260">260</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> hasNullColumnInQuery() {
-<a class="jxr_linenumber" name="261" href="#261">261</a>     <strong class="jxr_keyword">return</strong> hasNullColumn;
-<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>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="265" href="#265">265</a> <em class="jxr_javadoccomment">   * Determines if the caller should do one of several things:</em>
-<a class="jxr_linenumber" name="266" href="#266">266</a> <em class="jxr_javadoccomment">   * - seek/skip to the next row (MatchCode.SEEK_NEXT_ROW)</em>
-<a class="jxr_linenumber" name="267" href="#267">267</a> <em class="jxr_javadoccomment">   * - seek/skip to the next column (MatchCode.SEEK_NEXT_COL)</em>
-<a class="jxr_linenumber" name="268" href="#268">268</a> <em class="jxr_javadoccomment">   * - include the current KeyValue (MatchCode.INCLUDE)</em>
-<a class="jxr_linenumber" name="269" href="#269">269</a> <em class="jxr_javadoccomment">   * - ignore the current KeyValue (MatchCode.SKIP)</em>
-<a class="jxr_linenumber" name="270" href="#270">270</a> <em class="jxr_javadoccomment">   * - got to the next row (MatchCode.DONE)</em>
-<a class="jxr_linenumber" name="271" href="#271">271</a> <em class="jxr_javadoccomment">   *</em>
-<a class="jxr_linenumber" name="272" href="#272">272</a> <em class="jxr_javadoccomment">   * @param cell KeyValue to check</em>
-<a class="jxr_linenumber" name="273" href="#273">273</a> <em class="jxr_javadoccomment">   * @return The match code instance.</em>
-<a class="jxr_linenumber" name="274" href="#274">274</a> <em class="jxr_javadoccomment">   * @throws IOException in case there is an internal consistency problem</em>
-<a class="jxr_linenumber" name="275" href="#275">275</a> <em class="jxr_javadoccomment">   *      caused by a data corruption.</em>
-<a class="jxr_linenumber" name="276" href="#276">276</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="277" href="#277">277</a>   <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html">MatchCode</a> match(<a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> cell) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="278" href="#278">278</a>     <strong class="jxr_keyword">if</strong> (filter != <strong class="jxr_keyword">null</strong> &amp;&amp; filter.filterAllRemaining()) {
-<a class="jxr_linenumber" name="279" href="#279">279</a>       <strong class="jxr_keyword">return</strong> MatchCode.DONE_SCAN;
-<a class="jxr_linenumber" name="280" href="#280">280</a>     }
-<a class="jxr_linenumber" name="281" href="#281">281</a>     <strong class="jxr_keyword">int</strong> ret = <strong class="jxr_keyword">this</strong>.rowComparator.compareRows(curCell, cell);
-<a class="jxr_linenumber" name="282" href="#282">282</a>     <strong class="jxr_keyword">if</strong> (!<strong class="jxr_keyword">this</strong>.isReversed) {
-<a class="jxr_linenumber" name="283" href="#283">283</a>       <strong class="jxr_keyword">if</strong> (ret &lt;= -1) {
-<a class="jxr_linenumber" name="284" href="#284">284</a>         <strong class="jxr_keyword">return</strong> MatchCode.DONE;
-<a class="jxr_linenumber" name="285" href="#285">285</a>       } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (ret &gt;= 1) {
-<a class="jxr_linenumber" name="286" href="#286">286</a>         <em class="jxr_comment">// could optimize this, if necessary?</em>
-<a class="jxr_linenumber" name="287" href="#287">287</a>         <em class="jxr_comment">// Could also be called SEEK_TO_CURRENT_ROW, but this</em>
-<a class="jxr_linenumber" name="288" href="#288">288</a>         <em class="jxr_comment">// should be rare/never happens.</em>
-<a class="jxr_linenumber" name="289" href="#289">289</a>         <strong class="jxr_keyword">return</strong> MatchCode.SEEK_NEXT_ROW;
-<a class="jxr_linenumber" name="290" href="#290">290</a>       }
-<a class="jxr_linenumber" name="291" href="#291">291</a>     } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="292" href="#292">292</a>       <strong class="jxr_keyword">if</strong> (ret &lt;= -1) {
-<a class="jxr_linenumber" name="293" href="#293">293</a>         <strong class="jxr_keyword">return</strong> MatchCode.SEEK_NEXT_ROW;
-<a class="jxr_linenumber" name="294" href="#294">294</a>       } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (ret &gt;= 1) {
-<a class="jxr_linenumber" name="295" href="#295">295</a>         <strong class="jxr_keyword">return</strong> MatchCode.DONE;
-<a class="jxr_linenumber" name="296" href="#296">296</a>       }
-<a class="jxr_linenumber" name="297" href="#297">297</a>     }
-<a class="jxr_linenumber" name="298" href="#298">298</a> 
-<a class="jxr_linenumber" name="299" href="#299">299</a>     <em class="jxr_comment">// optimize case.</em>
-<a class="jxr_linenumber" name="300" href="#300">300</a>     <strong class="jxr_keyword">if</strong> (<strong class="jxr_keyword">this</strong>.stickyNextRow)
-<a class="jxr_linenumber" name="301" href="#301">301</a>       <strong class="jxr_keyword">return</strong> MatchCode.SEEK_NEXT_ROW;
-<a class="jxr_linenumber" name="302" href="#302">302</a> 
-<a class="jxr_linenumber" name="303" href="#303">303</a>     <strong class="jxr_keyword">if</strong> (<strong class="jxr_keyword">this</strong>.columns.done()) {
-<a class="jxr_linenumber" name="304" href="#304">304</a>       stickyNextRow = <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="305" href="#305">305</a>       <strong class="jxr_keyword">return</strong> MatchCode.SEEK_NEXT_ROW;
-<a class="jxr_linenumber" name="306" href="#306">306</a>     }
+<a class="jxr_linenumber" name="199" href="#199">199</a>     <em class="jxr_comment">// Single branch to deal with two types of reads (columns vs all in family)</em>
+<a class="jxr_linenumber" name="200" href="#200">200</a>     <strong class="jxr_keyword">if</strong> (columns == <strong class="jxr_keyword">null</strong> || columns.size() == 0) {
+<a class="jxr_linenumber" name="201" href="#201">201</a>       <em class="jxr_comment">// there is always a null column in the wildcard column query.</em>
+<a class="jxr_linenumber" name="202" href="#202">202</a>       hasNullColumn = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="203" href="#203">203</a> 
+<a class="jxr_linenumber" name="204" href="#204">204</a>       <em class="jxr_comment">// use a specialized scan for wildcard column tracker.</em>
+<a class="jxr_linenumber" name="205" href="#205">205</a>       <strong class="jxr_keyword">this</strong>.columns = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanWildcardColumnTracker.html">ScanWildcardColumnTracker</a>(
+<a class="jxr_linenumber" name="206" href="#206">206</a>           scanInfo.getMinVersions(), maxVersions, oldestUnexpiredTS);
+<a class="jxr_linenumber" name="207" href="#207">207</a>     } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="208" href="#208">208</a>       <em class="jxr_comment">// whether there is null column in the explicit column query</em>
+<a class="jxr_linenumber" name="209" href="#209">209</a>       hasNullColumn = (columns.first().length == 0);
+<a class="jxr_linenumber" name="210" href="#210">210</a> 
+<a class="jxr_linenumber" name="211" href="#211">211</a>       <em class="jxr_comment">// We can share the ExplicitColumnTracker, diff is we reset</em>
+<a class="jxr_linenumber" name="212" href="#212">212</a>       <em class="jxr_comment">// between rows, not between storefiles.</em>
+<a class="jxr_linenumber" name="213" href="#213">213</a>       <strong class="jxr_keyword">this</strong>.columns = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/ExplicitColumnTracker.html">ExplicitColumnTracker</a>(columns, scanInfo.getMinVersions(), maxVersions,
+<a class="jxr_linenumber" name="214" href="#214">214</a>           oldestUnexpiredTS);
+<a class="jxr_linenumber" name="215" href="#215">215</a>     }
+<a class="jxr_linenumber" name="216" href="#216">216</a>     <strong class="jxr_keyword">this</strong>.isReversed = scan.isReversed();
+<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>   <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/DeleteTracker.html">DeleteTracker</a> instantiateDeleteTracker() <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="220" href="#220">220</a>     <a href="../../../../../org/apache/hadoop/hbase/regionserver/DeleteTracker.html">DeleteTracker</a> tracker = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanDeleteTracker.html">ScanDeleteTracker</a>();
+<a class="jxr_linenumber" name="221" href="#221">221</a>     <strong class="jxr_keyword">if</strong> (regionCoprocessorHost != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="222" href="#222">222</a>       tracker = regionCoprocessorHost.postInstantiateDeleteTracker(tracker);
+<a class="jxr_linenumber" name="223" href="#223">223</a>     }
+<a class="jxr_linenumber" name="224" href="#224">224</a>     <strong class="jxr_keyword">return</strong> tracker;
+<a class="jxr_linenumber" name="225" href="#225">225</a>   }
+<a class="jxr_linenumber" name="226" href="#226">226</a> 
+<a class="jxr_linenumber" name="227" href="#227">227</a>   <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="228" href="#228">228</a> <em class="jxr_javadoccomment">   * Construct a QueryMatcher for a scan that drop deletes from a limited range of rows.</em>
+<a class="jxr_linenumber" name="229" href="#229">229</a> <em class="jxr_javadoccomment">   * @param scan</em>
+<a class="jxr_linenumber" name="230" href="#230">230</a> <em class="jxr_javadoccomment">   * @param scanInfo The store's immutable scan info</em>
+<a class="jxr_linenumber" name="231" href="#231">231</a> <em class="jxr_javadoccomment">   * @param columns</em>
+<a class="jxr_linenumber" name="232" href="#232">232</a> <em class="jxr_javadoccomment">   * @param earliestPutTs Earliest put seen in any of the store files.</em>
+<a class="jxr_linenumber" name="233" href="#233">233</a> <em class="jxr_javadoccomment">   * @param oldestUnexpiredTS the oldest timestamp we are interested in, based on TTL</em>
+<a class="jxr_linenumber" name="234" href="#234">234</a> <em class="jxr_javadoccomment">   * @param now the current server time</em>
+<a class="jxr_linenumber" name="235" href="#235">235</a> <em class="jxr_javadoccomment">   * @param dropDeletesFromRow The inclusive left bound of the range; can be EMPTY_START_ROW.</em>
+<a class="jxr_linenumber" name="236" href="#236">236</a> <em class="jxr_javadoccomment">   * @param dropDeletesToRow The exclusive right bound of the range; can be EMPTY_END_ROW.</em>
+<a class="jxr_linenumber" name="237" href="#237">237</a> <em class="jxr_javadoccomment">   * @param regionCoprocessorHost </em>
+<a class="jxr_linenumber" name="238" href="#238">238</a> <em class="jxr_javadoccomment">   * @throws IOException </em>
+<a class="jxr_linenumber" name="239" href="#239">239</a> <em class="jxr_javadoccomment">   */</em>
+<a class="jxr_linenumber" name="240" href="#240">240</a>   <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html">ScanQueryMatcher</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html">Scan</a> scan, <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html">ScanInfo</a> scanInfo, NavigableSet&lt;byte[]&gt; columns,
+<a class="jxr_linenumber" name="241" href="#241">241</a>       <strong class="jxr_keyword">long</strong> readPointToUse, <strong class="jxr_keyword">long</strong> earliestPutTs, <strong class="jxr_keyword">long</strong> oldestUnexpiredTS, <strong class="jxr_keyword">long</strong> now,
+<a class="jxr_linenumber" name="242" href="#242">242</a>       byte[] dropDeletesFromRow, byte[] dropDeletesToRow,
+<a class="jxr_linenumber" name="243" href="#243">243</a>       <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.html">RegionCoprocessorHost</a> regionCoprocessorHost) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="244" href="#244">244</a>     <strong class="jxr_keyword">this</strong>(scan, scanInfo, columns, ScanType.COMPACT_RETAIN_DELETES, readPointToUse, earliestPutTs,
+<a class="jxr_linenumber" name="245" href="#245">245</a>         oldestUnexpiredTS, now, regionCoprocessorHost);
+<a class="jxr_linenumber" name="246" href="#246">246</a>     Preconditions.checkArgument((dropDeletesFromRow != <strong class="jxr_keyword">null</strong>) &amp;&amp; (dropDeletesToRow != <strong class="jxr_keyword">null</strong>));
+<a class="jxr_linenumber" name="247" href="#247">247</a>     <strong class="jxr_keyword">this</strong>.dropDeletesFromRow = dropDeletesFromRow;
+<a class="jxr_linenumber" name="248" href="#248">248</a>     <strong class="jxr_keyword">this</strong>.dropDeletesToRow = dropDeletesToRow;
+<a class="jxr_linenumber" name="249" href="#249">249</a>   }
+<a class="jxr_linenumber" name="250" href="#250">250</a> 
+<a class="jxr_linenumber" name="251" href="#251">251</a>   <em class="jxr_comment">/*</em>
+<a class="jxr_linenumber" name="252" href="#252">252</a> <em class="jxr_comment">   * Constructor for tests</em>
+<a class="jxr_linenumber" name="253" href="#253">253</a> <em class="jxr_comment">   */</em>
+<a class="jxr_linenumber" name="254" href="#254">254</a>   <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html">ScanQueryMatcher</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html">Scan</a> scan, <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html">ScanInfo</a> scanInfo,
+<a class="jxr_linenumber" name="255" href="#255">255</a>       NavigableSet&lt;byte[]&gt; columns, <strong class="jxr_keyword">long</strong> oldestUnexpiredTS, <strong class="jxr_keyword">long</strong> now) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="256" href="#256">256</a>     <strong class="jxr_keyword">this</strong>(scan, scanInfo, columns, ScanType.USER_SCAN,
+<a class="jxr_linenumber" name="257" href="#257">257</a>           Long.MAX_VALUE, <em class="jxr_comment">/*<em class="jxr_comment"> max Readpoint to track versions */</em></em>
+<a class="jxr_linenumber" name="258" href="#258">258</a>         HConstants.LATEST_TIMESTAMP, oldestUnexpiredTS, now, <strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="259" href="#259">259</a>   }
+<a class="jxr_linenumber" name="260" href="#260">260</a> 
+<a class="jxr_linenumber" name="261" href="#261">261</a>   <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="262" href="#262">262</a> <em class="jxr_javadoccomment">   *</em>
+<a class="jxr_linenumber" name="263" href="#263">263</a> <em class="jxr_javadoccomment">   * @return  whether there is an null column in the query</em>
+<a class="jxr_linenumber" name="264" href="#264">264</a> <em class="jxr_javadoccomment">   */</em>
+<a class="jxr_linenumber" name="265" href="#265">265</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> hasNullColumnInQuery() {
+<a class="jxr_linenumber" name="266" href="#266">266</a>     <strong class="jxr_keyword">return</strong> hasNullColumn;
+<a class="jxr_linenumber" name="267" href="#267">267</a>   }
+<a class="jxr_linenumber" name="268" href="#268">268</a> 
+<a class="jxr_linenumber" name="269" href="#269">269</a>   <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="270" href="#270">270</a> <em class="jxr_javadoccomment">   * Determines if the caller should do one of several things:</em>
+<a class="jxr_linenumber" name="271" href="#271">271</a> <em class="jxr_javadoccomment">   * - seek/skip to the next row (MatchCode.SEEK_NEXT_ROW)</em>
+<a class="jxr_linenumber" name="272" href="#272">272</a> <em class="jxr_javadoccomment">   * - seek/skip to the next column (MatchCode.SEEK_NEXT_COL)</em>
+<a class="jxr_linenumber" name="273" href="#273">273</a> <em class="jxr_javadoccomment">   * - include the current KeyValue (MatchCode.INCLUDE)</em>
+<a class="jxr_linenumber" name="274" href="#274">274</a> <em class="jxr_javadoccomment">   * - ignore the current KeyValue (MatchCode.SKIP)</em>
+<a class="jxr_linenumber" name="275" href="#275">275</a> <em class="jxr_javadoccomment">   * - got to the next row (MatchCode.DONE)</em>
+<a class="jxr_linenumber" name="276" href="#276">276</a> <em class="jxr_javadoccomment">   *</em>
+<a class="jxr_linenumber" name="277" href="#277">277</a> <em class="jxr_javadoccomment">   * @param cell KeyValue to check</em>
+<a class="jxr_linenumber" name="278" href="#278">278</a> <em class="jxr_javadoccomment">   * @return The match code instance.</em>
+<a class="jxr_linenumber" name="279" href="#279">279</a> <em class="jxr_javadoccomment">   * @throws IOException in case there is an internal consistency problem</em>
+<a class="jxr_linenumber" name="280" href="#280">280</a> <em class="jxr_javadoccomment">   *      caused by a data corruption.</em>
+<a class="jxr_linenumber" name="281" href="#281">281</a> <em class="jxr_javadoccomment">   */</em>
+<a class="jxr_linenumber" name="282" href="#282">282</a>   <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html">MatchCode</a> match(<a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> cell) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="283" href="#283">283</a>       <strong class="jxr_keyword">if</strong> (filter != <strong class="jxr_keyword">null</strong> &amp;&amp; filter.filterAllRemaining()) {
+<a class="jxr_linenumber" name="284" href="#284">284</a>       <strong class="jxr_keyword">return</strong> MatchCode.DONE_SCAN;
+<a class="jxr_linenumber" name="285" href="#285">285</a>     }
+<a class="jxr_linenumber" name="286" href="#286">286</a>     <strong class="jxr_keyword">int</strong> ret = <strong class="jxr_keyword">this</strong>.rowComparator.compareRows(curCell, cell);
+<a class="jxr_linenumber" name="287" href="#287">287</a>     <strong class="jxr_keyword">if</strong> (!<strong class="jxr_keyword">this</strong>.isReversed) {
+<a class="jxr_linenumber" name="288" href="#288">288</a>       <strong class="jxr_keyword">if</strong> (ret &lt;= -1) {
+<a class="jxr_linenumber" name="289" href="#289">289</a>         <strong class="jxr_keyword">return</strong> MatchCode.DONE;
+<a class="jxr_linenumber" name="290" href="#290">290</a>       } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (ret &gt;= 1) {
+<a class="jxr_linenumber" name="291" href="#291">291</a>         <em class="jxr_comment">// could optimize this, if necessary?</em>
+<a class="jxr_linenumber" name="292" href="#292">292</a>         <em class="jxr_comment">// Could also be called SEEK_TO_CURRENT_ROW, but this</em>
+<a class="jxr_linenumber" name="293" href="#293">293</a>         <em class="jxr_comment">// should be rare/never happens.</em>
+<a class="jxr_linenumber" name="294" href="#294">294</a>         <strong class="jxr_keyword">return</strong> MatchCode.SEEK_NEXT_ROW;
+<a class="jxr_linenumber" name="295" href="#295">295</a>       }
+<a class="jxr_linenumber" name="296" href="#296">296</a>     } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="297" href="#297">297</a>       <strong class="jxr_keyword">if</strong> (ret &lt;= -1) {
+<a class="jxr_linenumber" name="298" href="#298">298</a>         <strong class="jxr_keyword">return</strong> MatchCode.SEEK_NEXT_ROW;
+<a class="jxr_linenumber" name="299" href="#299">299</a>       } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (ret &gt;= 1) {
+<a class="jxr_linenumber" name="300" href="#300">300</a>         <strong class="jxr_keyword">return</strong> MatchCode.DONE;
+<a class="jxr_linenumber" name="301" href="#301">301</a>       }
+<a class="jxr_linenumber" name="302" href="#302">302</a>     }
+<a class="jxr_linenumber" name="303" href="#303">303</a> 
+<a class="jxr_linenumber" name="304" href="#304">304</a>     <em class="jxr_comment">// optimize case.</em>
+<a class="jxr_linenumber" name="305" href="#305">305</a>     <strong class="jxr_keyword">if</strong> (<strong class="jxr_keyword">this</strong>.stickyNextRow)
+<a class="jxr_linenumber" name="306" href="#306">306</a>       <strong class="jxr_keyword">return</strong> MatchCode.SEEK_NEXT_ROW;
 <a class="jxr_linenumber" name="307" href="#307">307</a> 
-<a class="jxr_linenumber" name="308" href="#308">308</a>     <strong class="jxr_keyword">long</strong> timestamp = cell.getTimestamp();
-<a class="jxr_linenumber" name="309" href="#309">309</a>     <em class="jxr_comment">// check for early out based on timestamp alone</em>
-<a class="jxr_linenumber" name="310" href="#310">310</a>     <strong class="jxr_keyword">if</strong> (columns.isDone(timestamp)) {
-<a class="jxr_linenumber" name="311" href="#311">311</a>       <strong class="jxr_keyword">return</strong> columns.getNextRowOrNextColumn(cell);
-<a class="jxr_linenumber" name="312" href="#312">312</a>     }
-<a class="jxr_linenumber" name="313" href="#313">313</a>     <em class="jxr_comment">// check if the cell is expired by cell TTL</em>
-<a class="jxr_linenumber" name="314" href="#314">314</a>     <strong class="jxr_keyword">if</strong> (HStore.isCellTTLExpired(cell, <strong class="jxr_keyword">this</strong>.oldestUnexpiredTS, <strong class="jxr_keyword">this</strong>.now)) {
-<a class="jxr_linenumber" name="315" href="#315">315</a>       <strong class="jxr_keyword">return</strong> MatchCode.SKIP;
-<a class="jxr_linenumber" name="316" href="#316">316</a>     }    
-<a class="jxr_linenumber" name="317" href="#317">317</a> 
-<a class="jxr_linenumber" name="318" href="#318">318</a>     <em class="jxr_comment">/*</em>
-<a class="jxr_linenumber" name="319" href="#319">319</a> <em class="jxr_comment">     * The delete logic is pretty complicated now.</em>
-<a class="jxr_linenumber" name="320" href="#320">320</a> <em class="jxr_comment">     * This is corroborated by the following:</em>
-<a class="jxr_linenumber" name="321" href="#321">321</a> <em class="jxr_comment">     * 1. The store might be instructed to keep deleted rows around.</em>
-<a class="jxr_linenumber" name="322" href="#322">322</a> <em class="jxr_comment">     * 2. A scan can optionally see past a delete marker now.</em>
-<a class="jxr_linenumber" name="323" href="#323">323</a> <em class="jxr_comment">     * 3. If deleted rows are kept, we have to find out when we can</em>
-<a class="jxr_linenumber" name="324" href="#324">324</a> <em class="jxr_comment">     *    remove the delete markers.</em>
-<a class="jxr_linenumber" name="325" href="#325">325</a> <em class="jxr_comment">     * 4. Family delete markers are always first (regardless of their TS)</em>
-<a class="jxr_linenumber" name="326" href="#326">326</a> <em class="jxr_comment">     * 5. Delete markers should not be counted as version</em>
-<a class="jxr_linenumber" name="327" href="#327">327</a> <em class="jxr_comment">     * 6. Delete markers affect puts of the *same* TS</em>
-<a class="jxr_linenumber" name="328" href="#328">328</a> <em class="jxr_comment">     * 7. Delete marker need to be version counted together with puts</em>
-<a class="jxr_linenumber" name="329" href="#329">329</a> <em class="jxr_comment">     *    they affect</em>
-<a class="jxr_linenumber" name="330" href="#330">330</a> <em class="jxr_comment">     */</em>
-<a class="jxr_linenumber" name="331" href="#331">331</a>     byte typeByte = cell.getTypeByte();
-<a class="jxr_linenumber" name="332" href="#332">332</a>     <strong class="jxr_keyword">long</strong> mvccVersion = cell.getSequenceId();
-<a class="jxr_linenumber" name="333" href="#333">333</a>     <strong class="jxr_keyword">if</strong> (CellUtil.isDelete(cell)) {
-<a class="jxr_linenumber" name="334" href="#334">334</a>       <strong class="jxr_keyword">if</strong> (keepDeletedCells == KeepDeletedCells.FALSE
-<a class="jxr_linenumber" name="335" href="#335">335</a>           || (keepDeletedCells == KeepDeletedCells.TTL &amp;&amp; timestamp &lt; ttl)) {
-<a class="jxr_linenumber" name="336" href="#336">336</a>         <em class="jxr_comment">// first ignore delete markers if the scanner can do so, and the</em>
-<a class="jxr_linenumber" name="337" href="#337">337</a>         <em class="jxr_comment">// range does not include the marker</em>
-<a class="jxr_linenumber" name="338" href="#338">338</a>         <em class="jxr_comment">//</em>
-<a class="jxr_linenumber" name="339" href="#339">339</a>         <em class="jxr_comment">// during flushes and compactions also ignore delete markers newer</em>
-<a class="jxr_linenumber" name="340" href="#340">340</a>         <em class="jxr_comment">// than the readpoint of any open scanner, this prevents deleted</em>
-<a class="jxr_linenumber" name="341" href="#341">341</a>         <em class="jxr_comment">// rows that could still be seen by a scanner from being collected</em>
-<a class="jxr_linenumber" name="342" href="#342">342</a>         <strong class="jxr_keyword">boolean</strong> includeDeleteMarker = seePastDeleteMarkers ?
-<a class="jxr_linenumber" name="343" href="#343">343</a>             tr.withinTimeRange(timestamp) :
-<a class="jxr_linenumber" name="344" href="#344">344</a>             tr.withinOrAfterTimeRange(timestamp);
-<a class="jxr_linenumber" name="345" href="#345">345</a>         <strong class="jxr_keyword">if</strong> (includeDeleteMarker
-<a class="jxr_linenumber" name="346" href="#346">346</a>             &amp;&amp; mvccVersion &lt;= maxReadPointToTrackVersions) {
-<a class="jxr_linenumber" name="347" href="#347">347</a>           <strong class="jxr_keyword">this</strong>.deletes.add(cell);
-<a class="jxr_linenumber" name="348" href="#348">348</a>         }
-<a class="jxr_linenumber" name="349" href="#349">349</a>         <em class="jxr_comment">// Can't early out now, because DelFam come before any other keys</em>
-<a class="jxr_linenumber" name="350" href="#350">350</a>       }
-<a class="jxr_linenumber" name="351" href="#351">351</a>      
-<a class="jxr_linenumber" name="352" href="#352">352</a>       <strong class="jxr_keyword">if</strong> ((!isUserScan)
-<a class="jxr_linenumber" name="353" href="#353">353</a>           &amp;&amp; timeToPurgeDeletes &gt; 0
-<a class="jxr_linenumber" name="354" href="#354">354</a>           &amp;&amp; (EnvironmentEdgeManager.currentTime() - timestamp) 
-<a class="jxr_linenumber" name="355" href="#355">355</a>             &lt;= timeToPurgeDeletes) {
-<a class="jxr_linenumber" name="356" href="#356">356</a>         <strong class="jxr_keyword">return</strong> MatchCode.INCLUDE;
-<a class="jxr_linenumber" name="357" href="#357">357</a>       } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (retainDeletesInOutput || mvccVersion &gt; maxReadPointToTrackVersions) {
-<a class="jxr_linenumber" name="358" href="#358">358</a>         <em class="jxr_comment">// always include or it is not time yet to check whether it is OK</em>
-<a class="jxr_linenumber" name="359" href="#359">359</a>         <em class="jxr_comment">// to purge deltes or not</em>
-<a class="jxr_linenumber" name="360" href="#360">360</a>         <strong class="jxr_keyword">if</strong> (!isUserScan) {
-<a class="jxr_linenumber" name="361" href="#361">361</a>           <em class="jxr_comment">// if this is not a user scan (compaction), we can filter this deletemarker right here</em>
-<a class="jxr_linenumber" name="362" href="#362">362</a>           <em class="jxr_comment">// otherwise (i.e. a "raw" scan) we fall through to normal version and timerange checking</em>
-<a class="jxr_linenumber" name="363" href="#363">363</a>           <strong class="jxr_keyword">return</strong> MatchCode.INCLUDE;
-<a class="jxr_linenumber" name="364" href="#364">364</a>         }
-<a class="jxr_linenumber" name="365" href="#365">365</a>       } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (keepDeletedCells == KeepDeletedCells.TRUE
-<a class="jxr_linenumber" name="366" href="#366">366</a>           || (keepDeletedCells == KeepDeletedCells.TTL &amp;&amp; timestamp &gt;= ttl)) {
-<a class="jxr_linenumber" name="367" href="#367">367</a>         <strong class="jxr_keyword">if</strong> (timestamp &lt; earliestPutTs) {
-<a class="jxr_linenumber" name="368" href="#368">368</a>           <em class="jxr_comment">// keeping delete rows, but there are no puts older than</em>
-<a class="jxr_linenumber" name="369" href="#369">369</a>           <em class="jxr_comment">// this delete in the store files.</em>
-<a class="jxr_linenumber" name="370" href="#370">370</a>           <strong class="jxr_keyword">return</strong> columns.getNextRowOrNextColumn(cell);
-<a class="jxr_linenumber" name="371" href="#371">371</a>         }
-<a class="jxr_linenumber" name="372" href="#372">372</a>         <em class="jxr_comment">// else: fall through and do version counting on the</em>
-<a class="jxr_linenumber" name="373" href="#373">373</a>         <em class="jxr_comment">// delete markers</em>
-<a class="jxr_linenumber" name="374" href="#374">374</a>       } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="375" href="#375">375</a>         <strong class="jxr_keyword">return</strong> MatchCode.SKIP;
-<a class="jxr_linenumber" name="376" href="#376">376</a>       }
-<a class="jxr_linenumber" name="377" href="#377">377</a>       <em class="jxr_comment">// note the following next else if...</em>
-<a class="jxr_linenumber" name="378" href="#378">378</a>       <em class="jxr_comment">// delete marker are not subject to other delete markers</em>
-<a class="jxr_linenumber" name="379" href="#379">379</a>     } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (!<strong class="jxr_keyword">this</strong>.deletes.isEmpty()) {
-<a class="jxr_linenumber" name="380" href="#380">380</a>       <a href="../../../../../org/apache/hadoop/hbase/regionserver/DeleteTracker.html">DeleteResult</a> deleteResult = deletes.isDeleted(cell);
-<a class="jxr_linenumber" name="381" href="#381">381</a>       <strong class="jxr_keyword">switch</strong> (deleteResult) {
-<a class="jxr_linenumber" name="382" href="#382">382</a>         <strong class="jxr_keyword">case</strong> FAMILY_DELETED:
-<a class="jxr_linenumber" name="383" href="#383">383</a>         <strong class="jxr_keyword">case</strong> COLUMN_DELETED:
-<a class="jxr_linenumber" name="384" href="#384">384</a>           <strong class="jxr_keyword">return</strong> columns.getNextRowOrNextColumn(cell);
-<a class="jxr_linenumber" name="385" href="#385">385</a>         <strong class="jxr_keyword">case</strong> VERSION_DELETED:
-<a class="jxr_linenumber" name="386" href="#386">386</a>         <strong class="jxr_keyword">case</strong> FAMILY_VERSION_DELETED:
-<a class="jxr_linenumber" name="387" href="#387">387</a>           <strong class="jxr_keyword">return</strong> MatchCode.SKIP;
-<a class="jxr_linenumber" name="388" href="#388">388</a>         <strong class="jxr_keyword">case</strong> NOT_DELETED:
-<a class="jxr_linenumber" name="389" href="#389">389</a>           <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="390" href="#390">390</a>         <strong class="jxr_keyword">default</strong>:
-<a class="jxr_linenumber" name="391" href="#391">391</a>           <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> RuntimeException(<span class="jxr_string">"UNEXPECTED"</span>);
-<a class="jxr_linenumber" name="392" href="#392">392</a>         }
-<a class="jxr_linenumber" name="393" href="#393">393</a>     }
-<a class="jxr_linenumber" name="394" href="#394">394</a> 
-<a class="jxr_linenumber" name="395" href="#395">395</a>     <strong class="jxr_keyword">int</strong> timestampComparison = tr.compare(timestamp);
-<a class="jxr_linenumber" name="396" href="#396">396</a>     <strong class="jxr_keyword">if</strong> (timestampComparison &gt;= 1) {
-<a class="jxr_linenumber" name="397" href="#397">397</a>       <strong class="jxr_keyword">return</strong> MatchCode.SKIP;
-<a class="jxr_linenumber" name="398" href="#398">398</a>     } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (timestampComparison &lt;= -1) {
-<a class="jxr_linenumber" name="399" href="#399">399</a>       <strong class="jxr_keyword">return</strong> columns.getNextRowOrNextColumn(cell);
-<a class="jxr_linenumber" name="400" href="#400">400</a>     }
-<a class="jxr_linenumber" name="401" href="#401">401</a> 
-<a class="jxr_linenumber" name="402" href="#402">402</a>     <em class="jxr_comment">// STEP 1: Check if the column is part of the requested columns</em>
-<a class="jxr_linenumber" name="403" href="#403">403</a>     <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html">MatchCode</a> colChecker = columns.checkColumn(cell, typeByte);
-<a class="jxr_linenumber" name="404" href="#404">404</a>     <strong class="jxr_keyword">if</strong> (colChecker == MatchCode.INCLUDE) {
-<a class="jxr_linenumber" name="405" href="#405">405</a>       <a href="../../../../../org/apache/hadoop/hbase/filter/Filter.html">ReturnCode</a> filterResponse = ReturnCode.SKIP;
-<a class="jxr_linenumber" name="406" href="#406">406</a>       <em class="jxr_comment">// STEP 2: Yes, the column is part of the requested columns. Check if filter is present</em>
-<a class="jxr_linenumber" name="407" href="#407">407</a>       <strong class="jxr_keyword">if</strong> (filter != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="408" href="#408">408</a>         <em class="jxr_comment">// STEP 3: Filter the key value and return if it filters out</em>
-<a class="jxr_linenumber" name="409" href="#409">409</a>         filterResponse = filter.filterKeyValue(cell);
-<a class="jxr_linenumber" name="410" href="#410">410</a>         <strong class="jxr_keyword">switch</strong> (filterResponse) {
-<a class="jxr_linenumber" name="411" href="#411">411</a>         <strong class="jxr_keyword">case</strong> SKIP:
-<a class="jxr_linenumber" name="412" href="#412">412</a>           <strong class="jxr_keyword">return</strong> MatchCode.SKIP;
-<a class="jxr_linenumber" name="413" href="#413">413</a>         <strong class="jxr_keyword">case</strong> NEXT_COL:
-<a class="jxr_linenumber" name="414" href="#414">414</a>           <strong class="jxr_keyword">return</strong> columns.getNextRowOrNextColumn(cell);
-<a class="jxr_linenumber" name="415" href="#415">415</a>         <strong class="jxr_keyword">case</strong> NEXT_ROW:
-<a class="jxr_linenumber" name="416" href="#416">416</a>           stickyNextRow = <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="417" href="#417">417</a>           <strong class="jxr_keyword">return</strong> MatchCode.SEEK_NEXT_ROW;
-<a class="jxr_linenumber" name="418" href="#418">418</a>         <strong class="jxr_keyword">case</strong> SEEK_NEXT_USING_HINT:
-<a class="jxr_linenumber" name="419" href="#419">419</a>           <strong class="jxr_keyword">return</strong> MatchCode.SEEK_NEXT_USING_HINT;
-<a class="jxr_linenumber" name="420" href="#420">420</a>         <strong class="jxr_keyword">default</strong>:
-<a class="jxr_linenumber" name="421" href="#421">421</a>           <em class="jxr_comment">//It means it is either include or include and seek next</em>
-<a class="jxr_linenumber" name="422" href="#422">422</a>           <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="423" href="#423">423</a>         }
-<a class="jxr_linenumber" name="424" href="#424">424</a>       }
-<a class="jxr_linenumber" name="425" href="#425">425</a>       <em class="jxr_comment">/*</em>
-<a class="jxr_linenumber" name="426" href="#426">426</a> <em class="jxr_comment">       * STEP 4: Reaching this step means the column is part of the requested columns and either</em>
-<a class="jxr_linenumber" name="427" href="#427">427</a> <em class="jxr_comment">       * the filter is null or the filter has returned INCLUDE or INCLUDE_AND_NEXT_COL response.</em>
-<a class="jxr_linenumber" name="428" href="#428">428</a> <em class="jxr_comment">       * Now check the number of versions needed. This method call returns SKIP, INCLUDE,</em>
-<a class="jxr_linenumber" name="429" href="#429">429</a> <em class="jxr_comment">       * INCLUDE_AND_SEEK_NEXT_ROW, INCLUDE_AND_SEEK_NEXT_COL.</em>
-<a class="jxr_linenumber" name="430" href="#430">430</a> <em class="jxr_comment">       *</em>
-<a class="jxr_linenumber" name="431" href="#431">431</a> <em class="jxr_comment">       * FilterResponse            ColumnChecker               Desired behavior</em>
-<a class="jxr_linenumber" name="432" href="#432">432</a> <em class="jxr_comment">       * INCLUDE                   SKIP                        row has already been included, SKIP.</em>
-<a class="jxr_linenumber" name="433" href="#433">433</a> <em class="jxr_comment">       * INCLUDE                   INCLUDE                     INCLUDE</em>
-<a class="jxr_linenumber" name="434" href="#434">434</a> <em class="jxr_comment">       * INCLUDE                   INCLUDE_AND_SEEK_NEXT_COL   INCLUDE_AND_SEEK_NEXT_COL</em>
-<a class="jxr_linenumber" name="435" href="#435">435</a> <em class="jxr_comment">       * INCLUDE                   INCLUDE_AND_SEEK_NEXT_ROW   INCLUDE_AND_SEEK_NEXT_ROW</em>
-<a class="jxr_linenumber" name="436" href="#436">436</a> <em class="jxr_comment">       * INCLUDE_AND_SEEK_NEXT_COL SKIP                        row has already been included, SKIP.</em>
-<a class="jxr_linenumber" name="437" href="#437">437</a> <em class="jxr_comment">       * INCLUDE_AND_SEEK_NEXT_COL INCLUDE                     INCLUDE_AND_SEEK_NEXT_COL</em>
-<a class="jxr_linenumber" name="438" href="#438">438</a> <em class="jxr_comment">       * INCLUDE_AND_SEEK_NEXT_COL INCLUDE_AND_SEEK_NEXT_COL   INCLUDE_AND_SEEK_NEXT_COL</em>
-<a class="jxr_linenumber" name="439" href="#439">439</a> <em class="jxr_comment">       * INCLUDE_AND_SEEK_NEXT_COL INCLUDE_AND_SEEK_NEXT_ROW   INCLUDE_AND_SEEK_NEXT_ROW</em>
-<a class="jxr_linenumber" name="440" href="#440">440</a> <em class="jxr_comment">       *</em>
-<a class="jxr_linenumber" name="441" href="#441">441</a> <em class="jxr_comment">       * In all the above scenarios, we return the column checker return value except for</em>
-<a class="jxr_linenumber" name="442" href="#442">442</a> <em class="jxr_comment">       * FilterResponse (INCLUDE_AND_SEEK_NEXT_COL) and ColumnChecker(INCLUDE)</em>
-<a class="jxr_linenumber" name="443" href="#443">443</a> <em class="jxr_comment">       */</em>
-<a class="jxr_linenumber" name="444" href="#444">444</a>       colChecker = columns.checkVersions(cell, timestamp, typeByte,
-<a class="jxr_linenumber" name="445" href="#445">445</a>           mvccVersion &gt; maxReadPointToTrackVersions);
-<a class="jxr_linenumber" name="446" href="#446">446</a>       <em class="jxr_comment">//Optimize with stickyNextRow</em>
-<a class="jxr_linenumber" name="447" href="#447">447</a>       <strong class="jxr_keyword">boolean</strong> seekNextRowFromEssential = filterResponse == ReturnCode.INCLUDE_AND_SEEK_NEXT_ROW &amp;&amp;
-<a class="jxr_linenumber" name="448" href="#448">448</a>           filter.isFamilyEssential(cell.getFamilyArray());
-<a class="jxr_linenumber" name="449" href="#449">449</a>       <strong class="jxr_keyword">if</strong> (colChecker == MatchCode.INCLUDE_AND_SEEK_NEXT_ROW || seekNextRowFromEssential) {
-<a class="jxr_linenumber" name="450" href="#450">450</a>         stickyNextRow = <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="451" href="#451">451</a>       }
-<a class="jxr_linenumber" name="452" href="#452">452</a>       <strong class="jxr_keyword">if</strong> (filterResponse == ReturnCode.INCLUDE_AND_SEEK_NEXT_ROW) {
-<a class="jxr_linenumber" name="453" href="#453">453</a>         <strong class="jxr_keyword">if</strong> (colChecker != MatchCode.SKIP) {
-<a class="jxr_linenumber" name="454" href="#454">454</a>           <strong class="jxr_keyword">return</strong> MatchCode.INCLUDE_AND_SEEK_NEXT_ROW;
-<a class="jxr_linenumber" name="455" href="#455">455</a>         }
-<a class="jxr_linenumber" name="456" href="#456">456</a>         <strong class="jxr_keyword">return</strong> MatchCode.SEEK_NEXT_ROW;
-<a class="jxr_linenumber" name="457" href="#457">457</a>       }
-<a class="jxr_linenumber" name="458" href="#458">458</a>       <strong class="jxr_keyword">return</strong> (filterResponse == ReturnCode.INCLUDE_AND_NEXT_COL &amp;&amp;
-<a class="jxr_linenumber" name="459" href="#459">459</a>           colChecker == MatchCode.INCLUDE) ? MatchCode.INCLUDE_AND_SEEK_NEXT_COL
-<a class="jxr_linenumber" name="460" href="#460">460</a>           : colChecker;
-<a class="jxr_linenumber" name="461" href="#461">461</a>     }
-<a class="jxr_linenumber" name="462" href="#462">462</a>     stickyNextRow = (colChecker == MatchCode.SEEK_NEXT_ROW) ? <strong class="jxr_keyword">true</strong>
-<a class="jxr_linenumber" name="463" href="#463">463</a>         : stickyNextRow;
-<a class="jxr_linenumber" name="464" href="#464">464</a>     <strong class="jxr_keyword">return</strong> colChecker;
-<a class="jxr_linenumber" name="465" href="#465">465</a>   }
-<a class="jxr_linenumber" name="466" href="#466">466</a> 
-<a class="jxr_linenumber" name="467" href="#467">467</a>   <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> Handle partial-drop-deletes. As we match keys in order, when we have a range from which</em>
-<a class="jxr_linenumber" name="468" href="#468">468</a> <em class="jxr_javadoccomment">   * we can drop deletes, we can set retainDeletesInOutput to false for the duration of this</em>
-<a class="jxr_linenumber" name="469" href="#469">469</a> <em class="jxr_javadoccomment">   * range only, and maintain consistency. */</em>
-<a class="jxr_linenumber" name="470" href="#470">470</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> checkPartialDropDeleteRange(<a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> curCell) {
-<a class="jxr_linenumber" name="471" href="#471">471</a>     <em class="jxr_comment">// If partial-drop-deletes are used, initially, dropDeletesFromRow and dropDeletesToRow</em>
-<a class="jxr_linenumber" name="472" href="#472">472</a>     <em class="jxr_comment">// are both set, and the matcher is set to retain deletes. We assume ordered keys. When</em>
-<a class="jxr_linenumber" name="473" href="#473">473</a>     <em class="jxr_comment">// dropDeletesFromRow is leq current kv, we start dropping deletes and reset</em>
-<a class="jxr_linenumber" name="474" href="#474">474</a>     <em class="jxr_comment">// dropDeletesFromRow; thus the 2nd "if" starts to apply.</em>
-<a class="jxr_linenumber" name="475" href="#475">475</a>     <strong class="jxr_keyword">if</strong> ((dropDeletesFromRow != <strong class="jxr_keyword">null</strong>)
-<a class="jxr_linenumber" name="476" href="#476">476</a>         &amp;&amp; (Arrays.equals(dropDeletesFromRow, HConstants.EMPTY_START_ROW) ||
-<a class="jxr_linenumber" name="477" href="#477">477</a>             (CellComparator.COMPARATOR.compareRows(curCell, dropDeletesFromRow, 0,
-<a class="jxr_linenumber" name="478" href="#478">478</a>                 dropDeletesFromRow.length) &gt;= 0))) {
-<a class="jxr_linenumber" name="479" href="#479">479</a>       retainDeletesInOutput = false;
-<a class="jxr_linenumber" name="480" href="#480">480</a>       dropDeletesFromRow = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="481" href="#481">481</a>     }
-<a class="jxr_linenumber" name="482" href="#482">482</a>     <em class="jxr_comment">// If dropDeletesFromRow is null and dropDeletesToRow is set, we are inside the partial-</em>
-<a class="jxr_linenumber" name="483" href="#483">483</a>     <em class="jxr_comment">// drop-deletes range. When dropDeletesToRow is leq current kv, we stop dropping deletes,</em>
-<a class="jxr_linenumber" name="484" href="#484">484</a>     <em class="jxr_comment">// and reset dropDeletesToRow so that we don't do any more compares.</em>
-<a class="jxr_linenumber" name="485" href="#485">485</a>     <strong class="jxr_keyword">if</strong> ((dropDeletesFromRow == <strong class="jxr_keyword">null</strong>)
-<a class="jxr_linenumber" name="486" href="#486">486</a>         &amp;&amp; (dropDeletesToRow != <strong class="jxr_keyword">null</strong>)
-<a class="jxr_linenumber" name="487" href="#487">487</a>         &amp;&amp; !Arrays.equals(dropDeletesToRow, HConstants.EMPTY_END_ROW)
-<a class="jxr_linenumber" name="488" href="#488">488</a>         &amp;&amp; (CellComparator.COMPARATOR
-<a class="jxr_linenumber" name="489" href="#489">489</a>             .compareRows(curCell, dropDeletesToRow, 0, dropDeletesToRow.length) &gt;= 0)) {
-<a class="jxr_linenumber" name="490" href="#490">490</a>       retainDeletesInOutput = <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="491" href="#491">491</a>       dropDeletesToRow = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="492" href="#492">492</a>     }
-<a class="jxr_linenumber" name="493" href="#493">493</a>   }
-<a class="jxr_linenumber" name="494" href="#494">494</a> 
-<a class="jxr_linenumber" name="495" href="#495">495</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> moreRowsMayExistAfter(<a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> kv) {
-<a class="jxr_linenumber" name="496" href="#496">496</a>     <strong class="jxr_keyword">if</strong> (<strong class="jxr_keyword">this</strong>.isReversed) {
-<a class="jxr_linenumber" name="497" href="#497">497</a>       <strong class="jxr_keyword">if</strong> (rowComparator.compareRows(kv, stopRow, 0, stopRow.length) &lt;= 0) {
-<a class="jxr_linenumber" name="498" href="#498">498</a>         <strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="499" href="#499">499</a>       } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="500" href="#500">500</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="501" href="#501">501</a>       }
-<a class="jxr_linenumber" name="502" href="#502">502</a>     }
-<a class="jxr_linenumber" name="503" href="#503">503</a>     <strong class="jxr_keyword">if</strong> (!Bytes.equals(stopRow , HConstants.EMPTY_END_ROW) &amp;&amp;
-<a class="jxr_linenumber" name="504" href="#504">504</a>         rowComparator.compareRows(kv, stopRow, 0, stopRow.length) &gt;= 0) {
-<a class="jxr_linenumber" name="505" href="#505">505</a>       <em class="jxr_comment">// KV &gt;= STOPROW</em>
-<a class="jxr_linenumber" name="506" href="#506">506</a>       <em class="jxr_comment">// then NO there is nothing left.</em>
-<a class="jxr_linenumber" name="507" href="#507">507</a>       <strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="508" href="#508">508</a>     } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="509" href="#509">509</a>       <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="510" href="#510">510</a>     }
-<a class="jxr_linenumber" name="511" href="#511">511</a>   }
-<a class="jxr_linenumber" name="512" href="#512">512</a> 
-<a class="jxr_linenumber" name="513" href="#513">513</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="514" href="#514">514</a> <em class="jxr_javadoccomment">   * Set the row when there is change in row</em>
-<a class="jxr_linenumber" name="515" href="#515">515</a> <em class="jxr_javadoccomment">   * @param curCell</em>
-<a class="jxr_linenumber" name="516" href="#516">516</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="517" href="#517">517</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setToNewRow(<a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> curCell) {
-<a class="jxr_linenumber" name="518" href="#518">518</a>     checkPartialDropDeleteRange(curCell);
-<a class="jxr_linenumber" name="519" href="#519">519</a>     <strong class="jxr_keyword">this</strong>.curCell = curCell;
-<a class="jxr_linenumber" name="520" href="#520">520</a>     reset();
-<a class="jxr_linenumber" name="521" href="#521">521</a>   }
-<a class="jxr_linenumber" name="522" href="#522">522</a> 
-<a class="jxr_linenumber" name="523" href="#523">523</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> reset() {
-<a class="jxr_linenumber" name="524" href="#524">524</a>     <strong class="jxr_keyword">this</strong>.deletes.reset();
-<a class="jxr_linenumber" name="525" href="#525">525</a>     <strong class="jxr_keyword">this</strong>.columns.reset();
-<a class="jxr_linenumber" name="526" href="#526">526</a> 
-<a class="jxr_linenumber" name="527" href="#527">527</a>     stickyNextRow = false;
-<a class="jxr_linenumber" name="528" href="#528">528</a>   }
-<a class="jxr_linenumber" name="529" href="#529">529</a> 
-<a class="jxr_linenumber" name="530" href="#530">530</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="531" href="#531">531</a> <em class="jxr_javadoccomment">   *</em>
-<a class="jxr_linenumber" name="532" href="#532">532</a> <em class="jxr_javadoccomment">   * @return the start key</em>
-<a class="jxr_linenumber" name="533" href="#533">533</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="534" href="#534">534</a>   <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> getStartKey() {
-<a class="jxr_linenumber" name="535" href="#535">535</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.startKey;
-<a class="jxr_linenumber" name="536" href="#536">536</a>   }
-<a class="jxr_linenumber" name="537" href="#537">537</a> 
-<a class="jxr_linenumber" name="538" href="#538">538</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="539" href="#539">539</a> <em class="jxr_javadoccomment">   *</em>
-<a class="jxr_linenumber" name="540" href="#540">540</a> <em class="jxr_javadoccomment">   * @return the Filter</em>
-<a class="jxr_linenumber" name="541" href="#541">541</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="542" href="#542">542</a>   <a href="../../../../../org/apache/hadoop/hbase/filter/Filter.html">Filter</a> getFilter() {
-<a class="jxr_linenumber" name="543" href="#543">543</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.filter;
-<a class="jxr_linenumber" name="544" href="#544">544</a>   }
-<a class="jxr_linenumber" name="545" href="#545">545</a> 
-<a class="jxr_linenumber" name="546" href="#546">546</a>   <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> getNextKeyHint(<a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> kv) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="547" href="#547">547</a>     <strong class="jxr_keyword">if</strong> (filter == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="548" href="#548">548</a>       <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="549" href="#549">549</a>     } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="550" href="#550">550</a>       <strong class="jxr_keyword">return</strong> filter.getNextCellHint(kv);
-<a class="jxr_linenumber" name="551" href="#551">551</a>     }
-<a class="jxr_linenumber" name="552" href="#552">552</a>   }
-<a class="jxr_linenumber" name="553" href="#553">553</a> 
-<a class="jxr_linenumber" name="554" href="#554">554</a>   <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> getKeyForNextColumn(<a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> kv) {
-<a class="jxr_linenumber" name="555" href="#555">555</a>     <a href="../../../../../org/apache/hadoop/hbase/regionserver/ColumnCount.html">ColumnCount</a> nextColumn = columns.getColumnHint();
-<a class="jxr_linenumber" name="556" href="#556">556</a>     <strong class="jxr_keyword">if</strong> (nextColumn == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="557" href="#557">557</a>       <strong class="jxr_keyword">return</strong> CellUtil.createLastOnRowCol(kv);
-<a class="jxr_linenumber" name="558" href="#558">558</a>     } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="559" href="#559">559</a>       <strong class="jxr_keyword">return</strong> CellUtil.createFirstOnRowCol(kv, nextColumn.getBuffer(), nextColumn.getOffset(),
-<a class="jxr_linenumber" name="560" href="#560">560</a>           nextColumn.getLength());
-<a class="jxr_linenumber" name="561" href="#561">561</a>     }
-<a class="jxr_linenumber" name="562" href="#562">562</a>   }
-<a class="jxr_linenumber" name="563" href="#563">563</a> 
-<a class="jxr_linenumber" name="564" href="#564">564</a>   <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> getKeyForNextRow(<a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> c) {
-<a class="jxr_linenumber" name="565" href="#565">565</a>     <strong class="jxr_keyword">return</strong> CellUtil.createLastOnRow(c);
-<a class="jxr_linenumber" name="566" href="#566">566</a>   }
-<a class="jxr_linenumber" name="567" href="#567">567</a> 
-<a class="jxr_linenumber" name="568" href="#568">568</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="569" href="#569">569</a> <em class="jxr_javadoccomment">   * @param nextIndexed the key of the next entry in the block index (if any)</em>
-<a class="jxr_linenumber" name="570" href="#570">570</a> <em class="jxr_javadoccomment">   * @param kv The Cell we're using to calculate the seek key</em>
-<a class="jxr_linenumber" name="571" href="#571">571</a> <em class="jxr_javadoccomment">   * @return result of the compare between the indexed key and the key portion of the passed cell</em>
-<a class="jxr_linenumber" name="572" href="#572">572</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="573" href="#573">573</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> compareKeyForNextRow(<a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> nextIndexed, <a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> kv) {
-<a class="jxr_linenumber" name="574" href="#574">574</a>     <strong class="jxr_keyword">return</strong> rowComparator.compareKeyBasedOnColHint(nextIndexed, kv, 0, 0, <strong class="jxr_keyword">null</strong>, 0, 0,
-<a class="jxr_linenumber" name="575" href="#575">575</a>         HConstants.OLDEST_TIMESTAMP, Type.Minimum.getCode());
-<a class="jxr_linenumber" name="576" href="#576">576</a>   }
-<a class="jxr_linenumber" name="577" href="#577">577</a> 
-<a class="jxr_linenumber" name="578" href="#578">578</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="579" href="#579">579</a> <em class="jxr_javadoccomment">   * @param nextIndexed the key of the next entry in the block index (if any)</em>
-<a class="jxr_linenumber" name="580" href="#580">580</a> <em class="jxr_javadoccomment">   * @param currentCell The Cell we're using to calculate the seek key</em>
-<a class="jxr_linenumber" name="581" href="#581">581</a> <em class="jxr_javadoccomment">   * @return result of the compare between the indexed key and the key portion of the passed cell</em>
-<a class="jxr_linenumber" name="582" href="#582">582</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="583" href="#583">583</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> compareKeyForNextColumn(<a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> nextIndexed, <a href="../../../../../org/apache/hadoop/hbase/Cell.html">Cell</a> currentCell) {
-<a class="jxr_linenumber" name="584" href="#584">584</a>     <a href="../../../../../org/apache/hadoop/hbase/regionserver/ColumnCount.html">ColumnCount</a> nextColumn = columns.getColumnHint();
-<a class="jxr_linenumber" name="585" href="#585">585</a>     <strong class="jxr_keyword">if</strong> (nextColumn == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="586" href="#586">586</a>       <strong class="jxr_keyword">return</strong> rowComparator.compareKeyBasedOnColHint(nextIndexed, currentCell, 0, 0, <strong class="jxr_keyword">null</strong>, 0, 0,
-<a class="jxr_linenumber" name="587" href="#587">587</a>           HConstants.OLDEST_TIMESTAMP, Type.Minimum.getCode());
-<a class="jxr_linenumber" name="588" href="#588">588</a>     } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="589" href="#589">589</a>       <strong class="jxr_keyword">return</strong> rowComparator.compareKeyBasedOnColHint(nextIndexed, currentCell,
-<a class="jxr_linenumber" name="590" href="#590">590</a>           currentCell.getFamilyOffset(), currentCell.getFamilyLength(), nextColumn.getBuffer(),
-<a class="jxr_linenumber" name="591" href="#591">591</a>           nextColumn.getOffset(), nextColumn.getLength(), HConstants.LATEST_TIMESTAMP,
-<a class="jxr_linenumber" name="592" href="#592">592</a>           Type.Maximum.getCode());
-<a class="jxr_linenumber" name="593" href="#593">593</a>     }
-<a class="jxr_linenumber" name="594" href="#594">594</a>   }
-<a class="jxr_linenumber" name="595" href="#595">595</a> 
-<a class="jxr_linenumber" name="596" href="#596">596</a>   <em class="jxr_comment">//Used only for testing purposes</em>
-<a class="jxr_linenumber" name="597" href="#597">597</a>   <strong class="jxr_keyword">static</strong> <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html">MatchCode</a> checkColumn(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ColumnTracker.html">ColumnTracker</a> columnTracker, byte[] bytes, <strong class="jxr_keyword">int</strong> offset,
-<a class="jxr_linenumber" name="598" href="#598">598</a>       <strong class="jxr_keyword">int</strong> length, <strong class="jxr_keyword">long</strong> ttl, byte type, <strong class="jxr_keyword">boolean</strong> ignoreCount) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="599" href="#599">599</a>     <a href="../../../../../org/apache/hadoop/hbase/KeyValue.html">KeyValue</a> kv = KeyValueUtil.createFirstOnRow(HConstants.EMPTY_BYTE_ARRAY, 0, 0,
-<a class="jxr_linenumber" name="600" href="#600">600</a>         HConstants.EMPTY_BYTE_ARRAY, 0, 0, bytes, offset, length);
-<a class="jxr_linenumber" name="601" href="#601">601</a>     <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html">MatchCode</a> matchCode = columnTracker.checkColumn(kv, type);
-<a class="jxr_linenumber" name="602" href="#602">602</a>     <strong class="jxr_keyword">if</strong> (matchCode == MatchCode.INCLUDE) {
-<a class="jxr_linenumber" name="603" href="#603">603</a>       <strong class="jxr_keyword">return</strong> columnTracker.checkVersions(kv, ttl, type, ignoreCount);
-<a class="jxr_linenumber" name="604" href="#604">604</a>     }
-<a class="jxr_linenumber" name="605" href="#605">605</a>     <strong class="jxr_keyword">return</strong> matchCode;
-<a class="jxr_linenumber" name="606" href="#606">606</a>   }
-<a class="jxr_linenumber" name="607" href="#607">607</a> 
-<a class="jxr_linenumber" name="608" href="#608">608</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="609" href="#609">609</a> <em class="jxr_javadoccomment">   * {@link #match} return codes.  These instruct the scanner moving through</em>
-<a class="jxr_linenumber" name="610" href="#610">610</a> <em class="jxr_javadoccomment">   * memstores and StoreFiles what to do with the current KeyValue.</em>
-<a class="jxr_linenumber" name="611" href="#611">611</a> <em class="jxr_javadoccomment">   * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="612" href="#612">612</a> <em class="jxr_javadoccomment">   * Additionally, this contains "early-out" language to tell the scanner to</em>
-<a class="jxr_linenumber" name="613" href="#613">613</a> <em class="jxr_javadoccomment">   * move on to the next File (memstore or Storefile), or to return immediately.</em>
-<a class="jxr_linenumber" name="614" href="#614">614</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="615" href="#615">615</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> enum <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.html">MatchCode</a> {
-<a class="jxr_linenumber" name="616" href="#616">616</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="617" href="#617">617</a> <em class="jxr_javadoccomment">     * Include KeyValue in the returned result</em>
-<a class="jxr_linenumber" name="618" href="#618">618</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="619" href="#619">619</a>     INCLUDE,
-<a class="jxr_linenumber" name="620" href="#620">620</a> 
+<a class="jxr_linenumber" name="308" href="#308">308</a>     <strong class="jxr_keyword">if</strong> (<strong class="jxr_keyword">this</strong>.columns.done()) {
+<a class="jxr_linenumber" name="309" href="#309">309</a>       stickyNextRow = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="310" href="#310">310</a>       <strong class="jxr_keyword">return</strong> MatchCode.SEEK_NEXT_ROW;
+<a class="jxr_linenumber" name="311" href="#311">311</a>     }
+<a class="jxr_linenumber" name="312" href="#312">312</a> 
+<a class="jxr_linenumber" name="313" href="#313">313</a>     <strong class="jxr_keyword">long</strong> timestamp = cell.getTimestamp();
+<a class="jxr_linenumber" name="314" href="#314">314</a>     <em class="jxr_comment">// check for early out based on timestamp alone</em>
+<a class="jxr_linenumber" name="315" href="#315">315</a>     <strong class="jxr_keyword">if</strong> (columns.isDone(timestamp)) {
+<a class="jxr_linenumber" name="316" href="#316">316</a>       <strong class="jxr_keyword">return</strong> columns.getNextRowOrNextColumn(cell);
+<a class="jxr_linenumber" name="317" href="#317">317</a>     }
+<a class="jxr_linenumber" name="318" href="#318">318</a>     <em class="jxr_comment">// check if the cell is expired by cell TTL</em>
+<a class="jxr_linenumber" name="319" href="#319">319</a>     <strong class="jxr_keyword">if</strong> (HStore.isCellTTLExpired(cell, <strong class="jxr_keyword">this</strong>.oldestUnexpiredTS, <strong class="jxr_keyword">this</strong>.now)) {
+<a class="jxr_linenumber" name="320" href="#320">320</a>       <strong class="jxr_keyword">return</strong> MatchCode.SKIP;
+<a class="jxr_linenumber" name="321" href="#321">321</a>     }    
+<a class="jxr_linenumber" name="322" href="#322">322</a> 
+<a class="jxr_linenumber" name="323" href="#323">323</a>     <em class="jxr_comment">/*</em>
+<a class="jxr_linenumber" name="324" href="#324">324</a> <em class="jxr_comment">     * The delete logic is pretty complicated now.</em>
+<a class="jxr_linenumber" name="325" href="#325">325</a> <em class="jxr_comment">     * This is corroborated by the following:</em>
+<a class="jxr_linenumber" name="326" href="#326">326</a> <em class="jxr_comment">     * 1. The store might be instructed to keep deleted rows around.</em>
+<a class="jxr_linenumber" name="327" href="#327">327</a> <em class="jxr_comment">     * 2. A scan can optionally see past a delete marker now.</em>
+<a class="jxr_linenumber" name="328" href="#328">328</a> <em class="jxr_comment">     * 3. If deleted rows are kept, we have to find out when we can</em>
+<a class="jxr_linenumber" name="329" href="#329">329</a> <em class="jxr_comment">     *    remove the delete markers.</em>
+<a class="jxr_linenumber" name="330" href="#330">330</a> <em class="jxr_comment">     * 4. Family delete markers are always first (regardless of their TS)</em>
+<a class="jxr_linenumber" name="331" href="#331">331</a> <em class="jxr_comment">     * 5. Delete markers should not be counted as version</em>
+<a class="jxr_linenumber" name="332" href="#332">332</a> <em class="jxr_comment">     * 6. Delete markers affect puts of the *same* TS</em>
+<a class="jxr_linenumber" name="333" href="#333">333</a> <em class="jxr_comment">     * 7. Delete marker need to be version counted together with puts</em>
+<a class="jxr_linenumber" name="334" href="#334">334</a> <em class="jxr_comment">     *    they affect</em>
+<a class="jxr_linenumber" name="335" href="#335">335</a> <em class="jxr_comment">     */</em>
+<a class="jxr_linenumber" name="336" href="#336">336</a>     byte typeByte = cell.getTypeByte();
+<a class="jxr_linenumber" name="337" href="#337">337</a>     <strong class="jxr_keyword">long</strong> mvccVersion = cell.getSequenceId();
+<a class="jxr_linenumber" name="338" href="#338">338</a>     <strong class="jxr_keyword">if</strong> (CellUtil.isDelete(cell)) {
+<a class="jxr_linenumber" name="339" href="#339">339</a>       <strong class="jxr_keyword">if</strong> (keepDeletedCells == KeepDeletedCells.FALSE
+<a class="jxr_linenumber" name="340" href="#340">340</a>           || (keepDeletedCells == KeepDeletedCells.TTL &amp;&amp; timestamp &lt; ttl)) {
+<a class="jxr_linenumber" name="341" href="#341">341</a>         <em class="jxr_comment">// first ignore delete markers if the scanner can do so, and the</em>
+<a class="jxr_linenumber" name="342" href="#342">342</a>         <em class="jxr_comment">// range does not include the marker</em>
+<a class="jxr_linenumber" name="343" href="#343">343</a>         <em class="jxr_comment">//</em>
+<a class="jxr_linenumber" name="344" href="#344">344</a>         <em class="jxr_comment">// during flushes and compactions also ignore delete markers newer</em>
+<a class="jxr_linenumber" name="345" href="#345">345</a>         <em class="jxr_comment">// than the readpoint of any open scanner, this prevents deleted</em>
+<a class="jxr_linenumber" name="346" href="#346">346</a>         <em class="jxr_comment">// rows that could still be seen by a scanner from being collected</em>
+<a class="jxr_linenumber" name="347" href="#347">347</a>         <strong class="jxr_keyword">boolean</strong> includeDeleteMarker = seePastDeleteMarkers ?
+<a class="jxr_linenumber" name="348" href="#348">348</a>             tr.withinTimeRange(timestamp) :
+<a class="jxr_linenumber" name="349" href="#349">349</a>             tr.withinOrAfterTimeRange(timestamp);
+<a class="jxr_linenumber" name="350" href="#350">350</a>         <strong class="jxr_keyword">if</strong> (includeDeleteMarker
+<a class="jxr_linenumber" name="351" href="#351">351</a>             &amp;&amp; mvccVersion &lt;= maxReadPointToTrackVersions) {
+<a class="jxr_linenumber" name="352" href="#352">352</a>           <strong class="jxr_keyword">this</strong>.deletes.add(cell);
+<a class="jxr_linenumber" name="353" href="#353">353</a>         }
+<a class="jxr_linenumber" name="354" href="#354">354</a>         <em class="jxr_comment">// Can't early out now, because DelFam come before any other keys</em>
+<a class="jxr_linenumber" name="355" href="#355">355</a>       }
+<a class="jxr_linenumber" name="356" href="#356">356</a>      
+<a class="jxr_linenumber" name="357" href="#357">357</a>       <strong class="jxr_keyword">if</strong> ((!isUserScan)
+<a class="jxr_linenumber" name="358" href="#358">358</a>           &amp;&amp; timeToPurgeDeletes &gt; 0
+<a class="jxr_linenumber" name="359" href="#359">359</a>           &amp;&amp; (EnvironmentEdgeManager.currentTime() - timestamp) 
+<a class="jxr_linenumber" name="360" href="#360">360</a>             &lt;= timeToPurgeDeletes) {
+<a class="jxr_linenumber

<TRUNCATED>