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

[01/23] hbase-site git commit: Published site at 2cf8af5bf1d501156cbb3b421cf75c1051ead7d9.

Repository: hbase-site
Updated Branches:
  refs/heads/asf-site 6a13df3e1 -> 326728849


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/xref/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html b/xref/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html
index e9b9140..417f39a 100644
--- a/xref/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html
+++ b/xref/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html
@@ -36,722 +36,770 @@
 <a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> java.util.Map;
 <a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.CopyOnWriteArrayList;
 <a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> java.util.concurrent.CountDownLatch;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.logging.Log;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.logging.LogFactory;
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.conf.Configuration;
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.Abortable;
-<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.AuthUtil;
-<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HConstants;
-<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HRegionInfo;
-<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.ZooKeeperConnectionException;
-<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.classification.InterfaceAudience;
-<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.security.Superusers;
-<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.security.UserGroupInformation;
-<a class="jxr_linenumber" name="41" href="#41">41</a>  <strong class="jxr_keyword">import</strong> org.apache.zookeeper.KeeperException;
-<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> org.apache.zookeeper.WatchedEvent;
-<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> org.apache.zookeeper.Watcher;
-<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> org.apache.zookeeper.ZooDefs.Ids;
-<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> org.apache.zookeeper.ZooDefs.Perms;
-<a class="jxr_linenumber" name="46" href="#46">46</a>  <strong class="jxr_keyword">import</strong> org.apache.zookeeper.data.ACL;
-<a class="jxr_linenumber" name="47" href="#47">47</a>  <strong class="jxr_keyword">import</strong> org.apache.zookeeper.data.Id;
-<a class="jxr_linenumber" name="48" href="#48">48</a>  <strong class="jxr_keyword">import</strong> org.apache.zookeeper.data.Stat;
-<a class="jxr_linenumber" name="49" href="#49">49</a>  
-<a class="jxr_linenumber" name="50" href="#50">50</a>  <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="51" href="#51">51</a>  <em class="jxr_javadoccomment"> * Acts as the single ZooKeeper Watcher.  One instance of this is instantiated</em>
-<a class="jxr_linenumber" name="52" href="#52">52</a>  <em class="jxr_javadoccomment"> * for each Master, RegionServer, and client process.</em>
-<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"> * &lt;p&gt;This is the only class that implements {@link Watcher}.  Other internal</em>
-<a class="jxr_linenumber" name="55" href="#55">55</a>  <em class="jxr_javadoccomment"> * classes which need to be notified of ZooKeeper events must register with</em>
-<a class="jxr_linenumber" name="56" href="#56">56</a>  <em class="jxr_javadoccomment"> * the local instance of this watcher via {@link #registerListener}.</em>
-<a class="jxr_linenumber" name="57" href="#57">57</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="58" href="#58">58</a>  <em class="jxr_javadoccomment"> * &lt;p&gt;This class also holds and manages the connection to ZooKeeper.  Code to</em>
-<a class="jxr_linenumber" name="59" href="#59">59</a>  <em class="jxr_javadoccomment"> * deal with connection related events and exceptions are handled here.</em>
-<a class="jxr_linenumber" name="60" href="#60">60</a>  <em class="jxr_javadoccomment"> */</em>
-<a class="jxr_linenumber" name="61" href="#61">61</a>  @InterfaceAudience.Private
-<a class="jxr_linenumber" name="62" href="#62">62</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html">ZooKeeperWatcher</a> <strong class="jxr_keyword">implements</strong> Watcher, Abortable, Closeable {
-<a class="jxr_linenumber" name="63" href="#63">63</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Log LOG = LogFactory.getLog(ZooKeeperWatcher.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="64" href="#64">64</a>  
-<a class="jxr_linenumber" name="65" href="#65">65</a>    <em class="jxr_comment">// Identifier for this watcher (for logging only).  It is made of the prefix</em>
-<a class="jxr_linenumber" name="66" href="#66">66</a>    <em class="jxr_comment">// passed on construction and the zookeeper sessionid.</em>
-<a class="jxr_linenumber" name="67" href="#67">67</a>    <strong class="jxr_keyword">private</strong> String prefix;
-<a class="jxr_linenumber" name="68" href="#68">68</a>    <strong class="jxr_keyword">private</strong> String identifier;
-<a class="jxr_linenumber" name="69" href="#69">69</a>  
-<a class="jxr_linenumber" name="70" href="#70">70</a>    <em class="jxr_comment">// zookeeper quorum</em>
-<a class="jxr_linenumber" name="71" href="#71">71</a>    <strong class="jxr_keyword">private</strong> String quorum;
-<a class="jxr_linenumber" name="72" href="#72">72</a>  
-<a class="jxr_linenumber" name="73" href="#73">73</a>    <em class="jxr_comment">// zookeeper connection</em>
-<a class="jxr_linenumber" name="74" href="#74">74</a>    <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html">RecoverableZooKeeper</a> recoverableZooKeeper;
-<a class="jxr_linenumber" name="75" href="#75">75</a>  
-<a class="jxr_linenumber" name="76" href="#76">76</a>    <em class="jxr_comment">// abortable in case of zk failure</em>
-<a class="jxr_linenumber" name="77" href="#77">77</a>    <strong class="jxr_keyword">protected</strong> <a href="../../../../../org/apache/hadoop/hbase/Abortable.html">Abortable</a> abortable;
-<a class="jxr_linenumber" name="78" href="#78">78</a>    <em class="jxr_comment">// Used if abortable is null</em>
-<a class="jxr_linenumber" name="79" href="#79">79</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> aborted = false;
-<a class="jxr_linenumber" name="80" href="#80">80</a>  
-<a class="jxr_linenumber" name="81" href="#81">81</a>    <em class="jxr_comment">// listeners to be notified</em>
-<a class="jxr_linenumber" name="82" href="#82">82</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> List&lt;ZooKeeperListener&gt; listeners =
-<a class="jxr_linenumber" name="83" href="#83">83</a>      <strong class="jxr_keyword">new</strong> CopyOnWriteArrayList&lt;ZooKeeperListener&gt;();
-<a class="jxr_linenumber" name="84" href="#84">84</a>  
-<a class="jxr_linenumber" name="85" href="#85">85</a>    <em class="jxr_comment">// Used by ZKUtil:waitForZKConnectionIfAuthenticating to wait for SASL</em>
-<a class="jxr_linenumber" name="86" href="#86">86</a>    <em class="jxr_comment">// negotiation to complete</em>
-<a class="jxr_linenumber" name="87" href="#87">87</a>    <strong class="jxr_keyword">public</strong> CountDownLatch saslLatch = <strong class="jxr_keyword">new</strong> CountDownLatch(1);
-<a class="jxr_linenumber" name="88" href="#88">88</a>  
-<a class="jxr_linenumber" name="89" href="#89">89</a>    <em class="jxr_comment">// node names</em>
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> java.util.regex.Matcher;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> java.util.regex.Pattern;
+<a class="jxr_linenumber" name="31" href="#31">31</a>  
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.logging.Log;
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.logging.LogFactory;
+<a class="jxr_linenumber" name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.conf.Configuration;
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.Abortable;
+<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.AuthUtil;
+<a class="jxr_linenumber" name="37" href="#37">37</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HConstants;
+<a class="jxr_linenumber" name="38" href="#38">38</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.HRegionInfo;
+<a class="jxr_linenumber" name="39" href="#39">39</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.ZooKeeperConnectionException;
+<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.hbase.security.Superusers;
+<a class="jxr_linenumber" name="42" href="#42">42</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.security.UserGroupInformation;
+<a class="jxr_linenumber" name="43" href="#43">43</a>  <strong class="jxr_keyword">import</strong> org.apache.zookeeper.KeeperException;
+<a class="jxr_linenumber" name="44" href="#44">44</a>  <strong class="jxr_keyword">import</strong> org.apache.zookeeper.WatchedEvent;
+<a class="jxr_linenumber" name="45" href="#45">45</a>  <strong class="jxr_keyword">import</strong> org.apache.zookeeper.Watcher;
+<a class="jxr_linenumber" name="46" href="#46">46</a>  <strong class="jxr_keyword">import</strong> org.apache.zookeeper.ZooDefs.Ids;
+<a class="jxr_linenumber" name="47" href="#47">47</a>  <strong class="jxr_keyword">import</strong> org.apache.zookeeper.ZooDefs.Perms;
+<a class="jxr_linenumber" name="48" href="#48">48</a>  <strong class="jxr_keyword">import</strong> org.apache.zookeeper.data.ACL;
+<a class="jxr_linenumber" name="49" href="#49">49</a>  <strong class="jxr_keyword">import</strong> org.apache.zookeeper.data.Id;
+<a class="jxr_linenumber" name="50" href="#50">50</a>  <strong class="jxr_keyword">import</strong> org.apache.zookeeper.data.Stat;
+<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"> * Acts as the single ZooKeeper Watcher.  One instance of this is instantiated</em>
+<a class="jxr_linenumber" name="54" href="#54">54</a>  <em class="jxr_javadoccomment"> * for each Master, RegionServer, and client process.</em>
+<a class="jxr_linenumber" name="55" href="#55">55</a>  <em class="jxr_javadoccomment"> *</em>
+<a class="jxr_linenumber" name="56" href="#56">56</a>  <em class="jxr_javadoccomment"> * &lt;p&gt;This is the only class that implements {@link Watcher}.  Other internal</em>
+<a class="jxr_linenumber" name="57" href="#57">57</a>  <em class="jxr_javadoccomment"> * classes which need to be notified of ZooKeeper events must register with</em>
+<a class="jxr_linenumber" name="58" href="#58">58</a>  <em class="jxr_javadoccomment"> * the local instance of this watcher via {@link #registerListener}.</em>
+<a class="jxr_linenumber" name="59" href="#59">59</a>  <em class="jxr_javadoccomment"> *</em>
+<a class="jxr_linenumber" name="60" href="#60">60</a>  <em class="jxr_javadoccomment"> * &lt;p&gt;This class also holds and manages the connection to ZooKeeper.  Code to</em>
+<a class="jxr_linenumber" name="61" href="#61">61</a>  <em class="jxr_javadoccomment"> * deal with connection related events and exceptions are handled here.</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>  @InterfaceAudience.Private
+<a class="jxr_linenumber" name="64" href="#64">64</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html">ZooKeeperWatcher</a> <strong class="jxr_keyword">implements</strong> Watcher, Abortable, Closeable {
+<a class="jxr_linenumber" name="65" href="#65">65</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Log LOG = LogFactory.getLog(ZooKeeperWatcher.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="66" href="#66">66</a>  
+<a class="jxr_linenumber" name="67" href="#67">67</a>    <em class="jxr_comment">// Identifier for this watcher (for logging only).  It is made of the prefix</em>
+<a class="jxr_linenumber" name="68" href="#68">68</a>    <em class="jxr_comment">// passed on construction and the zookeeper sessionid.</em>
+<a class="jxr_linenumber" name="69" href="#69">69</a>    <strong class="jxr_keyword">private</strong> String prefix;
+<a class="jxr_linenumber" name="70" href="#70">70</a>    <strong class="jxr_keyword">private</strong> String identifier;
+<a class="jxr_linenumber" name="71" href="#71">71</a>  
+<a class="jxr_linenumber" name="72" href="#72">72</a>    <em class="jxr_comment">// zookeeper quorum</em>
+<a class="jxr_linenumber" name="73" href="#73">73</a>    <strong class="jxr_keyword">private</strong> String quorum;
+<a class="jxr_linenumber" name="74" href="#74">74</a>  
+<a class="jxr_linenumber" name="75" href="#75">75</a>    <em class="jxr_comment">// zookeeper connection</em>
+<a class="jxr_linenumber" name="76" href="#76">76</a>    <strong class="jxr_keyword">private</strong> <a href="../../../../../org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html">RecoverableZooKeeper</a> recoverableZooKeeper;
+<a class="jxr_linenumber" name="77" href="#77">77</a>  
+<a class="jxr_linenumber" name="78" href="#78">78</a>    <em class="jxr_comment">// abortable in case of zk failure</em>
+<a class="jxr_linenumber" name="79" href="#79">79</a>    <strong class="jxr_keyword">protected</strong> <a href="../../../../../org/apache/hadoop/hbase/Abortable.html">Abortable</a> abortable;
+<a class="jxr_linenumber" name="80" href="#80">80</a>    <em class="jxr_comment">// Used if abortable is null</em>
+<a class="jxr_linenumber" name="81" href="#81">81</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> aborted = false;
+<a class="jxr_linenumber" name="82" href="#82">82</a>  
+<a class="jxr_linenumber" name="83" href="#83">83</a>    <em class="jxr_comment">// listeners to be notified</em>
+<a class="jxr_linenumber" name="84" href="#84">84</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> List&lt;ZooKeeperListener&gt; listeners =
+<a class="jxr_linenumber" name="85" href="#85">85</a>      <strong class="jxr_keyword">new</strong> CopyOnWriteArrayList&lt;ZooKeeperListener&gt;();
+<a class="jxr_linenumber" name="86" href="#86">86</a>  
+<a class="jxr_linenumber" name="87" href="#87">87</a>    <em class="jxr_comment">// Used by ZKUtil:waitForZKConnectionIfAuthenticating to wait for SASL</em>
+<a class="jxr_linenumber" name="88" href="#88">88</a>    <em class="jxr_comment">// negotiation to complete</em>
+<a class="jxr_linenumber" name="89" href="#89">89</a>    <strong class="jxr_keyword">public</strong> CountDownLatch saslLatch = <strong class="jxr_keyword">new</strong> CountDownLatch(1);
 <a class="jxr_linenumber" name="90" href="#90">90</a>  
-<a class="jxr_linenumber" name="91" href="#91">91</a>    <em class="jxr_comment">// base znode for this cluster</em>
-<a class="jxr_linenumber" name="92" href="#92">92</a>    <strong class="jxr_keyword">public</strong> String baseZNode;
-<a class="jxr_linenumber" name="93" href="#93">93</a>    <em class="jxr_comment">//znodes containing the locations of the servers hosting the meta replicas</em>
-<a class="jxr_linenumber" name="94" href="#94">94</a>    <strong class="jxr_keyword">private</strong> Map&lt;Integer,String&gt; metaReplicaZnodes = <strong class="jxr_keyword">new</strong> HashMap&lt;Integer, String&gt;();
-<a class="jxr_linenumber" name="95" href="#95">95</a>    <em class="jxr_comment">// znode containing ephemeral nodes of the regionservers</em>
-<a class="jxr_linenumber" name="96" href="#96">96</a>    <strong class="jxr_keyword">public</strong> String rsZNode;
-<a class="jxr_linenumber" name="97" href="#97">97</a>    <em class="jxr_comment">// znode containing ephemeral nodes of the draining regionservers</em>
-<a class="jxr_linenumber" name="98" href="#98">98</a>    <strong class="jxr_keyword">public</strong> String drainingZNode;
-<a class="jxr_linenumber" name="99" href="#99">99</a>    <em class="jxr_comment">// znode of currently active master</em>
-<a class="jxr_linenumber" name="100" href="#100">100</a>   <strong class="jxr_keyword">private</strong> String masterAddressZNode;
-<a class="jxr_linenumber" name="101" href="#101">101</a>   <em class="jxr_comment">// znode of this master in backup master directory, if not the active master</em>
-<a class="jxr_linenumber" name="102" href="#102">102</a>   <strong class="jxr_keyword">public</strong> String backupMasterAddressesZNode;
-<a class="jxr_linenumber" name="103" href="#103">103</a>   <em class="jxr_comment">// znode containing the current cluster state</em>
-<a class="jxr_linenumber" name="104" href="#104">104</a>   <strong class="jxr_keyword">public</strong> String clusterStateZNode;
-<a class="jxr_linenumber" name="105" href="#105">105</a>   <em class="jxr_comment">// znode used for table disabling/enabling</em>
-<a class="jxr_linenumber" name="106" href="#106">106</a>   @Deprecated
-<a class="jxr_linenumber" name="107" href="#107">107</a>   <strong class="jxr_keyword">public</strong> String tableZNode;
-<a class="jxr_linenumber" name="108" href="#108">108</a>   <em class="jxr_comment">// znode containing the unique cluster ID</em>
-<a class="jxr_linenumber" name="109" href="#109">109</a>   <strong class="jxr_keyword">public</strong> String clusterIdZNode;
-<a class="jxr_linenumber" name="110" href="#110">110</a>   <em class="jxr_comment">// znode used for log splitting work assignment</em>
-<a class="jxr_linenumber" name="111" href="#111">111</a>   <strong class="jxr_keyword">public</strong> String splitLogZNode;
-<a class="jxr_linenumber" name="112" href="#112">112</a>   <em class="jxr_comment">// znode containing the state of the load balancer</em>
-<a class="jxr_linenumber" name="113" href="#113">113</a>   <strong class="jxr_keyword">public</strong> String balancerZNode;
-<a class="jxr_linenumber" name="114" href="#114">114</a>   <em class="jxr_comment">// znode containing the state of region normalizer</em>
-<a class="jxr_linenumber" name="115" href="#115">115</a>   <strong class="jxr_keyword">private</strong> String regionNormalizerZNode;
-<a class="jxr_linenumber" name="116" href="#116">116</a>   <em class="jxr_comment">// znode containing the lock for the tables</em>
-<a class="jxr_linenumber" name="117" href="#117">117</a>   <strong class="jxr_keyword">public</strong> String tableLockZNode;
-<a class="jxr_linenumber" name="118" href="#118">118</a>   <em class="jxr_comment">// znode containing the state of recovering regions</em>
-<a class="jxr_linenumber" name="119" href="#119">119</a>   <strong class="jxr_keyword">public</strong> String recoveringRegionsZNode;
-<a class="jxr_linenumber" name="120" href="#120">120</a>   <em class="jxr_comment">// znode containing namespace descriptors</em>
-<a class="jxr_linenumber" name="121" href="#121">121</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> String namespaceZNode = <span class="jxr_string">"namespace"</span>;
-<a class="jxr_linenumber" name="122" href="#122">122</a> 
-<a class="jxr_linenumber" name="123" href="#123">123</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> String META_ZNODE_PREFIX = <span class="jxr_string">"meta-region-server"</span>;
+<a class="jxr_linenumber" name="91" href="#91">91</a>    <em class="jxr_comment">// node names</em>
+<a class="jxr_linenumber" name="92" href="#92">92</a>  
+<a class="jxr_linenumber" name="93" href="#93">93</a>    <em class="jxr_comment">// base znode for this cluster</em>
+<a class="jxr_linenumber" name="94" href="#94">94</a>    <strong class="jxr_keyword">public</strong> String baseZNode;
+<a class="jxr_linenumber" name="95" href="#95">95</a>    <em class="jxr_comment">//znodes containing the locations of the servers hosting the meta replicas</em>
+<a class="jxr_linenumber" name="96" href="#96">96</a>    <strong class="jxr_keyword">private</strong> Map&lt;Integer,String&gt; metaReplicaZnodes = <strong class="jxr_keyword">new</strong> HashMap&lt;Integer, String&gt;();
+<a class="jxr_linenumber" name="97" href="#97">97</a>    <em class="jxr_comment">// znode containing ephemeral nodes of the regionservers</em>
+<a class="jxr_linenumber" name="98" href="#98">98</a>    <strong class="jxr_keyword">public</strong> String rsZNode;
+<a class="jxr_linenumber" name="99" href="#99">99</a>    <em class="jxr_comment">// znode containing ephemeral nodes of the draining regionservers</em>
+<a class="jxr_linenumber" name="100" href="#100">100</a>   <strong class="jxr_keyword">public</strong> String drainingZNode;
+<a class="jxr_linenumber" name="101" href="#101">101</a>   <em class="jxr_comment">// znode of currently active master</em>
+<a class="jxr_linenumber" name="102" href="#102">102</a>   <strong class="jxr_keyword">private</strong> String masterAddressZNode;
+<a class="jxr_linenumber" name="103" href="#103">103</a>   <em class="jxr_comment">// znode of this master in backup master directory, if not the active master</em>
+<a class="jxr_linenumber" name="104" href="#104">104</a>   <strong class="jxr_keyword">public</strong> String backupMasterAddressesZNode;
+<a class="jxr_linenumber" name="105" href="#105">105</a>   <em class="jxr_comment">// znode containing the current cluster state</em>
+<a class="jxr_linenumber" name="106" href="#106">106</a>   <strong class="jxr_keyword">public</strong> String clusterStateZNode;
+<a class="jxr_linenumber" name="107" href="#107">107</a>   <em class="jxr_comment">// znode used for table disabling/enabling</em>
+<a class="jxr_linenumber" name="108" href="#108">108</a>   @Deprecated
+<a class="jxr_linenumber" name="109" href="#109">109</a>   <strong class="jxr_keyword">public</strong> String tableZNode;
+<a class="jxr_linenumber" name="110" href="#110">110</a>   <em class="jxr_comment">// znode containing the unique cluster ID</em>
+<a class="jxr_linenumber" name="111" href="#111">111</a>   <strong class="jxr_keyword">public</strong> String clusterIdZNode;
+<a class="jxr_linenumber" name="112" href="#112">112</a>   <em class="jxr_comment">// znode used for log splitting work assignment</em>
+<a class="jxr_linenumber" name="113" href="#113">113</a>   <strong class="jxr_keyword">public</strong> String splitLogZNode;
+<a class="jxr_linenumber" name="114" href="#114">114</a>   <em class="jxr_comment">// znode containing the state of the load balancer</em>
+<a class="jxr_linenumber" name="115" href="#115">115</a>   <strong class="jxr_keyword">public</strong> String balancerZNode;
+<a class="jxr_linenumber" name="116" href="#116">116</a>   <em class="jxr_comment">// znode containing the state of region normalizer</em>
+<a class="jxr_linenumber" name="117" href="#117">117</a>   <strong class="jxr_keyword">private</strong> String regionNormalizerZNode;
+<a class="jxr_linenumber" name="118" href="#118">118</a>   <em class="jxr_comment">// znode containing the lock for the tables</em>
+<a class="jxr_linenumber" name="119" href="#119">119</a>   <strong class="jxr_keyword">public</strong> String tableLockZNode;
+<a class="jxr_linenumber" name="120" href="#120">120</a>   <em class="jxr_comment">// znode containing the state of recovering regions</em>
+<a class="jxr_linenumber" name="121" href="#121">121</a>   <strong class="jxr_keyword">public</strong> String recoveringRegionsZNode;
+<a class="jxr_linenumber" name="122" href="#122">122</a>   <em class="jxr_comment">// znode containing namespace descriptors</em>
+<a class="jxr_linenumber" name="123" href="#123">123</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> String namespaceZNode = <span class="jxr_string">"namespace"</span>;
 <a class="jxr_linenumber" name="124" href="#124">124</a> 
-<a class="jxr_linenumber" name="125" href="#125">125</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Configuration conf;
+<a class="jxr_linenumber" name="125" href="#125">125</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">static</strong> String META_ZNODE_PREFIX = <span class="jxr_string">"meta-region-server"</span>;
 <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">final</strong> Exception constructorCaller;
+<a class="jxr_linenumber" name="127" href="#127">127</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Configuration conf;
 <a class="jxr_linenumber" name="128" href="#128">128</a> 
-<a class="jxr_linenumber" name="129" href="#129">129</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="130" href="#130">130</a> <em class="jxr_javadoccomment">   * Instantiate a ZooKeeper connection and watcher.</em>
-<a class="jxr_linenumber" name="131" href="#131">131</a> <em class="jxr_javadoccomment">   * @param identifier string that is passed to RecoverableZookeeper to be used as</em>
-<a class="jxr_linenumber" name="132" href="#132">132</a> <em class="jxr_javadoccomment">   * identifier for this instance. Use null for default.</em>
-<a class="jxr_linenumber" name="133" href="#133">133</a> <em class="jxr_javadoccomment">   * @throws IOException</em>
-<a class="jxr_linenumber" name="134" href="#134">134</a> <em class="jxr_javadoccomment">   * @throws ZooKeeperConnectionException</em>
-<a class="jxr_linenumber" name="135" href="#135">135</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="136" href="#136">136</a>   <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html">ZooKeeperWatcher</a>(Configuration conf, String identifier,
-<a class="jxr_linenumber" name="137" href="#137">137</a>       <a href="../../../../../org/apache/hadoop/hbase/Abortable.html">Abortable</a> abortable) <strong class="jxr_keyword">throws</strong> ZooKeeperConnectionException, IOException {
-<a class="jxr_linenumber" name="138" href="#138">138</a>     <strong class="jxr_keyword">this</strong>(conf, identifier, abortable, false);
-<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>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="142" href="#142">142</a> <em class="jxr_javadoccomment">   * Instantiate a ZooKeeper connection and watcher.</em>
-<a class="jxr_linenumber" name="143" href="#143">143</a> <em class="jxr_javadoccomment">   * @param conf</em>
-<a class="jxr_linenumber" name="144" href="#144">144</a> <em class="jxr_javadoccomment">   * @param identifier string that is passed to RecoverableZookeeper to be used as identifier for</em>
-<a class="jxr_linenumber" name="145" href="#145">145</a> <em class="jxr_javadoccomment">   *          this instance. Use null for default.</em>
-<a class="jxr_linenumber" name="146" href="#146">146</a> <em class="jxr_javadoccomment">   * @param abortable Can be null if there is on error there is no host to abort: e.g. client</em>
-<a class="jxr_linenumber" name="147" href="#147">147</a> <em class="jxr_javadoccomment">   *          context.</em>
-<a class="jxr_linenumber" name="148" href="#148">148</a> <em class="jxr_javadoccomment">   * @param canCreateBaseZNode</em>
-<a class="jxr_linenumber" name="149" href="#149">149</a> <em class="jxr_javadoccomment">   * @throws IOException</em>
-<a class="jxr_linenumber" name="150" href="#150">150</a> <em class="jxr_javadoccomment">   * @throws ZooKeeperConnectionException</em>
-<a class="jxr_linenumber" name="151" href="#151">151</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="152" href="#152">152</a>   <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html">ZooKeeperWatcher</a>(Configuration conf, String identifier,
-<a class="jxr_linenumber" name="153" href="#153">153</a>       <a href="../../../../../org/apache/hadoop/hbase/Abortable.html">Abortable</a> abortable, <strong class="jxr_keyword">boolean</strong> canCreateBaseZNode)
-<a class="jxr_linenumber" name="154" href="#154">154</a>   <strong class="jxr_keyword">throws</strong> IOException, <a href="../../../../../org/apache/hadoop/hbase/ZooKeeperConnectionException.html">ZooKeeperConnectionException</a> {
-<a class="jxr_linenumber" name="155" href="#155">155</a>     <strong class="jxr_keyword">this</strong>.conf = conf;
-<a class="jxr_linenumber" name="156" href="#156">156</a>     <em class="jxr_comment">// Capture a stack trace now.  Will print it out later if problem so we can</em>
-<a class="jxr_linenumber" name="157" href="#157">157</a>     <em class="jxr_comment">// distingush amongst the myriad ZKWs.</em>
-<a class="jxr_linenumber" name="158" href="#158">158</a>     <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="159" href="#159">159</a>       <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> Exception(<span class="jxr_string">"ZKW CONSTRUCTOR STACK TRACE FOR DEBUGGING"</span>);
-<a class="jxr_linenumber" name="160" href="#160">160</a>     } <strong class="jxr_keyword">catch</strong> (Exception e) {
-<a class="jxr_linenumber" name="161" href="#161">161</a>       <strong class="jxr_keyword">this</strong>.constructorCaller = e;
-<a class="jxr_linenumber" name="162" href="#162">162</a>     }
-<a class="jxr_linenumber" name="163" href="#163">163</a>     <strong class="jxr_keyword">this</strong>.quorum = ZKConfig.getZKQuorumServersString(conf);
-<a class="jxr_linenumber" name="164" href="#164">164</a>     <strong class="jxr_keyword">this</strong>.prefix = identifier;
-<a class="jxr_linenumber" name="165" href="#165">165</a>     <em class="jxr_comment">// Identifier will get the sessionid appended later below down when we</em>
-<a class="jxr_linenumber" name="166" href="#166">166</a>     <em class="jxr_comment">// handle the syncconnect event.</em>
-<a class="jxr_linenumber" name="167" href="#167">167</a>     <strong class="jxr_keyword">this</strong>.identifier = identifier + <span class="jxr_string">"0x0"</span>;
-<a class="jxr_linenumber" name="168" href="#168">168</a>     <strong class="jxr_keyword">this</strong>.abortable = abortable;
-<a class="jxr_linenumber" name="169" href="#169">169</a>     setNodeNames(conf);
-<a class="jxr_linenumber" name="170" href="#170">170</a>     <strong class="jxr_keyword">this</strong>.recoverableZooKeeper = ZKUtil.connect(conf, quorum, <strong class="jxr_keyword">this</strong>, identifier);
-<a class="jxr_linenumber" name="171" href="#171">171</a>     <strong class="jxr_keyword">if</strong> (canCreateBaseZNode) {
-<a class="jxr_linenumber" name="172" href="#172">172</a>       createBaseZNodes();
-<a class="jxr_linenumber" name="173" href="#173">173</a>     }
-<a class="jxr_linenumber" name="174" href="#174">174</a>   }
-<a class="jxr_linenumber" name="175" href="#175">175</a> 
-<a class="jxr_linenumber" name="176" href="#176">176</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> createBaseZNodes() <strong class="jxr_keyword">throws</strong> ZooKeeperConnectionException {
-<a class="jxr_linenumber" name="177" href="#177">177</a>     <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="178" href="#178">178</a>       <em class="jxr_comment">// Create all the necessary "directories" of znodes</em>
-<a class="jxr_linenumber" name="179" href="#179">179</a>       ZKUtil.createWithParents(<strong class="jxr_keyword">this</strong>, baseZNode);
-<a class="jxr_linenumber" name="180" href="#180">180</a>       ZKUtil.createAndFailSilent(<strong class="jxr_keyword">this</strong>, rsZNode);
-<a class="jxr_linenumber" name="181" href="#181">181</a>       ZKUtil.createAndFailSilent(<strong class="jxr_keyword">this</strong>, drainingZNode);
-<a class="jxr_linenumber" name="182" href="#182">182</a>       ZKUtil.createAndFailSilent(<strong class="jxr_keyword">this</strong>, tableZNode);
-<a class="jxr_linenumber" name="183" href="#183">183</a>       ZKUtil.createAndFailSilent(<strong class="jxr_keyword">this</strong>, splitLogZNode);
-<a class="jxr_linenumber" name="184" href="#184">184</a>       ZKUtil.createAndFailSilent(<strong class="jxr_keyword">this</strong>, backupMasterAddressesZNode);
-<a class="jxr_linenumber" name="185" href="#185">185</a>       ZKUtil.createAndFailSilent(<strong class="jxr_keyword">this</strong>, tableLockZNode);
-<a class="jxr_linenumber" name="186" href="#186">186</a>       ZKUtil.createAndFailSilent(<strong class="jxr_keyword">this</strong>, recoveringRegionsZNode);
-<a class="jxr_linenumber" name="187" href="#187">187</a>     } <strong class="jxr_keyword">catch</strong> (KeeperException e) {
-<a class="jxr_linenumber" name="188" href="#188">188</a>       <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/ZooKeeperConnectionException.html">ZooKeeperConnectionException</a>(
-<a class="jxr_linenumber" name="189" href="#189">189</a>           prefix(<span class="jxr_string">"Unexpected KeeperException creating base node"</span>), e);
-<a class="jxr_linenumber" name="190" href="#190">190</a>     }
-<a class="jxr_linenumber" name="191" href="#191">191</a>   }
-<a class="jxr_linenumber" name="192" href="#192">192</a> 
-<a class="jxr_linenumber" name="193" href="#193">193</a>   <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> Returns whether the znode is supposed to be readable by the client</em>
-<a class="jxr_linenumber" name="194" href="#194">194</a> <em class="jxr_javadoccomment">   * and DOES NOT contain sensitive information (world readable).*/</em>
-<a class="jxr_linenumber" name="195" href="#195">195</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isClientReadable(String node) {
-<a class="jxr_linenumber" name="196" href="#196">196</a>     <em class="jxr_comment">// Developer notice: These znodes are world readable. DO NOT add more znodes here UNLESS</em>
-<a class="jxr_linenumber" name="197" href="#197">197</a>     <em class="jxr_comment">// all clients need to access this data to work. Using zk for sharing data to clients (other</em>
-<a class="jxr_linenumber" name="198" href="#198">198</a>     <em class="jxr_comment">// than service lookup case is not a recommended design pattern.</em>
-<a class="jxr_linenumber" name="199" href="#199">199</a>     <strong class="jxr_keyword">return</strong>
-<a class="jxr_linenumber" name="200" href="#200">200</a>         node.equals(baseZNode) ||
-<a class="jxr_linenumber" name="201" href="#201">201</a>         isAnyMetaReplicaZnode(node) ||
-<a class="jxr_linenumber" name="202" href="#202">202</a>         node.equals(getMasterAddressZNode()) ||
-<a class="jxr_linenumber" name="203" href="#203">203</a>         node.equals(clusterIdZNode)||
-<a class="jxr_linenumber" name="204" href="#204">204</a>         node.equals(rsZNode) ||
-<a class="jxr_linenumber" name="205" href="#205">205</a>         <em class="jxr_comment">// /hbase/table and /hbase/table/foo is allowed, /hbase/table-lock is not</em>
-<a class="jxr_linenumber" name="206" href="#206">206</a>         node.equals(tableZNode) ||
-<a class="jxr_linenumber" name="207" href="#207">207</a>         node.startsWith(tableZNode + <span class="jxr_string">"/"</span>);
-<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>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="211" href="#211">211</a> <em class="jxr_javadoccomment">   * On master start, we check the znode ACLs under the root directory and set the ACLs properly</em>
-<a class="jxr_linenumber" name="212" href="#212">212</a> <em class="jxr_javadoccomment">   * if needed. If the cluster goes from an unsecure setup to a secure setup, this step is needed</em>
-<a class="jxr_linenumber" name="213" href="#213">213</a> <em class="jxr_javadoccomment">   * so that the existing znodes created with open permissions are now changed with restrictive</em>
-<a class="jxr_linenumber" name="214" href="#214">214</a> <em class="jxr_javadoccomment">   * perms.</em>
-<a class="jxr_linenumber" name="215" href="#215">215</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="216" href="#216">216</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> checkAndSetZNodeAcls() {
-<a class="jxr_linenumber" name="217" href="#217">217</a>     <strong class="jxr_keyword">if</strong> (!ZKUtil.isSecureZooKeeper(getConfiguration())) {
-<a class="jxr_linenumber" name="218" href="#218">218</a>       <strong class="jxr_keyword">return</strong>;
-<a class="jxr_linenumber" name="219" href="#219">219</a>     }
-<a class="jxr_linenumber" name="220" href="#220">220</a> 
-<a class="jxr_linenumber" name="221" href="#221">221</a>     <em class="jxr_comment">// Check the base znodes permission first. Only do the recursion if base znode's perms are not</em>
-<a class="jxr_linenumber" name="222" href="#222">222</a>     <em class="jxr_comment">// correct.</em>
-<a class="jxr_linenumber" name="223" href="#223">223</a>     <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="224" href="#224">224</a>       List&lt;ACL&gt; actualAcls = recoverableZooKeeper.getAcl(baseZNode, <strong class="jxr_keyword">new</strong> Stat());
-<a class="jxr_linenumber" name="225" href="#225">225</a> 
-<a class="jxr_linenumber" name="226" href="#226">226</a>       <strong class="jxr_keyword">if</strong> (!isBaseZnodeAclSetup(actualAcls)) {
-<a class="jxr_linenumber" name="227" href="#227">227</a>         LOG.info(<span class="jxr_string">"setting znode ACLs"</span>);
-<a class="jxr_linenumber" name="228" href="#228">228</a>         setZnodeAclsRecursive(baseZNode);
-<a class="jxr_linenumber" name="229" href="#229">229</a>       }
-<a class="jxr_linenumber" name="230" href="#230">230</a>     } <strong class="jxr_keyword">catch</strong>(KeeperException.NoNodeException nne) {
-<a class="jxr_linenumber" name="231" href="#231">231</a>       <strong class="jxr_keyword">return</strong>;
-<a class="jxr_linenumber" name="232" href="#232">232</a>     } <strong class="jxr_keyword">catch</strong>(InterruptedException ie) {
-<a class="jxr_linenumber" name="233" href="#233">233</a>       interruptedException(ie);
-<a class="jxr_linenumber" name="234" href="#234">234</a>     } <strong class="jxr_keyword">catch</strong> (IOException|KeeperException e) {
-<a class="jxr_linenumber" name="235" href="#235">235</a>       LOG.warn(<span class="jxr_string">"Received exception while checking and setting zookeeper ACLs"</span>, e);
-<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> 
-<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> <em class="jxr_javadoccomment">   * Set the znode perms recursively. This will do post-order recursion, so that baseZnode ACLs</em>
-<a class="jxr_linenumber" name="241" href="#241">241</a> <em class="jxr_javadoccomment">   * will be set last in case the master fails in between.</em>
-<a class="jxr_linenumber" name="242" href="#242">242</a> <em class="jxr_javadoccomment">   * @param znode</em>
-<a class="jxr_linenumber" name="243" href="#243">243</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="244" href="#244">244</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> setZnodeAclsRecursive(String znode) <strong class="jxr_keyword">throws</strong> KeeperException, InterruptedException {
-<a class="jxr_linenumber" name="245" href="#245">245</a>     List&lt;String&gt; children = recoverableZooKeeper.getChildren(znode, false);
-<a class="jxr_linenumber" name="246" href="#246">246</a> 
-<a class="jxr_linenumber" name="247" href="#247">247</a>     <strong class="jxr_keyword">for</strong> (String child : children) {
-<a class="jxr_linenumber" name="248" href="#248">248</a>       setZnodeAclsRecursive(ZKUtil.joinZNode(znode, child));
-<a class="jxr_linenumber" name="249" href="#249">249</a>     }
-<a class="jxr_linenumber" name="250" href="#250">250</a>     List&lt;ACL&gt; acls = ZKUtil.createACL(<strong class="jxr_keyword">this</strong>, znode, <strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="251" href="#251">251</a>     LOG.info(<span class="jxr_string">"Setting ACLs for znode:"</span> + znode + <span class="jxr_string">" , acl:"</span> + acls);
-<a class="jxr_linenumber" name="252" href="#252">252</a>     recoverableZooKeeper.setAcl(znode, acls, -1);
-<a class="jxr_linenumber" name="253" href="#253">253</a>   }
-<a class="jxr_linenumber" name="254" href="#254">254</a> 
-<a class="jxr_linenumber" name="255" href="#255">255</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="256" href="#256">256</a> <em class="jxr_javadoccomment">   * Checks whether the ACLs returned from the base znode (/hbase) is set for secure setup.</em>
-<a class="jxr_linenumber" name="257" href="#257">257</a> <em class="jxr_javadoccomment">   * @param acls acls from zookeeper</em>
-<a class="jxr_linenumber" name="258" href="#258">258</a> <em class="jxr_javadoccomment">   * @return whether ACLs are set for the base znode</em>
-<a class="jxr_linenumber" name="259" href="#259">259</a> <em class="jxr_javadoccomment">   * @throws IOException</em>
-<a class="jxr_linenumber" name="260" href="#260">260</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="261" href="#261">261</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> isBaseZnodeAclSetup(List&lt;ACL&gt; acls) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="262" href="#262">262</a>     String[] superUsers = conf.getStrings(Superusers.SUPERUSER_CONF_KEY);
-<a class="jxr_linenumber" name="263" href="#263">263</a>     <em class="jxr_comment">// Check whether ACL set for all superusers</em>
-<a class="jxr_linenumber" name="264" href="#264">264</a>     <strong class="jxr_keyword">if</strong> (superUsers != <strong class="jxr_keyword">null</strong> &amp;&amp; !checkACLForSuperUsers(superUsers, acls)) {
-<a class="jxr_linenumber" name="265" href="#265">265</a>       <strong class="jxr_keyword">return</strong> false;
-<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>     <em class="jxr_comment">// this assumes that current authenticated user is the same as zookeeper client user</em>
-<a class="jxr_linenumber" name="269" href="#269">269</a>     <em class="jxr_comment">// configured via JAAS</em>
-<a class="jxr_linenumber" name="270" href="#270">270</a>     String hbaseUser = UserGroupInformation.getCurrentUser().getShortUserName();
-<a class="jxr_linenumber" name="271" href="#271">271</a> 
-<a class="jxr_linenumber" name="272" href="#272">272</a>     <strong class="jxr_keyword">if</strong> (acls.isEmpty()) {
-<a class="jxr_linenumber" name="273" href="#273">273</a>       <strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="274" href="#274">274</a>     }
-<a class="jxr_linenumber" name="275" href="#275">275</a> 
-<a class="jxr_linenumber" name="276" href="#276">276</a>     <strong class="jxr_keyword">for</strong> (ACL acl : acls) {
-<a class="jxr_linenumber" name="277" href="#277">277</a>       <strong class="jxr_keyword">int</strong> perms = acl.getPerms();
-<a class="jxr_linenumber" name="278" href="#278">278</a>       Id id = acl.getId();
-<a class="jxr_linenumber" name="279" href="#279">279</a>       <em class="jxr_comment">// We should only set at most 3 possible ACLs for 3 Ids. One for everyone, one for superuser</em>
-<a class="jxr_linenumber" name="280" href="#280">280</a>       <em class="jxr_comment">// and one for the hbase user</em>
-<a class="jxr_linenumber" name="281" href="#281">281</a>       <strong class="jxr_keyword">if</strong> (Ids.ANYONE_ID_UNSAFE.equals(id)) {
-<a class="jxr_linenumber" name="282" href="#282">282</a>         <strong class="jxr_keyword">if</strong> (perms != Perms.READ) {
-<a class="jxr_linenumber" name="283" href="#283">283</a>           <strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="284" href="#284">284</a>         }
-<a class="jxr_linenumber" name="285" href="#285">285</a>       } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (superUsers != <strong class="jxr_keyword">null</strong> &amp;&amp; isSuperUserId(superUsers, id)) {
-<a class="jxr_linenumber" name="286" href="#286">286</a>         <strong class="jxr_keyword">if</strong> (perms != Perms.ALL) {
-<a class="jxr_linenumber" name="287" href="#287">287</a>           <strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="288" href="#288">288</a>         }
-<a class="jxr_linenumber" name="289" href="#289">289</a>       } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (<strong class="jxr_keyword">new</strong> Id(<span class="jxr_string">"sasl"</span>, hbaseUser).equals(id)) {
-<a class="jxr_linenumber" name="290" href="#290">290</a>         <strong class="jxr_keyword">if</strong> (perms != Perms.ALL) {
-<a class="jxr_linenumber" name="291" href="#291">291</a>           <strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="292" href="#292">292</a>         }
-<a class="jxr_linenumber" name="293" href="#293">293</a>       } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="294" href="#294">294</a>         <strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="295" href="#295">295</a>       }
-<a class="jxr_linenumber" name="296" href="#296">296</a>     }
-<a class="jxr_linenumber" name="297" href="#297">297</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
-<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>   <em class="jxr_comment">/*</em>
-<a class="jxr_linenumber" name="301" href="#301">301</a> <em class="jxr_comment">   * Validate whether ACL set for all superusers.</em>
-<a class="jxr_linenumber" name="302" href="#302">302</a> <em class="jxr_comment">   */</em>
-<a class="jxr_linenumber" name="303" href="#303">303</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> checkACLForSuperUsers(String[] superUsers, List&lt;ACL&gt; acls) {
-<a class="jxr_linenumber" name="304" href="#304">304</a>     <strong class="jxr_keyword">for</strong> (String user : superUsers) {
-<a class="jxr_linenumber" name="305" href="#305">305</a>       <strong class="jxr_keyword">boolean</strong> hasAccess = false;
-<a class="jxr_linenumber" name="306" href="#306">306</a>       <em class="jxr_comment">// TODO: Validate super group members also when ZK supports setting node ACL for groups.</em>
-<a class="jxr_linenumber" name="307" href="#307">307</a>       <strong class="jxr_keyword">if</strong> (!user.startsWith(AuthUtil.GROUP_PREFIX)) {
-<a class="jxr_linenumber" name="308" href="#308">308</a>         <strong class="jxr_keyword">for</strong> (ACL acl : acls) {
-<a class="jxr_linenumber" name="309" href="#309">309</a>           <strong class="jxr_keyword">if</strong> (user.equals(acl.getId().getId()) &amp;&amp; acl.getPerms() == Perms.ALL) {
-<a class="jxr_linenumber" name="310" href="#310">310</a>             hasAccess = <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="311" href="#311">311</a>             <strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="312" href="#312">312</a>           }
-<a class="jxr_linenumber" name="313" href="#313">313</a>         }
-<a class="jxr_linenumber" name="314" href="#314">314</a>         <strong class="jxr_keyword">if</strong> (!hasAccess) {
-<a class="jxr_linenumber" name="315" href="#315">315</a>           <strong class="jxr_keyword">return</strong> false;
-<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>     }
-<a class="jxr_linenumber" name="319" href="#319">319</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
-<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>   <em class="jxr_comment">/*</em>
-<a class="jxr_linenumber" name="323" href="#323">323</a> <em class="jxr_comment">   * Validate whether ACL ID is superuser.</em>
-<a class="jxr_linenumber" name="324" href="#324">324</a> <em class="jxr_comment">   */</em>
-<a class="jxr_linenumber" name="325" href="#325">325</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> isSuperUserId(String[] superUsers, Id id) {
-<a class="jxr_linenumber" name="326" href="#326">326</a>     <strong class="jxr_keyword">for</strong> (String user : superUsers) {
-<a class="jxr_linenumber" name="327" href="#327">327</a>       <em class="jxr_comment">// TODO: Validate super group members also when ZK supports setting node ACL for groups.</em>
-<a class="jxr_linenumber" name="328" href="#328">328</a>       <strong class="jxr_keyword">if</strong> (!user.startsWith(AuthUtil.GROUP_PREFIX) &amp;&amp; <strong class="jxr_keyword">new</strong> Id(<span class="jxr_string">"sasl"</span>, user).equals(id)) {
-<a class="jxr_linenumber" name="329" href="#329">329</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
-<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>     <strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="333" href="#333">333</a>   }
-<a class="jxr_linenumber" name="334" href="#334">334</a> 
-<a class="jxr_linenumber" name="335" href="#335">335</a>   @Override
-<a class="jxr_linenumber" name="336" href="#336">336</a>   <strong class="jxr_keyword">public</strong> String toString() {
-<a class="jxr_linenumber" name="337" href="#337">337</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.identifier + <span class="jxr_string">", quorum="</span> + quorum + <span class="jxr_string">", baseZNode="</span> + baseZNode;
+<a class="jxr_linenumber" name="129" href="#129">129</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Exception constructorCaller;
+<a class="jxr_linenumber" name="130" href="#130">130</a> 
+<a class="jxr_linenumber" name="131" href="#131">131</a>   <em class="jxr_comment">/*<em class="jxr_comment"> A pattern that matches a Kerberos name, borrowed from Hadoop's KerberosName */</em></em>
+<a class="jxr_linenumber" name="132" href="#132">132</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Pattern NAME_PATTERN = Pattern.compile(<span class="jxr_string">"([^/@]*)(/([^/@]*))?@([^/@]*)"</span>);
+<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">   * Instantiate a ZooKeeper connection and watcher.</em>
+<a class="jxr_linenumber" name="136" href="#136">136</a> <em class="jxr_javadoccomment">   * @param identifier string that is passed to RecoverableZookeeper to be used as</em>
+<a class="jxr_linenumber" name="137" href="#137">137</a> <em class="jxr_javadoccomment">   * identifier for this instance. Use null for default.</em>
+<a class="jxr_linenumber" name="138" href="#138">138</a> <em class="jxr_javadoccomment">   * @throws IOException</em>
+<a class="jxr_linenumber" name="139" href="#139">139</a> <em class="jxr_javadoccomment">   * @throws ZooKeeperConnectionException</em>
+<a class="jxr_linenumber" name="140" href="#140">140</a> <em class="jxr_javadoccomment">   */</em>
+<a class="jxr_linenumber" name="141" href="#141">141</a>   <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html">ZooKeeperWatcher</a>(Configuration conf, String identifier,
+<a class="jxr_linenumber" name="142" href="#142">142</a>       <a href="../../../../../org/apache/hadoop/hbase/Abortable.html">Abortable</a> abortable) <strong class="jxr_keyword">throws</strong> ZooKeeperConnectionException, IOException {
+<a class="jxr_linenumber" name="143" href="#143">143</a>     <strong class="jxr_keyword">this</strong>(conf, identifier, abortable, false);
+<a class="jxr_linenumber" name="144" href="#144">144</a>   }
+<a class="jxr_linenumber" name="145" href="#145">145</a> 
+<a class="jxr_linenumber" name="146" href="#146">146</a>   <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="147" href="#147">147</a> <em class="jxr_javadoccomment">   * Instantiate a ZooKeeper connection and watcher.</em>
+<a class="jxr_linenumber" name="148" href="#148">148</a> <em class="jxr_javadoccomment">   * @param conf</em>
+<a class="jxr_linenumber" name="149" href="#149">149</a> <em class="jxr_javadoccomment">   * @param identifier string that is passed to RecoverableZookeeper to be used as identifier for</em>
+<a class="jxr_linenumber" name="150" href="#150">150</a> <em class="jxr_javadoccomment">   *          this instance. Use null for default.</em>
+<a class="jxr_linenumber" name="151" href="#151">151</a> <em class="jxr_javadoccomment">   * @param abortable Can be null if there is on error there is no host to abort: e.g. client</em>
+<a class="jxr_linenumber" name="152" href="#152">152</a> <em class="jxr_javadoccomment">   *          context.</em>
+<a class="jxr_linenumber" name="153" href="#153">153</a> <em class="jxr_javadoccomment">   * @param canCreateBaseZNode</em>
+<a class="jxr_linenumber" name="154" href="#154">154</a> <em class="jxr_javadoccomment">   * @throws IOException</em>
+<a class="jxr_linenumber" name="155" href="#155">155</a> <em class="jxr_javadoccomment">   * @throws ZooKeeperConnectionException</em>
+<a class="jxr_linenumber" name="156" href="#156">156</a> <em class="jxr_javadoccomment">   */</em>
+<a class="jxr_linenumber" name="157" href="#157">157</a>   <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html">ZooKeeperWatcher</a>(Configuration conf, String identifier,
+<a class="jxr_linenumber" name="158" href="#158">158</a>       <a href="../../../../../org/apache/hadoop/hbase/Abortable.html">Abortable</a> abortable, <strong class="jxr_keyword">boolean</strong> canCreateBaseZNode)
+<a class="jxr_linenumber" name="159" href="#159">159</a>   <strong class="jxr_keyword">throws</strong> IOException, <a href="../../../../../org/apache/hadoop/hbase/ZooKeeperConnectionException.html">ZooKeeperConnectionException</a> {
+<a class="jxr_linenumber" name="160" href="#160">160</a>     <strong class="jxr_keyword">this</strong>.conf = conf;
+<a class="jxr_linenumber" name="161" href="#161">161</a>     <em class="jxr_comment">// Capture a stack trace now.  Will print it out later if problem so we can</em>
+<a class="jxr_linenumber" name="162" href="#162">162</a>     <em class="jxr_comment">// distingush amongst the myriad ZKWs.</em>
+<a class="jxr_linenumber" name="163" href="#163">163</a>     <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="164" href="#164">164</a>       <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> Exception(<span class="jxr_string">"ZKW CONSTRUCTOR STACK TRACE FOR DEBUGGING"</span>);
+<a class="jxr_linenumber" name="165" href="#165">165</a>     } <strong class="jxr_keyword">catch</strong> (Exception e) {
+<a class="jxr_linenumber" name="166" href="#166">166</a>       <strong class="jxr_keyword">this</strong>.constructorCaller = e;
+<a class="jxr_linenumber" name="167" href="#167">167</a>     }
+<a class="jxr_linenumber" name="168" href="#168">168</a>     <strong class="jxr_keyword">this</strong>.quorum = ZKConfig.getZKQuorumServersString(conf);
+<a class="jxr_linenumber" name="169" href="#169">169</a>     <strong class="jxr_keyword">this</strong>.prefix = identifier;
+<a class="jxr_linenumber" name="170" href="#170">170</a>     <em class="jxr_comment">// Identifier will get the sessionid appended later below down when we</em>
+<a class="jxr_linenumber" name="171" href="#171">171</a>     <em class="jxr_comment">// handle the syncconnect event.</em>
+<a class="jxr_linenumber" name="172" href="#172">172</a>     <strong class="jxr_keyword">this</strong>.identifier = identifier + <span class="jxr_string">"0x0"</span>;
+<a class="jxr_linenumber" name="173" href="#173">173</a>     <strong class="jxr_keyword">this</strong>.abortable = abortable;
+<a class="jxr_linenumber" name="174" href="#174">174</a>     setNodeNames(conf);
+<a class="jxr_linenumber" name="175" href="#175">175</a>     <strong class="jxr_keyword">this</strong>.recoverableZooKeeper = ZKUtil.connect(conf, quorum, <strong class="jxr_keyword">this</strong>, identifier);
+<a class="jxr_linenumber" name="176" href="#176">176</a>     <strong class="jxr_keyword">if</strong> (canCreateBaseZNode) {
+<a class="jxr_linenumber" name="177" href="#177">177</a>       createBaseZNodes();
+<a class="jxr_linenumber" name="178" href="#178">178</a>     }
+<a class="jxr_linenumber" name="179" href="#179">179</a>   }
+<a class="jxr_linenumber" name="180" href="#180">180</a> 
+<a class="jxr_linenumber" name="181" href="#181">181</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> createBaseZNodes() <strong class="jxr_keyword">throws</strong> ZooKeeperConnectionException {
+<a class="jxr_linenumber" name="182" href="#182">182</a>     <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="183" href="#183">183</a>       <em class="jxr_comment">// Create all the necessary "directories" of znodes</em>
+<a class="jxr_linenumber" name="184" href="#184">184</a>       ZKUtil.createWithParents(<strong class="jxr_keyword">this</strong>, baseZNode);
+<a class="jxr_linenumber" name="185" href="#185">185</a>       ZKUtil.createAndFailSilent(<strong class="jxr_keyword">this</strong>, rsZNode);
+<a class="jxr_linenumber" name="186" href="#186">186</a>       ZKUtil.createAndFailSilent(<strong class="jxr_keyword">this</strong>, drainingZNode);
+<a class="jxr_linenumber" name="187" href="#187">187</a>       ZKUtil.createAndFailSilent(<strong class="jxr_keyword">this</strong>, tableZNode);
+<a class="jxr_linenumber" name="188" href="#188">188</a>       ZKUtil.createAndFailSilent(<strong class="jxr_keyword">this</strong>, splitLogZNode);
+<a class="jxr_linenumber" name="189" href="#189">189</a>       ZKUtil.createAndFailSilent(<strong class="jxr_keyword">this</strong>, backupMasterAddressesZNode);
+<a class="jxr_linenumber" name="190" href="#190">190</a>       ZKUtil.createAndFailSilent(<strong class="jxr_keyword">this</strong>, tableLockZNode);
+<a class="jxr_linenumber" name="191" href="#191">191</a>       ZKUtil.createAndFailSilent(<strong class="jxr_keyword">this</strong>, recoveringRegionsZNode);
+<a class="jxr_linenumber" name="192" href="#192">192</a>     } <strong class="jxr_keyword">catch</strong> (KeeperException e) {
+<a class="jxr_linenumber" name="193" href="#193">193</a>       <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/hadoop/hbase/ZooKeeperConnectionException.html">ZooKeeperConnectionException</a>(
+<a class="jxr_linenumber" name="194" href="#194">194</a>           prefix(<span class="jxr_string">"Unexpected KeeperException creating base node"</span>), e);
+<a class="jxr_linenumber" name="195" href="#195">195</a>     }
+<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>   <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> Returns whether the znode is supposed to be readable by the client</em>
+<a class="jxr_linenumber" name="199" href="#199">199</a> <em class="jxr_javadoccomment">   * and DOES NOT contain sensitive information (world readable).*/</em>
+<a class="jxr_linenumber" name="200" href="#200">200</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isClientReadable(String node) {
+<a class="jxr_linenumber" name="201" href="#201">201</a>     <em class="jxr_comment">// Developer notice: These znodes are world readable. DO NOT add more znodes here UNLESS</em>
+<a class="jxr_linenumber" name="202" href="#202">202</a>     <em class="jxr_comment">// all clients need to access this data to work. Using zk for sharing data to clients (other</em>
+<a class="jxr_linenumber" name="203" href="#203">203</a>     <em class="jxr_comment">// than service lookup case is not a recommended design pattern.</em>
+<a class="jxr_linenumber" name="204" href="#204">204</a>     <strong class="jxr_keyword">return</strong>
+<a class="jxr_linenumber" name="205" href="#205">205</a>         node.equals(baseZNode) ||
+<a class="jxr_linenumber" name="206" href="#206">206</a>         isAnyMetaReplicaZnode(node) ||
+<a class="jxr_linenumber" name="207" href="#207">207</a>         node.equals(getMasterAddressZNode()) ||
+<a class="jxr_linenumber" name="208" href="#208">208</a>         node.equals(clusterIdZNode)||
+<a class="jxr_linenumber" name="209" href="#209">209</a>         node.equals(rsZNode) ||
+<a class="jxr_linenumber" name="210" href="#210">210</a>         <em class="jxr_comment">// /hbase/table and /hbase/table/foo is allowed, /hbase/table-lock is not</em>
+<a class="jxr_linenumber" name="211" href="#211">211</a>         node.equals(tableZNode) ||
+<a class="jxr_linenumber" name="212" href="#212">212</a>         node.startsWith(tableZNode + <span class="jxr_string">"/"</span>);
+<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>   <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="216" href="#216">216</a> <em class="jxr_javadoccomment">   * On master start, we check the znode ACLs under the root directory and set the ACLs properly</em>
+<a class="jxr_linenumber" name="217" href="#217">217</a> <em class="jxr_javadoccomment">   * if needed. If the cluster goes from an unsecure setup to a secure setup, this step is needed</em>
+<a class="jxr_linenumber" name="218" href="#218">218</a> <em class="jxr_javadoccomment">   * so that the existing znodes created with open permissions are now changed with restrictive</em>
+<a class="jxr_linenumber" name="219" href="#219">219</a> <em class="jxr_javadoccomment">   * perms.</em>
+<a class="jxr_linenumber" name="220" href="#220">220</a> <em class="jxr_javadoccomment">   */</em>
+<a class="jxr_linenumber" name="221" href="#221">221</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> checkAndSetZNodeAcls() {
+<a class="jxr_linenumber" name="222" href="#222">222</a>     <strong class="jxr_keyword">if</strong> (!ZKUtil.isSecureZooKeeper(getConfiguration())) {
+<a class="jxr_linenumber" name="223" href="#223">223</a>       LOG.info(<span class="jxr_string">"not a secure deployment, proceeding"</span>);
+<a class="jxr_linenumber" name="224" href="#224">224</a>       <strong class="jxr_keyword">return</strong>;
+<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_comment">// Check the base znodes permission first. Only do the recursion if base znode's perms are not</em>
+<a class="jxr_linenumber" name="228" href="#228">228</a>     <em class="jxr_comment">// correct.</em>
+<a class="jxr_linenumber" name="229" href="#229">229</a>     <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="230" href="#230">230</a>       List&lt;ACL&gt; actualAcls = recoverableZooKeeper.getAcl(baseZNode, <strong class="jxr_keyword">new</strong> Stat());
+<a class="jxr_linenumber" name="231" href="#231">231</a> 
+<a class="jxr_linenumber" name="232" href="#232">232</a>       <strong class="jxr_keyword">if</strong> (!isBaseZnodeAclSetup(actualAcls)) {
+<a class="jxr_linenumber" name="233" href="#233">233</a>         LOG.info(<span class="jxr_string">"setting znode ACLs"</span>);
+<a class="jxr_linenumber" name="234" href="#234">234</a>         setZnodeAclsRecursive(baseZNode);
+<a class="jxr_linenumber" name="235" href="#235">235</a>       }
+<a class="jxr_linenumber" name="236" href="#236">236</a>     } <strong class="jxr_keyword">catch</strong>(KeeperException.NoNodeException nne) {
+<a class="jxr_linenumber" name="237" href="#237">237</a>       <strong class="jxr_keyword">return</strong>;
+<a class="jxr_linenumber" name="238" href="#238">238</a>     } <strong class="jxr_keyword">catch</strong>(InterruptedException ie) {
+<a class="jxr_linenumber" name="239" href="#239">239</a>       interruptedException(ie);
+<a class="jxr_linenumber" name="240" href="#240">240</a>     } <strong class="jxr_keyword">catch</strong> (IOException|KeeperException e) {
+<a class="jxr_linenumber" name="241" href="#241">241</a>       LOG.warn(<span class="jxr_string">"Received exception while checking and setting zookeeper ACLs"</span>, e);
+<a class="jxr_linenumber" name="242" href="#242">242</a>     }
+<a class="jxr_linenumber" name="243" href="#243">243</a>   }
+<a class="jxr_linenumber" name="244" href="#244">244</a> 
+<a class="jxr_linenumber" name="245" href="#245">245</a>   <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="246" href="#246">246</a> <em class="jxr_javadoccomment">   * Set the znode perms recursively. This will do post-order recursion, so that baseZnode ACLs</em>
+<a class="jxr_linenumber" name="247" href="#247">247</a> <em class="jxr_javadoccomment">   * will be set last in case the master fails in between.</em>
+<a class="jxr_linenumber" name="248" href="#248">248</a> <em class="jxr_javadoccomment">   * @param znode</em>
+<a class="jxr_linenumber" name="249" href="#249">249</a> <em class="jxr_javadoccomment">   */</em>
+<a class="jxr_linenumber" name="250" href="#250">250</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> setZnodeAclsRecursive(String znode) <strong class="jxr_keyword">throws</strong> KeeperException, InterruptedException {
+<a class="jxr_linenumber" name="251" href="#251">251</a>     List&lt;String&gt; children = recoverableZooKeeper.getChildren(znode, false);
+<a class="jxr_linenumber" name="252" href="#252">252</a> 
+<a class="jxr_linenumber" name="253" href="#253">253</a>     <strong class="jxr_keyword">for</strong> (String child : children) {
+<a class="jxr_linenumber" name="254" href="#254">254</a>       setZnodeAclsRecursive(ZKUtil.joinZNode(znode, child));
+<a class="jxr_linenumber" name="255" href="#255">255</a>     }
+<a class="jxr_linenumber" name="256" href="#256">256</a>     List&lt;ACL&gt; acls = ZKUtil.createACL(<strong class="jxr_keyword">this</strong>, znode, <strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="257" href="#257">257</a>     LOG.info(<span class="jxr_string">"Setting ACLs for znode:"</span> + znode + <span class="jxr_string">" , acl:"</span> + acls);
+<a class="jxr_linenumber" name="258" href="#258">258</a>     recoverableZooKeeper.setAcl(znode, acls, -1);
+<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">   * Checks whether the ACLs returned from the base znode (/hbase) is set for secure setup.</em>
+<a class="jxr_linenumber" name="263" href="#263">263</a> <em class="jxr_javadoccomment">   * @param acls acls from zookeeper</em>
+<a class="jxr_linenumber" name="264" href="#264">264</a> <em class="jxr_javadoccomment">   * @return whether ACLs are set for the base znode</em>
+<a class="jxr_linenumber" name="265" href="#265">265</a> <em class="jxr_javadoccomment">   * @throws IOException</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">boolean</strong> isBaseZnodeAclSetup(List&lt;ACL&gt; acls) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="268" href="#268">268</a>     <strong class="jxr_keyword">if</strong> (LOG.isDebugEnabled()) {
+<a class="jxr_linenumber" name="269" href="#269">269</a>       LOG.debug(<span class="jxr_string">"Checking znode ACLs"</span>);
+<a class="jxr_linenumber" name="270" href="#270">270</a>     }
+<a class="jxr_linenumber" name="271" href="#271">271</a>     String[] superUsers = conf.getStrings(Superusers.SUPERUSER_CONF_KEY);
+<a class="jxr_linenumber" name="272" href="#272">272</a>     <em class="jxr_comment">// Check whether ACL set for all superusers</em>
+<a class="jxr_linenumber" name="273" href="#273">273</a>     <strong class="jxr_keyword">if</strong> (superUsers != <strong class="jxr_keyword">null</strong> &amp;&amp; !checkACLForSuperUsers(superUsers, acls)) {
+<a class="jxr_linenumber" name="274" href="#274">274</a>       <strong class="jxr_keyword">return</strong> false;
+<a class="jxr_linenumber" name="275" href="#275">275</a>     }
+<a class="jxr_linenumber" name="276" href="#276">276</a> 
+<a class="jxr_linenumber" name="277" href="#277">277</a>     <em class="jxr_comment">// this assumes that current authenticated user is the same as zookeeper client user</em>
+<a class="jxr_linenumber" name="278" href="#278">278</a>     <em class="jxr_comment">// configured via JAAS</em>
+<a class="jxr_linenumber" name="279" href="#279">279</a>     String hbaseUser = UserGroupInformation.getCurrentUser().getShortUserName();
+<a class="jxr_linenumber" name="280" href="#280">280</a> 
+<a class="jxr_linenumber" name="281" href="#281">281</a>     <strong class="jxr_keyword">if</strong> (acls.isEmpty()) {
+<a class="jxr_linenumber" name="282" href="#282">282</a>       <strong class="jxr_keyword">if</strong> (LOG.isDebugEnabled()) {
+<a class="jxr_linenumber" name="283" href="#283">283</a>         LOG.debug(<span class="jxr_string">"ACL is empty"</span>);
+<a class="jxr_linenumber" name="284" href="#284">284</a>       }
+<a class="jxr_linenumber" name="285" href="#285">285</a>       <strong class="jxr_keyword">return</strong> false;
+<a class="jxr_linenumber" name="286" href="#286">286</a>     }
+<a class="jxr_linenumber" name="287" href="#287">287</a> 
+<a class="jxr_linenumber" name="288" href="#288">288</a>     <strong class="jxr_keyword">for</strong> (ACL acl : acls) {
+<a class="jxr_linenumber" name="289" href="#289">289</a>       <strong class="jxr_keyword">int</strong> perms = acl.getPerms();
+<a class="jxr_linenumber" name="290" href="#290">290</a>       Id id = acl.getId();
+<a class="jxr_linenumber" name="291" href="#291">291</a>       <em class="jxr_comment">// We should only set at most 3 possible ACLs for 3 Ids. One for everyone, one for superuser</em>
+<a class="jxr_linenumber" name="292" href="#292">292</a>       <em class="jxr_comment">// and one for the hbase user</em>
+<a class="jxr_linenumber" name="293" href="#293">293</a>       <strong class="jxr_keyword">if</strong> (Ids.ANYONE_ID_UNSAFE.equals(id)) {
+<a class="jxr_linenumber" name="294" href="#294">294</a>         <strong class="jxr_keyword">if</strong> (perms != Perms.READ) {
+<a class="jxr_linenumber" name="295" href="#295">295</a>           <strong class="jxr_keyword">if</strong> (LOG.isDebugEnabled()) {
+<a class="jxr_linenumber" name="296" href="#296">296</a>             LOG.debug(String.format(<span class="jxr_string">"permissions for '%s' are not correct: have %0x, want %0x"</span>,
+<a class="jxr_linenumber" name="297" href="#297">297</a>               id, perms, Perms.READ));
+<a class="jxr_linenumber" name="298" href="#298">298</a>           }
+<a class="jxr_linenumber" name="299" href="#299">299</a>           <strong class="jxr_keyword">return</strong> false;
+<a class="jxr_linenumber" name="300" href="#300">300</a>         }
+<a class="jxr_linenumber" name="301" href="#301">301</a>       } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (superUsers != <strong class="jxr_keyword">null</strong> &amp;&amp; isSuperUserId(superUsers, id)) {
+<a class="jxr_linenumber" name="302" href="#302">302</a>         <strong class="jxr_keyword">if</strong> (perms != Perms.ALL) {
+<a class="jxr_linenumber" name="303" href="#303">303</a>           <strong class="jxr_keyword">if</strong> (LOG.isDebugEnabled()) {
+<a class="jxr_linenumber" name="304" href="#304">304</a>             LOG.debug(String.format(<span class="jxr_string">"permissions for '%s' are not correct: have %0x, want %0x"</span>,
+<a class="jxr_linenumber" name="305" href="#305">305</a>               id, perms, Perms.ALL));
+<a class="jxr_linenumber" name="306" href="#306">306</a>           }
+<a class="jxr_linenumber" name="307" href="#307">307</a>           <strong class="jxr_keyword">return</strong> false;
+<a class="jxr_linenumber" name="308" href="#308">308</a>         }
+<a class="jxr_linenumber" name="309" href="#309">309</a>       } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (<span class="jxr_string">"sasl"</span>.equals(id.getScheme())) {
+<a class="jxr_linenumber" name="310" href="#310">310</a>         String name = id.getId();
+<a class="jxr_linenumber" name="311" href="#311">311</a>         <em class="jxr_comment">// If ZooKeeper recorded the Kerberos full name in the ACL, use only the shortname</em>
+<a class="jxr_linenumber" name="312" href="#312">312</a>         Matcher match = NAME_PATTERN.matcher(name);
+<a class="jxr_linenumber" name="313" href="#313">313</a>         <strong class="jxr_keyword">if</strong> (match.matches()) {
+<a class="jxr_linenumber" name="314" href="#314">314</a>           name = match.group(1);
+<a class="jxr_linenumber" name="315" href="#315">315</a>         }
+<a class="jxr_linenumber" name="316" href="#316">316</a>         <strong class="jxr_keyword">if</strong> (name.equals(hbaseUser)) {
+<a class="jxr_linenumber" name="317" href="#317">317</a>           <strong class="jxr_keyword">if</strong> (perms != Perms.ALL) {
+<a class="jxr_linenumber" name="318" href="#318">318</a>             <strong class="jxr_keyword">if</strong> (LOG.isDebugEnabled()) {
+<a class="jxr_linenumber" name="319" href="#319">319</a>               LOG.debug(String.format(<span class="jxr_string">"permissions for '%s' are not correct: have %0x, want %0x"</span>,
+<a class="jxr_linenumber" name="320" href="#320">320</a>                 id, perms, Perms.ALL));
+<a class="jxr_linenumber" name="321" href="#321">321</a>             }
+<a class="jxr_linenumber" name="322" href="#322">322</a>             <strong class="jxr_keyword">return</strong> false;
+<a class="jxr_linenumber" name="323" href="#323">323</a>           }
+<a class="jxr_linenumber" name="324" href="#324">324</a>         } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="325" href="#325">325</a>           <strong class="jxr_keyword">if</strong> (LOG.isDebugEnabled()) {
+<a class="jxr_linenumber" name="326" href="#326">326</a>             LOG.debug(<span class="jxr_string">"Unexpected shortname in SASL ACL: "</span> + id);
+<a class="jxr_linenumber" name="327" href="#327">327</a>           }
+<a class="jxr_linenumber" name="328" href="#328">328</a>           <strong class="jxr_keyword">return</strong> false;
+<a class="jxr_linenumber" name="329" href="#329">329</a>         }
+<a class="jxr_linenumber" name="330" href="#330">330</a>       } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="331" href="#331">331</a>         <strong class="jxr_keyword">if</strong> (LOG.isDebugEnabled()) {
+<a class="jxr_linenumber" name="332" href="#332">332</a>           LOG.debug(<span class="jxr_string">"unexpected ACL id '"</span> + id + <span class="jxr_string">"'"</span>);
+<a class="jxr_linenumber" name="333" href="#333">333</a>         }
+<a class="jxr_linenumber" name="334" href="#334">334</a>         <strong class="jxr_keyword">return</strong> false;
+<a class="jxr_linenumber" name="335" href="#335">335</a>       }
+<a class="jxr_linenumber" name="336" href="#336">336</a>     }
+<a class="jxr_linenumber" name="337" href="#337">337</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
 <a class="jxr_linenumber" name="338" href="#338">338</a>   }
-<a class="jxr_linenumber" name="339" href="#339">339</a> 
-<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> <em class="jxr_javadoccomment">   * Adds this instance's identifier as a prefix to the passed &lt;code&gt;str&lt;/code&gt;</em>
-<a class="jxr_linenumber" name="342" href="#342">342</a> <em class="jxr_javadoccomment">   * @param str String to amend.</em>
-<a class="jxr_linenumber" name="343" href="#343">343</a> <em class="jxr_javadoccomment">   * @return A new string with this instance's identifier as prefix: e.g.</em>
-<a class="jxr_linenumber" name="344" href="#344">344</a> <em class="jxr_javadoccomment">   * if passed 'hello world', the returned string could be</em>
-<a class="jxr_linenumber" name="345" href="#345">345</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="346" href="#346">346</a>   <strong class="jxr_keyword">public</strong> String prefix(<strong class="jxr_keyword">final</strong> String str) {
-<a class="jxr_linenumber" name="347" href="#347">347</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.toString() + <span class="jxr_string">" "</span> + str;
-<a class="jxr_linenumber" name="348" href="#348">348</a>   }
-<a class="jxr_linenumber" name="349" href="#349">349</a> 
-<a class="jxr_linenumber" name="350" href="#350">350</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="351" href="#351">351</a> <em class="jxr_javadoccomment">   * Set the local variable node names using the specified configuration.</em>
-<a class="jxr_linenumber" name="352" href="#352">352</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="353" href="#353">353</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> setNodeNames(Configuration conf) {
-<a class="jxr_linenumber" name="354" href="#354">354</a>     baseZNode = conf.get(HConstants.ZOOKEEPER_ZNODE_PARENT,
-<a class="jxr_linenumber" name="355" href="#355">355</a>         HConstants.DEFAULT_ZOOKEEPER_ZNODE_PARENT);
-<a class="jxr_linenumber" name="356" href="#356">356</a>     metaReplicaZnodes.put(0, ZKUtil.joinZNode(baseZNode,
-<a class="jxr_linenumber" name="357" href="#357">357</a>            conf.get(<span class="jxr_string">"zookeeper.znode.metaserver"</span>, <span class="jxr_string">"meta-region-server"</span>)));
-<a class="jxr_linenumber" name="358" href="#358">358</a>     <strong class="jxr_keyword">int</strong> numMetaReplicas = conf.getInt(HConstants.META_REPLICAS_NUM,
-<a class="jxr_linenumber" name="359" href="#359">359</a>             HConstants.DEFAULT_META_REPLICA_NUM);
-<a class="jxr_linenumber" name="360" href="#360">360</a>     <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 1; i &lt; numMetaReplicas; i++) {
-<a class="jxr_linenumber" name="361" href="#361">361</a>       String str = ZKUtil.joinZNode(baseZNode,
-<a class="jxr_linenumber" name="362" href="#362">362</a>         conf.get(<span class="jxr_string">"zookeeper.znode.metaserver"</span>, <span class="jxr_string">"meta-region-server"</span>) + <span class="jxr_string">"-"</span> + i);
-<a class="jxr_linenumber" name="363" href="#363">363</a>       metaReplicaZnodes.put(i, str);
-<a class="jxr_linenumber" name="364" href="#364">364</a>     }
-<a class="jxr_linenumber" name="365" href="#365">365</a>     rsZNode = ZKUtil.joinZNode(baseZNode,
-<a class="jxr_linenumber" name="366" href="#366">366</a>         conf.get(<span class="jxr_string">"zookeeper.znode.rs"</span>, <span class="jxr_string">"rs"</span>));
-<a class="jxr_linenumber" name="367" href="#367">367</a>     drainingZNode = ZKUtil.joinZNode(baseZNode,
-<a class="jxr_linenumber" name="368" href="#368">368</a>         conf.get(<span class="jxr_string">"zookeeper.znode.draining.rs"</span>, <span class="jxr_string">"draining"</span>));
-<a class="jxr_linenumber" name="369" href="#369">369</a>     masterAddressZNode = ZKUtil.joinZNode(baseZNode,
-<a class="jxr_linenumber" name="370" href="#370">370</a>         conf.get(<span class="jxr_string">"zookeeper.znode.master"</span>, <span class="jxr_string">"master"</span>));
-<a class="jxr_linenumber" name="371" href="#371">371</a>     backupMasterAddressesZNode = ZKUtil.joinZNode(baseZNode,
-<a class="jxr_linenumber" name="372" href="#372">372</a>         conf.get(<span class="jxr_string">"zookeeper.znode.backup.masters"</span>, <span class="jxr_string">"backup-masters"</span>));
-<a class="jxr_linenumber" name="373" href="#373">373</a>     clusterStateZNode = ZKUtil.joinZNode(baseZNode,
-<a class="jxr_linenumber" name="374" href="#374">374</a>         conf.get(<span class="jxr_string">"zookeeper.znode.state"</span>, <span class="jxr_string">"running"</span>));
-<a class="jxr_linenumber" name="375" href="#375">375</a>     tableZNode = ZKUtil.joinZNode(baseZNode,
-<a class="jxr_linenumber" name="376" href="#376">376</a>         conf.get(<span class="jxr_string">"zookeeper.znode.tableEnableDisable"</span>, <span class="jxr_string">"table"</span>));
-<a class="jxr_linenumber" name="377" href="#377">377</a>     clusterIdZNode = ZKUtil.joinZNode(baseZNode,
-<a class="jxr_linenumber" name="378" href="#378">378</a>         conf.get(<span class="jxr_string">"zookeeper.znode.clusterId"</span>, <span class="jxr_string">"hbaseid"</span>));
-<a class="jxr_linenumber" name="379" href="#379">379</a>     splitLogZNode = ZKUtil.joinZNode(baseZNode,
-<a class="jxr_linenumber" name="380" href="#380">380</a>         conf.get(<span class="jxr_string">"zookeeper.znode.splitlog"</span>, HConstants.SPLIT_LOGDIR_NAME));
-<a class="jxr_linenumber" name="381" href="#381">381</a>     balancerZNode = ZKUtil.joinZNode(baseZNode,
-<a class="jxr_linenumber" name="382" href="#382">382</a>         conf.get(<span class="jxr_string">"zookeeper.znode.balancer"</span>, <span class="jxr_string">"balancer"</span>));
-<a class="jxr_linenumber" name="383" href="#383">383</a>     regionNormalizerZNode = ZKUtil.joinZNode(baseZNode,
-<a class="jxr_linenumber" name="384" href="#384">384</a>       conf.get(<span class="jxr_string">"zookeeper.znode.regionNormalizer"</span>, <span class="jxr_string">"normalizer"</span>));
-<a class="jxr_linenumber" name="385" href="#385">385</a>     tableLockZNode = ZKUtil.joinZNode(baseZNode,
-<a class="jxr_linenumber" name="386" href="#386">386</a>         conf.get(<span class="jxr_string">"zookeeper.znode.tableLock"</span>, <span class="jxr_string">"table-lock"</span>));
-<a class="jxr_linenumber" name="387" href="#387">387</a>     recoveringRegionsZNode = ZKUtil.joinZNode(baseZNode,
-<a class="jxr_linenumber" name="388" href="#388">388</a>         conf.get(<span class="jxr_string">"zookeeper.znode.recovering.regions"</span>, <span class="jxr_string">"recovering-regions"</span>));
-<a class="jxr_linenumber" name="389" href="#389">389</a>     namespaceZNode = ZKUtil.joinZNode(baseZNode,
-<a class="jxr_linenumber" name="390" href="#390">390</a>         conf.get(<span class="jxr_string">"zookeeper.znode.namespace"</span>, <span class="jxr_string">"namespace"</span>));
-<a class="jxr_linenumber" name="391" href="#391">391</a>   }
-<a class="jxr_linenumber" name="392" href="#392">392</a> 
-<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">   * Is the znode of any meta replica</em>
-<a class="jxr_linenumber" name="395" href="#395">395</a> <em class="jxr_javadoccomment">   * @param node</em>
-<a class="jxr_linenumber" name="396" href="#396">396</a> <em class="jxr_javadoccomment">   * @return true or false</em>
-<a class="jxr_linenumber" name="397" href="#397">397</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="398" href="#398">398</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isAnyMetaReplicaZnode(String node) {
-<a class="jxr_linenumber" name="399" href="#399">399</a>     <strong class="jxr_keyword">if</strong> (metaReplicaZnodes.values().contains(node)) {
-<a class="jxr_linenumber" name="400" href="#400">400</a>       <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="401" href="#401">401</a>     }
-<a class="jxr_linenumber" name="402" href="#402">402</a>     <strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="403" href="#403">403</a>   }
-<a class="jxr_linenumber" name="404

<TRUNCATED>

[22/23] hbase-site git commit: Published site at 2cf8af5bf1d501156cbb3b421cf75c1051ead7d9.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/checkstyle-aggregate.html
----------------------------------------------------------------------
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index 10ca7b3..1f03463 100644
--- a/checkstyle-aggregate.html
+++ b/checkstyle-aggregate.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20160203" />
+    <meta name="Date-Revision-yyyymmdd" content="20160204" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -283,7 +283,7 @@
 <td>1672</td>
 <td>0</td>
 <td>0</td>
-<td>12854</td></tr></table></div>
+<td>12853</td></tr></table></div>
 <div class="section">
 <h2><a name="Files"></a>Files</h2>
 <table border="0" class="table table-striped">
@@ -1891,7 +1891,7 @@
 <td><a href="#org.apache.hadoop.hbase.io.hfile.ChecksumUtil.java">org/apache/hadoop/hbase/io/hfile/ChecksumUtil.java</a></td>
 <td>0</td>
 <td>0</td>
-<td>2</td></tr>
+<td>1</td></tr>
 <tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CombinedBlockCache.java">org/apache/hadoop/hbase/io/hfile/CombinedBlockCache.java</a></td>
 <td>0</td>
@@ -6094,7 +6094,7 @@
 <ul>
 <li>ordered: <tt>&quot;true&quot;</tt></li>
 <li>sortStaticImportsAlphabetically: <tt>&quot;true&quot;</tt></li></ul></td>
-<td>965</td>
+<td>964</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="a">
 <td></td>
@@ -6124,12 +6124,12 @@
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_javadoc.html#JavadocTagContinuationIndentation">JavadocTagContinuationIndentation</a>
 <ul>
 <li>offset: <tt>&quot;2&quot;</tt></li></ul></td>
-<td>758</td>
+<td>759</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_javadoc.html#NonEmptyAtclauseDescription">NonEmptyAtclauseDescription</a></td>
-<td>3426</td>
+<td>3425</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="b">
 <td>misc</td>
@@ -14553,7 +14553,7 @@
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 64 has parse error. Missed HTML close tag 'code'. Sometimes it means that close tag missed for one of previous tags.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/client/HBaseAdmin.html#L1767">1767</a></td></tr>
 <tr class="a">
@@ -28607,26 +28607,20 @@
 <th>Line</th></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
-<td>imports</td>
-<td>ImportOrder</td>
-<td>Wrong order for 'org.apache.hadoop.fs.Path' import.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html#L28">28</a></td></tr>
-<tr class="a">
-<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/io/hfile/ChecksumUtil.html#L35">35</a></td></tr></table></div>
+<td><a href="./xref/org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html#L34">34</a></td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.io.hfile.CombinedBlockCache.java">org/apache/hadoop/hbase/io/hfile/CombinedBlockCache.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>
@@ -28635,19 +28629,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.io.hfile.CompoundBloomFilter.java">org/apache/hadoop/hbase/io/hfile/CompoundBloomFilter.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/io/hfile/CompoundBloomFilter.html#L63">63</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>
@@ -28656,13 +28650,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.io.hfile.CompoundBloomFilterBase.java">org/apache/hadoop/hbase/io/hfile/CompoundBloomFilterBase.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>
@@ -28671,19 +28665,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.io.hfile.CompoundBloomFilterWriter.java">org/apache/hadoop/hbase/io/hfile/CompoundBloomFilterWriter.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.CellComparator' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/CompoundBloomFilterWriter.html#L31">31</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>
@@ -28692,13 +28686,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.io.hfile.CorruptHFileException.java">org/apache/hadoop/hbase/io/hfile/CorruptHFileException.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>
@@ -28707,103 +28701,103 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.io.hfile.FixedFileTrailer.java">org/apache/hadoop/hbase/io/hfile/FixedFileTrailer.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.MetaCellComparator' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/FixedFileTrailer.html#L30">30</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.fs.FSDataInputStream' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/FixedFileTrailer.html#L32">32</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>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/FixedFileTrailer.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>blocks</td>
 <td>NeedBraces</td>
 <td>'for' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/FixedFileTrailer.html#L145">145</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>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/FixedFileTrailer.html#L152">152</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/io/hfile/FixedFileTrailer.html#L170">170</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/io/hfile/FixedFileTrailer.html#L171">171</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/io/hfile/FixedFileTrailer.html#L190">190</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/io/hfile/FixedFileTrailer.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>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/FixedFileTrailer.html#L235">235</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/io/hfile/FixedFileTrailer.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>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/FixedFileTrailer.html#L258">258</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/io/hfile/FixedFileTrailer.html#L259">259</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/io/hfile/FixedFileTrailer.html#L317">317</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/io/hfile/FixedFileTrailer.html#L318">318</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>
@@ -28812,295 +28806,295 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.io.hfile.HFile.java">org/apache/hadoop/hbase/io/hfile/HFile.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.commons.logging.Log' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFile.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>
 <td>Wrong order for 'org.apache.hadoop.conf.Configuration' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFile.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 'com.google.common.annotations.VisibleForTesting' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFile.html#L67">67</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/io/hfile/HFile.html#L134">134</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 113).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFile.html#L214">214</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 116).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFile.html#L215">215</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 118).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFile.html#L216">216</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/io/hfile/HFile.html#L308">308</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/io/hfile/HFile.html#L309">309</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 4, expected level should be 6.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFile.html#L344">344</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 6, expected level should be 8.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFile.html#L345">345</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 4, expected level should be 6.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFile.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>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 6, expected level should be 8.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFile.html#L350">350</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 4, expected level should be 6.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFile.html#L351">351</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 6, expected level should be 8.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFile.html#L352">352</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/io/hfile/HFile.html#L367">367</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/io/hfile/HFile.html#L368">368</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFile.html#L371">371</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 2.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFile.html#L372">372</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 2.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFile.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 2.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFile.html#L375">375</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 2.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFile.html#L376">376</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/io/hfile/HFile.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>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFile.html#L487">487</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/io/hfile/HFile.html#L501">501</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/io/hfile/HFile.html#L502">502</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method call' child have incorrect indentation level 8, expected level should be 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFile.html#L502">502</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/io/hfile/HFile.html#L504">504</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/io/hfile/HFile.html#L505">505</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/io/hfile/HFile.html#L506">506</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/io/hfile/HFile.html#L507">507</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 130).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFile.html#L551">551</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 120).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFile.html#L553">553</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 106).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFile.html#L627">627</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/io/hfile/HFile.html#L740">740</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/io/hfile/HFile.html#L741">741</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/io/hfile/HFile.html#L759">759</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/io/hfile/HFile.html#L760">760</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/io/hfile/HFile.html#L767">767</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/io/hfile/HFile.html#L769">769</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 117).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFile.html#L780">780</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 114).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFile.html#L781">781</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 115).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFile.html#L782">782</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 114).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFile.html#L788">788</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 114).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFile.html#L789">789</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/io/hfile/HFile.html#L791">791</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 106).</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFile.html#L794">794</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -29109,574 +29103,574 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.io.hfile.HFileBlock.java">org/apache/hadoop/hbase/io/hfile/HFileBlock.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.io.ByteArrayOutputStream' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L37">37</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'com.google.common.annotations.VisibleForTesting' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L53">53</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 modifier' have incorrect indentation level 8, expected level should be one of the following: 4, 6.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L126">126</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' child have incorrect indentation level 10, expected level should be one of the following: 6, 8.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L128">128</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>'member def type' have incorrect indentation level 10, expected level should be one of the following: 6, 8.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L129">129</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' child have incorrect indentation level 10, expected level should be one of the following: 6, 8.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L129">129</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 10, expected level should be one of the following: 6, 8.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L130">130</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 12, expected level should be one of the following: 8, 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L131">131</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 10, expected level should be one of the following: 6, 8.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L132">132</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>'else' child have incorrect indentation level 12, expected level should be one of the following: 8, 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L134">134</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>'member def type' have incorrect indentation level 12, expected level should be one of the following: 8, 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L134">134</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'else' child have incorrect indentation level 12, expected level should be one of the following: 8, 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L135">135</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'else' child have incorrect indentation level 12, expected level should be one of the following: 8, 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L136">136</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>'else rcurly' have incorrect indentation level 10, expected level should be one of the following: 6, 8.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L137">137</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 one of the following: 6, 8.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L138">138</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 10, expected level should be one of the following: 6, 8.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L139">139</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'member def type' have incorrect indentation level 10, expected level should be one of the following: 6, 8.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L140">140</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 10, expected level should be one of the following: 6, 8.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L140">140</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>'member def type' have incorrect indentation level 10, expected level should be one of the following: 6, 8.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L141">141</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' child have incorrect indentation level 10, expected level should be one of the following: 6, 8.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L141">141</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 10, expected level should be one of the following: 6, 8.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L142">142</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 10, expected level should be one of the following: 6, 8.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L143">143</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' have incorrect indentation level 10, expected level should be one of the following: 6, 8.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L144">144</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 12, expected level should be one of the following: 8, 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L145">145</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 10, expected level should be one of the following: 6, 8.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L146">146</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' child have incorrect indentation level 10, expected level should be one of the following: 6, 8.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L147">147</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 rcurly' have incorrect indentation level 8, expected level should be one of the following: 4, 6.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L148">148</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' have incorrect indentation level 8, expected level should be one of the following: 4, 6.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L150">150</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 10, expected level should be one of the following: 6, 8.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L152">152</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 rcurly' have incorrect indentation level 8, expected level should be one of the following: 4, 6.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L153">153</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 modifier' have incorrect indentation level 8, expected level should be one of the following: 4, 6.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L155">155</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' child have incorrect indentation level 10, expected level should be one of the following: 6, 8.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L158">158</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 rcurly' have incorrect indentation level 8, expected level should be one of the following: 4, 6.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L159">159</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>'object def rcurly' have incorrect indentation level 6, expected level should be one of the following: 2, 4.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L160">160</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/io/hfile/HFileBlock.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>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' have incorrect indentation level 3, expected level should be 2.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.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>blocks</td>
 <td>NeedBraces</td>
 <td>'for' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L890">890</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/io/hfile/HFileBlock.html#L900">900</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/io/hfile/HFileBlock.html#L929">929</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/io/hfile/HFileBlock.html#L930">930</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/io/hfile/HFileBlock.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>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L1036">1036</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/io/hfile/HFileBlock.html#L1037">1037</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/io/hfile/HFileBlock.html#L1058">1058</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/io/hfile/HFileBlock.html#L1075">1075</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L1161">1161</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/io/hfile/HFileBlock.html#L1206">1206</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L1282">1282</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/io/hfile/HFileBlock.html#L1397">1397</a></td></tr>
-<tr class="b">
+<td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L1398">1398</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/io/hfile/HFileBlock.html#L1430">1430</a></td></tr>
-<tr class="a">
+<td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L1431">1431</a></td></tr>
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L1463">1463</a></td></tr>
-<tr class="b">
+<td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L1464">1464</a></td></tr>
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L1914">1914</a></td></tr></table></div>
+<td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#L1915">1915</a></td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.io.hfile.HFileBlockIndex.java">org/apache/hadoop/hbase/io/hfile/HFileBlockIndex.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>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/io/hfile/HFileBlockIndex.html#L66">66</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>'class def modifier' have incorrect indentation level 3, expected level should be 2.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlockIndex.html#L108">108</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>'class def modifier' have incorrect indentation level 3, expected level should be 2.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlockIndex.html#L225">225</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/io/hfile/HFileBlockIndex.html#L392">392</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/io/hfile/HFileBlockIndex.html#L456">456</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>'class def modifier' have incorrect indentation level 3, expected level should be 2.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlockIndex.html#L504">504</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/io/hfile/HFileBlockIndex.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/io/hfile/HFileBlockIndex.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/io/hfile/HFileBlockIndex.html#L547">547</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/io/hfile/HFileBlockIndex.html#L552">552</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/io/hfile/HFileBlockIndex.html#L576">576</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/io/hfile/HFileBlockIndex.html#L577">577</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/io/hfile/HFileBlockIndex.html#L578">578</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/io/hfile/HFileBlockIndex.html#L584">584</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/io/hfile/HFileBlockIndex.html#L667">667</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/io/hfile/HFileBlockIndex.html#L713">713</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/io/hfile/HFileBlockIndex.html#L759">759</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/io/hfile/HFileBlockIndex.html#L762">762</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>'else' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlockIndex.html#L764">764</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/io/hfile/HFileBlockIndex.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>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlockIndex.html#L865">865</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/io/hfile/HFileBlockIndex.html#L880">880</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/io/hfile/HFileBlockIndex.html#L1044">1044</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/io/hfile/HFileBlockIndex.html#L1072">1072</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/io/hfile/HFileBlockIndex.html#L1102">1102</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/io/hfile/HFileBlockIndex.html#L1108">1108</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/io/hfile/HFileBlockIndex.html#L1111">1111</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/io/hfile/HFileBlockIndex.html#L1131">1131</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/io/hfile/HFileBlockIndex.html#L1136">1136</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/io/hfile/HFileBlockIndex.html#L1150">1150</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/io/hfile/HFileBlockIndex.html#L1257">1257</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/io/hfile/HFileBlockIndex.html#L1261">1261</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/io/hfile/HFileBlockIndex.html#L1286">1286</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/io/hfile/HFileBlockIndex.html#L1332">1332</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/io/hfile/HFileBlockIndex.html#L1488">1488</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>LeftCurly</td>
 <td>'{' at column 7 should be on the previous line.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlockIndex.html#L1521">1521</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/io/hfile/HFileBlockIndex.html#L1548">1548</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/io/hfile/HFileBlockIndex.html#L1549">1549</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>'for' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileBlockIndex.html#L1565">1565</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/io/hfile/HFileBlockIndex.html#L1597">1597</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>
@@ -29685,19 +29679,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.io.hfile.HFileContext.java">org/apache/hadoop/hbase/io/hfile/HFileContext.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>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileContext.html#L67">67</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>
@@ -29706,85 +29700,85 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoder.java">org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoder.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/io/hfile/HFileDataBlockEncoder.html#L23">23</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/io/hfile/HFileDataBlockEncoder.html#L43">43</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/io/hfile/HFileDataBlockEncoder.html#L44">44</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/io/hfile/HFileDataBlockEncoder.html#L45">45</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/io/hfile/HFileDataBlockEncoder.html#L52">52</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/io/hfile/HFileDataBlockEncoder.html#L53">53</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/io/hfile/HFileDataBlockEncoder.html#L54">54</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoder.html#L56">56</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/io/hfile/HFileDataBlockEncoder.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>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoder.html#L65">65</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/io/hfile/HFileDataBlockEncoder.html#L66">66</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/io/hfile/HFileDataBlockEncoder.html#L67">67</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>
@@ -29793,13 +29787,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoderImpl.java">org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoderImpl.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>
@@ -29808,121 +29802,121 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.io.hfile.HFilePrettyPrinter.java">org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.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/io/hfile/HFilePrettyPrinter.html#L52">52</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.HBaseConfiguration' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#L64">64</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.util.BloomFilterFactory' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#L73">73</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.codahale.metrics.Histogram' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#L81">81</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.codahale.metrics.Counter' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#L82">82</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.codahale.metrics.ConsoleReporter' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#L87">87</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>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#L165">165</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/io/hfile/HFilePrettyPrinter.html#L209">209</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/io/hfile/HFilePrettyPrinter.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>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#L219">219</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/io/hfile/HFilePrettyPrinter.html#L246">246</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/io/hfile/HFilePrettyPrinter.html#L274">274</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/io/hfile/HFilePrettyPrinter.html#L300">300</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>MethodParamPad</td>
 <td>'(' is preceded with whitespace.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#L523">523</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/io/hfile/HFilePrettyPrinter.html#L529">529</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/io/hfile/HFilePrettyPrinter.html#L543">543</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/io/hfile/HFilePrettyPrinter.html#L613">613</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>FinalClass</td>
 <td>Class SimpleReporter should be declared as final.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.html#L630">630</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>FinalClass</td>
@@ -29931,325 +29925,325 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.io.hfile.HFileReaderImpl.java">org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'com.google.common.annotations.VisibleForTesting' import.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.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>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html#L305">305</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/io/hfile/HFileReaderImpl.html#L307">307</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/io/hfile/HFileReaderImpl.html#L323">323</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/io/hfile/HFileReaderImpl.html#L555">555</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/io/hfile/HFileReaderImpl.html#L623">623</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/io/hfile/HFileReaderImpl.html#L627">627</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/io/hfile/HFileReaderImpl.html#L638">638</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/io/hfile/HFileReaderImpl.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>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html#L880">880</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/io/hfile/HFileReaderImpl.html#L886">886</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html#L922">922</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/io/hfile/HFileReaderImpl.html#L927">927</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/io/hfile/HFileReaderImpl.html#L1087">1087</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/io/hfile/HFileReaderImpl.html#L1143">1143</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/io/hfile/HFileReaderImpl.html#L1197">1197</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 modifier' have incorrect indentation level 3, expected level should be 2.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html#L1328">1328</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' have incorrect indentation level 5, expected level should be 4.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html#L1332">1332</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 7, expected level should be 6.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html#L1333">1333</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>'member def type' have incorrect indentation level 7, expected level should be 6.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html#L1333">1333</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 7, expected level should be 6.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html#L1334">1334</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>'member def type' have incorrect indentation level 7, expected level should be 6.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html#L1334">1334</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 7, expected level should be 6.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html#L1336">1336</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' have incorrect indentation level 9, expected level should be 8.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html#L1337">1337</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 11, expected level should be 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.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>indentation</td>
 <td>Indentation</td>
 <td>'member def type' have incorrect indentation level 11, expected level should be 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html#L1338">1338</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 11, expected level should be 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html#L1339">1339</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 9, expected level should be 8.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html#L1345">1345</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 9, expected level should be 8.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html#L1347">1347</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 11, expected level should be 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html#L1348">1348</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 9, expected level should be 8.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html#L1349">1349</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 9, expected level should be 8.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html#L1350">1350</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>'member def type' have incorrect indentation level 9, expected level should be 8.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html#L1350">1350</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' have incorrect indentation level 9, expected level should be 8.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html#L1355">1355</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 11, expected level should be 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html#L1367">1367</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 13, expected level should be 12.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html#L1375">1375</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 13, expected level should be 12.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html#L1381">1381</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 13, expected level should be 12.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html#L1382">1382</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 11, expected level should be 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html#L1383">1383</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 11, expected level should be 10.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html#L1384">1384</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 9, expected level should be 8.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html#L1385">1385</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 9, expected level should be 8.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html#L1386">1386</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 7, expected level should be 6.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html#L1387">1387</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 rcurly' have incorrect indentation level 5, expected level should be 4.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html#L1388">1388</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 5, expected level should be 4.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html#L1389">1389</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 rcurly' have incorrect indentation level 3, expected level should be 2.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html#L1390">1390</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/io/hfile/HFileReaderImpl.html#L1393">1393</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/io/hfile/HFileReaderImpl.html#L1396">1396</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/io/hfile/HFileReaderImpl.html#L1411">1411</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/io/hfile/HFileReaderImpl.html#L1591">1591</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/io/hfile/HFileReaderImpl.html#L1656">1656</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>'for' construct must use '{}'s.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html#L1792">1792</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>
@@ -30258,139 +30252,139 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.io.hfile.HFileScanner.java">org/apache/hadoop/hbase/io/hfile/HFileScanner.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/io/hfile/HFileScanner.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>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileScanner.html#L47">47</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 2.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileScanner.html#L49">49</a></td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileScanner.html#L50">50</a></td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileScanner.html#L51">51</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 2.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileScanner.html#L52">52</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 2.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileScanner.html#L53">53</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 2.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileScanner.html#L54">54</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 2.</td>
 <td><a href="./xref/org/apache/hadoop/hbase/io/hfile/HFileScanner.html#L55">55</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/io/hfile/HFileScanner.html#L56">56</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 contin

<TRUNCATED>

[03/23] hbase-site git commit: Published site at 2cf8af5bf1d501156cbb3b421cf75c1051ead7d9.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/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 18135b4..603c675 100644
--- a/xref/org/apache/hadoop/hbase/tmpl/common/TaskMonitorTmpl.html
+++ b/xref/org/apache/hadoop/hbase/tmpl/common/TaskMonitorTmpl.html
@@ -23,8 +23,8 @@
 <a class="jxr_linenumber" name="13" href="#13">13</a>  @org.jamon.annotations.Template(
 <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">"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">"format"</span>, type = <span class="jxr_string">"String"</span>),
+<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">"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
@@ -55,40 +55,40 @@
 <a class="jxr_linenumber" name="45" href="#45">45</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../../org/apache/hadoop/hbase/tmpl/common/TaskMonitorTmpl.html">ImplData</a>
 <a class="jxr_linenumber" name="46" href="#46">46</a>      <strong class="jxr_keyword">extends</strong> org.jamon.AbstractTemplateProxy.ImplData
 <a class="jxr_linenumber" name="47" href="#47">47</a>    {
-<a class="jxr_linenumber" name="48" href="#48">48</a>      <em class="jxr_comment">// 25, 1</em>
-<a class="jxr_linenumber" name="49" href="#49">49</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="48" href="#48">48</a>      <em class="jxr_comment">// 27, 1</em>
+<a class="jxr_linenumber" name="49" href="#49">49</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setFormat(String format)
 <a class="jxr_linenumber" name="50" href="#50">50</a>      {
-<a class="jxr_linenumber" name="51" href="#51">51</a>        <em class="jxr_comment">// 25, 1</em>
-<a class="jxr_linenumber" name="52" href="#52">52</a>        m_taskMonitor = taskMonitor;
-<a class="jxr_linenumber" name="53" href="#53">53</a>        m_taskMonitor__IsNotDefault = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="51" href="#51">51</a>        <em class="jxr_comment">// 27, 1</em>
+<a class="jxr_linenumber" name="52" href="#52">52</a>        m_format = format;
+<a class="jxr_linenumber" name="53" href="#53">53</a>        m_format__IsNotDefault = <strong class="jxr_keyword">true</strong>;
 <a class="jxr_linenumber" name="54" href="#54">54</a>      }
-<a class="jxr_linenumber" name="55" href="#55">55</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/hadoop/hbase/monitoring/TaskMonitor.html">TaskMonitor</a> getTaskMonitor()
+<a class="jxr_linenumber" name="55" href="#55">55</a>      <strong class="jxr_keyword">public</strong> String getFormat()
 <a class="jxr_linenumber" name="56" href="#56">56</a>      {
-<a class="jxr_linenumber" name="57" href="#57">57</a>        <strong class="jxr_keyword">return</strong> m_taskMonitor;
+<a class="jxr_linenumber" name="57" href="#57">57</a>        <strong class="jxr_keyword">return</strong> m_format;
 <a class="jxr_linenumber" name="58" href="#58">58</a>      }
-<a class="jxr_linenumber" name="59" href="#59">59</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="60" href="#60">60</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getTaskMonitor__IsNotDefault()
+<a class="jxr_linenumber" name="59" href="#59">59</a>      <strong class="jxr_keyword">private</strong> String m_format;
+<a class="jxr_linenumber" name="60" href="#60">60</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getFormat__IsNotDefault()
 <a class="jxr_linenumber" name="61" href="#61">61</a>      {
-<a class="jxr_linenumber" name="62" href="#62">62</a>        <strong class="jxr_keyword">return</strong> m_taskMonitor__IsNotDefault;
+<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_taskMonitor__IsNotDefault;
-<a class="jxr_linenumber" name="65" href="#65">65</a>      <em class="jxr_comment">// 27, 1</em>
-<a class="jxr_linenumber" name="66" href="#66">66</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setFormat(String format)
+<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">// 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">// 27, 1</em>
-<a class="jxr_linenumber" name="69" href="#69">69</a>        m_format = format;
-<a class="jxr_linenumber" name="70" href="#70">70</a>        m_format__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 getFormat()
+<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_format;
+<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_format;
-<a class="jxr_linenumber" name="77" href="#77">77</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getFormat__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_format__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_format__IsNotDefault;
+<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>      {
@@ -117,17 +117,17 @@
 <a class="jxr_linenumber" name="107" href="#107">107</a>     <strong class="jxr_keyword">return</strong> (ImplData) <strong class="jxr_keyword">super</strong>.getImplData();
 <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>   <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/hadoop/hbase/monitoring/TaskMonitor.html">TaskMonitor</a> taskMonitor;
-<a class="jxr_linenumber" name="111" href="#111">111</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="110" href="#110">110</a>   <strong class="jxr_keyword">protected</strong> String format;
+<a class="jxr_linenumber" name="111" href="#111">111</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl setFormat(String p_format)
 <a class="jxr_linenumber" name="112" href="#112">112</a>   {
-<a class="jxr_linenumber" name="113" href="#113">113</a>     (getImplData()).setTaskMonitor(p_taskMonitor);
+<a class="jxr_linenumber" name="113" href="#113">113</a>     (getImplData()).setFormat(p_format);
 <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 format;
-<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 setFormat(String p_format)
+<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()).setFormat(p_format);
+<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>   

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/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 ef44148..ffeb624 100644
--- a/xref/org/apache/hadoop/hbase/tmpl/common/TaskMonitorTmplImpl.html
+++ b/xref/org/apache/hadoop/hbase/tmpl/common/TaskMonitorTmplImpl.html
@@ -25,18 +25,18 @@
 <a class="jxr_linenumber" name="15" href="#15">15</a>    <strong class="jxr_keyword">implements</strong> org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl.Intf
 <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> <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> String format;
+<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> <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.getTaskMonitor__IsNotDefault())
+<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.setTaskMonitor(TaskMonitor.get());
+<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.getFormat__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.setFormat(<span class="jxr_string">"html"</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.getFilter__IsNotDefault())
 <a class="jxr_linenumber" name="32" href="#32">32</a>      {
@@ -47,8 +47,8 @@
 <a class="jxr_linenumber" name="37" href="#37">37</a>    <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/hadoop/hbase/tmpl/common/TaskMonitorTmplImpl.html">TaskMonitorTmplImpl</a>(org.jamon.TemplateManager p_templateManager, org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl.ImplData p_implData)
 <a class="jxr_linenumber" name="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>      taskMonitor = p_implData.getTaskMonitor();
-<a class="jxr_linenumber" name="41" href="#41">41</a>      format = p_implData.getFormat();
+<a class="jxr_linenumber" name="40" href="#40">40</a>      format = p_implData.getFormat();
+<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>    

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/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 c8e24dc..0b0ca88 100644
--- a/xref/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
+++ b/xref/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
@@ -69,15 +69,15 @@
 <a class="jxr_linenumber" name="59" href="#59">59</a>    requiredArguments = {
 <a class="jxr_linenumber" name="60" href="#60">60</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"master"</span>, type = <span class="jxr_string">"HMaster"</span>)},
 <a class="jxr_linenumber" name="61" href="#61">61</a>    optionalArguments = {
-<a class="jxr_linenumber" name="62" href="#62">62</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"format"</span>, type = <span class="jxr_string">"String"</span>),
-<a class="jxr_linenumber" name="63" href="#63">63</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"serverManager"</span>, type = <span class="jxr_string">"ServerManager"</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">"assignmentManager"</span>, type = <span class="jxr_string">"AssignmentManager"</span>),
-<a class="jxr_linenumber" name="66" href="#66">66</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="67" href="#67">67</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="68" href="#68">68</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"metaLocation"</span>, type = <span class="jxr_string">"ServerName"</span>),
-<a class="jxr_linenumber" name="69" href="#69">69</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"deadServers"</span>, type = <span class="jxr_string">"Set&lt;ServerName&gt;"</span>),
-<a class="jxr_linenumber" name="70" href="#70">70</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"catalogJanitorEnabled"</span>, type = <span class="jxr_string">"boolean"</span>)})
+<a class="jxr_linenumber" name="62" href="#62">62</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="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">"metaLocation"</span>, type = <span class="jxr_string">"ServerName"</span>),
+<a class="jxr_linenumber" name="65" href="#65">65</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="66" href="#66">66</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"serverManager"</span>, type = <span class="jxr_string">"ServerManager"</span>),
+<a class="jxr_linenumber" name="67" href="#67">67</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"format"</span>, type = <span class="jxr_string">"String"</span>),
+<a class="jxr_linenumber" name="68" href="#68">68</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"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">"filter"</span>, type = <span class="jxr_string">"String"</span>),
+<a class="jxr_linenumber" name="70" href="#70">70</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"assignmentManager"</span>, type = <span class="jxr_string">"AssignmentManager"</span>)})
 <a class="jxr_linenumber" name="71" href="#71">71</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html">MasterStatusTmpl</a>
 <a class="jxr_linenumber" name="72" href="#72">72</a>    <strong class="jxr_keyword">extends</strong> org.jamon.AbstractTemplateProxy
 <a class="jxr_linenumber" name="73" href="#73">73</a>  {
@@ -118,159 +118,159 @@
 <a class="jxr_linenumber" name="108" href="#108">108</a>       <strong class="jxr_keyword">return</strong> m_master;
 <a class="jxr_linenumber" name="109" href="#109">109</a>     }
 <a class="jxr_linenumber" name="110" href="#110">110</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html">HMaster</a> m_master;
-<a class="jxr_linenumber" name="111" href="#111">111</a>     <em class="jxr_comment">// 27, 1</em>
-<a class="jxr_linenumber" name="112" href="#112">112</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setFormat(String format)
+<a class="jxr_linenumber" name="111" href="#111">111</a>     <em class="jxr_comment">// 24, 1</em>
+<a class="jxr_linenumber" name="112" href="#112">112</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setDeadServers(Set&lt;ServerName&gt; deadServers)
 <a class="jxr_linenumber" name="113" href="#113">113</a>     {
-<a class="jxr_linenumber" name="114" href="#114">114</a>       <em class="jxr_comment">// 27, 1</em>
-<a class="jxr_linenumber" name="115" href="#115">115</a>       m_format = format;
-<a class="jxr_linenumber" name="116" href="#116">116</a>       m_format__IsNotDefault = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="114" href="#114">114</a>       <em class="jxr_comment">// 24, 1</em>
+<a class="jxr_linenumber" name="115" href="#115">115</a>       m_deadServers = deadServers;
+<a class="jxr_linenumber" name="116" href="#116">116</a>       m_deadServers__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> String getFormat()
+<a class="jxr_linenumber" name="118" href="#118">118</a>     <strong class="jxr_keyword">public</strong> Set&lt;ServerName&gt; getDeadServers()
 <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_format;
+<a class="jxr_linenumber" name="120" href="#120">120</a>       <strong class="jxr_keyword">return</strong> m_deadServers;
 <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> String m_format;
-<a class="jxr_linenumber" name="123" href="#123">123</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getFormat__IsNotDefault()
+<a class="jxr_linenumber" name="122" href="#122">122</a>     <strong class="jxr_keyword">private</strong> Set&lt;ServerName&gt; m_deadServers;
+<a class="jxr_linenumber" name="123" href="#123">123</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getDeadServers__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_format__IsNotDefault;
+<a class="jxr_linenumber" name="125" href="#125">125</a>       <strong class="jxr_keyword">return</strong> m_deadServers__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_format__IsNotDefault;
-<a class="jxr_linenumber" name="128" href="#128">128</a>     <em class="jxr_comment">// 28, 1</em>
-<a class="jxr_linenumber" name="129" href="#129">129</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="127" href="#127">127</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_deadServers__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>     {
-<a class="jxr_linenumber" name="131" href="#131">131</a>       <em class="jxr_comment">// 28, 1</em>
-<a class="jxr_linenumber" name="132" href="#132">132</a>       m_serverManager = serverManager;
-<a class="jxr_linenumber" name="133" href="#133">133</a>       m_serverManager__IsNotDefault = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="131" href="#131">131</a>       <em class="jxr_comment">// 23, 1</em>
+<a class="jxr_linenumber" name="132" href="#132">132</a>       m_servers = servers;
+<a class="jxr_linenumber" name="133" href="#133">133</a>       m_servers__IsNotDefault = <strong class="jxr_keyword">true</strong>;
 <a class="jxr_linenumber" name="134" href="#134">134</a>     }
-<a class="jxr_linenumber" name="135" href="#135">135</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html">ServerManager</a> getServerManager()
+<a class="jxr_linenumber" name="135" href="#135">135</a>     <strong class="jxr_keyword">public</strong> List&lt;ServerName&gt; getServers()
 <a class="jxr_linenumber" name="136" href="#136">136</a>     {
-<a class="jxr_linenumber" name="137" href="#137">137</a>       <strong class="jxr_keyword">return</strong> m_serverManager;
+<a class="jxr_linenumber" name="137" href="#137">137</a>       <strong class="jxr_keyword">return</strong> m_servers;
 <a class="jxr_linenumber" name="138" href="#138">138</a>     }
-<a class="jxr_linenumber" name="139" href="#139">139</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html">ServerManager</a> m_serverManager;
-<a class="jxr_linenumber" name="140" href="#140">140</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getServerManager__IsNotDefault()
+<a class="jxr_linenumber" name="139" href="#139">139</a>     <strong class="jxr_keyword">private</strong> List&lt;ServerName&gt; m_servers;
+<a class="jxr_linenumber" name="140" href="#140">140</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getServers__IsNotDefault()
 <a class="jxr_linenumber" name="141" href="#141">141</a>     {
-<a class="jxr_linenumber" name="142" href="#142">142</a>       <strong class="jxr_keyword">return</strong> m_serverManager__IsNotDefault;
+<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_serverManager__IsNotDefault;
-<a class="jxr_linenumber" name="145" href="#145">145</a>     <em class="jxr_comment">// 26, 1</em>
-<a class="jxr_linenumber" name="146" href="#146">146</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setFilter(String filter)
+<a class="jxr_linenumber" name="144" href="#144">144</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_servers__IsNotDefault;
+<a class="jxr_linenumber" name="145" href="#145">145</a>     <em class="jxr_comment">// 22, 1</em>
+<a class="jxr_linenumber" name="146" href="#146">146</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="147" href="#147">147</a>     {
-<a class="jxr_linenumber" name="148" href="#148">148</a>       <em class="jxr_comment">// 26, 1</em>
-<a class="jxr_linenumber" name="149" href="#149">149</a>       m_filter = filter;
-<a class="jxr_linenumber" name="150" href="#150">150</a>       m_filter__IsNotDefault = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="148" href="#148">148</a>       <em class="jxr_comment">// 22, 1</em>
+<a class="jxr_linenumber" name="149" href="#149">149</a>       m_metaLocation = metaLocation;
+<a class="jxr_linenumber" name="150" href="#150">150</a>       m_metaLocation__IsNotDefault = <strong class="jxr_keyword">true</strong>;
 <a class="jxr_linenumber" name="151" href="#151">151</a>     }
-<a class="jxr_linenumber" name="152" href="#152">152</a>     <strong class="jxr_keyword">public</strong> String getFilter()
+<a class="jxr_linenumber" name="152" href="#152">152</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html">ServerName</a> getMetaLocation()
 <a class="jxr_linenumber" name="153" href="#153">153</a>     {
-<a class="jxr_linenumber" name="154" href="#154">154</a>       <strong class="jxr_keyword">return</strong> m_filter;
+<a class="jxr_linenumber" name="154" href="#154">154</a>       <strong class="jxr_keyword">return</strong> m_metaLocation;
 <a class="jxr_linenumber" name="155" href="#155">155</a>     }
-<a class="jxr_linenumber" name="156" href="#156">156</a>     <strong class="jxr_keyword">private</strong> String m_filter;
-<a class="jxr_linenumber" name="157" href="#157">157</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getFilter__IsNotDefault()
+<a class="jxr_linenumber" name="156" href="#156">156</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html">ServerName</a> m_metaLocation;
+<a class="jxr_linenumber" name="157" href="#157">157</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getMetaLocation__IsNotDefault()
 <a class="jxr_linenumber" name="158" href="#158">158</a>     {
-<a class="jxr_linenumber" name="159" href="#159">159</a>       <strong class="jxr_keyword">return</strong> m_filter__IsNotDefault;
+<a class="jxr_linenumber" name="159" href="#159">159</a>       <strong class="jxr_keyword">return</strong> m_metaLocation__IsNotDefault;
 <a class="jxr_linenumber" name="160" href="#160">160</a>     }
-<a class="jxr_linenumber" name="161" href="#161">161</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_filter__IsNotDefault;
-<a class="jxr_linenumber" name="162" href="#162">162</a>     <em class="jxr_comment">// 29, 1</em>
-<a class="jxr_linenumber" name="163" href="#163">163</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="161" href="#161">161</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_metaLocation__IsNotDefault;
+<a class="jxr_linenumber" name="162" href="#162">162</a>     <em class="jxr_comment">// 21, 1</em>
+<a class="jxr_linenumber" name="163" href="#163">163</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="164" href="#164">164</a>     {
-<a class="jxr_linenumber" name="165" href="#165">165</a>       <em class="jxr_comment">// 29, 1</em>
-<a class="jxr_linenumber" name="166" href="#166">166</a>       m_assignmentManager = assignmentManager;
-<a class="jxr_linenumber" name="167" href="#167">167</a>       m_assignmentManager__IsNotDefault = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="165" href="#165">165</a>       <em class="jxr_comment">// 21, 1</em>
+<a class="jxr_linenumber" name="166" href="#166">166</a>       m_frags = frags;
+<a class="jxr_linenumber" name="167" href="#167">167</a>       m_frags__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> <a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html">AssignmentManager</a> getAssignmentManager()
+<a class="jxr_linenumber" name="169" href="#169">169</a>     <strong class="jxr_keyword">public</strong> Map&lt;String,Integer&gt; getFrags()
 <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_assignmentManager;
+<a class="jxr_linenumber" name="171" href="#171">171</a>       <strong class="jxr_keyword">return</strong> m_frags;
 <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> <a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html">AssignmentManager</a> m_assignmentManager;
-<a class="jxr_linenumber" name="174" href="#174">174</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getAssignmentManager__IsNotDefault()
+<a class="jxr_linenumber" name="173" href="#173">173</a>     <strong class="jxr_keyword">private</strong> Map&lt;String,Integer&gt; m_frags;
+<a class="jxr_linenumber" name="174" href="#174">174</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getFrags__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_assignmentManager__IsNotDefault;
+<a class="jxr_linenumber" name="176" href="#176">176</a>       <strong class="jxr_keyword">return</strong> m_frags__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_assignmentManager__IsNotDefault;
-<a class="jxr_linenumber" name="179" href="#179">179</a>     <em class="jxr_comment">// 23, 1</em>
-<a class="jxr_linenumber" name="180" href="#180">180</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setServers(List&lt;ServerName&gt; servers)
+<a class="jxr_linenumber" name="178" href="#178">178</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_frags__IsNotDefault;
+<a class="jxr_linenumber" name="179" href="#179">179</a>     <em class="jxr_comment">// 28, 1</em>
+<a class="jxr_linenumber" name="180" href="#180">180</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="181" href="#181">181</a>     {
-<a class="jxr_linenumber" name="182" href="#182">182</a>       <em class="jxr_comment">// 23, 1</em>
-<a class="jxr_linenumber" name="183" href="#183">183</a>       m_servers = servers;
-<a class="jxr_linenumber" name="184" href="#184">184</a>       m_servers__IsNotDefault = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="182" href="#182">182</a>       <em class="jxr_comment">// 28, 1</em>
+<a class="jxr_linenumber" name="183" href="#183">183</a>       m_serverManager = serverManager;
+<a class="jxr_linenumber" name="184" href="#184">184</a>       m_serverManager__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> List&lt;ServerName&gt; getServers()
+<a class="jxr_linenumber" name="186" href="#186">186</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html">ServerManager</a> getServerManager()
 <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_servers;
+<a class="jxr_linenumber" name="188" href="#188">188</a>       <strong class="jxr_keyword">return</strong> m_serverManager;
 <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> List&lt;ServerName&gt; m_servers;
-<a class="jxr_linenumber" name="191" href="#191">191</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getServers__IsNotDefault()
+<a class="jxr_linenumber" name="190" href="#190">190</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="191" href="#191">191</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getServerManager__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_servers__IsNotDefault;
+<a class="jxr_linenumber" name="193" href="#193">193</a>       <strong class="jxr_keyword">return</strong> m_serverManager__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_servers__IsNotDefault;
-<a class="jxr_linenumber" name="196" href="#196">196</a>     <em class="jxr_comment">// 21, 1</em>
-<a class="jxr_linenumber" name="197" href="#197">197</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="195" href="#195">195</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_serverManager__IsNotDefault;
+<a class="jxr_linenumber" name="196" href="#196">196</a>     <em class="jxr_comment">// 27, 1</em>
+<a class="jxr_linenumber" name="197" href="#197">197</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setFormat(String format)
 <a class="jxr_linenumber" name="198" href="#198">198</a>     {
-<a class="jxr_linenumber" name="199" href="#199">199</a>       <em class="jxr_comment">// 21, 1</em>
-<a class="jxr_linenumber" name="200" href="#200">200</a>       m_frags = frags;
-<a class="jxr_linenumber" name="201" href="#201">201</a>       m_frags__IsNotDefault = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="199" href="#199">199</a>       <em class="jxr_comment">// 27, 1</em>
+<a class="jxr_linenumber" name="200" href="#200">200</a>       m_format = format;
+<a class="jxr_linenumber" name="201" href="#201">201</a>       m_format__IsNotDefault = <strong class="jxr_keyword">true</strong>;
 <a class="jxr_linenumber" name="202" href="#202">202</a>     }
-<a class="jxr_linenumber" name="203" href="#203">203</a>     <strong class="jxr_keyword">public</strong> Map&lt;String,Integer&gt; getFrags()
+<a class="jxr_linenumber" name="203" href="#203">203</a>     <strong class="jxr_keyword">public</strong> String getFormat()
 <a class="jxr_linenumber" name="204" href="#204">204</a>     {
-<a class="jxr_linenumber" name="205" href="#205">205</a>       <strong class="jxr_keyword">return</strong> m_frags;
+<a class="jxr_linenumber" name="205" href="#205">205</a>       <strong class="jxr_keyword">return</strong> m_format;
 <a class="jxr_linenumber" name="206" href="#206">206</a>     }
-<a class="jxr_linenumber" name="207" href="#207">207</a>     <strong class="jxr_keyword">private</strong> Map&lt;String,Integer&gt; m_frags;
-<a class="jxr_linenumber" name="208" href="#208">208</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getFrags__IsNotDefault()
+<a class="jxr_linenumber" name="207" href="#207">207</a>     <strong class="jxr_keyword">private</strong> String m_format;
+<a class="jxr_linenumber" name="208" href="#208">208</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getFormat__IsNotDefault()
 <a class="jxr_linenumber" name="209" href="#209">209</a>     {
-<a class="jxr_linenumber" name="210" href="#210">210</a>       <strong class="jxr_keyword">return</strong> m_frags__IsNotDefault;
+<a class="jxr_linenumber" name="210" href="#210">210</a>       <strong class="jxr_keyword">return</strong> m_format__IsNotDefault;
 <a class="jxr_linenumber" name="211" href="#211">211</a>     }
-<a class="jxr_linenumber" name="212" href="#212">212</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_frags__IsNotDefault;
-<a class="jxr_linenumber" name="213" href="#213">213</a>     <em class="jxr_comment">// 22, 1</em>
-<a class="jxr_linenumber" name="214" href="#214">214</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setMetaLocation(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html">ServerName</a> metaLocation)
+<a class="jxr_linenumber" name="212" href="#212">212</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_format__IsNotDefault;
+<a class="jxr_linenumber" name="213" href="#213">213</a>     <em class="jxr_comment">// 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">// 22, 1</em>
-<a class="jxr_linenumber" name="217" href="#217">217</a>       m_metaLocation = metaLocation;
-<a class="jxr_linenumber" name="218" href="#218">218</a>       m_metaLocation__IsNotDefault = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="216" href="#216">216</a>       <em class="jxr_comment">// 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/ServerName.html">ServerName</a> getMetaLocation()
+<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_metaLocation;
+<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/ServerName.html">ServerName</a> m_metaLocation;
-<a class="jxr_linenumber" name="225" href="#225">225</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getMetaLocation__IsNotDefault()
+<a class="jxr_linenumber" name="224" href="#224">224</a>     <strong class="jxr_keyword">private</strong> <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_metaLocation__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_metaLocation__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">// 26, 1</em>
+<a class="jxr_linenumber" name="231" href="#231">231</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setFilter(String filter)
 <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">// 26, 1</em>
+<a class="jxr_linenumber" name="234" href="#234">234</a>       m_filter = filter;
+<a class="jxr_linenumber" name="235" href="#235">235</a>       m_filter__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> String getFilter()
 <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_filter;
 <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> String m_filter;
+<a class="jxr_linenumber" name="242" href="#242">242</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getFilter__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_filter__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="247" href="#247">247</a>     <em class="jxr_comment">// 25, 1</em>
-<a class="jxr_linenumber" name="248" href="#248">248</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setCatalogJanitorEnabled(<strong class="jxr_keyword">boolean</strong> catalogJanitorEnabled)
+<a class="jxr_linenumber" name="246" href="#246">246</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_filter__IsNotDefault;
+<a class="jxr_linenumber" name="247" href="#247">247</a>     <em class="jxr_comment">// 29, 1</em>
+<a class="jxr_linenumber" name="248" href="#248">248</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="249" href="#249">249</a>     {
-<a class="jxr_linenumber" name="250" href="#250">250</a>       <em class="jxr_comment">// 25, 1</em>
-<a class="jxr_linenumber" name="251" href="#251">251</a>       m_catalogJanitorEnabled = catalogJanitorEnabled;
-<a class="jxr_linenumber" name="252" href="#252">252</a>       m_catalogJanitorEnabled__IsNotDefault = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="250" href="#250">250</a>       <em class="jxr_comment">// 29, 1</em>
+<a class="jxr_linenumber" name="251" href="#251">251</a>       m_assignmentManager = assignmentManager;
+<a class="jxr_linenumber" name="252" href="#252">252</a>       m_assignmentManager__IsNotDefault = <strong class="jxr_keyword">true</strong>;
 <a class="jxr_linenumber" name="253" href="#253">253</a>     }
-<a class="jxr_linenumber" name="254" href="#254">254</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getCatalogJanitorEnabled()
+<a class="jxr_linenumber" name="254" href="#254">254</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html">AssignmentManager</a> getAssignmentManager()
 <a class="jxr_linenumber" name="255" href="#255">255</a>     {
-<a class="jxr_linenumber" name="256" href="#256">256</a>       <strong class="jxr_keyword">return</strong> m_catalogJanitorEnabled;
+<a class="jxr_linenumber" name="256" href="#256">256</a>       <strong class="jxr_keyword">return</strong> m_assignmentManager;
 <a class="jxr_linenumber" name="257" href="#257">257</a>     }
-<a class="jxr_linenumber" name="258" href="#258">258</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_catalogJanitorEnabled;
-<a class="jxr_linenumber" name="259" href="#259">259</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getCatalogJanitorEnabled__IsNotDefault()
+<a class="jxr_linenumber" name="258" href="#258">258</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="259" href="#259">259</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getAssignmentManager__IsNotDefault()
 <a class="jxr_linenumber" name="260" href="#260">260</a>     {
-<a class="jxr_linenumber" name="261" href="#261">261</a>       <strong class="jxr_keyword">return</strong> m_catalogJanitorEnabled__IsNotDefault;
+<a class="jxr_linenumber" name="261" href="#261">261</a>       <strong class="jxr_keyword">return</strong> m_assignmentManager__IsNotDefault;
 <a class="jxr_linenumber" name="262" href="#262">262</a>     }
-<a class="jxr_linenumber" name="263" href="#263">263</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_catalogJanitorEnabled__IsNotDefault;
+<a class="jxr_linenumber" name="263" href="#263">263</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_assignmentManager__IsNotDefault;
 <a class="jxr_linenumber" name="264" href="#264">264</a>   }
 <a class="jxr_linenumber" name="265" href="#265">265</a>   @Override
 <a class="jxr_linenumber" name="266" href="#266">266</a>   <strong class="jxr_keyword">protected</strong> org.jamon.AbstractTemplateProxy.ImplData makeImplData()
@@ -282,66 +282,66 @@
 <a class="jxr_linenumber" name="272" href="#272">272</a>     <strong class="jxr_keyword">return</strong> (ImplData) <strong class="jxr_keyword">super</strong>.getImplData();
 <a class="jxr_linenumber" name="273" href="#273">273</a>   }
 <a class="jxr_linenumber" name="274" href="#274">274</a>   
-<a class="jxr_linenumber" name="275" href="#275">275</a>   <strong class="jxr_keyword">protected</strong> String format;
-<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 setFormat(String p_format)
+<a class="jxr_linenumber" name="275" href="#275">275</a>   <strong class="jxr_keyword">protected</strong> Set&lt;ServerName&gt; deadServers;
+<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 setDeadServers(Set&lt;ServerName&gt; p_deadServers)
 <a class="jxr_linenumber" name="277" href="#277">277</a>   {
-<a class="jxr_linenumber" name="278" href="#278">278</a>     (getImplData()).setFormat(p_format);
+<a class="jxr_linenumber" name="278" href="#278">278</a>     (getImplData()).setDeadServers(p_deadServers);
 <a class="jxr_linenumber" name="279" href="#279">279</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
 <a class="jxr_linenumber" name="280" href="#280">280</a>   }
 <a class="jxr_linenumber" name="281" href="#281">281</a>   
-<a class="jxr_linenumber" name="282" href="#282">282</a>   <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html">ServerManager</a> serverManager;
-<a class="jxr_linenumber" name="283" href="#283">283</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServerManager(<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html">ServerManager</a> p_serverManager)
+<a class="jxr_linenumber" name="282" href="#282">282</a>   <strong class="jxr_keyword">protected</strong> List&lt;ServerName&gt; servers;
+<a class="jxr_linenumber" name="283" href="#283">283</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServers(List&lt;ServerName&gt; p_servers)
 <a class="jxr_linenumber" name="284" href="#284">284</a>   {
-<a class="jxr_linenumber" name="285" href="#285">285</a>     (getImplData()).setServerManager(p_serverManager);
+<a class="jxr_linenumber" name="285" href="#285">285</a>     (getImplData()).setServers(p_servers);
 <a class="jxr_linenumber" name="286" href="#286">286</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
 <a class="jxr_linenumber" name="287" href="#287">287</a>   }
 <a class="jxr_linenumber" name="288" href="#288">288</a>   
-<a class="jxr_linenumber" name="289" href="#289">289</a>   <strong class="jxr_keyword">protected</strong> String filter;
-<a class="jxr_linenumber" name="290" href="#290">290</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFilter(String p_filter)
+<a class="jxr_linenumber" name="289" href="#289">289</a>   <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html">ServerName</a> metaLocation;
+<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 setMetaLocation(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html">ServerName</a> p_metaLocation)
 <a class="jxr_linenumber" name="291" href="#291">291</a>   {
-<a class="jxr_linenumber" name="292" href="#292">292</a>     (getImplData()).setFilter(p_filter);
+<a class="jxr_linenumber" name="292" href="#292">292</a>     (getImplData()).setMetaLocation(p_metaLocation);
 <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> <a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html">AssignmentManager</a> assignmentManager;
-<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 setAssignmentManager(<a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html">AssignmentManager</a> p_assignmentManager)
+<a class="jxr_linenumber" name="296" href="#296">296</a>   <strong class="jxr_keyword">protected</strong> Map&lt;String,Integer&gt; frags;
+<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 setFrags(Map&lt;String,Integer&gt; p_frags)
 <a class="jxr_linenumber" name="298" href="#298">298</a>   {
-<a class="jxr_linenumber" name="299" href="#299">299</a>     (getImplData()).setAssignmentManager(p_assignmentManager);
+<a class="jxr_linenumber" name="299" href="#299">299</a>     (getImplData()).setFrags(p_frags);
 <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> List&lt;ServerName&gt; servers;
-<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 setServers(List&lt;ServerName&gt; p_servers)
+<a class="jxr_linenumber" name="303" href="#303">303</a>   <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html">ServerManager</a> serverManager;
+<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 setServerManager(<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html">ServerManager</a> p_serverManager)
 <a class="jxr_linenumber" name="305" href="#305">305</a>   {
-<a class="jxr_linenumber" name="306" href="#306">306</a>     (getImplData()).setServers(p_servers);
+<a class="jxr_linenumber" name="306" href="#306">306</a>     (getImplData()).setServerManager(p_serverManager);
 <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> Map&lt;String,Integer&gt; frags;
-<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 setFrags(Map&lt;String,Integer&gt; p_frags)
+<a class="jxr_linenumber" name="310" href="#310">310</a>   <strong class="jxr_keyword">protected</strong> String format;
+<a class="jxr_linenumber" name="311" href="#311">311</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFormat(String p_format)
 <a class="jxr_linenumber" name="312" href="#312">312</a>   {
-<a class="jxr_linenumber" name="313" href="#313">313</a>     (getImplData()).setFrags(p_frags);
+<a class="jxr_linenumber" name="313" href="#313">313</a>     (getImplData()).setFormat(p_format);
 <a class="jxr_linenumber" name="314" href="#314">314</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
 <a class="jxr_linenumber" name="315" href="#315">315</a>   }
 <a class="jxr_linenumber" name="316" href="#316">316</a>   
-<a class="jxr_linenumber" name="317" href="#317">317</a>   <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html">ServerName</a> metaLocation;
-<a class="jxr_linenumber" name="318" href="#318">318</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setMetaLocation(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html">ServerName</a> p_metaLocation)
+<a class="jxr_linenumber" name="317" href="#317">317</a>   <strong class="jxr_keyword">protected</strong> <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()).setMetaLocation(p_metaLocation);
+<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> String filter;
+<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 setFilter(String p_filter)
 <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()).setFilter(p_filter);
 <a class="jxr_linenumber" name="328" href="#328">328</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
 <a class="jxr_linenumber" name="329" href="#329">329</a>   }
 <a class="jxr_linenumber" name="330" href="#330">330</a>   
-<a class="jxr_linenumber" name="331" href="#331">331</a>   <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> catalogJanitorEnabled;
-<a class="jxr_linenumber" name="332" href="#332">332</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setCatalogJanitorEnabled(<strong class="jxr_keyword">boolean</strong> p_catalogJanitorEnabled)
+<a class="jxr_linenumber" name="331" href="#331">331</a>   <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html">AssignmentManager</a> assignmentManager;
+<a class="jxr_linenumber" name="332" href="#332">332</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setAssignmentManager(<a href="../../../../../../org/apache/hadoop/hbase/master/AssignmentManager.html">AssignmentManager</a> p_assignmentManager)
 <a class="jxr_linenumber" name="333" href="#333">333</a>   {
-<a class="jxr_linenumber" name="334" href="#334">334</a>     (getImplData()).setCatalogJanitorEnabled(p_catalogJanitorEnabled);
+<a class="jxr_linenumber" name="334" href="#334">334</a>     (getImplData()).setAssignmentManager(p_assignmentManager);
 <a class="jxr_linenumber" name="335" href="#335">335</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
 <a class="jxr_linenumber" name="336" href="#336">336</a>   }
 <a class="jxr_linenumber" name="337" href="#337">337</a>   

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


[11/23] hbase-site git commit: Published site at 2cf8af5bf1d501156cbb3b421cf75c1051ead7d9.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.Writer.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.Writer.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.Writer.html
index 745e703..1587e5e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.Writer.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.Writer.html
@@ -1361,609 +1361,610 @@
 <span class="sourceLineNo">1353</span>    /** The filesystem used to access data */<a name="line.1353"></a>
 <span class="sourceLineNo">1354</span>    protected HFileSystem hfs;<a name="line.1354"></a>
 <span class="sourceLineNo">1355</span><a name="line.1355"></a>
-<span class="sourceLineNo">1356</span>    /** The path (if any) where this data is coming from */<a name="line.1356"></a>
-<span class="sourceLineNo">1357</span>    protected Path path;<a name="line.1357"></a>
-<span class="sourceLineNo">1358</span><a name="line.1358"></a>
-<span class="sourceLineNo">1359</span>    private final Lock streamLock = new ReentrantLock();<a name="line.1359"></a>
+<span class="sourceLineNo">1356</span>    private final Lock streamLock = new ReentrantLock();<a name="line.1356"></a>
+<span class="sourceLineNo">1357</span><a name="line.1357"></a>
+<span class="sourceLineNo">1358</span>    /** The default buffer size for our buffered streams */<a name="line.1358"></a>
+<span class="sourceLineNo">1359</span>    public static final int DEFAULT_BUFFER_SIZE = 1 &lt;&lt; 20;<a name="line.1359"></a>
 <span class="sourceLineNo">1360</span><a name="line.1360"></a>
-<span class="sourceLineNo">1361</span>    /** The default buffer size for our buffered streams */<a name="line.1361"></a>
-<span class="sourceLineNo">1362</span>    public static final int DEFAULT_BUFFER_SIZE = 1 &lt;&lt; 20;<a name="line.1362"></a>
-<span class="sourceLineNo">1363</span><a name="line.1363"></a>
-<span class="sourceLineNo">1364</span>    protected HFileContext fileContext;<a name="line.1364"></a>
-<span class="sourceLineNo">1365</span><a name="line.1365"></a>
-<span class="sourceLineNo">1366</span>    public FSReaderImpl(FSDataInputStreamWrapper stream, long fileSize, HFileSystem hfs, Path path,<a name="line.1366"></a>
-<span class="sourceLineNo">1367</span>        HFileContext fileContext) throws IOException {<a name="line.1367"></a>
-<span class="sourceLineNo">1368</span>      this.fileSize = fileSize;<a name="line.1368"></a>
-<span class="sourceLineNo">1369</span>      this.hfs = hfs;<a name="line.1369"></a>
-<span class="sourceLineNo">1370</span>      this.path = path;<a name="line.1370"></a>
-<span class="sourceLineNo">1371</span>      this.fileContext = fileContext;<a name="line.1371"></a>
-<span class="sourceLineNo">1372</span>      this.hdrSize = headerSize(fileContext.isUseHBaseChecksum());<a name="line.1372"></a>
-<span class="sourceLineNo">1373</span><a name="line.1373"></a>
-<span class="sourceLineNo">1374</span>      this.streamWrapper = stream;<a name="line.1374"></a>
-<span class="sourceLineNo">1375</span>      // Older versions of HBase didn't support checksum.<a name="line.1375"></a>
-<span class="sourceLineNo">1376</span>      this.streamWrapper.prepareForBlockReader(!fileContext.isUseHBaseChecksum());<a name="line.1376"></a>
-<span class="sourceLineNo">1377</span>      defaultDecodingCtx = new HFileBlockDefaultDecodingContext(fileContext);<a name="line.1377"></a>
-<span class="sourceLineNo">1378</span>      encodedBlockDecodingCtx = defaultDecodingCtx;<a name="line.1378"></a>
-<span class="sourceLineNo">1379</span>    }<a name="line.1379"></a>
-<span class="sourceLineNo">1380</span><a name="line.1380"></a>
-<span class="sourceLineNo">1381</span>    /**<a name="line.1381"></a>
-<span class="sourceLineNo">1382</span>     * A constructor that reads files with the latest minor version.<a name="line.1382"></a>
-<span class="sourceLineNo">1383</span>     * This is used by unit tests only.<a name="line.1383"></a>
-<span class="sourceLineNo">1384</span>     */<a name="line.1384"></a>
-<span class="sourceLineNo">1385</span>    FSReaderImpl(FSDataInputStream istream, long fileSize, HFileContext fileContext)<a name="line.1385"></a>
-<span class="sourceLineNo">1386</span>    throws IOException {<a name="line.1386"></a>
-<span class="sourceLineNo">1387</span>      this(new FSDataInputStreamWrapper(istream), fileSize, null, null, fileContext);<a name="line.1387"></a>
-<span class="sourceLineNo">1388</span>    }<a name="line.1388"></a>
-<span class="sourceLineNo">1389</span><a name="line.1389"></a>
-<span class="sourceLineNo">1390</span>    public BlockIterator blockRange(final long startOffset, final long endOffset) {<a name="line.1390"></a>
-<span class="sourceLineNo">1391</span>      final FSReader owner = this; // handle for inner class<a name="line.1391"></a>
-<span class="sourceLineNo">1392</span>      return new BlockIterator() {<a name="line.1392"></a>
-<span class="sourceLineNo">1393</span>        private long offset = startOffset;<a name="line.1393"></a>
-<span class="sourceLineNo">1394</span><a name="line.1394"></a>
-<span class="sourceLineNo">1395</span>        @Override<a name="line.1395"></a>
-<span class="sourceLineNo">1396</span>        public HFileBlock nextBlock() throws IOException {<a name="line.1396"></a>
-<span class="sourceLineNo">1397</span>          if (offset &gt;= endOffset)<a name="line.1397"></a>
-<span class="sourceLineNo">1398</span>            return null;<a name="line.1398"></a>
-<span class="sourceLineNo">1399</span>          HFileBlock b = readBlockData(offset, -1, -1, false);<a name="line.1399"></a>
-<span class="sourceLineNo">1400</span>          offset += b.getOnDiskSizeWithHeader();<a name="line.1400"></a>
-<span class="sourceLineNo">1401</span>          return b.unpack(fileContext, owner);<a name="line.1401"></a>
-<span class="sourceLineNo">1402</span>        }<a name="line.1402"></a>
-<span class="sourceLineNo">1403</span><a name="line.1403"></a>
-<span class="sourceLineNo">1404</span>        @Override<a name="line.1404"></a>
-<span class="sourceLineNo">1405</span>        public HFileBlock nextBlockWithBlockType(BlockType blockType)<a name="line.1405"></a>
-<span class="sourceLineNo">1406</span>            throws IOException {<a name="line.1406"></a>
-<span class="sourceLineNo">1407</span>          HFileBlock blk = nextBlock();<a name="line.1407"></a>
-<span class="sourceLineNo">1408</span>          if (blk.getBlockType() != blockType) {<a name="line.1408"></a>
-<span class="sourceLineNo">1409</span>            throw new IOException("Expected block of type " + blockType<a name="line.1409"></a>
-<span class="sourceLineNo">1410</span>                + " but found " + blk.getBlockType());<a name="line.1410"></a>
-<span class="sourceLineNo">1411</span>          }<a name="line.1411"></a>
-<span class="sourceLineNo">1412</span>          return blk;<a name="line.1412"></a>
-<span class="sourceLineNo">1413</span>        }<a name="line.1413"></a>
-<span class="sourceLineNo">1414</span>      };<a name="line.1414"></a>
-<span class="sourceLineNo">1415</span>    }<a name="line.1415"></a>
-<span class="sourceLineNo">1416</span><a name="line.1416"></a>
-<span class="sourceLineNo">1417</span>    /**<a name="line.1417"></a>
-<span class="sourceLineNo">1418</span>     * Does a positional read or a seek and read into the given buffer. Returns<a name="line.1418"></a>
-<span class="sourceLineNo">1419</span>     * the on-disk size of the next block, or -1 if it could not be determined.<a name="line.1419"></a>
-<span class="sourceLineNo">1420</span>     *<a name="line.1420"></a>
-<span class="sourceLineNo">1421</span>     * @param dest destination buffer<a name="line.1421"></a>
-<span class="sourceLineNo">1422</span>     * @param destOffset offset in the destination buffer<a name="line.1422"></a>
-<span class="sourceLineNo">1423</span>     * @param size size of the block to be read<a name="line.1423"></a>
-<span class="sourceLineNo">1424</span>     * @param peekIntoNextBlock whether to read the next block's on-disk size<a name="line.1424"></a>
-<span class="sourceLineNo">1425</span>     * @param fileOffset position in the stream to read at<a name="line.1425"></a>
-<span class="sourceLineNo">1426</span>     * @param pread whether we should do a positional read<a name="line.1426"></a>
-<span class="sourceLineNo">1427</span>     * @param istream The input source of data<a name="line.1427"></a>
-<span class="sourceLineNo">1428</span>     * @return the on-disk size of the next block with header size included, or<a name="line.1428"></a>
-<span class="sourceLineNo">1429</span>     *         -1 if it could not be determined<a name="line.1429"></a>
-<span class="sourceLineNo">1430</span>     * @throws IOException<a name="line.1430"></a>
-<span class="sourceLineNo">1431</span>     */<a name="line.1431"></a>
-<span class="sourceLineNo">1432</span>    protected int readAtOffset(FSDataInputStream istream,<a name="line.1432"></a>
-<span class="sourceLineNo">1433</span>        byte[] dest, int destOffset, int size,<a name="line.1433"></a>
-<span class="sourceLineNo">1434</span>        boolean peekIntoNextBlock, long fileOffset, boolean pread)<a name="line.1434"></a>
-<span class="sourceLineNo">1435</span>        throws IOException {<a name="line.1435"></a>
-<span class="sourceLineNo">1436</span>      if (peekIntoNextBlock &amp;&amp;<a name="line.1436"></a>
-<span class="sourceLineNo">1437</span>          destOffset + size + hdrSize &gt; dest.length) {<a name="line.1437"></a>
-<span class="sourceLineNo">1438</span>        // We are asked to read the next block's header as well, but there is<a name="line.1438"></a>
-<span class="sourceLineNo">1439</span>        // not enough room in the array.<a name="line.1439"></a>
-<span class="sourceLineNo">1440</span>        throw new IOException("Attempted to read " + size + " bytes and " +<a name="line.1440"></a>
-<span class="sourceLineNo">1441</span>            hdrSize + " bytes of next header into a " + dest.length +<a name="line.1441"></a>
-<span class="sourceLineNo">1442</span>            "-byte array at offset " + destOffset);<a name="line.1442"></a>
-<span class="sourceLineNo">1443</span>      }<a name="line.1443"></a>
-<span class="sourceLineNo">1444</span><a name="line.1444"></a>
-<span class="sourceLineNo">1445</span>      if (!pread &amp;&amp; streamLock.tryLock()) {<a name="line.1445"></a>
-<span class="sourceLineNo">1446</span>        // Seek + read. Better for scanning.<a name="line.1446"></a>
-<span class="sourceLineNo">1447</span>        try {<a name="line.1447"></a>
-<span class="sourceLineNo">1448</span>          istream.seek(fileOffset);<a name="line.1448"></a>
-<span class="sourceLineNo">1449</span><a name="line.1449"></a>
-<span class="sourceLineNo">1450</span>          long realOffset = istream.getPos();<a name="line.1450"></a>
-<span class="sourceLineNo">1451</span>          if (realOffset != fileOffset) {<a name="line.1451"></a>
-<span class="sourceLineNo">1452</span>            throw new IOException("Tried to seek to " + fileOffset + " to "<a name="line.1452"></a>
-<span class="sourceLineNo">1453</span>                + "read " + size + " bytes, but pos=" + realOffset<a name="line.1453"></a>
-<span class="sourceLineNo">1454</span>                + " after seek");<a name="line.1454"></a>
-<span class="sourceLineNo">1455</span>          }<a name="line.1455"></a>
-<span class="sourceLineNo">1456</span><a name="line.1456"></a>
-<span class="sourceLineNo">1457</span>          if (!peekIntoNextBlock) {<a name="line.1457"></a>
-<span class="sourceLineNo">1458</span>            IOUtils.readFully(istream, dest, destOffset, size);<a name="line.1458"></a>
-<span class="sourceLineNo">1459</span>            return -1;<a name="line.1459"></a>
-<span class="sourceLineNo">1460</span>          }<a name="line.1460"></a>
-<span class="sourceLineNo">1461</span><a name="line.1461"></a>
-<span class="sourceLineNo">1462</span>          // Try to read the next block header.<a name="line.1462"></a>
-<span class="sourceLineNo">1463</span>          if (!readWithExtra(istream, dest, destOffset, size, hdrSize))<a name="line.1463"></a>
-<span class="sourceLineNo">1464</span>            return -1;<a name="line.1464"></a>
-<span class="sourceLineNo">1465</span>        } finally {<a name="line.1465"></a>
-<span class="sourceLineNo">1466</span>          streamLock.unlock();<a name="line.1466"></a>
-<span class="sourceLineNo">1467</span>        }<a name="line.1467"></a>
-<span class="sourceLineNo">1468</span>      } else {<a name="line.1468"></a>
-<span class="sourceLineNo">1469</span>        // Positional read. Better for random reads; or when the streamLock is already locked.<a name="line.1469"></a>
-<span class="sourceLineNo">1470</span>        int extraSize = peekIntoNextBlock ? hdrSize : 0;<a name="line.1470"></a>
-<span class="sourceLineNo">1471</span>        if (!positionalReadWithExtra(istream, fileOffset, dest, destOffset,<a name="line.1471"></a>
-<span class="sourceLineNo">1472</span>            size, extraSize)) {<a name="line.1472"></a>
-<span class="sourceLineNo">1473</span>          return -1;<a name="line.1473"></a>
-<span class="sourceLineNo">1474</span>        }<a name="line.1474"></a>
-<span class="sourceLineNo">1475</span>      }<a name="line.1475"></a>
-<span class="sourceLineNo">1476</span><a name="line.1476"></a>
-<span class="sourceLineNo">1477</span>      assert peekIntoNextBlock;<a name="line.1477"></a>
-<span class="sourceLineNo">1478</span>      return Bytes.toInt(dest, destOffset + size + BlockType.MAGIC_LENGTH) + hdrSize;<a name="line.1478"></a>
-<span class="sourceLineNo">1479</span>    }<a name="line.1479"></a>
-<span class="sourceLineNo">1480</span><a name="line.1480"></a>
-<span class="sourceLineNo">1481</span>    /**<a name="line.1481"></a>
-<span class="sourceLineNo">1482</span>     * Reads a version 2 block (version 1 blocks not supported and not expected). Tries to do as<a name="line.1482"></a>
-<span class="sourceLineNo">1483</span>     * little memory allocation as possible, using the provided on-disk size.<a name="line.1483"></a>
-<span class="sourceLineNo">1484</span>     *<a name="line.1484"></a>
-<span class="sourceLineNo">1485</span>     * @param offset the offset in the stream to read at<a name="line.1485"></a>
-<span class="sourceLineNo">1486</span>     * @param onDiskSizeWithHeaderL the on-disk size of the block, including<a name="line.1486"></a>
-<span class="sourceLineNo">1487</span>     *          the header, or -1 if unknown<a name="line.1487"></a>
-<span class="sourceLineNo">1488</span>     * @param uncompressedSize the uncompressed size of the the block. Always<a name="line.1488"></a>
-<span class="sourceLineNo">1489</span>     *          expected to be -1. This parameter is only used in version 1.<a name="line.1489"></a>
-<span class="sourceLineNo">1490</span>     * @param pread whether to use a positional read<a name="line.1490"></a>
-<span class="sourceLineNo">1491</span>     */<a name="line.1491"></a>
-<span class="sourceLineNo">1492</span>    @Override<a name="line.1492"></a>
-<span class="sourceLineNo">1493</span>    public HFileBlock readBlockData(long offset, long onDiskSizeWithHeaderL,<a name="line.1493"></a>
-<span class="sourceLineNo">1494</span>        int uncompressedSize, boolean pread)<a name="line.1494"></a>
-<span class="sourceLineNo">1495</span>    throws IOException {<a name="line.1495"></a>
-<span class="sourceLineNo">1496</span><a name="line.1496"></a>
-<span class="sourceLineNo">1497</span>      // get a copy of the current state of whether to validate<a name="line.1497"></a>
-<span class="sourceLineNo">1498</span>      // hbase checksums or not for this read call. This is not<a name="line.1498"></a>
-<span class="sourceLineNo">1499</span>      // thread-safe but the one constaint is that if we decide<a name="line.1499"></a>
-<span class="sourceLineNo">1500</span>      // to skip hbase checksum verification then we are<a name="line.1500"></a>
-<span class="sourceLineNo">1501</span>      // guaranteed to use hdfs checksum verification.<a name="line.1501"></a>
-<span class="sourceLineNo">1502</span>      boolean doVerificationThruHBaseChecksum = streamWrapper.shouldUseHBaseChecksum();<a name="line.1502"></a>
-<span class="sourceLineNo">1503</span>      FSDataInputStream is = streamWrapper.getStream(doVerificationThruHBaseChecksum);<a name="line.1503"></a>
-<span class="sourceLineNo">1504</span><a name="line.1504"></a>
-<span class="sourceLineNo">1505</span>      HFileBlock blk = readBlockDataInternal(is, offset,<a name="line.1505"></a>
-<span class="sourceLineNo">1506</span>                         onDiskSizeWithHeaderL,<a name="line.1506"></a>
-<span class="sourceLineNo">1507</span>                         uncompressedSize, pread,<a name="line.1507"></a>
-<span class="sourceLineNo">1508</span>                         doVerificationThruHBaseChecksum);<a name="line.1508"></a>
-<span class="sourceLineNo">1509</span>      if (blk == null) {<a name="line.1509"></a>
-<span class="sourceLineNo">1510</span>        HFile.LOG.warn("HBase checksum verification failed for file " +<a name="line.1510"></a>
-<span class="sourceLineNo">1511</span>                       path + " at offset " +<a name="line.1511"></a>
-<span class="sourceLineNo">1512</span>                       offset + " filesize " + fileSize +<a name="line.1512"></a>
-<span class="sourceLineNo">1513</span>                       ". Retrying read with HDFS checksums turned on...");<a name="line.1513"></a>
-<span class="sourceLineNo">1514</span><a name="line.1514"></a>
-<span class="sourceLineNo">1515</span>        if (!doVerificationThruHBaseChecksum) {<a name="line.1515"></a>
-<span class="sourceLineNo">1516</span>          String msg = "HBase checksum verification failed for file " +<a name="line.1516"></a>
-<span class="sourceLineNo">1517</span>                       path + " at offset " +<a name="line.1517"></a>
-<span class="sourceLineNo">1518</span>                       offset + " filesize " + fileSize +<a name="line.1518"></a>
-<span class="sourceLineNo">1519</span>                       " but this cannot happen because doVerify is " +<a name="line.1519"></a>
-<span class="sourceLineNo">1520</span>                       doVerificationThruHBaseChecksum;<a name="line.1520"></a>
-<span class="sourceLineNo">1521</span>          HFile.LOG.warn(msg);<a name="line.1521"></a>
-<span class="sourceLineNo">1522</span>          throw new IOException(msg); // cannot happen case here<a name="line.1522"></a>
-<span class="sourceLineNo">1523</span>        }<a name="line.1523"></a>
-<span class="sourceLineNo">1524</span>        HFile.checksumFailures.incrementAndGet(); // update metrics<a name="line.1524"></a>
-<span class="sourceLineNo">1525</span><a name="line.1525"></a>
-<span class="sourceLineNo">1526</span>        // If we have a checksum failure, we fall back into a mode where<a name="line.1526"></a>
-<span class="sourceLineNo">1527</span>        // the next few reads use HDFS level checksums. We aim to make the<a name="line.1527"></a>
-<span class="sourceLineNo">1528</span>        // next CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD reads avoid<a name="line.1528"></a>
-<span class="sourceLineNo">1529</span>        // hbase checksum verification, but since this value is set without<a name="line.1529"></a>
-<span class="sourceLineNo">1530</span>        // holding any locks, it can so happen that we might actually do<a name="line.1530"></a>
-<span class="sourceLineNo">1531</span>        // a few more than precisely this number.<a name="line.1531"></a>
-<span class="sourceLineNo">1532</span>        is = this.streamWrapper.fallbackToFsChecksum(CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD);<a name="line.1532"></a>
-<span class="sourceLineNo">1533</span>        doVerificationThruHBaseChecksum = false;<a name="line.1533"></a>
-<span class="sourceLineNo">1534</span>        blk = readBlockDataInternal(is, offset, onDiskSizeWithHeaderL,<a name="line.1534"></a>
-<span class="sourceLineNo">1535</span>                                    uncompressedSize, pread,<a name="line.1535"></a>
-<span class="sourceLineNo">1536</span>                                    doVerificationThruHBaseChecksum);<a name="line.1536"></a>
-<span class="sourceLineNo">1537</span>        if (blk != null) {<a name="line.1537"></a>
-<span class="sourceLineNo">1538</span>          HFile.LOG.warn("HDFS checksum verification suceeded for file " +<a name="line.1538"></a>
-<span class="sourceLineNo">1539</span>                         path + " at offset " +<a name="line.1539"></a>
-<span class="sourceLineNo">1540</span>                         offset + " filesize " + fileSize);<a name="line.1540"></a>
-<span class="sourceLineNo">1541</span>        }<a name="line.1541"></a>
-<span class="sourceLineNo">1542</span>      }<a name="line.1542"></a>
-<span class="sourceLineNo">1543</span>      if (blk == null &amp;&amp; !doVerificationThruHBaseChecksum) {<a name="line.1543"></a>
-<span class="sourceLineNo">1544</span>        String msg = "readBlockData failed, possibly due to " +<a name="line.1544"></a>
-<span class="sourceLineNo">1545</span>                     "checksum verification failed for file " + path +<a name="line.1545"></a>
-<span class="sourceLineNo">1546</span>                     " at offset " + offset + " filesize " + fileSize;<a name="line.1546"></a>
-<span class="sourceLineNo">1547</span>        HFile.LOG.warn(msg);<a name="line.1547"></a>
-<span class="sourceLineNo">1548</span>        throw new IOException(msg);<a name="line.1548"></a>
-<span class="sourceLineNo">1549</span>      }<a name="line.1549"></a>
-<span class="sourceLineNo">1550</span><a name="line.1550"></a>
-<span class="sourceLineNo">1551</span>      // If there is a checksum mismatch earlier, then retry with<a name="line.1551"></a>
-<span class="sourceLineNo">1552</span>      // HBase checksums switched off and use HDFS checksum verification.<a name="line.1552"></a>
-<span class="sourceLineNo">1553</span>      // This triggers HDFS to detect and fix corrupt replicas. The<a name="line.1553"></a>
-<span class="sourceLineNo">1554</span>      // next checksumOffCount read requests will use HDFS checksums.<a name="line.1554"></a>
-<span class="sourceLineNo">1555</span>      // The decrementing of this.checksumOffCount is not thread-safe,<a name="line.1555"></a>
-<span class="sourceLineNo">1556</span>      // but it is harmless because eventually checksumOffCount will be<a name="line.1556"></a>
-<span class="sourceLineNo">1557</span>      // a negative number.<a name="line.1557"></a>
-<span class="sourceLineNo">1558</span>      streamWrapper.checksumOk();<a name="line.1558"></a>
-<span class="sourceLineNo">1559</span>      return blk;<a name="line.1559"></a>
-<span class="sourceLineNo">1560</span>    }<a name="line.1560"></a>
-<span class="sourceLineNo">1561</span><a name="line.1561"></a>
-<span class="sourceLineNo">1562</span>    /**<a name="line.1562"></a>
-<span class="sourceLineNo">1563</span>     * Reads a version 2 block.<a name="line.1563"></a>
-<span class="sourceLineNo">1564</span>     *<a name="line.1564"></a>
-<span class="sourceLineNo">1565</span>     * @param offset the offset in the stream to read at<a name="line.1565"></a>
-<span class="sourceLineNo">1566</span>     * @param onDiskSizeWithHeaderL the on-disk size of the block, including<a name="line.1566"></a>
-<span class="sourceLineNo">1567</span>     *          the header, or -1 if unknown<a name="line.1567"></a>
-<span class="sourceLineNo">1568</span>     * @param uncompressedSize the uncompressed size of the the block. Always<a name="line.1568"></a>
-<span class="sourceLineNo">1569</span>     *          expected to be -1. This parameter is only used in version 1.<a name="line.1569"></a>
-<span class="sourceLineNo">1570</span>     * @param pread whether to use a positional read<a name="line.1570"></a>
-<span class="sourceLineNo">1571</span>     * @param verifyChecksum Whether to use HBase checksums.<a name="line.1571"></a>
-<span class="sourceLineNo">1572</span>     *        If HBase checksum is switched off, then use HDFS checksum.<a name="line.1572"></a>
-<span class="sourceLineNo">1573</span>     * @return the HFileBlock or null if there is a HBase checksum mismatch<a name="line.1573"></a>
-<span class="sourceLineNo">1574</span>     */<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span>    private HFileBlock readBlockDataInternal(FSDataInputStream is, long offset,<a name="line.1575"></a>
-<span class="sourceLineNo">1576</span>        long onDiskSizeWithHeaderL, int uncompressedSize, boolean pread,<a name="line.1576"></a>
-<span class="sourceLineNo">1577</span>        boolean verifyChecksum)<a name="line.1577"></a>
-<span class="sourceLineNo">1578</span>    throws IOException {<a name="line.1578"></a>
-<span class="sourceLineNo">1579</span>      if (offset &lt; 0) {<a name="line.1579"></a>
-<span class="sourceLineNo">1580</span>        throw new IOException("Invalid offset=" + offset + " trying to read "<a name="line.1580"></a>
-<span class="sourceLineNo">1581</span>            + "block (onDiskSize=" + onDiskSizeWithHeaderL<a name="line.1581"></a>
-<span class="sourceLineNo">1582</span>            + ", uncompressedSize=" + uncompressedSize + ")");<a name="line.1582"></a>
-<span class="sourceLineNo">1583</span>      }<a name="line.1583"></a>
-<span class="sourceLineNo">1584</span><a name="line.1584"></a>
-<span class="sourceLineNo">1585</span>      if (uncompressedSize != -1) {<a name="line.1585"></a>
-<span class="sourceLineNo">1586</span>        throw new IOException("Version 2 block reader API does not need " +<a name="line.1586"></a>
-<span class="sourceLineNo">1587</span>            "the uncompressed size parameter");<a name="line.1587"></a>
-<span class="sourceLineNo">1588</span>      }<a name="line.1588"></a>
-<span class="sourceLineNo">1589</span><a name="line.1589"></a>
-<span class="sourceLineNo">1590</span>      if ((onDiskSizeWithHeaderL &lt; hdrSize &amp;&amp; onDiskSizeWithHeaderL != -1)<a name="line.1590"></a>
-<span class="sourceLineNo">1591</span>          || onDiskSizeWithHeaderL &gt;= Integer.MAX_VALUE) {<a name="line.1591"></a>
-<span class="sourceLineNo">1592</span>        throw new IOException("Invalid onDisksize=" + onDiskSizeWithHeaderL<a name="line.1592"></a>
-<span class="sourceLineNo">1593</span>            + ": expected to be at least " + hdrSize<a name="line.1593"></a>
-<span class="sourceLineNo">1594</span>            + " and at most " + Integer.MAX_VALUE + ", or -1 (offset="<a name="line.1594"></a>
-<span class="sourceLineNo">1595</span>            + offset + ", uncompressedSize=" + uncompressedSize + ")");<a name="line.1595"></a>
-<span class="sourceLineNo">1596</span>      }<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span><a name="line.1597"></a>
-<span class="sourceLineNo">1598</span>      int onDiskSizeWithHeader = (int) onDiskSizeWithHeaderL;<a name="line.1598"></a>
-<span class="sourceLineNo">1599</span>      // See if we can avoid reading the header. This is desirable, because<a name="line.1599"></a>
-<span class="sourceLineNo">1600</span>      // we will not incur a backward seek operation if we have already<a name="line.1600"></a>
-<span class="sourceLineNo">1601</span>      // read this block's header as part of the previous read's look-ahead.<a name="line.1601"></a>
-<span class="sourceLineNo">1602</span>      // And we also want to skip reading the header again if it has already<a name="line.1602"></a>
-<span class="sourceLineNo">1603</span>      // been read.<a name="line.1603"></a>
-<span class="sourceLineNo">1604</span>      // TODO: How often does this optimization fire? Has to be same thread so the thread local<a name="line.1604"></a>
-<span class="sourceLineNo">1605</span>      // is pertinent and we have to be reading next block as in a big scan.<a name="line.1605"></a>
-<span class="sourceLineNo">1606</span>      PrefetchedHeader prefetchedHeader = prefetchedHeaderForThread.get();<a name="line.1606"></a>
-<span class="sourceLineNo">1607</span>      ByteBuffer headerBuf = prefetchedHeader.offset == offset? prefetchedHeader.buf: null;<a name="line.1607"></a>
-<span class="sourceLineNo">1608</span><a name="line.1608"></a>
-<span class="sourceLineNo">1609</span>      // Allocate enough space to fit the next block's header too.<a name="line.1609"></a>
-<span class="sourceLineNo">1610</span>      int nextBlockOnDiskSize = 0;<a name="line.1610"></a>
-<span class="sourceLineNo">1611</span>      byte[] onDiskBlock = null;<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span><a name="line.1612"></a>
-<span class="sourceLineNo">1613</span>      HFileBlock b = null;<a name="line.1613"></a>
-<span class="sourceLineNo">1614</span>      if (onDiskSizeWithHeader &gt; 0) {<a name="line.1614"></a>
-<span class="sourceLineNo">1615</span>        // We know the total on-disk size. Read the entire block into memory,<a name="line.1615"></a>
-<span class="sourceLineNo">1616</span>        // then parse the header. This code path is used when<a name="line.1616"></a>
-<span class="sourceLineNo">1617</span>        // doing a random read operation relying on the block index, as well as<a name="line.1617"></a>
-<span class="sourceLineNo">1618</span>        // when the client knows the on-disk size from peeking into the next<a name="line.1618"></a>
-<span class="sourceLineNo">1619</span>        // block's header (e.g. this block's header) when reading the previous<a name="line.1619"></a>
-<span class="sourceLineNo">1620</span>        // block. This is the faster and more preferable case.<a name="line.1620"></a>
-<span class="sourceLineNo">1621</span><a name="line.1621"></a>
-<span class="sourceLineNo">1622</span>        // Size that we have to skip in case we have already read the header.<a name="line.1622"></a>
-<span class="sourceLineNo">1623</span>        int preReadHeaderSize = headerBuf == null ? 0 : hdrSize;<a name="line.1623"></a>
-<span class="sourceLineNo">1624</span>        onDiskBlock = new byte[onDiskSizeWithHeader + hdrSize]; // room for this block plus the<a name="line.1624"></a>
-<span class="sourceLineNo">1625</span>                                                                // next block's header<a name="line.1625"></a>
-<span class="sourceLineNo">1626</span>        nextBlockOnDiskSize = readAtOffset(is, onDiskBlock,<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span>            preReadHeaderSize, onDiskSizeWithHeader - preReadHeaderSize,<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span>            true, offset + preReadHeaderSize, pread);<a name="line.1628"></a>
-<span class="sourceLineNo">1629</span>        if (headerBuf != null) {<a name="line.1629"></a>
-<span class="sourceLineNo">1630</span>          // the header has been read when reading the previous block, copy<a name="line.1630"></a>
-<span class="sourceLineNo">1631</span>          // to this block's header<a name="line.1631"></a>
-<span class="sourceLineNo">1632</span>          // headerBuf is HBB<a name="line.1632"></a>
-<span class="sourceLineNo">1633</span>          assert headerBuf.hasArray();<a name="line.1633"></a>
-<span class="sourceLineNo">1634</span>          System.arraycopy(headerBuf.array(),<a name="line.1634"></a>
-<span class="sourceLineNo">1635</span>              headerBuf.arrayOffset(), onDiskBlock, 0, hdrSize);<a name="line.1635"></a>
-<span class="sourceLineNo">1636</span>        } else {<a name="line.1636"></a>
-<span class="sourceLineNo">1637</span>          headerBuf = ByteBuffer.wrap(onDiskBlock, 0, hdrSize);<a name="line.1637"></a>
-<span class="sourceLineNo">1638</span>        }<a name="line.1638"></a>
-<span class="sourceLineNo">1639</span>        // We know the total on-disk size but not the uncompressed size. Parse the header.<a name="line.1639"></a>
-<span class="sourceLineNo">1640</span>        try {<a name="line.1640"></a>
-<span class="sourceLineNo">1641</span>          // TODO: FIX!!! Expensive parse just to get a length<a name="line.1641"></a>
-<span class="sourceLineNo">1642</span>          b = new HFileBlock(headerBuf, fileContext.isUseHBaseChecksum());<a name="line.1642"></a>
-<span class="sourceLineNo">1643</span>        } catch (IOException ex) {<a name="line.1643"></a>
-<span class="sourceLineNo">1644</span>          // Seen in load testing. Provide comprehensive debug info.<a name="line.1644"></a>
-<span class="sourceLineNo">1645</span>          throw new IOException("Failed to read compressed block at "<a name="line.1645"></a>
-<span class="sourceLineNo">1646</span>              + offset<a name="line.1646"></a>
-<span class="sourceLineNo">1647</span>              + ", onDiskSizeWithoutHeader="<a name="line.1647"></a>
-<span class="sourceLineNo">1648</span>              + onDiskSizeWithHeader<a name="line.1648"></a>
-<span class="sourceLineNo">1649</span>              + ", preReadHeaderSize="<a name="line.1649"></a>
-<span class="sourceLineNo">1650</span>              + hdrSize<a name="line.1650"></a>
-<span class="sourceLineNo">1651</span>              + ", header.length="<a name="line.1651"></a>
-<span class="sourceLineNo">1652</span>              + prefetchedHeader.header.length<a name="line.1652"></a>
-<span class="sourceLineNo">1653</span>              + ", header bytes: "<a name="line.1653"></a>
-<span class="sourceLineNo">1654</span>              + Bytes.toStringBinary(prefetchedHeader.header, 0,<a name="line.1654"></a>
-<span class="sourceLineNo">1655</span>                  hdrSize), ex);<a name="line.1655"></a>
-<span class="sourceLineNo">1656</span>        }<a name="line.1656"></a>
-<span class="sourceLineNo">1657</span>        // if the caller specifies a onDiskSizeWithHeader, validate it.<a name="line.1657"></a>
-<span class="sourceLineNo">1658</span>        int onDiskSizeWithoutHeader = onDiskSizeWithHeader - hdrSize;<a name="line.1658"></a>
-<span class="sourceLineNo">1659</span>        assert onDiskSizeWithoutHeader &gt;= 0;<a name="line.1659"></a>
-<span class="sourceLineNo">1660</span>        b.validateOnDiskSizeWithoutHeader(onDiskSizeWithoutHeader);<a name="line.1660"></a>
-<span class="sourceLineNo">1661</span>      } else {<a name="line.1661"></a>
-<span class="sourceLineNo">1662</span>        // Check headerBuf to see if we have read this block's header as part of<a name="line.1662"></a>
-<span class="sourceLineNo">1663</span>        // reading the previous block. This is an optimization of peeking into<a name="line.1663"></a>
-<span class="sourceLineNo">1664</span>        // the next block's header (e.g.this block's header) when reading the<a name="line.1664"></a>
-<span class="sourceLineNo">1665</span>        // previous block. This is the faster and more preferable case. If the<a name="line.1665"></a>
-<span class="sourceLineNo">1666</span>        // header is already there, don't read the header again.<a name="line.1666"></a>
-<span class="sourceLineNo">1667</span><a name="line.1667"></a>
-<span class="sourceLineNo">1668</span>        // Unfortunately, we still have to do a separate read operation to<a name="line.1668"></a>
-<span class="sourceLineNo">1669</span>        // read the header.<a name="line.1669"></a>
-<span class="sourceLineNo">1670</span>        if (headerBuf == null) {<a name="line.1670"></a>
-<span class="sourceLineNo">1671</span>          // From the header, determine the on-disk size of the given hfile<a name="line.1671"></a>
-<span class="sourceLineNo">1672</span>          // block, and read the remaining data, thereby incurring two read<a name="line.1672"></a>
-<span class="sourceLineNo">1673</span>          // operations. This might happen when we are doing the first read<a name="line.1673"></a>
-<span class="sourceLineNo">1674</span>          // in a series of reads or a random read, and we don't have access<a name="line.1674"></a>
-<span class="sourceLineNo">1675</span>          // to the block index. This is costly and should happen very rarely.<a name="line.1675"></a>
-<span class="sourceLineNo">1676</span>          headerBuf = ByteBuffer.allocate(hdrSize);<a name="line.1676"></a>
-<span class="sourceLineNo">1677</span>          // headerBuf is HBB<a name="line.1677"></a>
-<span class="sourceLineNo">1678</span>          readAtOffset(is, headerBuf.array(), headerBuf.arrayOffset(),<a name="line.1678"></a>
-<span class="sourceLineNo">1679</span>              hdrSize, false, offset, pread);<a name="line.1679"></a>
-<span class="sourceLineNo">1680</span>        }<a name="line.1680"></a>
-<span class="sourceLineNo">1681</span>        // TODO: FIX!!! Expensive parse just to get a length<a name="line.1681"></a>
-<span class="sourceLineNo">1682</span>        b = new HFileBlock(headerBuf, fileContext.isUseHBaseChecksum());<a name="line.1682"></a>
-<span class="sourceLineNo">1683</span>        onDiskBlock = new byte[b.getOnDiskSizeWithHeader() + hdrSize];<a name="line.1683"></a>
-<span class="sourceLineNo">1684</span>        // headerBuf is HBB<a name="line.1684"></a>
-<span class="sourceLineNo">1685</span>        System.arraycopy(headerBuf.array(), headerBuf.arrayOffset(), onDiskBlock, 0, hdrSize);<a name="line.1685"></a>
-<span class="sourceLineNo">1686</span>        nextBlockOnDiskSize =<a name="line.1686"></a>
-<span class="sourceLineNo">1687</span>          readAtOffset(is, onDiskBlock, hdrSize, b.getOnDiskSizeWithHeader()<a name="line.1687"></a>
-<span class="sourceLineNo">1688</span>              - hdrSize, true, offset + hdrSize, pread);<a name="line.1688"></a>
-<span class="sourceLineNo">1689</span>        onDiskSizeWithHeader = b.onDiskSizeWithoutHeader + hdrSize;<a name="line.1689"></a>
-<span class="sourceLineNo">1690</span>      }<a name="line.1690"></a>
-<span class="sourceLineNo">1691</span><a name="line.1691"></a>
-<span class="sourceLineNo">1692</span>      if (!fileContext.isCompressedOrEncrypted()) {<a name="line.1692"></a>
-<span class="sourceLineNo">1693</span>        b.assumeUncompressed();<a name="line.1693"></a>
-<span class="sourceLineNo">1694</span>      }<a name="line.1694"></a>
-<span class="sourceLineNo">1695</span><a name="line.1695"></a>
-<span class="sourceLineNo">1696</span>      if (verifyChecksum &amp;&amp; !validateBlockChecksum(b, onDiskBlock, hdrSize)) {<a name="line.1696"></a>
-<span class="sourceLineNo">1697</span>        return null;             // checksum mismatch<a name="line.1697"></a>
-<span class="sourceLineNo">1698</span>      }<a name="line.1698"></a>
-<span class="sourceLineNo">1699</span><a name="line.1699"></a>
-<span class="sourceLineNo">1700</span>      // The onDiskBlock will become the headerAndDataBuffer for this block.<a name="line.1700"></a>
-<span class="sourceLineNo">1701</span>      // If nextBlockOnDiskSizeWithHeader is not zero, the onDiskBlock already<a name="line.1701"></a>
-<span class="sourceLineNo">1702</span>      // contains the header of next block, so no need to set next<a name="line.1702"></a>
-<span class="sourceLineNo">1703</span>      // block's header in it.<a name="line.1703"></a>
-<span class="sourceLineNo">1704</span>      b = new HFileBlock(ByteBuffer.wrap(onDiskBlock, 0, onDiskSizeWithHeader),<a name="line.1704"></a>
-<span class="sourceLineNo">1705</span>        this.fileContext.isUseHBaseChecksum());<a name="line.1705"></a>
-<span class="sourceLineNo">1706</span><a name="line.1706"></a>
-<span class="sourceLineNo">1707</span>      b.nextBlockOnDiskSizeWithHeader = nextBlockOnDiskSize;<a name="line.1707"></a>
-<span class="sourceLineNo">1708</span><a name="line.1708"></a>
-<span class="sourceLineNo">1709</span>      // Set prefetched header<a name="line.1709"></a>
-<span class="sourceLineNo">1710</span>      if (b.hasNextBlockHeader()) {<a name="line.1710"></a>
-<span class="sourceLineNo">1711</span>        prefetchedHeader.offset = offset + b.getOnDiskSizeWithHeader();<a name="line.1711"></a>
-<span class="sourceLineNo">1712</span>        System.arraycopy(onDiskBlock, onDiskSizeWithHeader, prefetchedHeader.header, 0, hdrSize);<a name="line.1712"></a>
-<span class="sourceLineNo">1713</span>      }<a name="line.1713"></a>
-<span class="sourceLineNo">1714</span><a name="line.1714"></a>
-<span class="sourceLineNo">1715</span>      b.offset = offset;<a name="line.1715"></a>
-<span class="sourceLineNo">1716</span>      b.fileContext.setIncludesTags(this.fileContext.isIncludesTags());<a name="line.1716"></a>
-<span class="sourceLineNo">1717</span>      b.fileContext.setIncludesMvcc(this.fileContext.isIncludesMvcc());<a name="line.1717"></a>
-<span class="sourceLineNo">1718</span>      return b;<a name="line.1718"></a>
-<span class="sourceLineNo">1719</span>    }<a name="line.1719"></a>
-<span class="sourceLineNo">1720</span><a name="line.1720"></a>
-<span class="sourceLineNo">1721</span>    public void setIncludesMemstoreTS(boolean includesMemstoreTS) {<a name="line.1721"></a>
-<span class="sourceLineNo">1722</span>      this.fileContext.setIncludesMvcc(includesMemstoreTS);<a name="line.1722"></a>
-<span class="sourceLineNo">1723</span>    }<a name="line.1723"></a>
-<span class="sourceLineNo">1724</span><a name="line.1724"></a>
-<span class="sourceLineNo">1725</span>    public void setDataBlockEncoder(HFileDataBlockEncoder encoder) {<a name="line.1725"></a>
-<span class="sourceLineNo">1726</span>      encodedBlockDecodingCtx = encoder.newDataBlockDecodingContext(this.fileContext);<a name="line.1726"></a>
-<span class="sourceLineNo">1727</span>    }<a name="line.1727"></a>
-<span class="sourceLineNo">1728</span><a name="line.1728"></a>
-<span class="sourceLineNo">1729</span>    @Override<a name="line.1729"></a>
-<span class="sourceLineNo">1730</span>    public HFileBlockDecodingContext getBlockDecodingContext() {<a name="line.1730"></a>
-<span class="sourceLineNo">1731</span>      return this.encodedBlockDecodingCtx;<a name="line.1731"></a>
-<span class="sourceLineNo">1732</span>    }<a name="line.1732"></a>
-<span class="sourceLineNo">1733</span><a name="line.1733"></a>
-<span class="sourceLineNo">1734</span>    @Override<a name="line.1734"></a>
-<span class="sourceLineNo">1735</span>    public HFileBlockDecodingContext getDefaultBlockDecodingContext() {<a name="line.1735"></a>
-<span class="sourceLineNo">1736</span>      return this.defaultDecodingCtx;<a name="line.1736"></a>
-<span class="sourceLineNo">1737</span>    }<a name="line.1737"></a>
-<span class="sourceLineNo">1738</span><a name="line.1738"></a>
-<span class="sourceLineNo">1739</span>    /**<a name="line.1739"></a>
-<span class="sourceLineNo">1740</span>     * Generates the checksum for the header as well as the data and<a name="line.1740"></a>
-<span class="sourceLineNo">1741</span>     * then validates that it matches the value stored in the header.<a name="line.1741"></a>
-<span class="sourceLineNo">1742</span>     * If there is a checksum mismatch, then return false. Otherwise<a name="line.1742"></a>
-<span class="sourceLineNo">1743</span>     * return true.<a name="line.1743"></a>
-<span class="sourceLineNo">1744</span>     */<a name="line.1744"></a>
-<span class="sourceLineNo">1745</span>    protected boolean validateBlockChecksum(HFileBlock block,  byte[] data, int hdrSize)<a name="line.1745"></a>
-<span class="sourceLineNo">1746</span>        throws IOException {<a name="line.1746"></a>
-<span class="sourceLineNo">1747</span>      return ChecksumUtil.validateBlockChecksum(path, block, data, hdrSize);<a name="line.1747"></a>
-<span class="sourceLineNo">1748</span>    }<a name="line.1748"></a>
-<span class="sourceLineNo">1749</span><a name="line.1749"></a>
-<span class="sourceLineNo">1750</span>    @Override<a name="line.1750"></a>
-<span class="sourceLineNo">1751</span>    public void closeStreams() throws IOException {<a name="line.1751"></a>
-<span class="sourceLineNo">1752</span>      streamWrapper.close();<a name="line.1752"></a>
-<span class="sourceLineNo">1753</span>    }<a name="line.1753"></a>
-<span class="sourceLineNo">1754</span><a name="line.1754"></a>
-<span class="sourceLineNo">1755</span>    @Override<a name="line.1755"></a>
-<span class="sourceLineNo">1756</span>    public String toString() {<a name="line.1756"></a>
-<span class="sourceLineNo">1757</span>      return "hfs=" + hfs + ", path=" + path + ", fileContext=" + fileContext;<a name="line.1757"></a>
-<span class="sourceLineNo">1758</span>    }<a name="line.1758"></a>
-<span class="sourceLineNo">1759</span>  }<a name="line.1759"></a>
-<span class="sourceLineNo">1760</span><a name="line.1760"></a>
-<span class="sourceLineNo">1761</span>  @Override<a name="line.1761"></a>
-<span class="sourceLineNo">1762</span>  public int getSerializedLength() {<a name="line.1762"></a>
-<span class="sourceLineNo">1763</span>    if (buf != null) {<a name="line.1763"></a>
-<span class="sourceLineNo">1764</span>      // include extra bytes for the next header when it's available.<a name="line.1764"></a>
-<span class="sourceLineNo">1765</span>      int extraSpace = hasNextBlockHeader() ? headerSize() : 0;<a name="line.1765"></a>
-<span class="sourceLineNo">1766</span>      return this.buf.limit() + extraSpace + HFileBlock.EXTRA_SERIALIZATION_SPACE;<a name="line.1766"></a>
-<span class="sourceLineNo">1767</span>    }<a name="line.1767"></a>
-<span class="sourceLineNo">1768</span>    return 0;<a name="line.1768"></a>
-<span class="sourceLineNo">1769</span>  }<a name="line.1769"></a>
-<span class="sourceLineNo">1770</span><a name="line.1770"></a>
-<span class="sourceLineNo">1771</span>  @Override<a name="line.1771"></a>
-<span class="sourceLineNo">1772</span>  public void serialize(ByteBuffer destination) {<a name="line.1772"></a>
-<span class="sourceLineNo">1773</span>    this.buf.get(destination, 0, getSerializedLength()<a name="line.1773"></a>
-<span class="sourceLineNo">1774</span>        - EXTRA_SERIALIZATION_SPACE);<a name="line.1774"></a>
-<span class="sourceLineNo">1775</span>    serializeExtraInfo(destination);<a name="line.1775"></a>
-<span class="sourceLineNo">1776</span>  }<a name="line.1776"></a>
-<span class="sourceLineNo">1777</span><a name="line.1777"></a>
-<span class="sourceLineNo">1778</span>  public void serializeExtraInfo(ByteBuffer destination) {<a name="line.1778"></a>
-<span class="sourceLineNo">1779</span>    destination.put(this.fileContext.isUseHBaseChecksum() ? (byte) 1 : (byte) 0);<a name="line.1779"></a>
-<span class="sourceLineNo">1780</span>    destination.putLong(this.offset);<a name="line.1780"></a>
-<span class="sourceLineNo">1781</span>    destination.putInt(this.nextBlockOnDiskSizeWithHeader);<a name="line.1781"></a>
-<span class="sourceLineNo">1782</span>    destination.rewind();<a name="line.1782"></a>
-<span class="sourceLineNo">1783</span>  }<a name="line.1783"></a>
-<span class="sourceLineNo">1784</span><a name="line.1784"></a>
-<span class="sourceLineNo">1785</span>  @Override<a name="line.1785"></a>
-<span class="sourceLineNo">1786</span>  public CacheableDeserializer&lt;Cacheable&gt; getDeserializer() {<a name="line.1786"></a>
-<span class="sourceLineNo">1787</span>    return HFileBlock.blockDeserializer;<a name="line.1787"></a>
-<span class="sourceLineNo">1788</span>  }<a name="line.1788"></a>
-<span class="sourceLineNo">1789</span><a name="line.1789"></a>
-<span class="sourceLineNo">1790</span>  @Override<a name="line.1790"></a>
-<span class="sourceLineNo">1791</span>  public int hashCode() {<a name="line.1791"></a>
-<span class="sourceLineNo">1792</span>    int result = 1;<a name="line.1792"></a>
-<span class="sourceLineNo">1793</span>    result = result * 31 + blockType.hashCode();<a name="line.1793"></a>
-<span class="sourceLineNo">1794</span>    result = result * 31 + nextBlockOnDiskSizeWithHeader;<a name="line.1794"></a>
-<span class="sourceLineNo">1795</span>    result = result * 31 + (int) (offset ^ (offset &gt;&gt;&gt; 32));<a name="line.1795"></a>
-<span class="sourceLineNo">1796</span>    result = result * 31 + onDiskSizeWithoutHeader;<a name="line.1796"></a>
-<span class="sourceLineNo">1797</span>    result = result * 31 + (int) (prevBlockOffset ^ (prevBlockOffset &gt;&gt;&gt; 32));<a name="line.1797"></a>
-<span class="sourceLineNo">1798</span>    result = result * 31 + uncompressedSizeWithoutHeader;<a name="line.1798"></a>
-<span class="sourceLineNo">1799</span>    result = result * 31 + buf.hashCode();<a name="line.1799"></a>
-<span class="sourceLineNo">1800</span>    return result;<a name="line.1800"></a>
-<span class="sourceLineNo">1801</span>  }<a name="line.1801"></a>
-<span class="sourceLineNo">1802</span><a name="line.1802"></a>
-<span class="sourceLineNo">1803</span>  @Override<a name="line.1803"></a>
-<span class="sourceLineNo">1804</span>  public boolean equals(Object comparison) {<a name="line.1804"></a>
-<span class="sourceLineNo">1805</span>    if (this == comparison) {<a name="line.1805"></a>
-<span class="sourceLineNo">1806</span>      return true;<a name="line.1806"></a>
-<span class="sourceLineNo">1807</span>    }<a name="line.1807"></a>
-<span class="sourceLineNo">1808</span>    if (comparison == null) {<a name="line.1808"></a>
-<span class="sourceLineNo">1809</span>      return false;<a name="line.1809"></a>
-<span class="sourceLineNo">1810</span>    }<a name="line.1810"></a>
-<span class="sourceLineNo">1811</span>    if (comparison.getClass() != this.getClass()) {<a name="line.1811"></a>
-<span class="sourceLineNo">1812</span>      return false;<a name="line.1812"></a>
-<span class="sourceLineNo">1813</span>    }<a name="line.1813"></a>
-<span class="sourceLineNo">1814</span><a name="line.1814"></a>
-<span class="sourceLineNo">1815</span>    HFileBlock castedComparison = (HFileBlock) comparison;<a name="line.1815"></a>
-<span class="sourceLineNo">1816</span><a name="line.1816"></a>
-<span class="sourceLineNo">1817</span>    if (castedComparison.blockType != this.blockType) {<a name="line.1817"></a>
-<span class="sourceLineNo">1818</span>      return false;<a name="line.1818"></a>
-<span class="sourceLineNo">1819</span>    }<a name="line.1819"></a>
-<span class="sourceLineNo">1820</span>    if (castedComparison.nextBlockOnDiskSizeWithHeader != this.nextBlockOnDiskSizeWithHeader) {<a name="line.1820"></a>
-<span class="sourceLineNo">1821</span>      return false;<a name="line.1821"></a>
-<span class="sourceLineNo">1822</span>    }<a name="line.1822"></a>
-<span class="sourceLineNo">1823</span>    if (castedComparison.offset != this.offset) {<a name="line.1823"></a>
-<span class="sourceLineNo">1824</span>      return false;<a name="line.1824"></a>
-<span class="sourceLineNo">1825</span>    }<a name="line.1825"></a>
-<span class="sourceLineNo">1826</span>    if (castedComparison.onDiskSizeWithoutHeader != this.onDiskSizeWithoutHeader) {<a name="line.1826"></a>
-<span class="sourceLineNo">1827</span>      return false;<a name="line.1827"></a>
-<span class="sourceLineNo">1828</span>    }<a name="line.1828"></a>
-<span class="sourceLineNo">1829</span>    if (castedComparison.prevBlockOffset != this.prevBlockOffset) {<a name="line.1829"></a>
-<span class="sourceLineNo">1830</span>      return false;<a name="line.1830"></a>
-<span class="sourceLineNo">1831</span>    }<a name="line.1831"></a>
-<span class="sourceLineNo">1832</span>    if (castedComparison.uncompressedSizeWithoutHeader != this.uncompressedSizeWithoutHeader) {<a name="line.1832"></a>
-<span class="sourceLineNo">1833</span>      return false;<a name="line.1833"></a>
-<span class="sourceLineNo">1834</span>    }<a name="line.1834"></a>
-<span class="sourceLineNo">1835</span>    if (ByteBuff.compareTo(this.buf, 0, this.buf.limit(), castedComparison.buf, 0,<a name="line.1835"></a>
-<span class="sourceLineNo">1836</span>        castedComparison.buf.limit()) != 0) {<a name="line.1836"></a>
-<span class="sourceLineNo">1837</span>      return false;<a name="line.1837"></a>
-<span class="sourceLineNo">1838</span>    }<a name="line.1838"></a>
-<span class="sourceLineNo">1839</span>    return true;<a name="line.1839"></a>
-<span class="sourceLineNo">1840</span>  }<a name="line.1840"></a>
-<span class="sourceLineNo">1841</span><a name="line.1841"></a>
-<span class="sourceLineNo">1842</span>  public DataBlockEncoding getDataBlockEncoding() {<a name="line.1842"></a>
-<span class="sourceLineNo">1843</span>    if (blockType == BlockType.ENCODED_DATA) {<a name="line.1843"></a>
-<span class="sourceLineNo">1844</span>      return DataBlockEncoding.getEncodingById(getDataBlockEncodingId());<a name="line.1844"></a>
-<span class="sourceLineNo">1845</span>    }<a name="line.1845"></a>
-<span class="sourceLineNo">1846</span>    return DataBlockEncoding.NONE;<a name="line.1846"></a>
-<span class="sourceLineNo">1847</span>  }<a name="line.1847"></a>
-<span class="sourceLineNo">1848</span><a name="line.1848"></a>
-<span class="sourceLineNo">1849</span>  byte getChecksumType() {<a name="line.1849"></a>
-<span class="sourceLineNo">1850</span>    return this.fileContext.getChecksumType().getCode();<a name="line.1850"></a>
-<span class="sourceLineNo">1851</span>  }<a name="line.1851"></a>
-<span class="sourceLineNo">1852</span><a name="line.1852"></a>
-<span class="sourceLineNo">1853</span>  int getBytesPerChecksum() {<a name="line.1853"></a>
-<span class="sourceLineNo">1854</span>    return this.fileContext.getBytesPerChecksum();<a name="line.1854"></a>
-<span class="sourceLineNo">1855</span>  }<a name="line.1855"></a>
-<span class="sourceLineNo">1856</span><a name="line.1856"></a>
-<span class="sourceLineNo">1857</span>  /** @return the size of data on disk + header. Excludes checksum. */<a name="line.1857"></a>
-<span class="sourceLineNo">1858</span>  int getOnDiskDataSizeWithHeader() {<a name="line.1858"></a>
-<span class="sourceLineNo">1859</span>    return this.onDiskDataSizeWithHeader;<a name="line.1859"></a>
-<span class="sourceLineNo">1860</span>  }<a name="line.1860"></a>
-<span class="sourceLineNo">1861</span><a name="line.1861"></a>
-<span class="sourceLineNo">1862</span>  /**<a name="line.1862"></a>
-<span class="sourceLineNo">1863</span>   * Calcuate the number of bytes required to store all the checksums<a name="line.1863"></a>
-<span class="sourceLineNo">1864</span>   * for this block. Each checksum value is a 4 byte integer.<a name="line.1864"></a>
-<span class="sourceLineNo">1865</span>   */<a name="line.1865"></a>
-<span class="sourceLineNo">1866</span>  int totalChecksumBytes() {<a name="line.1866"></a>
-<span class="sourceLineNo">1867</span>    // If the hfile block has minorVersion 0, then there are no checksum<a name="line.1867"></a>
-<span class="sourceLineNo">1868</span>    // data to validate. Similarly, a zero value in this.bytesPerChecksum<a name="line.1868"></a>
-<span class="sourceLineNo">1869</span>    // indicates that cached blocks do not have checksum data because<a name="line.1869"></a>
-<span class="sourceLineNo">1870</span>    // checksums were already validated when the block was read from disk.<a name="line.1870"></a>
-<span class="sourceLineNo">1871</span>    if (!fileContext.isUseHBaseChecksum() || this.fileContext.getBytesPerChecksum() == 0) {<a name="line.1871"></a>
-<span class="sourceLineNo">1872</span>      return 0;<a name="line.1872"></a>
-<span class="sourceLineNo">1873</span>    }<a name="line.1873"></a>
-<span class="sourceLineNo">1874</span>    return (int) ChecksumUtil.numBytes(onDiskDataSizeWithHeader,<a name="line.1874"></a>
-<span class="sourceLineNo">1875</span>        this.fileContext.getBytesPerChecksum());<a name="line.1875"></a>
-<span class="sourceLineNo">1876</span>  }<a name="line.1876"></a>
-<span class="sourceLineNo">1877</span><a name="line.1877"></a>
-<span class="sourceLineNo">1878</span>  /**<a name="line.1878"></a>
-<span class="sourceLineNo">1879</span>   * Returns the size of this block header.<a name="line.1879"></a>
-<span class="sourceLineNo">1880</span>   */<a name="line.1880"></a>
-<span class="sourceLineNo">1881</span>  public int headerSize() {<a name="line.1881"></a>
-<span class="sourceLineNo">1882</span>    return headerSize(this.fileContext.isUseHBaseChecksum());<a name="line.1882"></a>
-<span class="sourceLineNo">1883</span>  }<a name="line.1883"></a>
-<span class="sourceLineNo">1884</span><a name="line.1884"></a>
-<span class="sourceLineNo">1885</span>  /**<a name="line.1885"></a>
-<span class="sourceLineNo">1886</span>   * Maps a minor version to the size of the header.<a name="line.1886"></a>
-<span class="sourceLineNo">1887</span>   */<a name="line.1887"></a>
-<span class="sourceLineNo">1888</span>  public static int headerSize(boolean usesHBaseChecksum) {<a name="line.1888"></a>
-<span class="sourceLineNo">1889</span>    if (usesHBaseChecksum) {<a name="line.1889"></a>
-<span class="sourceLineNo">1890</span>      return HConstants.HFILEBLOCK_HEADER_SIZE;<a name="line.1890"></a>
-<span class="sourceLineNo">1891</span>    }<a name="line.1891"></a>
-<span class="sourceLineNo">1892</span>    return HConstants.HFILEBLOCK_HEADER_SIZE_NO_CHECKSUM;<a name="line.1892"></a>
-<span class="sourceLineNo">1893</span>  }<a name="line.1893"></a>
-<span class="sourceLineNo">1894</span><a name="line.1894"></a>
-<span class="sourceLineNo">1895</span>  /**<a name="line.1895"></a>
-<span class="sourceLineNo">1896</span>   * Return the appropriate DUMMY_HEADER for the minor version<a name="line.1896"></a>
-<span class="sourceLineNo">1897</span>   */<a name="line.1897"></a>
-<span class="sourceLineNo">1898</span>  public byte[] getDummyHeaderForVersion() {<a name="line.1898"></a>
-<span class="sourceLineNo">1899</span>    return getDummyHeaderForVersion(this.fileContext.isUseHBaseChecksum());<a name="line.1899"></a>
-<span class="sourceLineNo">1900</span>  }<a name="line.1900"></a>
-<span class="sourceLineNo">1901</span><a name="line.1901"></a>
-<span class="sourceLineNo">1902</span>  /**<a name="line.1902"></a>
-<span class="sourceLineNo">1903</span>   * Return the appropriate DUMMY_HEADER for the minor version<a name="line.1903"></a>
-<span class="sourceLineNo">1904</span>   */<a name="line.1904"></a>
-<span class="sourceLineNo">1905</span>  static private byte[] getDummyHeaderForVersion(boolean usesHBaseChecksum) {<a name="line.1905"></a>
-<span class="sourceLineNo">1906</span>    if (usesHBaseChecksum) {<a name="line.1906"></a>
-<span class="sourceLineNo">1907</span>      return HConstants.HFILEBLOCK_DUMMY_HEADER;<a name="line.1907"></a>
-<span class="sourceLineNo">1908</span>    }<a name="line.1908"></a>
-<span class="sourceLineNo">1909</span>    return DUMMY_HEADER_NO_CHECKSUM;<a name="line.1909"></a>
-<span class="sourceLineNo">1910</span>  }<a name="line.1910"></a>
-<span class="sourceLineNo">1911</span><a name="line.1911"></a>
-<span class="sourceLineNo">1912</span>  /**<a name="line.1912"></a>
-<span class="sourceLineNo">1913</span>   * @return the HFileContext used to create this HFileBlock. Not necessary the<a name="line.1913"></a>
-<span class="sourceLineNo">1914</span>   * fileContext for the file from which this block's data was originally read.<a name="line.1914"></a>
-<span class="sourceLineNo">1915</span>   */<a name="line.1915"></a>
-<span class="sourceLineNo">1916</span>  public HFileContext getHFileContext() {<a name="line.1916"></a>
-<span class="sourceLineNo">1917</span>    return this.fileContext;<a name="line.1917"></a>
-<span class="sourceLineNo">1918</span>  }<a name="line.1918"></a>
-<span class="sourceLineNo">1919</span><a name="line.1919"></a>
-<span class="sourceLineNo">1920</span>  @Override<a name="line.1920"></a>
-<span class="sourceLineNo">1921</span>  public MemoryType getMemoryType() {<a name="line.1921"></a>
-<span class="sourceLineNo">1922</span>    return this.memType;<a name="line.1922"></a>
-<span class="sourceLineNo">1923</span>  }<a name="line.1923"></a>
-<span class="sourceLineNo">1924</span><a name="line.1924"></a>
-<span class="sourceLineNo">1925</span>  /**<a name="line.1925"></a>
-<span class="sourceLineNo">1926</span>   * @return true if this block is backed by a shared memory area(such as that of a BucketCache).<a name="line.1926"></a>
-<span class="sourceLineNo">1927</span>   */<a name="line.1927"></a>
-<span class="sourceLineNo">1928</span>  public boolean usesSharedMemory() {<a name="line.1928"></a>
-<span class="sourceLineNo">1929</span>    return this.memType == MemoryType.SHARED;<a name="line.1929"></a>
-<span class="sourceLineNo">1930</span>  }<a name="line.1930"></a>
-<span class="sourceLineNo">1931</span><a name="line.1931"></a>
-<span class="sourceLineNo">1932</span>  /**<a name="line.1932"></a>
-<span class="sourceLineNo">1933</span>   * Convert the contents of the block header into a human readable string.<a name="line.1933"></a>
-<span class="sourceLineNo">1934</span>   * This is mostly helpful for debugging. This assumes that the block<a name="line.1934"></a>
-<span class="sourceLineNo">1935</span>   * has minor version &gt; 0.<a name="line.1935"></a>
-<span class="sourceLineNo">1936</span>   */<a name="line.1936"></a>
-<span class="sourceLineNo">1937</span>  static String toStringHeader(ByteBuff buf) throws IOException {<a name="line.1937"></a>
-<span class="sourceLineNo">1938</span>    byte[] magicBuf = new byte[Math.min(buf.limit() - buf.position(), BlockType.MAGIC_LENGTH)];<a name="line.1938"></a>
-<span class="sourceLineNo">1939</span>    buf.get(magicBuf);<a name="line.1939"></a>
-<span class="sourceLineNo">1940</span>    BlockType bt = BlockType.parse(magicBuf, 0, BlockType.MAGIC_LENGTH);<a name="line.1940"></a>
-<span class="sourceLineNo">1941</span>    int compressedBlockSizeNoHeader = buf.getInt();<a name="line.1941"></a>
-<span class="sourceLineNo">1942</span>    int uncompressedBlockSizeNoHeader = buf.getInt();<a name="line.1942"></a>
-<span class="sourceLineNo">1943</span>    long prevBlockOffset = buf.getLong();<a name="line.1943"></a>
-<span class="sourceLineNo">1944</span>    byte cksumtype = buf.get();<a name="line.1944"></a>
-<span class="sourceLineNo">1945</span>    long bytesPerChecksum = buf.getInt();<a name="line.1945"></a>
-<span class="sourceLineNo">1946</span>    long onDiskDataSizeWithHeader = buf.getInt();<a name="line.1946"></a>
-<span class="sourceLineNo">1947</span>    return " Header dump: magic: " + Bytes.toString(magicBuf) +<a name="line.1947"></a>
-<span class="sourceLineNo">1948</span>                   " blockType " + bt +<a name="line.1948"></a>
-<span class="sourceLineNo">1949</span>                   " compressedBlockSizeNoHeader " +<a name="line.1949"></a>
-<span class="sourceLineNo">1950</span>                   compressedBlockSizeNoHeader +<a name="line.1950"></a>
-<span class="sourceLineNo">1951</span>                   " uncompressedBlockSizeNoHeader " +<a name="line.1951"></a>
-<span class="sourceLineNo">1952</span>                   uncompressedBlockSizeNoHeader +<a name="line.1952"></a>
-<span class="sourceLineNo">1953</span>                   " prevBlockOffset " + prevBlockOffset +<a name="line.1953"></a>
-<span class="sourceLineNo">1954</span>                   " checksumType " + ChecksumType.codeToType(cksumtype) +<a name="line.1954"></a>
-<span class="sourceLineNo">1955</span>                   " bytesPerChecksum " + bytesPerChecksum +<a name="line.1955"></a>
-<span class="sourceLineNo">1956</span>                   " onDiskDataSizeWithHeader " + onDiskDataSizeWithHeader;<a name="line.1956"></a>
-<span class="sourceLineNo">1957</span>  }<a name="line.1957"></a>
-<span class="sourceLineNo">1958</span>}<a name="line.1958"></a>
+<span class="sourceLineNo">1361</span>    protected HFileContext fileContext;<a name="line.1361"></a>
+<span class="sourceLineNo">1362</span>    // Cache the fileName<a name="line.1362"></a>
+<span class="sourceLineNo">1363</span>    protected String pathName;<a name="line.1363"></a>
+<span class="sourceLineNo">1364</span><a name="line.1364"></a>
+<span class="sourceLineNo">1365</span>    public FSReaderImpl(FSDataInputStreamWrapper stream, long fileSize, HFileSystem hfs, Path path,<a name="line.1365"></a>
+<span class="sourceLineNo">1366</span>        HFileContext fileContext) throws IOException {<a name="line.1366"></a>
+<span class="sourceLineNo">1367</span>      this.fileSize = fileSize;<a name="line.1367"></a>
+<span class="sourceLineNo">1368</span>      this.hfs = hfs;<a name="line.1368"></a>
+<span class="sourceLineNo">1369</span>      if (path != null) {<a name="line.1369"></a>
+<span class="sourceLineNo">1370</span>        this.pathName = path.toString();<a name="line.1370"></a>
+<span class="sourceLineNo">1371</span>      }<a name="line.1371"></a>
+<span class="sourceLineNo">1372</span>      this.fileContext = fileContext;<a name="line.1372"></a>
+<span class="sourceLineNo">1373</span>      this.hdrSize = headerSize(fileContext.isUseHBaseChecksum());<a name="line.1373"></a>
+<span class="sourceLineNo">1374</span><a name="line.1374"></a>
+<span class="sourceLineNo">1375</span>      this.streamWrapper = stream;<a name="line.1375"></a>
+<span class="sourceLineNo">1376</span>      // Older versions of HBase didn't support checksum.<a name="line.1376"></a>
+<span class="sourceLineNo">1377</span>      this.streamWrapper.prepareForBlockReader(!fileContext.isUseHBaseChecksum());<a name="line.1377"></a>
+<span class="sourceLineNo">1378</span>      defaultDecodingCtx = new HFileBlockDefaultDecodingContext(fileContext);<a name="line.1378"></a>
+<span class="sourceLineNo">1379</span>      encodedBlockDecodingCtx = defaultDecodingCtx;<a name="line.1379"></a>
+<span class="sourceLineNo">1380</span>    }<a name="line.1380"></a>
+<span class="sourceLineNo">1381</span><a name="line.1381"></a>
+<span class="sourceLineNo">1382</span>    /**<a name="line.1382"></a>
+<span class="sourceLineNo">1383</span>     * A constructor that reads files with the latest minor version.<a name="line.1383"></a>
+<span class="sourceLineNo">1384</span>     * This is used by unit tests only.<a name="line.1384"></a>
+<span class="sourceLineNo">1385</span>     */<a name="line.1385"></a>
+<span class="sourceLineNo">1386</span>    FSReaderImpl(FSDataInputStream istream, long fileSize, HFileContext fileContext)<a name="line.1386"></a>
+<span class="sourceLineNo">1387</span>    throws IOException {<a name="line.1387"></a>
+<span class="sourceLineNo">1388</span>      this(new FSDataInputStreamWrapper(istream), fileSize, null, null, fileContext);<a name="line.1388"></a>
+<span class="sourceLineNo">1389</span>    }<a name="line.1389"></a>
+<span class="sourceLineNo">1390</span><a name="line.1390"></a>
+<span class="sourceLineNo">1391</span>    public BlockIterator blockRange(final long startOffset, final long endOffset) {<a name="line.1391"></a>
+<span class="sourceLineNo">1392</span>      final FSReader owner = this; // handle for inner class<a name="line.1392"></a>
+<span class="sourceLineNo">1393</span>      return new BlockIterator() {<a name="line.1393"></a>
+<span class="sourceLineNo">1394</span>        private long offset = startOffset;<a name="line.1394"></a>
+<span class="sourceLineNo">1395</span><a name="line.1395"></a>
+<span class="sourceLineNo">1396</span>        @Override<a name="line.1396"></a>
+<span class="sourceLineNo">1397</span>        public HFileBlock nextBlock() throws IOException {<a name="line.1397"></a>
+<span class="sourceLineNo">1398</span>          if (offset &gt;= endOffset)<a name="line.1398"></a>
+<span class="sourceLineNo">1399</span>            return null;<a name="line.1399"></a>
+<span class="sourceLineNo">1400</span>          HFileBlock b = readBlockData(offset, -1, -1, false);<a name="line.1400"></a>
+<span class="sourceLineNo">1401</span>          offset += b.getOnDiskSizeWithHeader();<a name="line.1401"></a>
+<span class="sourceLineNo">1402</span>          return b.unpack(fileContext, owner);<a name="line.1402"></a>
+<span class="sourceLineNo">1403</span>        }<a name="line.1403"></a>
+<span class="sourceLineNo">1404</span><a name="line.1404"></a>
+<span class="sourceLineNo">1405</span>        @Override<a name="line.1405"></a>
+<span class="sourceLineNo">1406</span>        public HFileBlock nextBlockWithBlockType(BlockType blockType)<a name="line.1406"></a>
+<span class="sourceLineNo">1407</span>            throws IOException {<a name="line.1407"></a>
+<span class="sourceLineNo">1408</span>          HFileBlock blk = nextBlock();<a name="line.1408"></a>
+<span class="sourceLineNo">1409</span>          if (blk.getBlockType() != blockType) {<a name="line.1409"></a>
+<span class="sourceLineNo">1410</span>            throw new IOException("Expected block of type " + blockType<a name="line.1410"></a>
+<span class="sourceLineNo">1411</span>                + " but found " + blk.getBlockType());<a name="line.1411"></a>
+<span class="sourceLineNo">1412</span>          }<a name="line.1412"></a>
+<span class="sourceLineNo">1413</span>          return blk;<a name="line.1413"></a>
+<span class="sourceLineNo">1414</span>        }<a name="line.1414"></a>
+<span class="sourceLineNo">1415</span>      };<a name="line.1415"></a>
+<span class="sourceLineNo">1416</span>    }<a name="line.1416"></a>
+<span class="sourceLineNo">1417</span><a name="line.1417"></a>
+<span class="sourceLineNo">1418</span>    /**<a name="line.1418"></a>
+<span class="sourceLineNo">1419</span>     * Does a positional read or a seek and read into the given buffer. Returns<a name="line.1419"></a>
+<span class="sourceLineNo">1420</span>     * the on-disk size of the next block, or -1 if it could not be determined.<a name="line.1420"></a>
+<span class="sourceLineNo">1421</span>     *<a name="line.1421"></a>
+<span class="sourceLineNo">1422</span>     * @param dest destination buffer<a name="line.1422"></a>
+<span class="sourceLineNo">1423</span>     * @param destOffset offset in the destination buffer<a name="line.1423"></a>
+<span class="sourceLineNo">1424</span>     * @param size size of the block to be read<a name="line.1424"></a>
+<span class="sourceLineNo">1425</span>     * @param peekIntoNextBlock whether to read the next block's on-disk size<a name="line.1425"></a>
+<span class="sourceLineNo">1426</span>     * @param fileOffset position in the stream to read at<a name="line.1426"></a>
+<span class="sourceLineNo">1427</span>     * @param pread whether we should do a positional read<a name="line.1427"></a>
+<span class="sourceLineNo">1428</span>     * @param istream The input source of data<a name="line.1428"></a>
+<span class="sourceLineNo">1429</span>     * @return the on-disk size of the next block with header size included, or<a name="line.1429"></a>
+<span class="sourceLineNo">1430</span>     *         -1 if it could not be determined<a name="line.1430"></a>
+<span class="sourceLineNo">1431</span>     * @throws IOException<a name="line.1431"></a>
+<span class="sourceLineNo">1432</span>     */<a name="line.1432"></a>
+<span class="sourceLineNo">1433</span>    protected int readAtOffset(FSDataInputStream istream,<a name="line.1433"></a>
+<span class="sourceLineNo">1434</span>        byte[] dest, int destOffset, int size,<a name="line.1434"></a>
+<span class="sourceLineNo">1435</span>        boolean peekIntoNextBlock, long fileOffset, boolean pread)<a name="line.1435"></a>
+<span class="sourceLineNo">1436</span>        throws IOException {<a name="line.1436"></a>
+<span class="sourceLineNo">1437</span>      if (peekIntoNextBlock &amp;&amp;<a name="line.1437"></a>
+<span class="sourceLineNo">1438</span>          destOffset + size + hdrSize &gt; dest.length) {<a name="line.1438"></a>
+<span class="sourceLineNo">1439</span>        // We are asked to read the next block's header as well, but there is<a name="line.1439"></a>
+<span class="sourceLineNo">1440</span>        // not enough room in the array.<a name="line.1440"></a>
+<span class="sourceLineNo">1441</span>        throw new IOException("Attempted to read " + size + " bytes and " +<a name="line.1441"></a>
+<span class="sourceLineNo">1442</span>            hdrSize + " bytes of next header into a " + dest.length +<a name="line.1442"></a>
+<span class="sourceLineNo">1443</span>            "-byte array at offset " + destOffset);<a name="line.1443"></a>
+<span class="sourceLineNo">1444</span>      }<a name="line.1444"></a>
+<span class="sourceLineNo">1445</span><a name="line.1445"></a>
+<span class="sourceLineNo">1446</span>      if (!pread &amp;&amp; streamLock.tryLock()) {<a name="line.1446"></a>
+<span class="sourceLineNo">1447</span>        // Seek + read. Better for scanning.<a name="line.1447"></a>
+<span class="sourceLineNo">1448</span>        try {<a name="line.1448"></a>
+<span class="sourceLineNo">1449</span>          istream.seek(fileOffset);<a name="line.1449"></a>
+<span class="sourceLineNo">1450</span><a name="line.1450"></a>
+<span class="sourceLineNo">1451</span>          long realOffset = istream.getPos();<a name="line.1451"></a>
+<span class="sourceLineNo">1452</span>          if (realOffset != fileOffset) {<a name="line.1452"></a>
+<span class="sourceLineNo">1453</span>            throw new IOException("Tried to seek to " + fileOffset + " to "<a name="line.1453"></a>
+<span class="sourceLineNo">1454</span>                + "read " + size + " bytes, but pos=" + realOffset<a name="line.1454"></a>
+<span class="sourceLineNo">1455</span>                + " after seek");<a name="line.1455"></a>
+<span class="sourceLineNo">1456</span>          }<a name="line.1456"></a>
+<span class="sourceLineNo">1457</span><a name="line.1457"></a>
+<span class="sourceLineNo">1458</span>          if (!peekIntoNextBlock) {<a name="line.1458"></a>
+<span class="sourceLineNo">1459</span>            IOUtils.readFully(istream, dest, destOffset, size);<a name="line.1459"></a>
+<span class="sourceLineNo">1460</span>            return -1;<a name="line.1460"></a>
+<span class="sourceLineNo">1461</span>          }<a name="line.1461"></a>
+<span class="sourceLineNo">1462</span><a name="line.1462"></a>
+<span class="sourceLineNo">1463</span>          // Try to read the next block header.<a name="line.1463"></a>
+<span class="sourceLineNo">1464</span>          if (!readWithExtra(istream, dest, destOffset, size, hdrSize))<a name="line.1464"></a>
+<span class="sourceLineNo">1465</span>            return -1;<a name="line.1465"></a>
+<span class="sourceLineNo">1466</span>        } finally {<a name="line.1466"></a>
+<span class="sourceLineNo">1467</span>          streamLock.unlock();<a name="line.1467"></a>
+<span class="sourceLineNo">1468</span>        }<a name="line.1468"></a>
+<span class="sourceLineNo">1469</span>      } else {<a name="line.1469"></a>
+<span class="sourceLineNo">1470</span>        // Positional read. Better for random reads; or when the streamLock is already locked.<a name="line.1470"></a>
+<span class="sourceLineNo">1471</span>        int extraSize = peekIntoNextBlock ? hdrSize : 0;<a name="line.1471"></a>
+<span class="sourceLineNo">1472</span>        if (!positionalReadWithExtra(istream, fileOffset, dest, destOffset,<a name="line.1472"></a>
+<span class="sourceLineNo">1473</span>            size, extraSize)) {<a name="line.1473"></a>
+<span class="sourceLineNo">1474</span>          return -1;<a name="line.1474"></a>
+<span class="sourceLineNo">1475</span>        }<a name="line.1475"></a>
+<span class="sourceLineNo">1476</span>      }<a name="line.1476"></a>
+<span class="sourceLineNo">1477</span><a name="line.1477"></a>
+<span class="sourceLineNo">1478</span>      assert peekIntoNextBlock;<a name="line.1478"></a>
+<span class="sourceLineNo">1479</span>      return Bytes.toInt(dest, destOffset + size + BlockType.MAGIC_LENGTH) + hdrSize;<a name="line.1479"></a>
+<span class="sourceLineNo">1480</span>    }<a name="line.1480"></a>
+<span class="sourceLineNo">1481</span><a name="line.1481"></a>
+<span class="sourceLineNo">1482</span>    /**<a name="line.1482"></a>
+<span class="sourceLineNo">1483</span>     * Reads a version 2 block (version 1 blocks not supported and not expected). Tries to do as<a name="line.1483"></a>
+<span class="sourceLineNo">1484</span>     * little memory allocation as possible, using the provided on-disk size.<a name="line.1484"></a>
+<span class="sourceLineNo">1485</span>     *<a name="line.1485"></a>
+<span class="sourceLineNo">1486</span>     * @param offset the offset in the stream to read at<a name="line.1486"></a>
+<span class="sourceLineNo">1487</span>     * @param onDiskSizeWithHeaderL the on-disk size of the block, including<a name="line.1487"></a>
+<span class="sourceLineNo">1488</span>     *          the header, or -1 if unknown<a name="line.1488"></a>
+<span class="sourceLineNo">1489</span>     * @param uncompressedSize the uncompressed size of the the block. Always<a name="line.1489"></a>
+<span class="sourceLineNo">1490</span>     *          expected to be -1. This parameter is only used in version 1.<a name="line.1490"></a>
+<span class="sourceLineNo">1491</span>     * @param pread whether to use a positional read<a name="line.1491"></a>
+<span class="sourceLineNo">1492</span>     */<a name="line.1492"></a>
+<span class="sourceLineNo">1493</span>    @Override<a name="line.1493"></a>
+<span class="sourceLineNo">1494</span>    public HFileBlock readBlockData(long offset, long onDiskSizeWithHeaderL,<a name="line.1494"></a>
+<span class="sourceLineNo">1495</span>        int uncompressedSize, boolean pread)<a name="line.1495"></a>
+<span class="sourceLineNo">1496</span>    throws IOException {<a name="line.1496"></a>
+<span class="sourceLineNo">1497</span><a name="line.1497"></a>
+<span class="sourceLineNo">1498</span>      // get a copy of the current state of whether to validate<a name="line.1498"></a>
+<span class="sourceLineNo">1499</span>      // hbase checksums or not for this read call. This is not<a name="line.1499"></a>
+<span class="sourceLineNo">1500</span>      // thread-safe but the one constaint is that if we decide<a name="line.1500"></a>
+<span class="sourceLineNo">1501</span>      // to skip hbase checksum verification then we are<a name="line.1501"></a>
+<span class="sourceLineNo">1502</span>      // guaranteed to use hdfs checksum verification.<a name="line.1502"></a>
+<span class="sourceLineNo">1503</span>      boolean doVerificationThruHBaseChecksum = streamWrapper.shouldUseHBaseChecksum();<a name="line.1503"></a>
+<span class="sourceLineNo">1504</span>      FSDataInputStream is = streamWrapper.getStream(doVerificationThruHBaseChecksum);<a name="line.1504"></a>
+<span class="sourceLineNo">1505</span><a name="line.1505"></a>
+<span class="sourceLineNo">1506</span>      HFileBlock blk = readBlockDataInternal(is, offset,<a name="line.1506"></a>
+<span class="sourceLineNo">1507</span>                         onDiskSizeWithHeaderL,<a name="line.1507"></a>
+<span class="sourceLineNo">1508</span>                         uncompressedSize, pread,<a name="line.1508"></a>
+<span class="sourceLineNo">1509</span>                         doVerificationThruHBaseChecksum);<a name="line.1509"></a>
+<span class="sourceLineNo">1510</span>      if (blk == null) {<a name="line.1510"></a>
+<span class="sourceLineNo">1511</span>        HFile.LOG.warn("HBase checksum verification failed for file " +<a name="line.1511"></a>
+<span class="sourceLineNo">1512</span>                       pathName + " at offset " +<a name="line.1512"></a>
+<span class="sourceLineNo">1513</span>                       offset + " filesize " + fileSize +<a name="line.1513"></a>
+<span class="sourceLineNo">1514</span>                       ". Retrying read with HDFS checksums turned on...");<a name="line.1514"></a>
+<span class="sourceLineNo">1515</span><a name="line.1515"></a>
+<span class="sourceLineNo">1516</span>        if (!doVerificationThruHBaseChecksum) {<a name="line.1516"></a>
+<span class="sourceLineNo">1517</span>          String msg = "HBase checksum verification failed for file " +<a name="line.1517"></a>
+<span class="sourceLineNo">1518</span>                       pathName + " at offset " +<a name="line.1518"></a>
+<span class="sourceLineNo">1519</span>                       offset + " filesize " + fileSize +<a name="line.1519"></a>
+<span class="sourceLineNo">1520</span>                       " but this cannot happen because doVerify is " +<a name="line.1520"></a>
+<span class="sourceLineNo">1521</span>                       doVerificationThruHBaseChecksum;<a name="line.1521"></a>
+<span class="sourceLineNo">1522</span>          HFile.LOG.warn(msg);<a name="line.1522"></a>
+<span class="sourceLineNo">1523</span>          throw new IOException(msg); // cannot happen case here<a name="line.1523"></a>
+<span class="sourceLineNo">1524</span>        }<a name="line.1524"></a>
+<span class="sourceLineNo">1525</span>        HFile.checksumFailures.incrementAndGet(); // update metrics<a name="line.1525"></a>
+<span class="sourceLineNo">1526</span><a name="line.1526"></a>
+<span class="sourceLineNo">1527</span>        // If we have a checksum failure, we fall back into a mode where<a name="line.1527"></a>
+<span class="sourceLineNo">1528</span>        // the next few reads use HDFS level checksums. We aim to make the<a name="line.1528"></a>
+<span class="sourceLineNo">1529</span>        // next CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD reads avoid<a name="line.1529"></a>
+<span class="sourceLineNo">1530</span>        // hbase checksum verification, but since this value is set without<a name="line.1530"></a>
+<span class="sourceLineNo">1531</span>        // holding any locks, it can so happen that we might actually do<a name="line.1531"></a>
+<span class="sourceLineNo">1532</span>        // a few more than precisely this number.<a name="line.1532"></a>
+<span class="sourceLineNo">1533</span>        is = this.streamWrapper.fallbackToFsChecksum(CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD);<a name="line.1533"></a>
+<span class="sourceLineNo">1534</span>        doVerificationThruHBaseChecksum = false;<a name="line.1534"></a>
+<span class="sourceLineNo">1535</span>        blk = readBlockDataInternal(is, offset, onDiskSizeWithHeaderL,<a name="line.1535"></a>
+<span class="sourceLineNo">1536</span>                                    uncompressedSize, pread,<a name="line.1536"></a>
+<span class="sourceLineNo">1537</span>                                    doVerificationThruHBaseChecksum);<a name="line.1537"></a>
+<span class="sourceLineNo">1538</span>        if (blk != null) {<a name="line.1538"></a>
+<span class="sourceLineNo">1539</span>          HFile.LOG.warn("HDFS checksum verification suceeded for file " +<a name="line.1539"></a>
+<span class="sourceLineNo">1540</span>                         pathName + " at offset " +<a name="line.1540"></a>
+<span class="sourceLineNo">1541</span>                         offset + " filesize " + fileSize);<a name="line.1541"></a>
+<span class="sourceLineNo">1542</span>        }<a name="line.1542"></a>
+<span class="sourceLineNo">1543</span>      }<a name="line.1543"></a>
+<span class="sourceLineNo">1544</span>      if (blk == null &amp;&amp; !doVerificationThruHBaseChecksum) {<a name="line.1544"></a>
+<span class="sourceLineNo">1545</span>        String msg = "readBlockData failed, possibly due to " +<a name="line.1545"></a>
+<span class="sourceLineNo">1546</span>                     "checksum verification failed for file " + pathName +<a name="line.1546"></a>
+<span class="sourceLineNo">1547</span>                     " at offset " + offset + " filesize " + fileSize;<a name="line.1547"></a>
+<span class="sourceLineNo">1548</span>        HFile.LOG.warn(msg);<a name="line.1548"></a>
+<span class="sourceLineNo">1549</span>        throw new IOException(msg);<a name="line.1549"></a>
+<span class="sourceLineNo">1550</span>      }<a name="line.1550"></a>
+<span class="sourceLineNo">1551</span><a name="line.1551"></a>
+<span class="sourceLineNo">1552</span>      // If there is a checksum mismatch earlier, then retry with<a name="line.1552"></a>
+<span class="sourceLineNo">1553</span>      // HBase checksums switched off and use HDFS checksum verification.<a name="line.1553"></a>
+<span class="sourceLineNo">1554</span>      // This triggers HDFS to detect and fix corrupt replicas. The<a name="line.1554"></a>
+<span class="sourceLineNo">1555</span>      // next checksumOffCount read requests will use HDFS checksums.<a name="line.1555"></a>
+<span class="sourceLineNo">1556</span>      // The decrementing of this.checksumOffCount is not thread-safe,<a name="line.1556"></a>
+<span class="sourceLineNo">1557</span>      // but it is harmless because eventually checksumOffCount will be<a name="line.1557"></a>
+<span class="sourceLineNo">1558</span>      // a negative number.<a name="line.1558"></a>
+<span class="sourceLineNo">1559</span>      streamWrapper.checksumOk();<a name="line.1559"></a>
+<span class="sourceLineNo">1560</span>      return blk;<a name="line.1560"></a>
+<span class="sourceLineNo">1561</span>    }<a name="line.1561"></a>
+<span class="sourceLineNo">1562</span><a name="line.1562"></a>
+<span class="sourceLineNo">1563</span>    /**<a name="line.1563"></a>
+<span class="sourceLineNo">1564</span>     * Reads a version 2 block.<a name="line.1564"></a>
+<span class="sourceLineNo">1565</span>     *<a name="line.1565"></a>
+<span class="sourceLineNo">1566</span>     * @param offset the offset in the stream to read at<a name="line.1566"></a>
+<span class="sourceLineNo">1567</span>     * @param onDiskSizeWithHeaderL the on-disk size of the block, including<a name="line.1567"></a>
+<span class="sourceLineNo">1568</span>     *          the header, or -1 if unknown<a name="line.1568"></a>
+<span class="sourceLineNo">1569</span>     * @param uncompressedSize the uncompressed size of the the block. Always<a name="line.1569"></a>
+<span class="sourceLineNo">1570</span>     *          expected to be -1. This parameter is only used in version 1.<a name="line.1570"></a>
+<span class="sourceLineNo">1571</span>     * @param pread whether to use a positional read<a name="line.1571"></a>
+<span class="sourceLineNo">1572</span>     * @param verifyChecksum Whether to use HBase checksums.<a name="line.1572"></a>
+<span class="sourceLineNo">1573</span>     *        If HBase checksum is switched off, then use HDFS checksum.<a name="line.1573"></a>
+<span class="sourceLineNo">1574</span>     * @return the HFileBlock or null if there is a HBase checksum mismatch<a name="line.1574"></a>
+<span class="sourceLineNo">1575</span>     */<a name="line.1575"></a>
+<span class="sourceLineNo">1576</span>    private HFileBlock readBlockDataInternal(FSDataInputStream is, long offset,<a name="line.1576"></a>
+<span class="sourceLineNo">1577</span>        long onDiskSizeWithHeaderL, int uncompressedSize, boolean pread,<a name="line.1577"></a>
+<span class="sourceLineNo">1578</span>        boolean verifyChecksum)<a name="line.1578"></a>
+<span class="sourceLineNo">1579</span>    throws IOException {<a name="line.1579"></a>
+<span class="sourceLineNo">1580</span>      if (offset &lt; 0) {<a name="line.1580"></a>
+<span class="sourceLineNo">1581</span>        throw new IOException("Invalid offset=" + offset + " trying to read "<a name="line.1581"></a>
+<span class="sourceLineNo">1582</span>            + "block (onDiskSize=" + onDiskSizeWithHeaderL<a name="line.1582"></a>
+<span class="sourceLineNo">1583</span>            + ", uncompressedSize=" + uncompressedSize + ")");<a name="line.1583"></a>
+<span class="sourceLineNo">1584</span>      }<a name="line.1584"></a>
+<span class="sourceLineNo">1585</span><a name="line.1585"></a>
+<span class="sourceLineNo">1586</span>      if (uncompressedSize != -1) {<a name="line.1586"></a>
+<span class="sourceLineNo">1587</span>        throw new IOException("Version 2 block reader API does not need " +<a name="line.1587"></a>
+<span class="sourceLineNo">1588</span>            "the uncompressed size parameter");<a name="line.1588"></a>
+<span class="sourceLineNo">1589</span>      }<a name="line.1589"></a>
+<span class="sourceLineNo">1590</span><a name="line.1590"></a>
+<span class="sourceLineNo">1591</span>      if ((onDiskSizeWithHeaderL &lt; hdrSize &amp;&amp; onDiskSizeWithHeaderL != -1)<a name="line.1591"></a>
+<span class="sourceLineNo">1592</span>          || onDiskSizeWithHeaderL &gt;= Integer.MAX_VALUE) {<a name="line.1592"></a>
+<span class="sourceLineNo">1593</span>        throw new IOException("Invalid onDisksize=" + onDiskSizeWithHeaderL<a name="line.1593"></a>
+<span class="sourceLineNo">1594</span>            + ": expected to be at least " + hdrSize<a name="line.1594"></a>
+<span class="sourceLineNo">1595</span>            + " and at most " + Integer.MAX_VALUE + ", or -1 (offset="<a name="line.1595"></a>
+<span class="sourceLineNo">1596</span>            + offset + ", uncompressedSize=" + uncompressedSize + ")");<a name="line.1596"></a>
+<span class="sourceLineNo">1597</span>      }<a name="line.1597"></a>
+<span class="sourceLineNo">1598</span><a name="line.1598"></a>
+<span class="sourceLineNo">1599</span>      int onDiskSizeWithHeader = (int) onDiskSizeWithHeaderL;<a name="line.1599"></a>
+<span class="sourceLineNo">1600</span>      // See if we can avoid reading the header. This is desirable, because<a name="line.1600"></a>
+<span class="sourceLineNo">1601</span>      // w

<TRUNCATED>

[18/23] hbase-site git commit: Published site at 2cf8af5bf1d501156cbb3b421cf75c1051ead7d9.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html
index b2afb36..a7a0401 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html
@@ -33,172 +33,170 @@
 <span class="sourceLineNo">025</span>import org.apache.commons.logging.LogFactory;<a name="line.25"></a>
 <span class="sourceLineNo">026</span>import org.apache.hadoop.fs.ChecksumException;<a name="line.26"></a>
 <span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.fs.Path;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.util.ChecksumType;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.util.DataChecksum;<a name="line.30"></a>
-<span class="sourceLineNo">031</span><a name="line.31"></a>
-<span class="sourceLineNo">032</span>/**<a name="line.32"></a>
-<span class="sourceLineNo">033</span> * Utility methods to compute and validate checksums.<a name="line.33"></a>
-<span class="sourceLineNo">034</span> */<a name="line.34"></a>
-<span class="sourceLineNo">035</span>@InterfaceAudience.Private<a name="line.35"></a>
-<span class="sourceLineNo">036</span>public class ChecksumUtil {<a name="line.36"></a>
-<span class="sourceLineNo">037</span>  public static final Log LOG = LogFactory.getLog(ChecksumUtil.class);<a name="line.37"></a>
-<span class="sourceLineNo">038</span><a name="line.38"></a>
-<span class="sourceLineNo">039</span>  /** This is used to reserve space in a byte buffer */<a name="line.39"></a>
-<span class="sourceLineNo">040</span>  private static byte[] DUMMY_VALUE = new byte[128 * HFileBlock.CHECKSUM_SIZE];<a name="line.40"></a>
-<span class="sourceLineNo">041</span><a name="line.41"></a>
-<span class="sourceLineNo">042</span>  /** <a name="line.42"></a>
-<span class="sourceLineNo">043</span>   * This is used by unit tests to make checksum failures throw an <a name="line.43"></a>
-<span class="sourceLineNo">044</span>   * exception instead of returning null. Returning a null value from <a name="line.44"></a>
-<span class="sourceLineNo">045</span>   * checksum validation will cause the higher layer to retry that <a name="line.45"></a>
-<span class="sourceLineNo">046</span>   * read with hdfs-level checksums. Instead, we would like checksum <a name="line.46"></a>
-<span class="sourceLineNo">047</span>   * failures to cause the entire unit test to fail.<a name="line.47"></a>
-<span class="sourceLineNo">048</span>   */<a name="line.48"></a>
-<span class="sourceLineNo">049</span>  private static boolean generateExceptions = false;<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>   * Generates a checksum for all the data in indata. The checksum is<a name="line.52"></a>
-<span class="sourceLineNo">053</span>   * written to outdata.<a name="line.53"></a>
-<span class="sourceLineNo">054</span>   * @param indata input data stream<a name="line.54"></a>
-<span class="sourceLineNo">055</span>   * @param startOffset starting offset in the indata stream from where to<a name="line.55"></a>
-<span class="sourceLineNo">056</span>   *                    compute checkums from<a name="line.56"></a>
-<span class="sourceLineNo">057</span>   * @param endOffset ending offset in the indata stream upto<a name="line.57"></a>
-<span class="sourceLineNo">058</span>   *                   which checksums needs to be computed<a name="line.58"></a>
-<span class="sourceLineNo">059</span>   * @param outdata the output buffer where checksum values are written<a name="line.59"></a>
-<span class="sourceLineNo">060</span>   * @param outOffset the starting offset in the outdata where the<a name="line.60"></a>
-<span class="sourceLineNo">061</span>   *                  checksum values are written<a name="line.61"></a>
-<span class="sourceLineNo">062</span>   * @param checksumType type of checksum<a name="line.62"></a>
-<span class="sourceLineNo">063</span>   * @param bytesPerChecksum number of bytes per checksum value<a name="line.63"></a>
-<span class="sourceLineNo">064</span>   */<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  static void generateChecksums(byte[] indata, int startOffset, int endOffset,<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    byte[] outdata, int outOffset, ChecksumType checksumType,<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    int bytesPerChecksum) throws IOException {<a name="line.67"></a>
-<span class="sourceLineNo">068</span><a name="line.68"></a>
-<span class="sourceLineNo">069</span>    if (checksumType == ChecksumType.NULL) {<a name="line.69"></a>
-<span class="sourceLineNo">070</span>      return; // No checksum for this block.<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    }<a name="line.71"></a>
-<span class="sourceLineNo">072</span><a name="line.72"></a>
-<span class="sourceLineNo">073</span>    DataChecksum checksum = DataChecksum.newDataChecksum(<a name="line.73"></a>
-<span class="sourceLineNo">074</span>        checksumType.getDataChecksumType(), bytesPerChecksum);<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>    checksum.calculateChunkedSums(<a name="line.76"></a>
-<span class="sourceLineNo">077</span>       ByteBuffer.wrap(indata, startOffset, endOffset - startOffset),<a name="line.77"></a>
-<span class="sourceLineNo">078</span>       ByteBuffer.wrap(outdata, outOffset, outdata.length - outOffset));<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  }<a name="line.79"></a>
-<span class="sourceLineNo">080</span><a name="line.80"></a>
-<span class="sourceLineNo">081</span>  /**<a name="line.81"></a>
-<span class="sourceLineNo">082</span>   * Validates that the data in the specified HFileBlock matches the<a name="line.82"></a>
-<span class="sourceLineNo">083</span>   * checksum.  Generates the checksum for the data and<a name="line.83"></a>
-<span class="sourceLineNo">084</span>   * then validate that it matches the value stored in the header.<a name="line.84"></a>
-<span class="sourceLineNo">085</span>   * If there is a checksum mismatch, then return false. Otherwise<a name="line.85"></a>
-<span class="sourceLineNo">086</span>   * return true.<a name="line.86"></a>
-<span class="sourceLineNo">087</span>   * The header is extracted from the specified HFileBlock while the<a name="line.87"></a>
-<span class="sourceLineNo">088</span>   * data-to-be-verified is extracted from 'data'.<a name="line.88"></a>
-<span class="sourceLineNo">089</span>   */<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  static boolean validateBlockChecksum(Path path, HFileBlock block,<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    byte[] data, int hdrSize) throws IOException {<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>    // If this is an older version of the block that does not have<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    // checksums, then return false indicating that checksum verification<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    // did not succeed. Actually, this methiod should never be called<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    // when the minorVersion is 0, thus this is a defensive check for a<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    // cannot-happen case. Since this is a cannot-happen case, it is<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    // better to return false to indicate a checksum validation failure.<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    if (!block.getHFileContext().isUseHBaseChecksum()) {<a name="line.99"></a>
-<span class="sourceLineNo">100</span>      return false;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    }<a name="line.101"></a>
-<span class="sourceLineNo">102</span><a name="line.102"></a>
-<span class="sourceLineNo">103</span>    // Get a checksum object based on the type of checksum that is<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    // set in the HFileBlock header. A ChecksumType.NULL indicates that <a name="line.104"></a>
-<span class="sourceLineNo">105</span>    // the caller is not interested in validating checksums, so we<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    // always return true.<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    ChecksumType cktype = ChecksumType.codeToType(block.getChecksumType());<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    if (cktype == ChecksumType.NULL) {<a name="line.108"></a>
-<span class="sourceLineNo">109</span>      return true; // No checksum validations needed for this block.<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>    // read in the stored value of the checksum size from the header.<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    int bytesPerChecksum = block.getBytesPerChecksum();<a name="line.113"></a>
-<span class="sourceLineNo">114</span><a name="line.114"></a>
-<span class="sourceLineNo">115</span>    DataChecksum dataChecksum = DataChecksum.newDataChecksum(<a name="line.115"></a>
-<span class="sourceLineNo">116</span>        cktype.getDataChecksumType(), bytesPerChecksum);<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    assert dataChecksum != null;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    int sizeWithHeader =  block.getOnDiskDataSizeWithHeader();<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    if (LOG.isTraceEnabled()) {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      LOG.info("length of data = " + data.length<a name="line.120"></a>
-<span class="sourceLineNo">121</span>          + " OnDiskDataSizeWithHeader = " + sizeWithHeader<a name="line.121"></a>
-<span class="sourceLineNo">122</span>          + " checksum type = " + cktype.getName()<a name="line.122"></a>
-<span class="sourceLineNo">123</span>          + " file =" + path.toString()<a name="line.123"></a>
-<span class="sourceLineNo">124</span>          + " header size = " + hdrSize<a name="line.124"></a>
-<span class="sourceLineNo">125</span>          + " bytesPerChecksum = " + bytesPerChecksum);<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    }<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    try {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      dataChecksum.verifyChunkedSums(ByteBuffer.wrap(data, 0, sizeWithHeader),<a name="line.128"></a>
-<span class="sourceLineNo">129</span>          ByteBuffer.wrap(data, sizeWithHeader, data.length - sizeWithHeader),<a name="line.129"></a>
-<span class="sourceLineNo">130</span>                          path.toString(), 0);<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    } catch (ChecksumException e) {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      return false;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    }<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    return true;  // checksum is valid<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>   * Returns the number of bytes needed to store the checksums for<a name="line.138"></a>
-<span class="sourceLineNo">139</span>   * a specified data size<a name="line.139"></a>
-<span class="sourceLineNo">140</span>   * @param datasize number of bytes of data<a name="line.140"></a>
-<span class="sourceLineNo">141</span>   * @param bytesPerChecksum number of bytes in a checksum chunk<a name="line.141"></a>
-<span class="sourceLineNo">142</span>   * @return The number of bytes needed to store the checksum values<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   */<a name="line.143"></a>
-<span class="sourceLineNo">144</span>  static long numBytes(long datasize, int bytesPerChecksum) {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    return numChunks(datasize, bytesPerChecksum) * <a name="line.145"></a>
-<span class="sourceLineNo">146</span>                     HFileBlock.CHECKSUM_SIZE;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  }<a name="line.147"></a>
-<span class="sourceLineNo">148</span><a name="line.148"></a>
-<span class="sourceLineNo">149</span>  /**<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   * Returns the number of checksum chunks needed to store the checksums for<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   * a specified data size<a name="line.151"></a>
-<span class="sourceLineNo">152</span>   * @param datasize number of bytes of data<a name="line.152"></a>
-<span class="sourceLineNo">153</span>   * @param bytesPerChecksum number of bytes in a checksum chunk<a name="line.153"></a>
-<span class="sourceLineNo">154</span>   * @return The number of checksum chunks<a name="line.154"></a>
-<span class="sourceLineNo">155</span>   */<a name="line.155"></a>
-<span class="sourceLineNo">156</span>  static long numChunks(long datasize, int bytesPerChecksum) {<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    long numChunks = datasize/bytesPerChecksum;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    if (datasize % bytesPerChecksum != 0) {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      numChunks++;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    }<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    return numChunks;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  }<a name="line.162"></a>
-<span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>  /**<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * Write dummy checksums to the end of the specified bytes array<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * to reserve space for writing checksums later<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   * @param baos OutputStream to write dummy checkum values<a name="line.167"></a>
-<span class="sourceLineNo">168</span>   * @param numBytes Number of bytes of data for which dummy checksums<a name="line.168"></a>
-<span class="sourceLineNo">169</span>   *                 need to be generated<a name="line.169"></a>
-<span class="sourceLineNo">170</span>   * @param bytesPerChecksum Number of bytes per checksum value<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   */<a name="line.171"></a>
-<span class="sourceLineNo">172</span>  static void reserveSpaceForChecksums(ByteArrayOutputStream baos,<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    int numBytes, int bytesPerChecksum) throws IOException {<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    long numChunks = numChunks(numBytes, bytesPerChecksum);<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    long bytesLeft = numChunks * HFileBlock.CHECKSUM_SIZE;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    while (bytesLeft &gt; 0) {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      long count = Math.min(bytesLeft, DUMMY_VALUE.length);<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      baos.write(DUMMY_VALUE, 0, (int)count);<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      bytesLeft -= 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 name="line.183"></a>
-<span class="sourceLineNo">184</span>   * Mechanism to throw an exception in case of hbase checksum<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   * failure. This is used by unit tests only.<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * @param value Setting this to true will cause hbase checksum<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   *              verification failures to generate exceptions.<a name="line.187"></a>
-<span class="sourceLineNo">188</span>   */<a name="line.188"></a>
-<span class="sourceLineNo">189</span>  public static void generateExceptionForChecksumFailureForTest(boolean value) {<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    generateExceptions = value;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  }<a name="line.191"></a>
-<span class="sourceLineNo">192</span>}<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.util.ChecksumType;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.util.DataChecksum;<a name="line.29"></a>
+<span class="sourceLineNo">030</span><a name="line.30"></a>
+<span class="sourceLineNo">031</span>/**<a name="line.31"></a>
+<span class="sourceLineNo">032</span> * Utility methods to compute and validate checksums.<a name="line.32"></a>
+<span class="sourceLineNo">033</span> */<a name="line.33"></a>
+<span class="sourceLineNo">034</span>@InterfaceAudience.Private<a name="line.34"></a>
+<span class="sourceLineNo">035</span>public class ChecksumUtil {<a name="line.35"></a>
+<span class="sourceLineNo">036</span>  public static final Log LOG = LogFactory.getLog(ChecksumUtil.class);<a name="line.36"></a>
+<span class="sourceLineNo">037</span><a name="line.37"></a>
+<span class="sourceLineNo">038</span>  /** This is used to reserve space in a byte buffer */<a name="line.38"></a>
+<span class="sourceLineNo">039</span>  private static byte[] DUMMY_VALUE = new byte[128 * HFileBlock.CHECKSUM_SIZE];<a name="line.39"></a>
+<span class="sourceLineNo">040</span><a name="line.40"></a>
+<span class="sourceLineNo">041</span>  /** <a name="line.41"></a>
+<span class="sourceLineNo">042</span>   * This is used by unit tests to make checksum failures throw an <a name="line.42"></a>
+<span class="sourceLineNo">043</span>   * exception instead of returning null. Returning a null value from <a name="line.43"></a>
+<span class="sourceLineNo">044</span>   * checksum validation will cause the higher layer to retry that <a name="line.44"></a>
+<span class="sourceLineNo">045</span>   * read with hdfs-level checksums. Instead, we would like checksum <a name="line.45"></a>
+<span class="sourceLineNo">046</span>   * failures to cause the entire unit test to fail.<a name="line.46"></a>
+<span class="sourceLineNo">047</span>   */<a name="line.47"></a>
+<span class="sourceLineNo">048</span>  private static boolean generateExceptions = false;<a name="line.48"></a>
+<span class="sourceLineNo">049</span><a name="line.49"></a>
+<span class="sourceLineNo">050</span>  /**<a name="line.50"></a>
+<span class="sourceLineNo">051</span>   * Generates a checksum for all the data in indata. The checksum is<a name="line.51"></a>
+<span class="sourceLineNo">052</span>   * written to outdata.<a name="line.52"></a>
+<span class="sourceLineNo">053</span>   * @param indata input data stream<a name="line.53"></a>
+<span class="sourceLineNo">054</span>   * @param startOffset starting offset in the indata stream from where to<a name="line.54"></a>
+<span class="sourceLineNo">055</span>   *                    compute checkums from<a name="line.55"></a>
+<span class="sourceLineNo">056</span>   * @param endOffset ending offset in the indata stream upto<a name="line.56"></a>
+<span class="sourceLineNo">057</span>   *                   which checksums needs to be computed<a name="line.57"></a>
+<span class="sourceLineNo">058</span>   * @param outdata the output buffer where checksum values are written<a name="line.58"></a>
+<span class="sourceLineNo">059</span>   * @param outOffset the starting offset in the outdata where the<a name="line.59"></a>
+<span class="sourceLineNo">060</span>   *                  checksum values are written<a name="line.60"></a>
+<span class="sourceLineNo">061</span>   * @param checksumType type of checksum<a name="line.61"></a>
+<span class="sourceLineNo">062</span>   * @param bytesPerChecksum number of bytes per checksum value<a name="line.62"></a>
+<span class="sourceLineNo">063</span>   */<a name="line.63"></a>
+<span class="sourceLineNo">064</span>  static void generateChecksums(byte[] indata, int startOffset, int endOffset,<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    byte[] outdata, int outOffset, ChecksumType checksumType,<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    int bytesPerChecksum) throws IOException {<a name="line.66"></a>
+<span class="sourceLineNo">067</span><a name="line.67"></a>
+<span class="sourceLineNo">068</span>    if (checksumType == ChecksumType.NULL) {<a name="line.68"></a>
+<span class="sourceLineNo">069</span>      return; // No checksum for this block.<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    }<a name="line.70"></a>
+<span class="sourceLineNo">071</span><a name="line.71"></a>
+<span class="sourceLineNo">072</span>    DataChecksum checksum = DataChecksum.newDataChecksum(<a name="line.72"></a>
+<span class="sourceLineNo">073</span>        checksumType.getDataChecksumType(), bytesPerChecksum);<a name="line.73"></a>
+<span class="sourceLineNo">074</span><a name="line.74"></a>
+<span class="sourceLineNo">075</span>    checksum.calculateChunkedSums(<a name="line.75"></a>
+<span class="sourceLineNo">076</span>       ByteBuffer.wrap(indata, startOffset, endOffset - startOffset),<a name="line.76"></a>
+<span class="sourceLineNo">077</span>       ByteBuffer.wrap(outdata, outOffset, outdata.length - outOffset));<a name="line.77"></a>
+<span class="sourceLineNo">078</span>  }<a name="line.78"></a>
+<span class="sourceLineNo">079</span><a name="line.79"></a>
+<span class="sourceLineNo">080</span>  /**<a name="line.80"></a>
+<span class="sourceLineNo">081</span>   * Validates that the data in the specified HFileBlock matches the<a name="line.81"></a>
+<span class="sourceLineNo">082</span>   * checksum.  Generates the checksum for the data and<a name="line.82"></a>
+<span class="sourceLineNo">083</span>   * then validate that it matches the value stored in the header.<a name="line.83"></a>
+<span class="sourceLineNo">084</span>   * If there is a checksum mismatch, then return false. Otherwise<a name="line.84"></a>
+<span class="sourceLineNo">085</span>   * return true.<a name="line.85"></a>
+<span class="sourceLineNo">086</span>   * The header is extracted from the specified HFileBlock while the<a name="line.86"></a>
+<span class="sourceLineNo">087</span>   * data-to-be-verified is extracted from 'data'.<a name="line.87"></a>
+<span class="sourceLineNo">088</span>   */<a name="line.88"></a>
+<span class="sourceLineNo">089</span>  static boolean validateBlockChecksum(String pathName, HFileBlock block,<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    byte[] data, int hdrSize) throws IOException {<a name="line.90"></a>
+<span class="sourceLineNo">091</span><a name="line.91"></a>
+<span class="sourceLineNo">092</span>    // If this is an older version of the block that does not have<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    // checksums, then return false indicating that checksum verification<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    // did not succeed. Actually, this methiod should never be called<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    // when the minorVersion is 0, thus this is a defensive check for a<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    // cannot-happen case. Since this is a cannot-happen case, it is<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    // better to return false to indicate a checksum validation failure.<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    if (!block.getHFileContext().isUseHBaseChecksum()) {<a name="line.98"></a>
+<span class="sourceLineNo">099</span>      return false;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    }<a name="line.100"></a>
+<span class="sourceLineNo">101</span><a name="line.101"></a>
+<span class="sourceLineNo">102</span>    // Get a checksum object based on the type of checksum that is<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    // set in the HFileBlock header. A ChecksumType.NULL indicates that <a name="line.103"></a>
+<span class="sourceLineNo">104</span>    // the caller is not interested in validating checksums, so we<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    // always return true.<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    ChecksumType cktype = ChecksumType.codeToType(block.getChecksumType());<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    if (cktype == ChecksumType.NULL) {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>      return true; // No checksum validations needed for this block.<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>    // read in the stored value of the checksum size from the header.<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    int bytesPerChecksum = block.getBytesPerChecksum();<a name="line.112"></a>
+<span class="sourceLineNo">113</span><a name="line.113"></a>
+<span class="sourceLineNo">114</span>    DataChecksum dataChecksum = DataChecksum.newDataChecksum(<a name="line.114"></a>
+<span class="sourceLineNo">115</span>        cktype.getDataChecksumType(), bytesPerChecksum);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    assert dataChecksum != null;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    int sizeWithHeader =  block.getOnDiskDataSizeWithHeader();<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    if (LOG.isTraceEnabled()) {<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      LOG.info("length of data = " + data.length<a name="line.119"></a>
+<span class="sourceLineNo">120</span>          + " OnDiskDataSizeWithHeader = " + sizeWithHeader<a name="line.120"></a>
+<span class="sourceLineNo">121</span>          + " checksum type = " + cktype.getName()<a name="line.121"></a>
+<span class="sourceLineNo">122</span>          + " file =" + pathName<a name="line.122"></a>
+<span class="sourceLineNo">123</span>          + " header size = " + hdrSize<a name="line.123"></a>
+<span class="sourceLineNo">124</span>          + " bytesPerChecksum = " + bytesPerChecksum);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    }<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    try {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      dataChecksum.verifyChunkedSums(ByteBuffer.wrap(data, 0, sizeWithHeader),<a name="line.127"></a>
+<span class="sourceLineNo">128</span>          ByteBuffer.wrap(data, sizeWithHeader, data.length - sizeWithHeader), pathName, 0);<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    } catch (ChecksumException e) {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      return false;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    }<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    return true;  // checksum is valid<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>   * Returns the number of bytes needed to store the checksums for<a name="line.136"></a>
+<span class="sourceLineNo">137</span>   * a specified data size<a name="line.137"></a>
+<span class="sourceLineNo">138</span>   * @param datasize number of bytes of data<a name="line.138"></a>
+<span class="sourceLineNo">139</span>   * @param bytesPerChecksum number of bytes in a checksum chunk<a name="line.139"></a>
+<span class="sourceLineNo">140</span>   * @return The number of bytes needed to store the checksum values<a name="line.140"></a>
+<span class="sourceLineNo">141</span>   */<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  static long numBytes(long datasize, int bytesPerChecksum) {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    return numChunks(datasize, bytesPerChecksum) * <a name="line.143"></a>
+<span class="sourceLineNo">144</span>                     HFileBlock.CHECKSUM_SIZE;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  }<a name="line.145"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span>  /**<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   * Returns the number of checksum chunks needed to store the checksums for<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   * a specified data size<a name="line.149"></a>
+<span class="sourceLineNo">150</span>   * @param datasize number of bytes of data<a name="line.150"></a>
+<span class="sourceLineNo">151</span>   * @param bytesPerChecksum number of bytes in a checksum chunk<a name="line.151"></a>
+<span class="sourceLineNo">152</span>   * @return The number of checksum chunks<a name="line.152"></a>
+<span class="sourceLineNo">153</span>   */<a name="line.153"></a>
+<span class="sourceLineNo">154</span>  static long numChunks(long datasize, int bytesPerChecksum) {<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    long numChunks = datasize/bytesPerChecksum;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    if (datasize % bytesPerChecksum != 0) {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      numChunks++;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    }<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    return numChunks;<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  }<a name="line.160"></a>
+<span class="sourceLineNo">161</span><a name="line.161"></a>
+<span class="sourceLineNo">162</span>  /**<a name="line.162"></a>
+<span class="sourceLineNo">163</span>   * Write dummy checksums to the end of the specified bytes array<a name="line.163"></a>
+<span class="sourceLineNo">164</span>   * to reserve space for writing checksums later<a name="line.164"></a>
+<span class="sourceLineNo">165</span>   * @param baos OutputStream to write dummy checkum values<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   * @param numBytes Number of bytes of data for which dummy checksums<a name="line.166"></a>
+<span class="sourceLineNo">167</span>   *                 need to be generated<a name="line.167"></a>
+<span class="sourceLineNo">168</span>   * @param bytesPerChecksum Number of bytes per checksum value<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   */<a name="line.169"></a>
+<span class="sourceLineNo">170</span>  static void reserveSpaceForChecksums(ByteArrayOutputStream baos,<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    int numBytes, int bytesPerChecksum) throws IOException {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    long numChunks = numChunks(numBytes, bytesPerChecksum);<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    long bytesLeft = numChunks * HFileBlock.CHECKSUM_SIZE;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    while (bytesLeft &gt; 0) {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      long count = Math.min(bytesLeft, DUMMY_VALUE.length);<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      baos.write(DUMMY_VALUE, 0, (int)count);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      bytesLeft -= count;<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>  /**<a name="line.181"></a>
+<span class="sourceLineNo">182</span>   * Mechanism to throw an exception in case of hbase checksum<a name="line.182"></a>
+<span class="sourceLineNo">183</span>   * failure. This is used by unit tests only.<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   * @param value Setting this to true will cause hbase checksum<a name="line.184"></a>
+<span class="sourceLineNo">185</span>   *              verification failures to generate exceptions.<a name="line.185"></a>
+<span class="sourceLineNo">186</span>   */<a name="line.186"></a>
+<span class="sourceLineNo">187</span>  public static void generateExceptionForChecksumFailureForTest(boolean value) {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    generateExceptions = value;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
+<span class="sourceLineNo">190</span>}<a name="line.190"></a>
+<span class="sourceLineNo">191</span><a name="line.191"></a>
 
 
 


[07/23] hbase-site git commit: Published site at 2cf8af5bf1d501156cbb3b421cf75c1051ead7d9.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html
index 71571a9..8e67a32 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html
@@ -34,722 +34,770 @@
 <span class="sourceLineNo">026</span>import java.util.Map;<a name="line.26"></a>
 <span class="sourceLineNo">027</span>import java.util.concurrent.CopyOnWriteArrayList;<a name="line.27"></a>
 <span class="sourceLineNo">028</span>import java.util.concurrent.CountDownLatch;<a name="line.28"></a>
-<span class="sourceLineNo">029</span><a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.commons.logging.Log;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.commons.logging.LogFactory;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.conf.Configuration;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.Abortable;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.AuthUtil;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HConstants;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.ZooKeeperConnectionException;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.security.Superusers;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.zookeeper.KeeperException;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.zookeeper.WatchedEvent;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.zookeeper.Watcher;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.zookeeper.ZooDefs.Ids;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.zookeeper.ZooDefs.Perms;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.zookeeper.data.ACL;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.zookeeper.data.Id;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.zookeeper.data.Stat;<a name="line.48"></a>
-<span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>/**<a name="line.50"></a>
-<span class="sourceLineNo">051</span> * Acts as the single ZooKeeper Watcher.  One instance of this is instantiated<a name="line.51"></a>
-<span class="sourceLineNo">052</span> * for each Master, RegionServer, and client process.<a name="line.52"></a>
-<span class="sourceLineNo">053</span> *<a name="line.53"></a>
-<span class="sourceLineNo">054</span> * &lt;p&gt;This is the only class that implements {@link Watcher}.  Other internal<a name="line.54"></a>
-<span class="sourceLineNo">055</span> * classes which need to be notified of ZooKeeper events must register with<a name="line.55"></a>
-<span class="sourceLineNo">056</span> * the local instance of this watcher via {@link #registerListener}.<a name="line.56"></a>
-<span class="sourceLineNo">057</span> *<a name="line.57"></a>
-<span class="sourceLineNo">058</span> * &lt;p&gt;This class also holds and manages the connection to ZooKeeper.  Code to<a name="line.58"></a>
-<span class="sourceLineNo">059</span> * deal with connection related events and exceptions are handled here.<a name="line.59"></a>
-<span class="sourceLineNo">060</span> */<a name="line.60"></a>
-<span class="sourceLineNo">061</span>@InterfaceAudience.Private<a name="line.61"></a>
-<span class="sourceLineNo">062</span>public class ZooKeeperWatcher implements Watcher, Abortable, Closeable {<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  private static final Log LOG = LogFactory.getLog(ZooKeeperWatcher.class);<a name="line.63"></a>
-<span class="sourceLineNo">064</span><a name="line.64"></a>
-<span class="sourceLineNo">065</span>  // Identifier for this watcher (for logging only).  It is made of the prefix<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  // passed on construction and the zookeeper sessionid.<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  private String prefix;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>  private String identifier;<a name="line.68"></a>
-<span class="sourceLineNo">069</span><a name="line.69"></a>
-<span class="sourceLineNo">070</span>  // zookeeper quorum<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  private String quorum;<a name="line.71"></a>
-<span class="sourceLineNo">072</span><a name="line.72"></a>
-<span class="sourceLineNo">073</span>  // zookeeper connection<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  private RecoverableZooKeeper recoverableZooKeeper;<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>  // abortable in case of zk failure<a name="line.76"></a>
-<span class="sourceLineNo">077</span>  protected Abortable abortable;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>  // Used if abortable is null<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  private boolean aborted = false;<a name="line.79"></a>
-<span class="sourceLineNo">080</span><a name="line.80"></a>
-<span class="sourceLineNo">081</span>  // listeners to be notified<a name="line.81"></a>
-<span class="sourceLineNo">082</span>  private final List&lt;ZooKeeperListener&gt; listeners =<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    new CopyOnWriteArrayList&lt;ZooKeeperListener&gt;();<a name="line.83"></a>
-<span class="sourceLineNo">084</span><a name="line.84"></a>
-<span class="sourceLineNo">085</span>  // Used by ZKUtil:waitForZKConnectionIfAuthenticating to wait for SASL<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  // negotiation to complete<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  public CountDownLatch saslLatch = new CountDownLatch(1);<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>  // node names<a name="line.89"></a>
+<span class="sourceLineNo">029</span>import java.util.regex.Matcher;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.regex.Pattern;<a name="line.30"></a>
+<span class="sourceLineNo">031</span><a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.commons.logging.Log;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.commons.logging.LogFactory;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.conf.Configuration;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.Abortable;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.AuthUtil;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.HConstants;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.ZooKeeperConnectionException;<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.hbase.security.Superusers;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.zookeeper.KeeperException;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.zookeeper.WatchedEvent;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.zookeeper.Watcher;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.zookeeper.ZooDefs.Ids;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.zookeeper.ZooDefs.Perms;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.zookeeper.data.ACL;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.zookeeper.data.Id;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.zookeeper.data.Stat;<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> * Acts as the single ZooKeeper Watcher.  One instance of this is instantiated<a name="line.53"></a>
+<span class="sourceLineNo">054</span> * for each Master, RegionServer, and client process.<a name="line.54"></a>
+<span class="sourceLineNo">055</span> *<a name="line.55"></a>
+<span class="sourceLineNo">056</span> * &lt;p&gt;This is the only class that implements {@link Watcher}.  Other internal<a name="line.56"></a>
+<span class="sourceLineNo">057</span> * classes which need to be notified of ZooKeeper events must register with<a name="line.57"></a>
+<span class="sourceLineNo">058</span> * the local instance of this watcher via {@link #registerListener}.<a name="line.58"></a>
+<span class="sourceLineNo">059</span> *<a name="line.59"></a>
+<span class="sourceLineNo">060</span> * &lt;p&gt;This class also holds and manages the connection to ZooKeeper.  Code to<a name="line.60"></a>
+<span class="sourceLineNo">061</span> * deal with connection related events and exceptions are handled here.<a name="line.61"></a>
+<span class="sourceLineNo">062</span> */<a name="line.62"></a>
+<span class="sourceLineNo">063</span>@InterfaceAudience.Private<a name="line.63"></a>
+<span class="sourceLineNo">064</span>public class ZooKeeperWatcher implements Watcher, Abortable, Closeable {<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  private static final Log LOG = LogFactory.getLog(ZooKeeperWatcher.class);<a name="line.65"></a>
+<span class="sourceLineNo">066</span><a name="line.66"></a>
+<span class="sourceLineNo">067</span>  // Identifier for this watcher (for logging only).  It is made of the prefix<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  // passed on construction and the zookeeper sessionid.<a name="line.68"></a>
+<span class="sourceLineNo">069</span>  private String prefix;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  private String identifier;<a name="line.70"></a>
+<span class="sourceLineNo">071</span><a name="line.71"></a>
+<span class="sourceLineNo">072</span>  // zookeeper quorum<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  private String quorum;<a name="line.73"></a>
+<span class="sourceLineNo">074</span><a name="line.74"></a>
+<span class="sourceLineNo">075</span>  // zookeeper connection<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  private RecoverableZooKeeper recoverableZooKeeper;<a name="line.76"></a>
+<span class="sourceLineNo">077</span><a name="line.77"></a>
+<span class="sourceLineNo">078</span>  // abortable in case of zk failure<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  protected Abortable abortable;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  // Used if abortable is null<a name="line.80"></a>
+<span class="sourceLineNo">081</span>  private boolean aborted = false;<a name="line.81"></a>
+<span class="sourceLineNo">082</span><a name="line.82"></a>
+<span class="sourceLineNo">083</span>  // listeners to be notified<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  private final List&lt;ZooKeeperListener&gt; listeners =<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    new CopyOnWriteArrayList&lt;ZooKeeperListener&gt;();<a name="line.85"></a>
+<span class="sourceLineNo">086</span><a name="line.86"></a>
+<span class="sourceLineNo">087</span>  // Used by ZKUtil:waitForZKConnectionIfAuthenticating to wait for SASL<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  // negotiation to complete<a name="line.88"></a>
+<span class="sourceLineNo">089</span>  public CountDownLatch saslLatch = new CountDownLatch(1);<a name="line.89"></a>
 <span class="sourceLineNo">090</span><a name="line.90"></a>
-<span class="sourceLineNo">091</span>  // base znode for this cluster<a name="line.91"></a>
-<span class="sourceLineNo">092</span>  public String baseZNode;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>  //znodes containing the locations of the servers hosting the meta replicas<a name="line.93"></a>
-<span class="sourceLineNo">094</span>  private Map&lt;Integer,String&gt; metaReplicaZnodes = new HashMap&lt;Integer, String&gt;();<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  // znode containing ephemeral nodes of the regionservers<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  public String rsZNode;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>  // znode containing ephemeral nodes of the draining regionservers<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  public String drainingZNode;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  // znode of currently active master<a name="line.99"></a>
-<span class="sourceLineNo">100</span>  private String masterAddressZNode;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  // znode of this master in backup master directory, if not the active master<a name="line.101"></a>
-<span class="sourceLineNo">102</span>  public String backupMasterAddressesZNode;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  // znode containing the current cluster state<a name="line.103"></a>
-<span class="sourceLineNo">104</span>  public String clusterStateZNode;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>  // znode used for table disabling/enabling<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  @Deprecated<a name="line.106"></a>
-<span class="sourceLineNo">107</span>  public String tableZNode;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>  // znode containing the unique cluster ID<a name="line.108"></a>
-<span class="sourceLineNo">109</span>  public String clusterIdZNode;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>  // znode used for log splitting work assignment<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  public String splitLogZNode;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>  // znode containing the state of the load balancer<a name="line.112"></a>
-<span class="sourceLineNo">113</span>  public String balancerZNode;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>  // znode containing the state of region normalizer<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  private String regionNormalizerZNode;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  // znode containing the lock for the tables<a name="line.116"></a>
-<span class="sourceLineNo">117</span>  public String tableLockZNode;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  // znode containing the state of recovering regions<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  public String recoveringRegionsZNode;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  // znode containing namespace descriptors<a name="line.120"></a>
-<span class="sourceLineNo">121</span>  public static String namespaceZNode = "namespace";<a name="line.121"></a>
-<span class="sourceLineNo">122</span><a name="line.122"></a>
-<span class="sourceLineNo">123</span>  public final static String META_ZNODE_PREFIX = "meta-region-server";<a name="line.123"></a>
+<span class="sourceLineNo">091</span>  // node names<a name="line.91"></a>
+<span class="sourceLineNo">092</span><a name="line.92"></a>
+<span class="sourceLineNo">093</span>  // base znode for this cluster<a name="line.93"></a>
+<span class="sourceLineNo">094</span>  public String baseZNode;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  //znodes containing the locations of the servers hosting the meta replicas<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  private Map&lt;Integer,String&gt; metaReplicaZnodes = new HashMap&lt;Integer, String&gt;();<a name="line.96"></a>
+<span class="sourceLineNo">097</span>  // znode containing ephemeral nodes of the regionservers<a name="line.97"></a>
+<span class="sourceLineNo">098</span>  public String rsZNode;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>  // znode containing ephemeral nodes of the draining regionservers<a name="line.99"></a>
+<span class="sourceLineNo">100</span>  public String drainingZNode;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>  // znode of currently active master<a name="line.101"></a>
+<span class="sourceLineNo">102</span>  private String masterAddressZNode;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>  // znode of this master in backup master directory, if not the active master<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  public String backupMasterAddressesZNode;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  // znode containing the current cluster state<a name="line.105"></a>
+<span class="sourceLineNo">106</span>  public String clusterStateZNode;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>  // znode used for table disabling/enabling<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  @Deprecated<a name="line.108"></a>
+<span class="sourceLineNo">109</span>  public String tableZNode;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  // znode containing the unique cluster ID<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  public String clusterIdZNode;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>  // znode used for log splitting work assignment<a name="line.112"></a>
+<span class="sourceLineNo">113</span>  public String splitLogZNode;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>  // znode containing the state of the load balancer<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  public String balancerZNode;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  // znode containing the state of region normalizer<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  private String regionNormalizerZNode;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  // znode containing the lock for the tables<a name="line.118"></a>
+<span class="sourceLineNo">119</span>  public String tableLockZNode;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  // znode containing the state of recovering regions<a name="line.120"></a>
+<span class="sourceLineNo">121</span>  public String recoveringRegionsZNode;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>  // znode containing namespace descriptors<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  public static String namespaceZNode = "namespace";<a name="line.123"></a>
 <span class="sourceLineNo">124</span><a name="line.124"></a>
-<span class="sourceLineNo">125</span>  private final Configuration conf;<a name="line.125"></a>
+<span class="sourceLineNo">125</span>  public final static String META_ZNODE_PREFIX = "meta-region-server";<a name="line.125"></a>
 <span class="sourceLineNo">126</span><a name="line.126"></a>
-<span class="sourceLineNo">127</span>  private final Exception constructorCaller;<a name="line.127"></a>
+<span class="sourceLineNo">127</span>  private final Configuration conf;<a name="line.127"></a>
 <span class="sourceLineNo">128</span><a name="line.128"></a>
-<span class="sourceLineNo">129</span>  /**<a name="line.129"></a>
-<span class="sourceLineNo">130</span>   * Instantiate a ZooKeeper connection and watcher.<a name="line.130"></a>
-<span class="sourceLineNo">131</span>   * @param identifier string that is passed to RecoverableZookeeper to be used as<a name="line.131"></a>
-<span class="sourceLineNo">132</span>   * identifier for this instance. Use null for default.<a name="line.132"></a>
-<span class="sourceLineNo">133</span>   * @throws IOException<a name="line.133"></a>
-<span class="sourceLineNo">134</span>   * @throws ZooKeeperConnectionException<a name="line.134"></a>
-<span class="sourceLineNo">135</span>   */<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  public ZooKeeperWatcher(Configuration conf, String identifier,<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      Abortable abortable) throws ZooKeeperConnectionException, IOException {<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    this(conf, identifier, abortable, false);<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>   * Instantiate a ZooKeeper connection and watcher.<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * @param conf<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   * @param identifier string that is passed to RecoverableZookeeper to be used as identifier for<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   *          this instance. Use null for default.<a name="line.145"></a>
-<span class="sourceLineNo">146</span>   * @param abortable Can be null if there is on error there is no host to abort: e.g. client<a name="line.146"></a>
-<span class="sourceLineNo">147</span>   *          context.<a name="line.147"></a>
-<span class="sourceLineNo">148</span>   * @param canCreateBaseZNode<a name="line.148"></a>
-<span class="sourceLineNo">149</span>   * @throws IOException<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   * @throws ZooKeeperConnectionException<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   */<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  public ZooKeeperWatcher(Configuration conf, String identifier,<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      Abortable abortable, boolean canCreateBaseZNode)<a name="line.153"></a>
-<span class="sourceLineNo">154</span>  throws IOException, ZooKeeperConnectionException {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    this.conf = conf;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    // Capture a stack trace now.  Will print it out later if problem so we can<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    // distingush amongst the myriad ZKWs.<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    try {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      throw new Exception("ZKW CONSTRUCTOR STACK TRACE FOR DEBUGGING");<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    } catch (Exception e) {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>      this.constructorCaller = e;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    }<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    this.quorum = ZKConfig.getZKQuorumServersString(conf);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    this.prefix = identifier;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    // Identifier will get the sessionid appended later below down when we<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    // handle the syncconnect event.<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    this.identifier = identifier + "0x0";<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    this.abortable = abortable;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    setNodeNames(conf);<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    this.recoverableZooKeeper = ZKUtil.connect(conf, quorum, this, identifier);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    if (canCreateBaseZNode) {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      createBaseZNodes();<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    }<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  }<a name="line.174"></a>
-<span class="sourceLineNo">175</span><a name="line.175"></a>
-<span class="sourceLineNo">176</span>  private void createBaseZNodes() throws ZooKeeperConnectionException {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    try {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      // Create all the necessary "directories" of znodes<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      ZKUtil.createWithParents(this, baseZNode);<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      ZKUtil.createAndFailSilent(this, rsZNode);<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      ZKUtil.createAndFailSilent(this, drainingZNode);<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      ZKUtil.createAndFailSilent(this, tableZNode);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      ZKUtil.createAndFailSilent(this, splitLogZNode);<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      ZKUtil.createAndFailSilent(this, backupMasterAddressesZNode);<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      ZKUtil.createAndFailSilent(this, tableLockZNode);<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      ZKUtil.createAndFailSilent(this, recoveringRegionsZNode);<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    } catch (KeeperException e) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      throw new ZooKeeperConnectionException(<a name="line.188"></a>
-<span class="sourceLineNo">189</span>          prefix("Unexpected KeeperException creating base node"), e);<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  }<a name="line.191"></a>
-<span class="sourceLineNo">192</span><a name="line.192"></a>
-<span class="sourceLineNo">193</span>  /** Returns whether the znode is supposed to be readable by the client<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * and DOES NOT contain sensitive information (world readable).*/<a name="line.194"></a>
-<span class="sourceLineNo">195</span>  public boolean isClientReadable(String node) {<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    // Developer notice: These znodes are world readable. DO NOT add more znodes here UNLESS<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    // all clients need to access this data to work. Using zk for sharing data to clients (other<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    // than service lookup case is not a recommended design pattern.<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    return<a name="line.199"></a>
-<span class="sourceLineNo">200</span>        node.equals(baseZNode) ||<a name="line.200"></a>
-<span class="sourceLineNo">201</span>        isAnyMetaReplicaZnode(node) ||<a name="line.201"></a>
-<span class="sourceLineNo">202</span>        node.equals(getMasterAddressZNode()) ||<a name="line.202"></a>
-<span class="sourceLineNo">203</span>        node.equals(clusterIdZNode)||<a name="line.203"></a>
-<span class="sourceLineNo">204</span>        node.equals(rsZNode) ||<a name="line.204"></a>
-<span class="sourceLineNo">205</span>        // /hbase/table and /hbase/table/foo is allowed, /hbase/table-lock is not<a name="line.205"></a>
-<span class="sourceLineNo">206</span>        node.equals(tableZNode) ||<a name="line.206"></a>
-<span class="sourceLineNo">207</span>        node.startsWith(tableZNode + "/");<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>   * On master start, we check the znode ACLs under the root directory and set the ACLs properly<a name="line.211"></a>
-<span class="sourceLineNo">212</span>   * if needed. If the cluster goes from an unsecure setup to a secure setup, this step is needed<a name="line.212"></a>
-<span class="sourceLineNo">213</span>   * so that the existing znodes created with open permissions are now changed with restrictive<a name="line.213"></a>
-<span class="sourceLineNo">214</span>   * perms.<a name="line.214"></a>
-<span class="sourceLineNo">215</span>   */<a name="line.215"></a>
-<span class="sourceLineNo">216</span>  public void checkAndSetZNodeAcls() {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    if (!ZKUtil.isSecureZooKeeper(getConfiguration())) {<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      return;<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>    // Check the base znodes permission first. Only do the recursion if base znode's perms are not<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    // correct.<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    try {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      List&lt;ACL&gt; actualAcls = recoverableZooKeeper.getAcl(baseZNode, new Stat());<a name="line.224"></a>
-<span class="sourceLineNo">225</span><a name="line.225"></a>
-<span class="sourceLineNo">226</span>      if (!isBaseZnodeAclSetup(actualAcls)) {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>        LOG.info("setting znode ACLs");<a name="line.227"></a>
-<span class="sourceLineNo">228</span>        setZnodeAclsRecursive(baseZNode);<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      }<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    } catch(KeeperException.NoNodeException nne) {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      return;<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    } catch(InterruptedException ie) {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      interruptedException(ie);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    } catch (IOException|KeeperException e) {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      LOG.warn("Received exception while checking and setting zookeeper ACLs", e);<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><a name="line.238"></a>
-<span class="sourceLineNo">239</span>  /**<a name="line.239"></a>
-<span class="sourceLineNo">240</span>   * Set the znode perms recursively. This will do post-order recursion, so that baseZnode ACLs<a name="line.240"></a>
-<span class="sourceLineNo">241</span>   * will be set last in case the master fails in between.<a name="line.241"></a>
-<span class="sourceLineNo">242</span>   * @param znode<a name="line.242"></a>
-<span class="sourceLineNo">243</span>   */<a name="line.243"></a>
-<span class="sourceLineNo">244</span>  private void setZnodeAclsRecursive(String znode) throws KeeperException, InterruptedException {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    List&lt;String&gt; children = recoverableZooKeeper.getChildren(znode, false);<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>    for (String child : children) {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      setZnodeAclsRecursive(ZKUtil.joinZNode(znode, child));<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    }<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    List&lt;ACL&gt; acls = ZKUtil.createACL(this, znode, true);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    LOG.info("Setting ACLs for znode:" + znode + " , acl:" + acls);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    recoverableZooKeeper.setAcl(znode, acls, -1);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>  }<a name="line.253"></a>
-<span class="sourceLineNo">254</span><a name="line.254"></a>
-<span class="sourceLineNo">255</span>  /**<a name="line.255"></a>
-<span class="sourceLineNo">256</span>   * Checks whether the ACLs returned from the base znode (/hbase) is set for secure setup.<a name="line.256"></a>
-<span class="sourceLineNo">257</span>   * @param acls acls from zookeeper<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   * @return whether ACLs are set for the base znode<a name="line.258"></a>
-<span class="sourceLineNo">259</span>   * @throws IOException<a name="line.259"></a>
-<span class="sourceLineNo">260</span>   */<a name="line.260"></a>
-<span class="sourceLineNo">261</span>  private boolean isBaseZnodeAclSetup(List&lt;ACL&gt; acls) throws IOException {<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    String[] superUsers = conf.getStrings(Superusers.SUPERUSER_CONF_KEY);<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    // Check whether ACL set for all superusers<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    if (superUsers != null &amp;&amp; !checkACLForSuperUsers(superUsers, acls)) {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      return false;<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>    // this assumes that current authenticated user is the same as zookeeper client user<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    // configured via JAAS<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    String hbaseUser = UserGroupInformation.getCurrentUser().getShortUserName();<a name="line.270"></a>
-<span class="sourceLineNo">271</span><a name="line.271"></a>
-<span class="sourceLineNo">272</span>    if (acls.isEmpty()) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      return false;<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    }<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span>    for (ACL acl : acls) {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      int perms = acl.getPerms();<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      Id id = acl.getId();<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      // We should only set at most 3 possible ACLs for 3 Ids. One for everyone, one for superuser<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      // and one for the hbase user<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      if (Ids.ANYONE_ID_UNSAFE.equals(id)) {<a name="line.281"></a>
-<span class="sourceLineNo">282</span>        if (perms != Perms.READ) {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>          return false;<a name="line.283"></a>
-<span class="sourceLineNo">284</span>        }<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      } else if (superUsers != null &amp;&amp; isSuperUserId(superUsers, id)) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>        if (perms != Perms.ALL) {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>          return false;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        }<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      } else if (new Id("sasl", hbaseUser).equals(id)) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        if (perms != Perms.ALL) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>          return false;<a name="line.291"></a>
-<span class="sourceLineNo">292</span>        }<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      } else {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>        return false;<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      }<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    }<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    return true;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>  }<a name="line.298"></a>
-<span class="sourceLineNo">299</span>  <a name="line.299"></a>
-<span class="sourceLineNo">300</span>  /*<a name="line.300"></a>
-<span class="sourceLineNo">301</span>   * Validate whether ACL set for all superusers.<a name="line.301"></a>
-<span class="sourceLineNo">302</span>   */<a name="line.302"></a>
-<span class="sourceLineNo">303</span>  private boolean checkACLForSuperUsers(String[] superUsers, List&lt;ACL&gt; acls) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    for (String user : superUsers) {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      boolean hasAccess = false;<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      // TODO: Validate super group members also when ZK supports setting node ACL for groups.<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      if (!user.startsWith(AuthUtil.GROUP_PREFIX)) {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>        for (ACL acl : acls) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>          if (user.equals(acl.getId().getId()) &amp;&amp; acl.getPerms() == Perms.ALL) {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>            hasAccess = true;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>            break;<a name="line.311"></a>
-<span class="sourceLineNo">312</span>          }<a name="line.312"></a>
-<span class="sourceLineNo">313</span>        }<a name="line.313"></a>
-<span class="sourceLineNo">314</span>        if (!hasAccess) {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>          return false;<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>    return true;<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>   * Validate whether ACL ID is superuser.<a name="line.323"></a>
-<span class="sourceLineNo">324</span>   */<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  public static boolean isSuperUserId(String[] superUsers, Id id) {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    for (String user : superUsers) {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      // TODO: Validate super group members also when ZK supports setting node ACL for groups.<a name="line.327"></a>
-<span class="sourceLineNo">328</span>      if (!user.startsWith(AuthUtil.GROUP_PREFIX) &amp;&amp; new Id("sasl", user).equals(id)) {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>        return true;<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>    return false;<a name="line.332"></a>
-<span class="sourceLineNo">333</span>  }<a name="line.333"></a>
-<span class="sourceLineNo">334</span><a name="line.334"></a>
-<span class="sourceLineNo">335</span>  @Override<a name="line.335"></a>
-<span class="sourceLineNo">336</span>  public String toString() {<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    return this.identifier + ", quorum=" + quorum + ", baseZNode=" + baseZNode;<a name="line.337"></a>
+<span class="sourceLineNo">129</span>  private final Exception constructorCaller;<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>  /* A pattern that matches a Kerberos name, borrowed from Hadoop's KerberosName */<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  private static final Pattern NAME_PATTERN = Pattern.compile("([^/@]*)(/([^/@]*))?@([^/@]*)");<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>   * Instantiate a ZooKeeper connection and watcher.<a name="line.135"></a>
+<span class="sourceLineNo">136</span>   * @param identifier string that is passed to RecoverableZookeeper to be used as<a name="line.136"></a>
+<span class="sourceLineNo">137</span>   * identifier for this instance. Use null for default.<a name="line.137"></a>
+<span class="sourceLineNo">138</span>   * @throws IOException<a name="line.138"></a>
+<span class="sourceLineNo">139</span>   * @throws ZooKeeperConnectionException<a name="line.139"></a>
+<span class="sourceLineNo">140</span>   */<a name="line.140"></a>
+<span class="sourceLineNo">141</span>  public ZooKeeperWatcher(Configuration conf, String identifier,<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      Abortable abortable) throws ZooKeeperConnectionException, IOException {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    this(conf, identifier, abortable, false);<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  }<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>  /**<a name="line.146"></a>
+<span class="sourceLineNo">147</span>   * Instantiate a ZooKeeper connection and watcher.<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   * @param conf<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   * @param identifier string that is passed to RecoverableZookeeper to be used as identifier for<a name="line.149"></a>
+<span class="sourceLineNo">150</span>   *          this instance. Use null for default.<a name="line.150"></a>
+<span class="sourceLineNo">151</span>   * @param abortable Can be null if there is on error there is no host to abort: e.g. client<a name="line.151"></a>
+<span class="sourceLineNo">152</span>   *          context.<a name="line.152"></a>
+<span class="sourceLineNo">153</span>   * @param canCreateBaseZNode<a name="line.153"></a>
+<span class="sourceLineNo">154</span>   * @throws IOException<a name="line.154"></a>
+<span class="sourceLineNo">155</span>   * @throws ZooKeeperConnectionException<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   */<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  public ZooKeeperWatcher(Configuration conf, String identifier,<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      Abortable abortable, boolean canCreateBaseZNode)<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  throws IOException, ZooKeeperConnectionException {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    this.conf = conf;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    // Capture a stack trace now.  Will print it out later if problem so we can<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    // distingush amongst the myriad ZKWs.<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    try {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      throw new Exception("ZKW CONSTRUCTOR STACK TRACE FOR DEBUGGING");<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    } catch (Exception e) {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      this.constructorCaller = e;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    }<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    this.quorum = ZKConfig.getZKQuorumServersString(conf);<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    this.prefix = identifier;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    // Identifier will get the sessionid appended later below down when we<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    // handle the syncconnect event.<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    this.identifier = identifier + "0x0";<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    this.abortable = abortable;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    setNodeNames(conf);<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    this.recoverableZooKeeper = ZKUtil.connect(conf, quorum, this, identifier);<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    if (canCreateBaseZNode) {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      createBaseZNodes();<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>  private void createBaseZNodes() throws ZooKeeperConnectionException {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    try {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      // Create all the necessary "directories" of znodes<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      ZKUtil.createWithParents(this, baseZNode);<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      ZKUtil.createAndFailSilent(this, rsZNode);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      ZKUtil.createAndFailSilent(this, drainingZNode);<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      ZKUtil.createAndFailSilent(this, tableZNode);<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      ZKUtil.createAndFailSilent(this, splitLogZNode);<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      ZKUtil.createAndFailSilent(this, backupMasterAddressesZNode);<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      ZKUtil.createAndFailSilent(this, tableLockZNode);<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      ZKUtil.createAndFailSilent(this, recoveringRegionsZNode);<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    } catch (KeeperException e) {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      throw new ZooKeeperConnectionException(<a name="line.193"></a>
+<span class="sourceLineNo">194</span>          prefix("Unexpected KeeperException creating base node"), e);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    }<a name="line.195"></a>
+<span class="sourceLineNo">196</span>  }<a name="line.196"></a>
+<span class="sourceLineNo">197</span><a name="line.197"></a>
+<span class="sourceLineNo">198</span>  /** Returns whether the znode is supposed to be readable by the client<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   * and DOES NOT contain sensitive information (world readable).*/<a name="line.199"></a>
+<span class="sourceLineNo">200</span>  public boolean isClientReadable(String node) {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    // Developer notice: These znodes are world readable. DO NOT add more znodes here UNLESS<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    // all clients need to access this data to work. Using zk for sharing data to clients (other<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    // than service lookup case is not a recommended design pattern.<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    return<a name="line.204"></a>
+<span class="sourceLineNo">205</span>        node.equals(baseZNode) ||<a name="line.205"></a>
+<span class="sourceLineNo">206</span>        isAnyMetaReplicaZnode(node) ||<a name="line.206"></a>
+<span class="sourceLineNo">207</span>        node.equals(getMasterAddressZNode()) ||<a name="line.207"></a>
+<span class="sourceLineNo">208</span>        node.equals(clusterIdZNode)||<a name="line.208"></a>
+<span class="sourceLineNo">209</span>        node.equals(rsZNode) ||<a name="line.209"></a>
+<span class="sourceLineNo">210</span>        // /hbase/table and /hbase/table/foo is allowed, /hbase/table-lock is not<a name="line.210"></a>
+<span class="sourceLineNo">211</span>        node.equals(tableZNode) ||<a name="line.211"></a>
+<span class="sourceLineNo">212</span>        node.startsWith(tableZNode + "/");<a name="line.212"></a>
+<span class="sourceLineNo">213</span>  }<a name="line.213"></a>
+<span class="sourceLineNo">214</span><a name="line.214"></a>
+<span class="sourceLineNo">215</span>  /**<a name="line.215"></a>
+<span class="sourceLineNo">216</span>   * On master start, we check the znode ACLs under the root directory and set the ACLs properly<a name="line.216"></a>
+<span class="sourceLineNo">217</span>   * if needed. If the cluster goes from an unsecure setup to a secure setup, this step is needed<a name="line.217"></a>
+<span class="sourceLineNo">218</span>   * so that the existing znodes created with open permissions are now changed with restrictive<a name="line.218"></a>
+<span class="sourceLineNo">219</span>   * perms.<a name="line.219"></a>
+<span class="sourceLineNo">220</span>   */<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  public void checkAndSetZNodeAcls() {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    if (!ZKUtil.isSecureZooKeeper(getConfiguration())) {<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      LOG.info("not a secure deployment, proceeding");<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      return;<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>    // Check the base znodes permission first. Only do the recursion if base znode's perms are not<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    // correct.<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    try {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      List&lt;ACL&gt; actualAcls = recoverableZooKeeper.getAcl(baseZNode, new Stat());<a name="line.230"></a>
+<span class="sourceLineNo">231</span><a name="line.231"></a>
+<span class="sourceLineNo">232</span>      if (!isBaseZnodeAclSetup(actualAcls)) {<a name="line.232"></a>
+<span class="sourceLineNo">233</span>        LOG.info("setting znode ACLs");<a name="line.233"></a>
+<span class="sourceLineNo">234</span>        setZnodeAclsRecursive(baseZNode);<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      }<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    } catch(KeeperException.NoNodeException nne) {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      return;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    } catch(InterruptedException ie) {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      interruptedException(ie);<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    } catch (IOException|KeeperException e) {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      LOG.warn("Received exception while checking and setting zookeeper ACLs", e);<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    }<a name="line.242"></a>
+<span class="sourceLineNo">243</span>  }<a name="line.243"></a>
+<span class="sourceLineNo">244</span><a name="line.244"></a>
+<span class="sourceLineNo">245</span>  /**<a name="line.245"></a>
+<span class="sourceLineNo">246</span>   * Set the znode perms recursively. This will do post-order recursion, so that baseZnode ACLs<a name="line.246"></a>
+<span class="sourceLineNo">247</span>   * will be set last in case the master fails in between.<a name="line.247"></a>
+<span class="sourceLineNo">248</span>   * @param znode<a name="line.248"></a>
+<span class="sourceLineNo">249</span>   */<a name="line.249"></a>
+<span class="sourceLineNo">250</span>  private void setZnodeAclsRecursive(String znode) throws KeeperException, InterruptedException {<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    List&lt;String&gt; children = recoverableZooKeeper.getChildren(znode, false);<a name="line.251"></a>
+<span class="sourceLineNo">252</span><a name="line.252"></a>
+<span class="sourceLineNo">253</span>    for (String child : children) {<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      setZnodeAclsRecursive(ZKUtil.joinZNode(znode, child));<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    List&lt;ACL&gt; acls = ZKUtil.createACL(this, znode, true);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    LOG.info("Setting ACLs for znode:" + znode + " , acl:" + acls);<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    recoverableZooKeeper.setAcl(znode, acls, -1);<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>   * Checks whether the ACLs returned from the base znode (/hbase) is set for secure setup.<a name="line.262"></a>
+<span class="sourceLineNo">263</span>   * @param acls acls from zookeeper<a name="line.263"></a>
+<span class="sourceLineNo">264</span>   * @return whether ACLs are set for the base znode<a name="line.264"></a>
+<span class="sourceLineNo">265</span>   * @throws IOException<a name="line.265"></a>
+<span class="sourceLineNo">266</span>   */<a name="line.266"></a>
+<span class="sourceLineNo">267</span>  private boolean isBaseZnodeAclSetup(List&lt;ACL&gt; acls) throws IOException {<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    if (LOG.isDebugEnabled()) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      LOG.debug("Checking znode ACLs");<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    }<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    String[] superUsers = conf.getStrings(Superusers.SUPERUSER_CONF_KEY);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    // Check whether ACL set for all superusers<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    if (superUsers != null &amp;&amp; !checkACLForSuperUsers(superUsers, acls)) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      return false;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span>    // this assumes that current authenticated user is the same as zookeeper client user<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    // configured via JAAS<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    String hbaseUser = UserGroupInformation.getCurrentUser().getShortUserName();<a name="line.279"></a>
+<span class="sourceLineNo">280</span><a name="line.280"></a>
+<span class="sourceLineNo">281</span>    if (acls.isEmpty()) {<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      if (LOG.isDebugEnabled()) {<a name="line.282"></a>
+<span class="sourceLineNo">283</span>        LOG.debug("ACL is empty");<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      }<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      return false;<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    }<a name="line.286"></a>
+<span class="sourceLineNo">287</span><a name="line.287"></a>
+<span class="sourceLineNo">288</span>    for (ACL acl : acls) {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      int perms = acl.getPerms();<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      Id id = acl.getId();<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      // We should only set at most 3 possible ACLs for 3 Ids. One for everyone, one for superuser<a name="line.291"></a>
+<span class="sourceLineNo">292</span>      // and one for the hbase user<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      if (Ids.ANYONE_ID_UNSAFE.equals(id)) {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>        if (perms != Perms.READ) {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>          if (LOG.isDebugEnabled()) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>            LOG.debug(String.format("permissions for '%s' are not correct: have %0x, want %0x",<a name="line.296"></a>
+<span class="sourceLineNo">297</span>              id, perms, Perms.READ));<a name="line.297"></a>
+<span class="sourceLineNo">298</span>          }<a name="line.298"></a>
+<span class="sourceLineNo">299</span>          return false;<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        }<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      } else if (superUsers != null &amp;&amp; isSuperUserId(superUsers, id)) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        if (perms != Perms.ALL) {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>          if (LOG.isDebugEnabled()) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>            LOG.debug(String.format("permissions for '%s' are not correct: have %0x, want %0x",<a name="line.304"></a>
+<span class="sourceLineNo">305</span>              id, perms, Perms.ALL));<a name="line.305"></a>
+<span class="sourceLineNo">306</span>          }<a name="line.306"></a>
+<span class="sourceLineNo">307</span>          return false;<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        }<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      } else if ("sasl".equals(id.getScheme())) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>        String name = id.getId();<a name="line.310"></a>
+<span class="sourceLineNo">311</span>        // If ZooKeeper recorded the Kerberos full name in the ACL, use only the shortname<a name="line.311"></a>
+<span class="sourceLineNo">312</span>        Matcher match = NAME_PATTERN.matcher(name);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>        if (match.matches()) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>          name = match.group(1);<a name="line.314"></a>
+<span class="sourceLineNo">315</span>        }<a name="line.315"></a>
+<span class="sourceLineNo">316</span>        if (name.equals(hbaseUser)) {<a name="line.316"></a>
+<span class="sourceLineNo">317</span>          if (perms != Perms.ALL) {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>            if (LOG.isDebugEnabled()) {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>              LOG.debug(String.format("permissions for '%s' are not correct: have %0x, want %0x",<a name="line.319"></a>
+<span class="sourceLineNo">320</span>                id, perms, Perms.ALL));<a name="line.320"></a>
+<span class="sourceLineNo">321</span>            }<a name="line.321"></a>
+<span class="sourceLineNo">322</span>            return false;<a name="line.322"></a>
+<span class="sourceLineNo">323</span>          }<a name="line.323"></a>
+<span class="sourceLineNo">324</span>        } else {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>          if (LOG.isDebugEnabled()) {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>            LOG.debug("Unexpected shortname in SASL ACL: " + id);<a name="line.326"></a>
+<span class="sourceLineNo">327</span>          }<a name="line.327"></a>
+<span class="sourceLineNo">328</span>          return false;<a name="line.328"></a>
+<span class="sourceLineNo">329</span>        }<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      } else {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        if (LOG.isDebugEnabled()) {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>          LOG.debug("unexpected ACL id '" + id + "'");<a name="line.332"></a>
+<span class="sourceLineNo">333</span>        }<a name="line.333"></a>
+<span class="sourceLineNo">334</span>        return false;<a name="line.334"></a>
+<span class="sourceLineNo">335</span>      }<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    }<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    return true;<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>  /**<a name="line.340"></a>
-<span class="sourceLineNo">341</span>   * Adds this instance's identifier as a prefix to the passed &lt;code&gt;str&lt;/code&gt;<a name="line.341"></a>
-<span class="sourceLineNo">342</span>   * @param str String to amend.<a name="line.342"></a>
-<span class="sourceLineNo">343</span>   * @return A new string with this instance's identifier as prefix: e.g.<a name="line.343"></a>
-<span class="sourceLineNo">344</span>   * if passed 'hello world', the returned string could be<a name="line.344"></a>
-<span class="sourceLineNo">345</span>   */<a name="line.345"></a>
-<span class="sourceLineNo">346</span>  public String prefix(final String str) {<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    return this.toString() + " " + str;<a name="line.347"></a>
-<span class="sourceLineNo">348</span>  }<a name="line.348"></a>
-<span class="sourceLineNo">349</span><a name="line.349"></a>
-<span class="sourceLineNo">350</span>  /**<a name="line.350"></a>
-<span class="sourceLineNo">351</span>   * Set the local variable node names using the specified configuration.<a name="line.351"></a>
-<span class="sourceLineNo">352</span>   */<a name="line.352"></a>
-<span class="sourceLineNo">353</span>  private void setNodeNames(Configuration conf) {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    baseZNode = conf.get(HConstants.ZOOKEEPER_ZNODE_PARENT,<a name="line.354"></a>
-<span class="sourceLineNo">355</span>        HConstants.DEFAULT_ZOOKEEPER_ZNODE_PARENT);<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    metaReplicaZnodes.put(0, ZKUtil.joinZNode(baseZNode,<a name="line.356"></a>
-<span class="sourceLineNo">357</span>           conf.get("zookeeper.znode.metaserver", "meta-region-server")));<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    int numMetaReplicas = conf.getInt(HConstants.META_REPLICAS_NUM,<a name="line.358"></a>
-<span class="sourceLineNo">359</span>            HConstants.DEFAULT_META_REPLICA_NUM);<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    for (int i = 1; i &lt; numMetaReplicas; i++) {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      String str = ZKUtil.joinZNode(baseZNode,<a name="line.361"></a>
-<span class="sourceLineNo">362</span>        conf.get("zookeeper.znode.metaserver", "meta-region-server") + "-" + i);<a name="line.362"></a>
-<span class="sourceLineNo">363</span>      metaReplicaZnodes.put(i, str);<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    }<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    rsZNode = ZKUtil.joinZNode(baseZNode,<a name="line.365"></a>
-<span class="sourceLineNo">366</span>        conf.get("zookeeper.znode.rs", "rs"));<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    drainingZNode = ZKUtil.joinZNode(baseZNode,<a name="line.367"></a>
-<span class="sourceLineNo">368</span>        conf.get("zookeeper.znode.draining.rs", "draining"));<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    masterAddressZNode = ZKUtil.joinZNode(baseZNode,<a name="line.369"></a>
-<span class="sourceLineNo">370</span>        conf.get("zookeeper.znode.master", "master"));<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    backupMasterAddressesZNode = ZKUtil.joinZNode(baseZNode,<a name="line.371"></a>
-<span class="sourceLineNo">372</span>        conf.get("zookeeper.znode.backup.masters", "backup-masters"));<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    clusterStateZNode = ZKUtil.joinZNode(baseZNode,<a name="line.373"></a>
-<span class="sourceLineNo">374</span>        conf.get("zookeeper.znode.state", "running"));<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    tableZNode = ZKUtil.joinZNode(baseZNode,<a name="line.375"></a>
-<span class="sourceLineNo">376</span>        conf.get("zookeeper.znode.tableEnableDisable", "table"));<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    clusterIdZNode = ZKUtil.joinZNode(baseZNode,<a name="line.377"></a>
-<span class="sourceLineNo">378</span>        conf.get("zookeeper.znode.clusterId", "hbaseid"));<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    splitLogZNode = ZKUtil.joinZNode(baseZNode,<a name="line.379"></a>
-<span class="sourceLineNo">380</span>        conf.get("zookeeper.znode.splitlog", HConstants.SPLIT_LOGDIR_NAME));<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    balancerZNode = ZKUtil.joinZNode(baseZNode,<a name="line.381"></a>
-<span class="sourceLineNo">382</span>        conf.get("zookeeper.znode.balancer", "balancer"));<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    regionNormalizerZNode = ZKUtil.joinZNode(baseZNode,<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      conf.get("zookeeper.znode.regionNormalizer", "normalizer"));<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    tableLockZNode = ZKUtil.joinZNode(baseZNode,<a name="line.385"></a>
-<span class="sourceLineNo">386</span>        conf.get("zookeeper.znode.tableLock", "table-lock"));<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    recoveringRegionsZNode = ZKUtil.joinZNode(baseZNode,<a name="line.387"></a>
-<span class="sourceLineNo">388</span>        conf.get("zookeeper.znode.recovering.regions", "recovering-regions"));<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    namespaceZNode = ZKUtil.joinZNode(baseZNode,<a name="line.389"></a>
-<span class="sourceLineNo">390</span>        conf.get("zookeeper.znode.namespace", "namespace"));<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  }<a name="line.391"></a>
-<span class="sourceLineNo">392</span><a name="line.392"></a>
-<span class="sourceLineNo">393</span>  /**<a name="line.393"></a>
-<span class="sourceLineNo">394</span>   * Is the znode of any meta replica<a name="line.394"></a>
-<span class="sourceLineNo">395</span>   * @param node<a name="line.395"></a>
-<span class="sourceLineNo">396</span>   * @return true or false<a name="line.396"></a>
-<span class="sourceLineNo">397</span>   */<a name="line.397"></a>
-<span class="sourceLineNo">398</span>  public boolean isAnyMetaReplicaZnode(String node) {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    if (metaReplicaZnodes.values().contains(node)) {<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      return true;<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    }<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    return false;<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  }<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>  /**<a name="line.405"></a>
-<span class="sourceLineNo">406</span>   * Is it the default meta replica's znode<a name="line.406"></a>
-<span class="sourceLineNo">407</span>   * @param node<a name="line.407"></a>
-<span class="sourceLineNo">408</span>   * @return true or false<a name="line.408"></a>
-<span class="sourceLineNo">409</span>   */<a name="line.409"></a>
-<span class="sourceLineNo">410</span>  public boolean isDefaultMetaReplicaZnode(String node) {<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    if (getZNodeForReplica(HRegionInfo.DEFAULT_REPLICA_ID).equals(node)) {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      return true;<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    }<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    return false;<a name="line.414"></a>
-<span class="sourceLineNo">415</span>  }<a name="line.415"></a>
-<span class="sourceLineNo">416</span><a name="line.416"></a>
-<span class="sourceLineNo">417</span>  /**<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   * Get the znodes corresponding to the meta replicas from ZK<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   * @return list of znodes<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   * @throws KeeperException<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   */<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  public List&lt;String&gt; getMetaReplicaNodes() throws KeeperException {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    List&lt;String&gt; childrenOfBaseNode = ZKUtil.listChildrenNoWatch(this, baseZNode);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    List&lt;String&gt; metaReplicaNodes = new ArrayList&lt;String&gt;(2);<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    String pattern = conf.get("zookeeper.znode.metaserver","meta-region-server");<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    for (String child : childrenOfBaseNode) {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      if (child.startsWith(pattern)) metaReplicaNodes.add(child);<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    return metaReplicaNodes;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>  }<a name="line.430"></a>
-<span class="sourceLineNo">431</span><a name="line.431"></a>
-<span class="sourceLineNo">432</span>  /**<a name="line.432"></a>
-<span class="sourceLineNo">433</span>   * Get the znode string corresponding to a replicaId<a name="line.433"></a>
-<span class="sourceLineNo">434</span>   * @param replicaId<a name="line.434"></a>
-<span class="sourceLineNo">435</span>   * @return znode<a name="line.435"></a>
-<span class="sourceLineNo">436</span>   */<a name="line.436"></a>
-<span class="sourceLineNo">437</span>  public String getZNodeForReplica(int replicaId) {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    String str = metaReplicaZnodes.get(replicaId);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    // return a newly created path but don't update the cache of paths<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    // This is mostly needed for tests that attempt to create meta replicas<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    // from outside the master<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    if (str == null) {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      str = ZKUtil.joinZNode(baseZNode,<a name="line.443"></a>
-<span class="sourceLineNo">444</span>          conf.get("zookeeper.znode.metaserver", "meta-region-server") + "-" + replicaId);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    }<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    return str;<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>   * Parse the meta replicaId from the passed znode<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   * @param znode<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   * @return replicaId<a name="line.452"></a>
-<span class="sourceLineNo">453</span>   */<a name="line.453"></a>
-<span class="sourceLineNo">454</span>  public int getMetaReplicaIdFromZnode(String znode) {<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    String pattern = conf.get("zookeeper.znode.metaserver","meta-region-server");<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    if (znode.equals(pattern)) return HRegionInfo.DEFAULT_REPLICA_ID;<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    // the non-default replicas are of the pattern meta-region-server-&lt;replicaId&gt;<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    String nonDefaultPattern = pattern + "-";<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    return Integer.parseInt(znode.substring(nonDefaultPattern.length()));<a name="line.459"></a>
-<span class="sourceLineNo">460</span>  }<a name="line.460"></a>
-<span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>  /**<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   * Register the specified listener to receive ZooKeeper events.<a name="line.463"></a>
-<span class="sourceLineNo">464</span>   * @param listener<a name="line.464"></a>
-<span class="sourceLineNo">465</span>   */<a name="line.465"></a>
-<span class="sourceLineNo">466</span>  public void registerListener(ZooKeeperListener listener) {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    listeners.add(listener);<a name="line.467"></a>
-<span class="sourceLineNo">468</span>  }<a name="line.468"></a>
-<span class="sourceLineNo">469</span><a name="line.469"></a>
-<span class="sourceLineNo">470</span>  /**<a name="line.470"></a>
-<span class="sourceLineNo">471</span>   * Register the specified listener to receive ZooKeeper events and add it as<a name="line.471"></a>
-<span class="sourceLineNo">472</span>   * the first in the list of current listeners.<a name="line.472"></a>
-<span class="sourceLineNo">473</span>   * @param listener<a name="line.473"></a>
-<span class="sourceLineNo">474</span>   */<a name="line.474"></a>
-<span class="sourceLineNo">475</span>  public void registerListenerFirst(ZooKeeperListener listener) {<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    listeners.add(0, listener);<a name="line.476"></a>
-<span class="sourceLineNo">477</span>  }<a name="line.477"></a>
-<span class="sourceLineNo">478</span><a name="line.478"></a>
-<span class="sourceLineNo">479</span>  public void unregisterListener(ZooKeeperListener listener) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    listeners.remove(listener);<a name="line.480"></a>
-<span class="sourceLineNo">481</span>  }<a name="line.481"></a>
-<span class="sourceLineNo">482</span><a name="line.482"></a>
-<span class="sourceLineNo">483</span>  /**<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   * Clean all existing listeners<a name="line.484"></a>
-<span class="sourceLineNo">485</span>   */<a name="line.485"></a>
-<span class="sourceLineNo">486</span>  public void unregisterAllListeners() {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    listeners.clear();<a name="line.487"></a>
-<span class="sourceLineNo">488</span>  }<a name="line.488"></a>
-<span class="sourceLineNo">489</span><a name="line.489"></a>
-<span class="sourceLineNo">490</span>  /**<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   * Get a copy of current registered listeners<a name="line.491"></a>
-<span class="sourceLineNo">492</span>   */<a name="line.492"></a>
-<span class="sourceLineNo">493</span>  public List&lt;ZooKeeperListener&gt; getListeners() {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    return new ArrayList&lt;ZooKeeperListener&gt;(listeners);<a name="line.494"></a>
+<span class="sourceLineNo">339</span>  <a name="line.339"></a>
+<span class="sourceLineNo">340</span>  /*<a name="line.340"></a>
+<span class="sourceLineNo">341</span>   * Validate whether ACL set for all superusers.<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   */<a name="line.342"></a>
+<span class="sourceLineNo">343</span>  private boolean checkACLForSuperUsers(String[] superUsers, List&lt;ACL&gt; acls) {<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    for (String user : superUsers) {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      boolean hasAccess = false;<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      // TODO: Validate super group members also when ZK supports setting node ACL for groups.<a name="line.346"></a>
+<span class="sourceLineNo">347</span>      if (!user.startsWith(AuthUtil.GROUP_PREFIX)) {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>        for (ACL acl : acls) {<a name="line.348"></a>
+<span class="sourceLineNo">349</span>          if (user.equals(acl.getId().getId())) {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>            if (acl.getPerms() == Perms.ALL) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>              hasAccess = true;<a name="line.351"></a>
+<span class="sourceLineNo">352</span>            } else {<a name="line.352"></a>
+<span class="sourceLineNo">353</span>              if (LOG.isDebugEnabled()) {<a name="line.353"></a>
+<span class="sourceLineNo">354</span>                LOG.debug(String.format(<a name="line.354"></a>
+<span class="sourceLineNo">355</span>                  "superuser '%s' does not have correct permissions: have %0x, want %0x",<a name="line.355"></a>
+<span class="sourceLineNo">356</span>                  acl.getId().getId(), acl.getPerms(), Perms.ALL));<a name="line.356"></a>
+<span class="sourceLineNo">357</span>              }<a name="line.357"></a>
+<span class="sourceLineNo">358</span>            }<a name="line.358"></a>
+<span class="sourceLineNo">359</span>            break;<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>        if (!hasAccess) {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>          return false;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>        }<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      }<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    }<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    return true;<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  }<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  <a name="line.369"></a>
+<span class="sourceLineNo">370</span>  /*<a name="line.370"></a>
+<span class="sourceLineNo">371</span>   * Validate whether ACL ID is superuser.<a name="line.371"></a>
+<span class="sourceLineNo">372</span>   */<a name="line.372"></a>
+<span class="sourceLineNo">373</span>  public static boolean isSuperUserId(String[] superUsers, Id id) {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    for (String user : superUsers) {<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      // TODO: Validate super group members also when ZK supports setting node ACL for groups.<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      if (!user.startsWith(AuthUtil.GROUP_PREFIX) &amp;&amp; new Id("sasl", user).equals(id)) {<a name="line.376"></a>
+<span class="sourceLineNo">377</span>        return true;<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      }<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    }<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    return false;<a name="line.380"></a>
+<span class="sourceLineNo">381</span>  }<a name="line.381"></a>
+<span class="sourceLineNo">382</span><a name="line.382"></a>
+<span class="sourceLineNo">383</span>  @Override<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  public String toString() {<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    return this.identifier + ", quorum=" + quorum + ", baseZNode=" + baseZNode;<a name="line.385"></a>
+<span class="sourceLineNo">386</span>  }<a name="line.386"></a>
+<span class="sourceLineNo">387</span><a name="line.387"></a>
+<span class="sourceLineNo">388</span>  /**<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   * Adds this instance's identifier as a prefix to the passed &lt;code&gt;str&lt;/code&gt;<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   * @param str String to amend.<a name="line.390"></a>
+<span class="sourceLineNo">391</span>   * @return A new string with this instance's identifier as prefix: e.g.<a name="line.391"></a>
+<span class="sourceLineNo">392</span>   * if passed 'hello world', the returned string could be<a name="line.392"></a>
+<span class="sourceLineNo">393</span>   */<a name="line.393"></a>
+<span class="sourceLineNo">394</span>  public String prefix(final String str) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    return this.toString() + " " + str;<a name="line.395"></a>
+<span class="sourceLineNo">396</span>  }<a name="line.396"></a>
+<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">398</span>  /**<a name="line.398"></a>
+<span class="sourceLineNo">399</span>   * Set the local variable node names using the specified configuration.<a name="line.399"></a>
+<span class="sourceLineNo">400</span>   */<a name="line.400"></a>
+<span class="sourceLineNo">401</span>  private void setNodeNames(Configuration conf) {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    baseZNode = conf.get(HConstants.ZOOKEEPER_ZNODE_PARENT,<a name="line.402"></a>
+<span class="sourceLineNo">403</span>        HConstants.DEFAULT_ZOOKEEPER_ZNODE_PARENT);<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    metaReplicaZnodes.put(0, ZKUtil.joinZNode(baseZNode,<a name="line.404"></a>
+<span class="sourceLineNo">405</span>           conf.get("zookeeper.znode.metaserver", "meta-region-server")));<a name="line.405"></a>
+<span class="sourceLineNo">406</span>    int numMetaReplicas = conf.getInt(HConstants.META_REPLICAS_NUM,<a name="line.406"></a>
+<span class="sourceLineNo">407</span>            HConstants.DEFAULT_META_REPLICA_NUM);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    for (int i = 1; i &lt; numMetaReplicas; i++) {<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      String str = ZKUtil.joinZNode(baseZNode,<a name="line.409"></a>
+<span class="sourceLineNo">410</span>        conf.get("zookeeper.znode.metaserver", "meta-region-server") + "-" + i);<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      metaReplicaZnodes.put(i, str);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    }<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    rsZNode = ZKUtil.joinZNode(baseZNode,<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        conf.get("zookeeper.znode.rs", "rs"));<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    drainingZNode = ZKUtil.joinZNode(baseZNode,<a name="line.415"></a>
+<span class="sourceLineNo">416</span>        conf.get("zookeeper.znode.draining.rs", "draining"));<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    masterAddressZNode = ZKUtil.joinZNode(baseZNode,<a name="line.417"></a>
+<span class="sourceLineNo">418</span>        conf.get("zookeeper.znode.master", "master"));<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    backupMasterAddressesZNode = ZKUtil.joinZNode(baseZNode,<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        conf.get("zookeeper.znode.backup.masters", "backup-masters"));<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    clusterStateZNode = ZKUtil.joinZNode(baseZNode,<a name="line.421"></a>
+<span class="sourceLineNo">422</span>        conf.get("zookeeper.znode.state", "running"));<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    tableZNode = ZKUtil.joinZNode(baseZNode,<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        conf.get("zookeeper.znode.tableEnableDisable", "table"));<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    clusterIdZNode = ZKUtil.joinZNode(baseZNode,<a name="line.425"></a>
+<span class="sourceLineNo">426</span>        conf.get("zookeeper.znode.clusterId", "hbaseid"));<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    splitLogZNode = ZKUtil.joinZNode(baseZNode,<a name="line.427"></a>
+<span class="sourceLineNo">428</span>        conf.get("zookeeper.znode.splitlog", HConstants.SPLIT_LOGDIR_NAME));<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    balancerZNode = ZKUtil.joinZNode(baseZNode,<a name="line.429"></a>
+<span class="sourceLineNo">430</span>        conf.get("zookeeper.znode.balancer", "balancer"));<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    regionNormalizerZNode = ZKUtil.joinZNode(baseZNode,<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      conf.get("zookeeper.znode.regionNormalizer", "normalizer"));<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    tableLockZNode = ZKUtil.joinZNode(baseZNode,<a name="line.433"></a>
+<span class="sourceLineNo">434</span>        conf.get("zookeeper.znode.tableLock", "table-lock"));<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    recoveringRegionsZNode = ZKUtil.joinZNode(baseZNode,<a name="line.435"></a>
+<span class="sourceLineNo">436</span>        conf.get("zookeeper.znode.recovering.regions", "recovering-regions"));<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    namespaceZNode = ZKUtil.joinZNode(baseZNode,<a name="line.437"></a>
+<span class="sourceLineNo">438</span>        conf.get("zookeeper.znode.namespace", "namespace"));<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>   * Is the znode of any meta replica<a name="line.442"></a>
+<span class="sourceLineNo">443</span>   * @param node<a name="line.443"></a>
+<span class="sourceLineNo">444</span>   * @return true or false<a name="line.444"></a>
+<span class="sourceLineNo">445</span>   */<a name="line.445"></a>
+<span class="sourceLineNo">446</span>  public boolean isAnyMetaReplicaZnode(String node) {<a name="line.446"></a>
+<span class="sourceLineNo">447</span>    if (metaReplicaZnodes.values().contains(node)) {<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      return true;<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    }<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    return false;<a name="line.450"></a>
+<span class="sourceLineNo">451</span>  }<a name="line.451"></a>
+<span class="sourceLineNo">452</span><a name="line.452"></a>
+<span class="sourceLineNo">453</span>  /**<a name="line.453"></a>
+<span class="sourceLineNo">454</span>   * Is it the default meta replica's znode<a name="line.454"></a>
+<span class="sourceLineNo">455</span>   * @param node<a name="line.455"></a>
+<span class="sourceLineNo">456</span>   * @return true or false<a name="line.456"></a>
+<span class="sourceLineNo">457</span>   */<a name="line.457"></a>
+<span class="sourceLineNo">458</span>  public boolean isDefaultMetaReplicaZnode(String node) {<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    if (getZNodeForReplica(HRegionInfo.DEFAULT_REPLICA_ID).equals(node)) {<a name="line.459"></a>
+<span class="sourceLineNo">460</span>      return true;<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    }<a name="line.461"></a>
+<span class="sourceLineNo">462</span>    return false;<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>   * Get the znodes corre

<TRUNCATED>

[17/23] hbase-site git commit: Published site at 2cf8af5bf1d501156cbb3b421cf75c1051ead7d9.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.BlockIterator.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.BlockIterator.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.BlockIterator.html
index 745e703..1587e5e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.BlockIterator.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.BlockIterator.html
@@ -1361,609 +1361,610 @@
 <span class="sourceLineNo">1353</span>    /** The filesystem used to access data */<a name="line.1353"></a>
 <span class="sourceLineNo">1354</span>    protected HFileSystem hfs;<a name="line.1354"></a>
 <span class="sourceLineNo">1355</span><a name="line.1355"></a>
-<span class="sourceLineNo">1356</span>    /** The path (if any) where this data is coming from */<a name="line.1356"></a>
-<span class="sourceLineNo">1357</span>    protected Path path;<a name="line.1357"></a>
-<span class="sourceLineNo">1358</span><a name="line.1358"></a>
-<span class="sourceLineNo">1359</span>    private final Lock streamLock = new ReentrantLock();<a name="line.1359"></a>
+<span class="sourceLineNo">1356</span>    private final Lock streamLock = new ReentrantLock();<a name="line.1356"></a>
+<span class="sourceLineNo">1357</span><a name="line.1357"></a>
+<span class="sourceLineNo">1358</span>    /** The default buffer size for our buffered streams */<a name="line.1358"></a>
+<span class="sourceLineNo">1359</span>    public static final int DEFAULT_BUFFER_SIZE = 1 &lt;&lt; 20;<a name="line.1359"></a>
 <span class="sourceLineNo">1360</span><a name="line.1360"></a>
-<span class="sourceLineNo">1361</span>    /** The default buffer size for our buffered streams */<a name="line.1361"></a>
-<span class="sourceLineNo">1362</span>    public static final int DEFAULT_BUFFER_SIZE = 1 &lt;&lt; 20;<a name="line.1362"></a>
-<span class="sourceLineNo">1363</span><a name="line.1363"></a>
-<span class="sourceLineNo">1364</span>    protected HFileContext fileContext;<a name="line.1364"></a>
-<span class="sourceLineNo">1365</span><a name="line.1365"></a>
-<span class="sourceLineNo">1366</span>    public FSReaderImpl(FSDataInputStreamWrapper stream, long fileSize, HFileSystem hfs, Path path,<a name="line.1366"></a>
-<span class="sourceLineNo">1367</span>        HFileContext fileContext) throws IOException {<a name="line.1367"></a>
-<span class="sourceLineNo">1368</span>      this.fileSize = fileSize;<a name="line.1368"></a>
-<span class="sourceLineNo">1369</span>      this.hfs = hfs;<a name="line.1369"></a>
-<span class="sourceLineNo">1370</span>      this.path = path;<a name="line.1370"></a>
-<span class="sourceLineNo">1371</span>      this.fileContext = fileContext;<a name="line.1371"></a>
-<span class="sourceLineNo">1372</span>      this.hdrSize = headerSize(fileContext.isUseHBaseChecksum());<a name="line.1372"></a>
-<span class="sourceLineNo">1373</span><a name="line.1373"></a>
-<span class="sourceLineNo">1374</span>      this.streamWrapper = stream;<a name="line.1374"></a>
-<span class="sourceLineNo">1375</span>      // Older versions of HBase didn't support checksum.<a name="line.1375"></a>
-<span class="sourceLineNo">1376</span>      this.streamWrapper.prepareForBlockReader(!fileContext.isUseHBaseChecksum());<a name="line.1376"></a>
-<span class="sourceLineNo">1377</span>      defaultDecodingCtx = new HFileBlockDefaultDecodingContext(fileContext);<a name="line.1377"></a>
-<span class="sourceLineNo">1378</span>      encodedBlockDecodingCtx = defaultDecodingCtx;<a name="line.1378"></a>
-<span class="sourceLineNo">1379</span>    }<a name="line.1379"></a>
-<span class="sourceLineNo">1380</span><a name="line.1380"></a>
-<span class="sourceLineNo">1381</span>    /**<a name="line.1381"></a>
-<span class="sourceLineNo">1382</span>     * A constructor that reads files with the latest minor version.<a name="line.1382"></a>
-<span class="sourceLineNo">1383</span>     * This is used by unit tests only.<a name="line.1383"></a>
-<span class="sourceLineNo">1384</span>     */<a name="line.1384"></a>
-<span class="sourceLineNo">1385</span>    FSReaderImpl(FSDataInputStream istream, long fileSize, HFileContext fileContext)<a name="line.1385"></a>
-<span class="sourceLineNo">1386</span>    throws IOException {<a name="line.1386"></a>
-<span class="sourceLineNo">1387</span>      this(new FSDataInputStreamWrapper(istream), fileSize, null, null, fileContext);<a name="line.1387"></a>
-<span class="sourceLineNo">1388</span>    }<a name="line.1388"></a>
-<span class="sourceLineNo">1389</span><a name="line.1389"></a>
-<span class="sourceLineNo">1390</span>    public BlockIterator blockRange(final long startOffset, final long endOffset) {<a name="line.1390"></a>
-<span class="sourceLineNo">1391</span>      final FSReader owner = this; // handle for inner class<a name="line.1391"></a>
-<span class="sourceLineNo">1392</span>      return new BlockIterator() {<a name="line.1392"></a>
-<span class="sourceLineNo">1393</span>        private long offset = startOffset;<a name="line.1393"></a>
-<span class="sourceLineNo">1394</span><a name="line.1394"></a>
-<span class="sourceLineNo">1395</span>        @Override<a name="line.1395"></a>
-<span class="sourceLineNo">1396</span>        public HFileBlock nextBlock() throws IOException {<a name="line.1396"></a>
-<span class="sourceLineNo">1397</span>          if (offset &gt;= endOffset)<a name="line.1397"></a>
-<span class="sourceLineNo">1398</span>            return null;<a name="line.1398"></a>
-<span class="sourceLineNo">1399</span>          HFileBlock b = readBlockData(offset, -1, -1, false);<a name="line.1399"></a>
-<span class="sourceLineNo">1400</span>          offset += b.getOnDiskSizeWithHeader();<a name="line.1400"></a>
-<span class="sourceLineNo">1401</span>          return b.unpack(fileContext, owner);<a name="line.1401"></a>
-<span class="sourceLineNo">1402</span>        }<a name="line.1402"></a>
-<span class="sourceLineNo">1403</span><a name="line.1403"></a>
-<span class="sourceLineNo">1404</span>        @Override<a name="line.1404"></a>
-<span class="sourceLineNo">1405</span>        public HFileBlock nextBlockWithBlockType(BlockType blockType)<a name="line.1405"></a>
-<span class="sourceLineNo">1406</span>            throws IOException {<a name="line.1406"></a>
-<span class="sourceLineNo">1407</span>          HFileBlock blk = nextBlock();<a name="line.1407"></a>
-<span class="sourceLineNo">1408</span>          if (blk.getBlockType() != blockType) {<a name="line.1408"></a>
-<span class="sourceLineNo">1409</span>            throw new IOException("Expected block of type " + blockType<a name="line.1409"></a>
-<span class="sourceLineNo">1410</span>                + " but found " + blk.getBlockType());<a name="line.1410"></a>
-<span class="sourceLineNo">1411</span>          }<a name="line.1411"></a>
-<span class="sourceLineNo">1412</span>          return blk;<a name="line.1412"></a>
-<span class="sourceLineNo">1413</span>        }<a name="line.1413"></a>
-<span class="sourceLineNo">1414</span>      };<a name="line.1414"></a>
-<span class="sourceLineNo">1415</span>    }<a name="line.1415"></a>
-<span class="sourceLineNo">1416</span><a name="line.1416"></a>
-<span class="sourceLineNo">1417</span>    /**<a name="line.1417"></a>
-<span class="sourceLineNo">1418</span>     * Does a positional read or a seek and read into the given buffer. Returns<a name="line.1418"></a>
-<span class="sourceLineNo">1419</span>     * the on-disk size of the next block, or -1 if it could not be determined.<a name="line.1419"></a>
-<span class="sourceLineNo">1420</span>     *<a name="line.1420"></a>
-<span class="sourceLineNo">1421</span>     * @param dest destination buffer<a name="line.1421"></a>
-<span class="sourceLineNo">1422</span>     * @param destOffset offset in the destination buffer<a name="line.1422"></a>
-<span class="sourceLineNo">1423</span>     * @param size size of the block to be read<a name="line.1423"></a>
-<span class="sourceLineNo">1424</span>     * @param peekIntoNextBlock whether to read the next block's on-disk size<a name="line.1424"></a>
-<span class="sourceLineNo">1425</span>     * @param fileOffset position in the stream to read at<a name="line.1425"></a>
-<span class="sourceLineNo">1426</span>     * @param pread whether we should do a positional read<a name="line.1426"></a>
-<span class="sourceLineNo">1427</span>     * @param istream The input source of data<a name="line.1427"></a>
-<span class="sourceLineNo">1428</span>     * @return the on-disk size of the next block with header size included, or<a name="line.1428"></a>
-<span class="sourceLineNo">1429</span>     *         -1 if it could not be determined<a name="line.1429"></a>
-<span class="sourceLineNo">1430</span>     * @throws IOException<a name="line.1430"></a>
-<span class="sourceLineNo">1431</span>     */<a name="line.1431"></a>
-<span class="sourceLineNo">1432</span>    protected int readAtOffset(FSDataInputStream istream,<a name="line.1432"></a>
-<span class="sourceLineNo">1433</span>        byte[] dest, int destOffset, int size,<a name="line.1433"></a>
-<span class="sourceLineNo">1434</span>        boolean peekIntoNextBlock, long fileOffset, boolean pread)<a name="line.1434"></a>
-<span class="sourceLineNo">1435</span>        throws IOException {<a name="line.1435"></a>
-<span class="sourceLineNo">1436</span>      if (peekIntoNextBlock &amp;&amp;<a name="line.1436"></a>
-<span class="sourceLineNo">1437</span>          destOffset + size + hdrSize &gt; dest.length) {<a name="line.1437"></a>
-<span class="sourceLineNo">1438</span>        // We are asked to read the next block's header as well, but there is<a name="line.1438"></a>
-<span class="sourceLineNo">1439</span>        // not enough room in the array.<a name="line.1439"></a>
-<span class="sourceLineNo">1440</span>        throw new IOException("Attempted to read " + size + " bytes and " +<a name="line.1440"></a>
-<span class="sourceLineNo">1441</span>            hdrSize + " bytes of next header into a " + dest.length +<a name="line.1441"></a>
-<span class="sourceLineNo">1442</span>            "-byte array at offset " + destOffset);<a name="line.1442"></a>
-<span class="sourceLineNo">1443</span>      }<a name="line.1443"></a>
-<span class="sourceLineNo">1444</span><a name="line.1444"></a>
-<span class="sourceLineNo">1445</span>      if (!pread &amp;&amp; streamLock.tryLock()) {<a name="line.1445"></a>
-<span class="sourceLineNo">1446</span>        // Seek + read. Better for scanning.<a name="line.1446"></a>
-<span class="sourceLineNo">1447</span>        try {<a name="line.1447"></a>
-<span class="sourceLineNo">1448</span>          istream.seek(fileOffset);<a name="line.1448"></a>
-<span class="sourceLineNo">1449</span><a name="line.1449"></a>
-<span class="sourceLineNo">1450</span>          long realOffset = istream.getPos();<a name="line.1450"></a>
-<span class="sourceLineNo">1451</span>          if (realOffset != fileOffset) {<a name="line.1451"></a>
-<span class="sourceLineNo">1452</span>            throw new IOException("Tried to seek to " + fileOffset + " to "<a name="line.1452"></a>
-<span class="sourceLineNo">1453</span>                + "read " + size + " bytes, but pos=" + realOffset<a name="line.1453"></a>
-<span class="sourceLineNo">1454</span>                + " after seek");<a name="line.1454"></a>
-<span class="sourceLineNo">1455</span>          }<a name="line.1455"></a>
-<span class="sourceLineNo">1456</span><a name="line.1456"></a>
-<span class="sourceLineNo">1457</span>          if (!peekIntoNextBlock) {<a name="line.1457"></a>
-<span class="sourceLineNo">1458</span>            IOUtils.readFully(istream, dest, destOffset, size);<a name="line.1458"></a>
-<span class="sourceLineNo">1459</span>            return -1;<a name="line.1459"></a>
-<span class="sourceLineNo">1460</span>          }<a name="line.1460"></a>
-<span class="sourceLineNo">1461</span><a name="line.1461"></a>
-<span class="sourceLineNo">1462</span>          // Try to read the next block header.<a name="line.1462"></a>
-<span class="sourceLineNo">1463</span>          if (!readWithExtra(istream, dest, destOffset, size, hdrSize))<a name="line.1463"></a>
-<span class="sourceLineNo">1464</span>            return -1;<a name="line.1464"></a>
-<span class="sourceLineNo">1465</span>        } finally {<a name="line.1465"></a>
-<span class="sourceLineNo">1466</span>          streamLock.unlock();<a name="line.1466"></a>
-<span class="sourceLineNo">1467</span>        }<a name="line.1467"></a>
-<span class="sourceLineNo">1468</span>      } else {<a name="line.1468"></a>
-<span class="sourceLineNo">1469</span>        // Positional read. Better for random reads; or when the streamLock is already locked.<a name="line.1469"></a>
-<span class="sourceLineNo">1470</span>        int extraSize = peekIntoNextBlock ? hdrSize : 0;<a name="line.1470"></a>
-<span class="sourceLineNo">1471</span>        if (!positionalReadWithExtra(istream, fileOffset, dest, destOffset,<a name="line.1471"></a>
-<span class="sourceLineNo">1472</span>            size, extraSize)) {<a name="line.1472"></a>
-<span class="sourceLineNo">1473</span>          return -1;<a name="line.1473"></a>
-<span class="sourceLineNo">1474</span>        }<a name="line.1474"></a>
-<span class="sourceLineNo">1475</span>      }<a name="line.1475"></a>
-<span class="sourceLineNo">1476</span><a name="line.1476"></a>
-<span class="sourceLineNo">1477</span>      assert peekIntoNextBlock;<a name="line.1477"></a>
-<span class="sourceLineNo">1478</span>      return Bytes.toInt(dest, destOffset + size + BlockType.MAGIC_LENGTH) + hdrSize;<a name="line.1478"></a>
-<span class="sourceLineNo">1479</span>    }<a name="line.1479"></a>
-<span class="sourceLineNo">1480</span><a name="line.1480"></a>
-<span class="sourceLineNo">1481</span>    /**<a name="line.1481"></a>
-<span class="sourceLineNo">1482</span>     * Reads a version 2 block (version 1 blocks not supported and not expected). Tries to do as<a name="line.1482"></a>
-<span class="sourceLineNo">1483</span>     * little memory allocation as possible, using the provided on-disk size.<a name="line.1483"></a>
-<span class="sourceLineNo">1484</span>     *<a name="line.1484"></a>
-<span class="sourceLineNo">1485</span>     * @param offset the offset in the stream to read at<a name="line.1485"></a>
-<span class="sourceLineNo">1486</span>     * @param onDiskSizeWithHeaderL the on-disk size of the block, including<a name="line.1486"></a>
-<span class="sourceLineNo">1487</span>     *          the header, or -1 if unknown<a name="line.1487"></a>
-<span class="sourceLineNo">1488</span>     * @param uncompressedSize the uncompressed size of the the block. Always<a name="line.1488"></a>
-<span class="sourceLineNo">1489</span>     *          expected to be -1. This parameter is only used in version 1.<a name="line.1489"></a>
-<span class="sourceLineNo">1490</span>     * @param pread whether to use a positional read<a name="line.1490"></a>
-<span class="sourceLineNo">1491</span>     */<a name="line.1491"></a>
-<span class="sourceLineNo">1492</span>    @Override<a name="line.1492"></a>
-<span class="sourceLineNo">1493</span>    public HFileBlock readBlockData(long offset, long onDiskSizeWithHeaderL,<a name="line.1493"></a>
-<span class="sourceLineNo">1494</span>        int uncompressedSize, boolean pread)<a name="line.1494"></a>
-<span class="sourceLineNo">1495</span>    throws IOException {<a name="line.1495"></a>
-<span class="sourceLineNo">1496</span><a name="line.1496"></a>
-<span class="sourceLineNo">1497</span>      // get a copy of the current state of whether to validate<a name="line.1497"></a>
-<span class="sourceLineNo">1498</span>      // hbase checksums or not for this read call. This is not<a name="line.1498"></a>
-<span class="sourceLineNo">1499</span>      // thread-safe but the one constaint is that if we decide<a name="line.1499"></a>
-<span class="sourceLineNo">1500</span>      // to skip hbase checksum verification then we are<a name="line.1500"></a>
-<span class="sourceLineNo">1501</span>      // guaranteed to use hdfs checksum verification.<a name="line.1501"></a>
-<span class="sourceLineNo">1502</span>      boolean doVerificationThruHBaseChecksum = streamWrapper.shouldUseHBaseChecksum();<a name="line.1502"></a>
-<span class="sourceLineNo">1503</span>      FSDataInputStream is = streamWrapper.getStream(doVerificationThruHBaseChecksum);<a name="line.1503"></a>
-<span class="sourceLineNo">1504</span><a name="line.1504"></a>
-<span class="sourceLineNo">1505</span>      HFileBlock blk = readBlockDataInternal(is, offset,<a name="line.1505"></a>
-<span class="sourceLineNo">1506</span>                         onDiskSizeWithHeaderL,<a name="line.1506"></a>
-<span class="sourceLineNo">1507</span>                         uncompressedSize, pread,<a name="line.1507"></a>
-<span class="sourceLineNo">1508</span>                         doVerificationThruHBaseChecksum);<a name="line.1508"></a>
-<span class="sourceLineNo">1509</span>      if (blk == null) {<a name="line.1509"></a>
-<span class="sourceLineNo">1510</span>        HFile.LOG.warn("HBase checksum verification failed for file " +<a name="line.1510"></a>
-<span class="sourceLineNo">1511</span>                       path + " at offset " +<a name="line.1511"></a>
-<span class="sourceLineNo">1512</span>                       offset + " filesize " + fileSize +<a name="line.1512"></a>
-<span class="sourceLineNo">1513</span>                       ". Retrying read with HDFS checksums turned on...");<a name="line.1513"></a>
-<span class="sourceLineNo">1514</span><a name="line.1514"></a>
-<span class="sourceLineNo">1515</span>        if (!doVerificationThruHBaseChecksum) {<a name="line.1515"></a>
-<span class="sourceLineNo">1516</span>          String msg = "HBase checksum verification failed for file " +<a name="line.1516"></a>
-<span class="sourceLineNo">1517</span>                       path + " at offset " +<a name="line.1517"></a>
-<span class="sourceLineNo">1518</span>                       offset + " filesize " + fileSize +<a name="line.1518"></a>
-<span class="sourceLineNo">1519</span>                       " but this cannot happen because doVerify is " +<a name="line.1519"></a>
-<span class="sourceLineNo">1520</span>                       doVerificationThruHBaseChecksum;<a name="line.1520"></a>
-<span class="sourceLineNo">1521</span>          HFile.LOG.warn(msg);<a name="line.1521"></a>
-<span class="sourceLineNo">1522</span>          throw new IOException(msg); // cannot happen case here<a name="line.1522"></a>
-<span class="sourceLineNo">1523</span>        }<a name="line.1523"></a>
-<span class="sourceLineNo">1524</span>        HFile.checksumFailures.incrementAndGet(); // update metrics<a name="line.1524"></a>
-<span class="sourceLineNo">1525</span><a name="line.1525"></a>
-<span class="sourceLineNo">1526</span>        // If we have a checksum failure, we fall back into a mode where<a name="line.1526"></a>
-<span class="sourceLineNo">1527</span>        // the next few reads use HDFS level checksums. We aim to make the<a name="line.1527"></a>
-<span class="sourceLineNo">1528</span>        // next CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD reads avoid<a name="line.1528"></a>
-<span class="sourceLineNo">1529</span>        // hbase checksum verification, but since this value is set without<a name="line.1529"></a>
-<span class="sourceLineNo">1530</span>        // holding any locks, it can so happen that we might actually do<a name="line.1530"></a>
-<span class="sourceLineNo">1531</span>        // a few more than precisely this number.<a name="line.1531"></a>
-<span class="sourceLineNo">1532</span>        is = this.streamWrapper.fallbackToFsChecksum(CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD);<a name="line.1532"></a>
-<span class="sourceLineNo">1533</span>        doVerificationThruHBaseChecksum = false;<a name="line.1533"></a>
-<span class="sourceLineNo">1534</span>        blk = readBlockDataInternal(is, offset, onDiskSizeWithHeaderL,<a name="line.1534"></a>
-<span class="sourceLineNo">1535</span>                                    uncompressedSize, pread,<a name="line.1535"></a>
-<span class="sourceLineNo">1536</span>                                    doVerificationThruHBaseChecksum);<a name="line.1536"></a>
-<span class="sourceLineNo">1537</span>        if (blk != null) {<a name="line.1537"></a>
-<span class="sourceLineNo">1538</span>          HFile.LOG.warn("HDFS checksum verification suceeded for file " +<a name="line.1538"></a>
-<span class="sourceLineNo">1539</span>                         path + " at offset " +<a name="line.1539"></a>
-<span class="sourceLineNo">1540</span>                         offset + " filesize " + fileSize);<a name="line.1540"></a>
-<span class="sourceLineNo">1541</span>        }<a name="line.1541"></a>
-<span class="sourceLineNo">1542</span>      }<a name="line.1542"></a>
-<span class="sourceLineNo">1543</span>      if (blk == null &amp;&amp; !doVerificationThruHBaseChecksum) {<a name="line.1543"></a>
-<span class="sourceLineNo">1544</span>        String msg = "readBlockData failed, possibly due to " +<a name="line.1544"></a>
-<span class="sourceLineNo">1545</span>                     "checksum verification failed for file " + path +<a name="line.1545"></a>
-<span class="sourceLineNo">1546</span>                     " at offset " + offset + " filesize " + fileSize;<a name="line.1546"></a>
-<span class="sourceLineNo">1547</span>        HFile.LOG.warn(msg);<a name="line.1547"></a>
-<span class="sourceLineNo">1548</span>        throw new IOException(msg);<a name="line.1548"></a>
-<span class="sourceLineNo">1549</span>      }<a name="line.1549"></a>
-<span class="sourceLineNo">1550</span><a name="line.1550"></a>
-<span class="sourceLineNo">1551</span>      // If there is a checksum mismatch earlier, then retry with<a name="line.1551"></a>
-<span class="sourceLineNo">1552</span>      // HBase checksums switched off and use HDFS checksum verification.<a name="line.1552"></a>
-<span class="sourceLineNo">1553</span>      // This triggers HDFS to detect and fix corrupt replicas. The<a name="line.1553"></a>
-<span class="sourceLineNo">1554</span>      // next checksumOffCount read requests will use HDFS checksums.<a name="line.1554"></a>
-<span class="sourceLineNo">1555</span>      // The decrementing of this.checksumOffCount is not thread-safe,<a name="line.1555"></a>
-<span class="sourceLineNo">1556</span>      // but it is harmless because eventually checksumOffCount will be<a name="line.1556"></a>
-<span class="sourceLineNo">1557</span>      // a negative number.<a name="line.1557"></a>
-<span class="sourceLineNo">1558</span>      streamWrapper.checksumOk();<a name="line.1558"></a>
-<span class="sourceLineNo">1559</span>      return blk;<a name="line.1559"></a>
-<span class="sourceLineNo">1560</span>    }<a name="line.1560"></a>
-<span class="sourceLineNo">1561</span><a name="line.1561"></a>
-<span class="sourceLineNo">1562</span>    /**<a name="line.1562"></a>
-<span class="sourceLineNo">1563</span>     * Reads a version 2 block.<a name="line.1563"></a>
-<span class="sourceLineNo">1564</span>     *<a name="line.1564"></a>
-<span class="sourceLineNo">1565</span>     * @param offset the offset in the stream to read at<a name="line.1565"></a>
-<span class="sourceLineNo">1566</span>     * @param onDiskSizeWithHeaderL the on-disk size of the block, including<a name="line.1566"></a>
-<span class="sourceLineNo">1567</span>     *          the header, or -1 if unknown<a name="line.1567"></a>
-<span class="sourceLineNo">1568</span>     * @param uncompressedSize the uncompressed size of the the block. Always<a name="line.1568"></a>
-<span class="sourceLineNo">1569</span>     *          expected to be -1. This parameter is only used in version 1.<a name="line.1569"></a>
-<span class="sourceLineNo">1570</span>     * @param pread whether to use a positional read<a name="line.1570"></a>
-<span class="sourceLineNo">1571</span>     * @param verifyChecksum Whether to use HBase checksums.<a name="line.1571"></a>
-<span class="sourceLineNo">1572</span>     *        If HBase checksum is switched off, then use HDFS checksum.<a name="line.1572"></a>
-<span class="sourceLineNo">1573</span>     * @return the HFileBlock or null if there is a HBase checksum mismatch<a name="line.1573"></a>
-<span class="sourceLineNo">1574</span>     */<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span>    private HFileBlock readBlockDataInternal(FSDataInputStream is, long offset,<a name="line.1575"></a>
-<span class="sourceLineNo">1576</span>        long onDiskSizeWithHeaderL, int uncompressedSize, boolean pread,<a name="line.1576"></a>
-<span class="sourceLineNo">1577</span>        boolean verifyChecksum)<a name="line.1577"></a>
-<span class="sourceLineNo">1578</span>    throws IOException {<a name="line.1578"></a>
-<span class="sourceLineNo">1579</span>      if (offset &lt; 0) {<a name="line.1579"></a>
-<span class="sourceLineNo">1580</span>        throw new IOException("Invalid offset=" + offset + " trying to read "<a name="line.1580"></a>
-<span class="sourceLineNo">1581</span>            + "block (onDiskSize=" + onDiskSizeWithHeaderL<a name="line.1581"></a>
-<span class="sourceLineNo">1582</span>            + ", uncompressedSize=" + uncompressedSize + ")");<a name="line.1582"></a>
-<span class="sourceLineNo">1583</span>      }<a name="line.1583"></a>
-<span class="sourceLineNo">1584</span><a name="line.1584"></a>
-<span class="sourceLineNo">1585</span>      if (uncompressedSize != -1) {<a name="line.1585"></a>
-<span class="sourceLineNo">1586</span>        throw new IOException("Version 2 block reader API does not need " +<a name="line.1586"></a>
-<span class="sourceLineNo">1587</span>            "the uncompressed size parameter");<a name="line.1587"></a>
-<span class="sourceLineNo">1588</span>      }<a name="line.1588"></a>
-<span class="sourceLineNo">1589</span><a name="line.1589"></a>
-<span class="sourceLineNo">1590</span>      if ((onDiskSizeWithHeaderL &lt; hdrSize &amp;&amp; onDiskSizeWithHeaderL != -1)<a name="line.1590"></a>
-<span class="sourceLineNo">1591</span>          || onDiskSizeWithHeaderL &gt;= Integer.MAX_VALUE) {<a name="line.1591"></a>
-<span class="sourceLineNo">1592</span>        throw new IOException("Invalid onDisksize=" + onDiskSizeWithHeaderL<a name="line.1592"></a>
-<span class="sourceLineNo">1593</span>            + ": expected to be at least " + hdrSize<a name="line.1593"></a>
-<span class="sourceLineNo">1594</span>            + " and at most " + Integer.MAX_VALUE + ", or -1 (offset="<a name="line.1594"></a>
-<span class="sourceLineNo">1595</span>            + offset + ", uncompressedSize=" + uncompressedSize + ")");<a name="line.1595"></a>
-<span class="sourceLineNo">1596</span>      }<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span><a name="line.1597"></a>
-<span class="sourceLineNo">1598</span>      int onDiskSizeWithHeader = (int) onDiskSizeWithHeaderL;<a name="line.1598"></a>
-<span class="sourceLineNo">1599</span>      // See if we can avoid reading the header. This is desirable, because<a name="line.1599"></a>
-<span class="sourceLineNo">1600</span>      // we will not incur a backward seek operation if we have already<a name="line.1600"></a>
-<span class="sourceLineNo">1601</span>      // read this block's header as part of the previous read's look-ahead.<a name="line.1601"></a>
-<span class="sourceLineNo">1602</span>      // And we also want to skip reading the header again if it has already<a name="line.1602"></a>
-<span class="sourceLineNo">1603</span>      // been read.<a name="line.1603"></a>
-<span class="sourceLineNo">1604</span>      // TODO: How often does this optimization fire? Has to be same thread so the thread local<a name="line.1604"></a>
-<span class="sourceLineNo">1605</span>      // is pertinent and we have to be reading next block as in a big scan.<a name="line.1605"></a>
-<span class="sourceLineNo">1606</span>      PrefetchedHeader prefetchedHeader = prefetchedHeaderForThread.get();<a name="line.1606"></a>
-<span class="sourceLineNo">1607</span>      ByteBuffer headerBuf = prefetchedHeader.offset == offset? prefetchedHeader.buf: null;<a name="line.1607"></a>
-<span class="sourceLineNo">1608</span><a name="line.1608"></a>
-<span class="sourceLineNo">1609</span>      // Allocate enough space to fit the next block's header too.<a name="line.1609"></a>
-<span class="sourceLineNo">1610</span>      int nextBlockOnDiskSize = 0;<a name="line.1610"></a>
-<span class="sourceLineNo">1611</span>      byte[] onDiskBlock = null;<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span><a name="line.1612"></a>
-<span class="sourceLineNo">1613</span>      HFileBlock b = null;<a name="line.1613"></a>
-<span class="sourceLineNo">1614</span>      if (onDiskSizeWithHeader &gt; 0) {<a name="line.1614"></a>
-<span class="sourceLineNo">1615</span>        // We know the total on-disk size. Read the entire block into memory,<a name="line.1615"></a>
-<span class="sourceLineNo">1616</span>        // then parse the header. This code path is used when<a name="line.1616"></a>
-<span class="sourceLineNo">1617</span>        // doing a random read operation relying on the block index, as well as<a name="line.1617"></a>
-<span class="sourceLineNo">1618</span>        // when the client knows the on-disk size from peeking into the next<a name="line.1618"></a>
-<span class="sourceLineNo">1619</span>        // block's header (e.g. this block's header) when reading the previous<a name="line.1619"></a>
-<span class="sourceLineNo">1620</span>        // block. This is the faster and more preferable case.<a name="line.1620"></a>
-<span class="sourceLineNo">1621</span><a name="line.1621"></a>
-<span class="sourceLineNo">1622</span>        // Size that we have to skip in case we have already read the header.<a name="line.1622"></a>
-<span class="sourceLineNo">1623</span>        int preReadHeaderSize = headerBuf == null ? 0 : hdrSize;<a name="line.1623"></a>
-<span class="sourceLineNo">1624</span>        onDiskBlock = new byte[onDiskSizeWithHeader + hdrSize]; // room for this block plus the<a name="line.1624"></a>
-<span class="sourceLineNo">1625</span>                                                                // next block's header<a name="line.1625"></a>
-<span class="sourceLineNo">1626</span>        nextBlockOnDiskSize = readAtOffset(is, onDiskBlock,<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span>            preReadHeaderSize, onDiskSizeWithHeader - preReadHeaderSize,<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span>            true, offset + preReadHeaderSize, pread);<a name="line.1628"></a>
-<span class="sourceLineNo">1629</span>        if (headerBuf != null) {<a name="line.1629"></a>
-<span class="sourceLineNo">1630</span>          // the header has been read when reading the previous block, copy<a name="line.1630"></a>
-<span class="sourceLineNo">1631</span>          // to this block's header<a name="line.1631"></a>
-<span class="sourceLineNo">1632</span>          // headerBuf is HBB<a name="line.1632"></a>
-<span class="sourceLineNo">1633</span>          assert headerBuf.hasArray();<a name="line.1633"></a>
-<span class="sourceLineNo">1634</span>          System.arraycopy(headerBuf.array(),<a name="line.1634"></a>
-<span class="sourceLineNo">1635</span>              headerBuf.arrayOffset(), onDiskBlock, 0, hdrSize);<a name="line.1635"></a>
-<span class="sourceLineNo">1636</span>        } else {<a name="line.1636"></a>
-<span class="sourceLineNo">1637</span>          headerBuf = ByteBuffer.wrap(onDiskBlock, 0, hdrSize);<a name="line.1637"></a>
-<span class="sourceLineNo">1638</span>        }<a name="line.1638"></a>
-<span class="sourceLineNo">1639</span>        // We know the total on-disk size but not the uncompressed size. Parse the header.<a name="line.1639"></a>
-<span class="sourceLineNo">1640</span>        try {<a name="line.1640"></a>
-<span class="sourceLineNo">1641</span>          // TODO: FIX!!! Expensive parse just to get a length<a name="line.1641"></a>
-<span class="sourceLineNo">1642</span>          b = new HFileBlock(headerBuf, fileContext.isUseHBaseChecksum());<a name="line.1642"></a>
-<span class="sourceLineNo">1643</span>        } catch (IOException ex) {<a name="line.1643"></a>
-<span class="sourceLineNo">1644</span>          // Seen in load testing. Provide comprehensive debug info.<a name="line.1644"></a>
-<span class="sourceLineNo">1645</span>          throw new IOException("Failed to read compressed block at "<a name="line.1645"></a>
-<span class="sourceLineNo">1646</span>              + offset<a name="line.1646"></a>
-<span class="sourceLineNo">1647</span>              + ", onDiskSizeWithoutHeader="<a name="line.1647"></a>
-<span class="sourceLineNo">1648</span>              + onDiskSizeWithHeader<a name="line.1648"></a>
-<span class="sourceLineNo">1649</span>              + ", preReadHeaderSize="<a name="line.1649"></a>
-<span class="sourceLineNo">1650</span>              + hdrSize<a name="line.1650"></a>
-<span class="sourceLineNo">1651</span>              + ", header.length="<a name="line.1651"></a>
-<span class="sourceLineNo">1652</span>              + prefetchedHeader.header.length<a name="line.1652"></a>
-<span class="sourceLineNo">1653</span>              + ", header bytes: "<a name="line.1653"></a>
-<span class="sourceLineNo">1654</span>              + Bytes.toStringBinary(prefetchedHeader.header, 0,<a name="line.1654"></a>
-<span class="sourceLineNo">1655</span>                  hdrSize), ex);<a name="line.1655"></a>
-<span class="sourceLineNo">1656</span>        }<a name="line.1656"></a>
-<span class="sourceLineNo">1657</span>        // if the caller specifies a onDiskSizeWithHeader, validate it.<a name="line.1657"></a>
-<span class="sourceLineNo">1658</span>        int onDiskSizeWithoutHeader = onDiskSizeWithHeader - hdrSize;<a name="line.1658"></a>
-<span class="sourceLineNo">1659</span>        assert onDiskSizeWithoutHeader &gt;= 0;<a name="line.1659"></a>
-<span class="sourceLineNo">1660</span>        b.validateOnDiskSizeWithoutHeader(onDiskSizeWithoutHeader);<a name="line.1660"></a>
-<span class="sourceLineNo">1661</span>      } else {<a name="line.1661"></a>
-<span class="sourceLineNo">1662</span>        // Check headerBuf to see if we have read this block's header as part of<a name="line.1662"></a>
-<span class="sourceLineNo">1663</span>        // reading the previous block. This is an optimization of peeking into<a name="line.1663"></a>
-<span class="sourceLineNo">1664</span>        // the next block's header (e.g.this block's header) when reading the<a name="line.1664"></a>
-<span class="sourceLineNo">1665</span>        // previous block. This is the faster and more preferable case. If the<a name="line.1665"></a>
-<span class="sourceLineNo">1666</span>        // header is already there, don't read the header again.<a name="line.1666"></a>
-<span class="sourceLineNo">1667</span><a name="line.1667"></a>
-<span class="sourceLineNo">1668</span>        // Unfortunately, we still have to do a separate read operation to<a name="line.1668"></a>
-<span class="sourceLineNo">1669</span>        // read the header.<a name="line.1669"></a>
-<span class="sourceLineNo">1670</span>        if (headerBuf == null) {<a name="line.1670"></a>
-<span class="sourceLineNo">1671</span>          // From the header, determine the on-disk size of the given hfile<a name="line.1671"></a>
-<span class="sourceLineNo">1672</span>          // block, and read the remaining data, thereby incurring two read<a name="line.1672"></a>
-<span class="sourceLineNo">1673</span>          // operations. This might happen when we are doing the first read<a name="line.1673"></a>
-<span class="sourceLineNo">1674</span>          // in a series of reads or a random read, and we don't have access<a name="line.1674"></a>
-<span class="sourceLineNo">1675</span>          // to the block index. This is costly and should happen very rarely.<a name="line.1675"></a>
-<span class="sourceLineNo">1676</span>          headerBuf = ByteBuffer.allocate(hdrSize);<a name="line.1676"></a>
-<span class="sourceLineNo">1677</span>          // headerBuf is HBB<a name="line.1677"></a>
-<span class="sourceLineNo">1678</span>          readAtOffset(is, headerBuf.array(), headerBuf.arrayOffset(),<a name="line.1678"></a>
-<span class="sourceLineNo">1679</span>              hdrSize, false, offset, pread);<a name="line.1679"></a>
-<span class="sourceLineNo">1680</span>        }<a name="line.1680"></a>
-<span class="sourceLineNo">1681</span>        // TODO: FIX!!! Expensive parse just to get a length<a name="line.1681"></a>
-<span class="sourceLineNo">1682</span>        b = new HFileBlock(headerBuf, fileContext.isUseHBaseChecksum());<a name="line.1682"></a>
-<span class="sourceLineNo">1683</span>        onDiskBlock = new byte[b.getOnDiskSizeWithHeader() + hdrSize];<a name="line.1683"></a>
-<span class="sourceLineNo">1684</span>        // headerBuf is HBB<a name="line.1684"></a>
-<span class="sourceLineNo">1685</span>        System.arraycopy(headerBuf.array(), headerBuf.arrayOffset(), onDiskBlock, 0, hdrSize);<a name="line.1685"></a>
-<span class="sourceLineNo">1686</span>        nextBlockOnDiskSize =<a name="line.1686"></a>
-<span class="sourceLineNo">1687</span>          readAtOffset(is, onDiskBlock, hdrSize, b.getOnDiskSizeWithHeader()<a name="line.1687"></a>
-<span class="sourceLineNo">1688</span>              - hdrSize, true, offset + hdrSize, pread);<a name="line.1688"></a>
-<span class="sourceLineNo">1689</span>        onDiskSizeWithHeader = b.onDiskSizeWithoutHeader + hdrSize;<a name="line.1689"></a>
-<span class="sourceLineNo">1690</span>      }<a name="line.1690"></a>
-<span class="sourceLineNo">1691</span><a name="line.1691"></a>
-<span class="sourceLineNo">1692</span>      if (!fileContext.isCompressedOrEncrypted()) {<a name="line.1692"></a>
-<span class="sourceLineNo">1693</span>        b.assumeUncompressed();<a name="line.1693"></a>
-<span class="sourceLineNo">1694</span>      }<a name="line.1694"></a>
-<span class="sourceLineNo">1695</span><a name="line.1695"></a>
-<span class="sourceLineNo">1696</span>      if (verifyChecksum &amp;&amp; !validateBlockChecksum(b, onDiskBlock, hdrSize)) {<a name="line.1696"></a>
-<span class="sourceLineNo">1697</span>        return null;             // checksum mismatch<a name="line.1697"></a>
-<span class="sourceLineNo">1698</span>      }<a name="line.1698"></a>
-<span class="sourceLineNo">1699</span><a name="line.1699"></a>
-<span class="sourceLineNo">1700</span>      // The onDiskBlock will become the headerAndDataBuffer for this block.<a name="line.1700"></a>
-<span class="sourceLineNo">1701</span>      // If nextBlockOnDiskSizeWithHeader is not zero, the onDiskBlock already<a name="line.1701"></a>
-<span class="sourceLineNo">1702</span>      // contains the header of next block, so no need to set next<a name="line.1702"></a>
-<span class="sourceLineNo">1703</span>      // block's header in it.<a name="line.1703"></a>
-<span class="sourceLineNo">1704</span>      b = new HFileBlock(ByteBuffer.wrap(onDiskBlock, 0, onDiskSizeWithHeader),<a name="line.1704"></a>
-<span class="sourceLineNo">1705</span>        this.fileContext.isUseHBaseChecksum());<a name="line.1705"></a>
-<span class="sourceLineNo">1706</span><a name="line.1706"></a>
-<span class="sourceLineNo">1707</span>      b.nextBlockOnDiskSizeWithHeader = nextBlockOnDiskSize;<a name="line.1707"></a>
-<span class="sourceLineNo">1708</span><a name="line.1708"></a>
-<span class="sourceLineNo">1709</span>      // Set prefetched header<a name="line.1709"></a>
-<span class="sourceLineNo">1710</span>      if (b.hasNextBlockHeader()) {<a name="line.1710"></a>
-<span class="sourceLineNo">1711</span>        prefetchedHeader.offset = offset + b.getOnDiskSizeWithHeader();<a name="line.1711"></a>
-<span class="sourceLineNo">1712</span>        System.arraycopy(onDiskBlock, onDiskSizeWithHeader, prefetchedHeader.header, 0, hdrSize);<a name="line.1712"></a>
-<span class="sourceLineNo">1713</span>      }<a name="line.1713"></a>
-<span class="sourceLineNo">1714</span><a name="line.1714"></a>
-<span class="sourceLineNo">1715</span>      b.offset = offset;<a name="line.1715"></a>
-<span class="sourceLineNo">1716</span>      b.fileContext.setIncludesTags(this.fileContext.isIncludesTags());<a name="line.1716"></a>
-<span class="sourceLineNo">1717</span>      b.fileContext.setIncludesMvcc(this.fileContext.isIncludesMvcc());<a name="line.1717"></a>
-<span class="sourceLineNo">1718</span>      return b;<a name="line.1718"></a>
-<span class="sourceLineNo">1719</span>    }<a name="line.1719"></a>
-<span class="sourceLineNo">1720</span><a name="line.1720"></a>
-<span class="sourceLineNo">1721</span>    public void setIncludesMemstoreTS(boolean includesMemstoreTS) {<a name="line.1721"></a>
-<span class="sourceLineNo">1722</span>      this.fileContext.setIncludesMvcc(includesMemstoreTS);<a name="line.1722"></a>
-<span class="sourceLineNo">1723</span>    }<a name="line.1723"></a>
-<span class="sourceLineNo">1724</span><a name="line.1724"></a>
-<span class="sourceLineNo">1725</span>    public void setDataBlockEncoder(HFileDataBlockEncoder encoder) {<a name="line.1725"></a>
-<span class="sourceLineNo">1726</span>      encodedBlockDecodingCtx = encoder.newDataBlockDecodingContext(this.fileContext);<a name="line.1726"></a>
-<span class="sourceLineNo">1727</span>    }<a name="line.1727"></a>
-<span class="sourceLineNo">1728</span><a name="line.1728"></a>
-<span class="sourceLineNo">1729</span>    @Override<a name="line.1729"></a>
-<span class="sourceLineNo">1730</span>    public HFileBlockDecodingContext getBlockDecodingContext() {<a name="line.1730"></a>
-<span class="sourceLineNo">1731</span>      return this.encodedBlockDecodingCtx;<a name="line.1731"></a>
-<span class="sourceLineNo">1732</span>    }<a name="line.1732"></a>
-<span class="sourceLineNo">1733</span><a name="line.1733"></a>
-<span class="sourceLineNo">1734</span>    @Override<a name="line.1734"></a>
-<span class="sourceLineNo">1735</span>    public HFileBlockDecodingContext getDefaultBlockDecodingContext() {<a name="line.1735"></a>
-<span class="sourceLineNo">1736</span>      return this.defaultDecodingCtx;<a name="line.1736"></a>
-<span class="sourceLineNo">1737</span>    }<a name="line.1737"></a>
-<span class="sourceLineNo">1738</span><a name="line.1738"></a>
-<span class="sourceLineNo">1739</span>    /**<a name="line.1739"></a>
-<span class="sourceLineNo">1740</span>     * Generates the checksum for the header as well as the data and<a name="line.1740"></a>
-<span class="sourceLineNo">1741</span>     * then validates that it matches the value stored in the header.<a name="line.1741"></a>
-<span class="sourceLineNo">1742</span>     * If there is a checksum mismatch, then return false. Otherwise<a name="line.1742"></a>
-<span class="sourceLineNo">1743</span>     * return true.<a name="line.1743"></a>
-<span class="sourceLineNo">1744</span>     */<a name="line.1744"></a>
-<span class="sourceLineNo">1745</span>    protected boolean validateBlockChecksum(HFileBlock block,  byte[] data, int hdrSize)<a name="line.1745"></a>
-<span class="sourceLineNo">1746</span>        throws IOException {<a name="line.1746"></a>
-<span class="sourceLineNo">1747</span>      return ChecksumUtil.validateBlockChecksum(path, block, data, hdrSize);<a name="line.1747"></a>
-<span class="sourceLineNo">1748</span>    }<a name="line.1748"></a>
-<span class="sourceLineNo">1749</span><a name="line.1749"></a>
-<span class="sourceLineNo">1750</span>    @Override<a name="line.1750"></a>
-<span class="sourceLineNo">1751</span>    public void closeStreams() throws IOException {<a name="line.1751"></a>
-<span class="sourceLineNo">1752</span>      streamWrapper.close();<a name="line.1752"></a>
-<span class="sourceLineNo">1753</span>    }<a name="line.1753"></a>
-<span class="sourceLineNo">1754</span><a name="line.1754"></a>
-<span class="sourceLineNo">1755</span>    @Override<a name="line.1755"></a>
-<span class="sourceLineNo">1756</span>    public String toString() {<a name="line.1756"></a>
-<span class="sourceLineNo">1757</span>      return "hfs=" + hfs + ", path=" + path + ", fileContext=" + fileContext;<a name="line.1757"></a>
-<span class="sourceLineNo">1758</span>    }<a name="line.1758"></a>
-<span class="sourceLineNo">1759</span>  }<a name="line.1759"></a>
-<span class="sourceLineNo">1760</span><a name="line.1760"></a>
-<span class="sourceLineNo">1761</span>  @Override<a name="line.1761"></a>
-<span class="sourceLineNo">1762</span>  public int getSerializedLength() {<a name="line.1762"></a>
-<span class="sourceLineNo">1763</span>    if (buf != null) {<a name="line.1763"></a>
-<span class="sourceLineNo">1764</span>      // include extra bytes for the next header when it's available.<a name="line.1764"></a>
-<span class="sourceLineNo">1765</span>      int extraSpace = hasNextBlockHeader() ? headerSize() : 0;<a name="line.1765"></a>
-<span class="sourceLineNo">1766</span>      return this.buf.limit() + extraSpace + HFileBlock.EXTRA_SERIALIZATION_SPACE;<a name="line.1766"></a>
-<span class="sourceLineNo">1767</span>    }<a name="line.1767"></a>
-<span class="sourceLineNo">1768</span>    return 0;<a name="line.1768"></a>
-<span class="sourceLineNo">1769</span>  }<a name="line.1769"></a>
-<span class="sourceLineNo">1770</span><a name="line.1770"></a>
-<span class="sourceLineNo">1771</span>  @Override<a name="line.1771"></a>
-<span class="sourceLineNo">1772</span>  public void serialize(ByteBuffer destination) {<a name="line.1772"></a>
-<span class="sourceLineNo">1773</span>    this.buf.get(destination, 0, getSerializedLength()<a name="line.1773"></a>
-<span class="sourceLineNo">1774</span>        - EXTRA_SERIALIZATION_SPACE);<a name="line.1774"></a>
-<span class="sourceLineNo">1775</span>    serializeExtraInfo(destination);<a name="line.1775"></a>
-<span class="sourceLineNo">1776</span>  }<a name="line.1776"></a>
-<span class="sourceLineNo">1777</span><a name="line.1777"></a>
-<span class="sourceLineNo">1778</span>  public void serializeExtraInfo(ByteBuffer destination) {<a name="line.1778"></a>
-<span class="sourceLineNo">1779</span>    destination.put(this.fileContext.isUseHBaseChecksum() ? (byte) 1 : (byte) 0);<a name="line.1779"></a>
-<span class="sourceLineNo">1780</span>    destination.putLong(this.offset);<a name="line.1780"></a>
-<span class="sourceLineNo">1781</span>    destination.putInt(this.nextBlockOnDiskSizeWithHeader);<a name="line.1781"></a>
-<span class="sourceLineNo">1782</span>    destination.rewind();<a name="line.1782"></a>
-<span class="sourceLineNo">1783</span>  }<a name="line.1783"></a>
-<span class="sourceLineNo">1784</span><a name="line.1784"></a>
-<span class="sourceLineNo">1785</span>  @Override<a name="line.1785"></a>
-<span class="sourceLineNo">1786</span>  public CacheableDeserializer&lt;Cacheable&gt; getDeserializer() {<a name="line.1786"></a>
-<span class="sourceLineNo">1787</span>    return HFileBlock.blockDeserializer;<a name="line.1787"></a>
-<span class="sourceLineNo">1788</span>  }<a name="line.1788"></a>
-<span class="sourceLineNo">1789</span><a name="line.1789"></a>
-<span class="sourceLineNo">1790</span>  @Override<a name="line.1790"></a>
-<span class="sourceLineNo">1791</span>  public int hashCode() {<a name="line.1791"></a>
-<span class="sourceLineNo">1792</span>    int result = 1;<a name="line.1792"></a>
-<span class="sourceLineNo">1793</span>    result = result * 31 + blockType.hashCode();<a name="line.1793"></a>
-<span class="sourceLineNo">1794</span>    result = result * 31 + nextBlockOnDiskSizeWithHeader;<a name="line.1794"></a>
-<span class="sourceLineNo">1795</span>    result = result * 31 + (int) (offset ^ (offset &gt;&gt;&gt; 32));<a name="line.1795"></a>
-<span class="sourceLineNo">1796</span>    result = result * 31 + onDiskSizeWithoutHeader;<a name="line.1796"></a>
-<span class="sourceLineNo">1797</span>    result = result * 31 + (int) (prevBlockOffset ^ (prevBlockOffset &gt;&gt;&gt; 32));<a name="line.1797"></a>
-<span class="sourceLineNo">1798</span>    result = result * 31 + uncompressedSizeWithoutHeader;<a name="line.1798"></a>
-<span class="sourceLineNo">1799</span>    result = result * 31 + buf.hashCode();<a name="line.1799"></a>
-<span class="sourceLineNo">1800</span>    return result;<a name="line.1800"></a>
-<span class="sourceLineNo">1801</span>  }<a name="line.1801"></a>
-<span class="sourceLineNo">1802</span><a name="line.1802"></a>
-<span class="sourceLineNo">1803</span>  @Override<a name="line.1803"></a>
-<span class="sourceLineNo">1804</span>  public boolean equals(Object comparison) {<a name="line.1804"></a>
-<span class="sourceLineNo">1805</span>    if (this == comparison) {<a name="line.1805"></a>
-<span class="sourceLineNo">1806</span>      return true;<a name="line.1806"></a>
-<span class="sourceLineNo">1807</span>    }<a name="line.1807"></a>
-<span class="sourceLineNo">1808</span>    if (comparison == null) {<a name="line.1808"></a>
-<span class="sourceLineNo">1809</span>      return false;<a name="line.1809"></a>
-<span class="sourceLineNo">1810</span>    }<a name="line.1810"></a>
-<span class="sourceLineNo">1811</span>    if (comparison.getClass() != this.getClass()) {<a name="line.1811"></a>
-<span class="sourceLineNo">1812</span>      return false;<a name="line.1812"></a>
-<span class="sourceLineNo">1813</span>    }<a name="line.1813"></a>
-<span class="sourceLineNo">1814</span><a name="line.1814"></a>
-<span class="sourceLineNo">1815</span>    HFileBlock castedComparison = (HFileBlock) comparison;<a name="line.1815"></a>
-<span class="sourceLineNo">1816</span><a name="line.1816"></a>
-<span class="sourceLineNo">1817</span>    if (castedComparison.blockType != this.blockType) {<a name="line.1817"></a>
-<span class="sourceLineNo">1818</span>      return false;<a name="line.1818"></a>
-<span class="sourceLineNo">1819</span>    }<a name="line.1819"></a>
-<span class="sourceLineNo">1820</span>    if (castedComparison.nextBlockOnDiskSizeWithHeader != this.nextBlockOnDiskSizeWithHeader) {<a name="line.1820"></a>
-<span class="sourceLineNo">1821</span>      return false;<a name="line.1821"></a>
-<span class="sourceLineNo">1822</span>    }<a name="line.1822"></a>
-<span class="sourceLineNo">1823</span>    if (castedComparison.offset != this.offset) {<a name="line.1823"></a>
-<span class="sourceLineNo">1824</span>      return false;<a name="line.1824"></a>
-<span class="sourceLineNo">1825</span>    }<a name="line.1825"></a>
-<span class="sourceLineNo">1826</span>    if (castedComparison.onDiskSizeWithoutHeader != this.onDiskSizeWithoutHeader) {<a name="line.1826"></a>
-<span class="sourceLineNo">1827</span>      return false;<a name="line.1827"></a>
-<span class="sourceLineNo">1828</span>    }<a name="line.1828"></a>
-<span class="sourceLineNo">1829</span>    if (castedComparison.prevBlockOffset != this.prevBlockOffset) {<a name="line.1829"></a>
-<span class="sourceLineNo">1830</span>      return false;<a name="line.1830"></a>
-<span class="sourceLineNo">1831</span>    }<a name="line.1831"></a>
-<span class="sourceLineNo">1832</span>    if (castedComparison.uncompressedSizeWithoutHeader != this.uncompressedSizeWithoutHeader) {<a name="line.1832"></a>
-<span class="sourceLineNo">1833</span>      return false;<a name="line.1833"></a>
-<span class="sourceLineNo">1834</span>    }<a name="line.1834"></a>
-<span class="sourceLineNo">1835</span>    if (ByteBuff.compareTo(this.buf, 0, this.buf.limit(), castedComparison.buf, 0,<a name="line.1835"></a>
-<span class="sourceLineNo">1836</span>        castedComparison.buf.limit()) != 0) {<a name="line.1836"></a>
-<span class="sourceLineNo">1837</span>      return false;<a name="line.1837"></a>
-<span class="sourceLineNo">1838</span>    }<a name="line.1838"></a>
-<span class="sourceLineNo">1839</span>    return true;<a name="line.1839"></a>
-<span class="sourceLineNo">1840</span>  }<a name="line.1840"></a>
-<span class="sourceLineNo">1841</span><a name="line.1841"></a>
-<span class="sourceLineNo">1842</span>  public DataBlockEncoding getDataBlockEncoding() {<a name="line.1842"></a>
-<span class="sourceLineNo">1843</span>    if (blockType == BlockType.ENCODED_DATA) {<a name="line.1843"></a>
-<span class="sourceLineNo">1844</span>      return DataBlockEncoding.getEncodingById(getDataBlockEncodingId());<a name="line.1844"></a>
-<span class="sourceLineNo">1845</span>    }<a name="line.1845"></a>
-<span class="sourceLineNo">1846</span>    return DataBlockEncoding.NONE;<a name="line.1846"></a>
-<span class="sourceLineNo">1847</span>  }<a name="line.1847"></a>
-<span class="sourceLineNo">1848</span><a name="line.1848"></a>
-<span class="sourceLineNo">1849</span>  byte getChecksumType() {<a name="line.1849"></a>
-<span class="sourceLineNo">1850</span>    return this.fileContext.getChecksumType().getCode();<a name="line.1850"></a>
-<span class="sourceLineNo">1851</span>  }<a name="line.1851"></a>
-<span class="sourceLineNo">1852</span><a name="line.1852"></a>
-<span class="sourceLineNo">1853</span>  int getBytesPerChecksum() {<a name="line.1853"></a>
-<span class="sourceLineNo">1854</span>    return this.fileContext.getBytesPerChecksum();<a name="line.1854"></a>
-<span class="sourceLineNo">1855</span>  }<a name="line.1855"></a>
-<span class="sourceLineNo">1856</span><a name="line.1856"></a>
-<span class="sourceLineNo">1857</span>  /** @return the size of data on disk + header. Excludes checksum. */<a name="line.1857"></a>
-<span class="sourceLineNo">1858</span>  int getOnDiskDataSizeWithHeader() {<a name="line.1858"></a>
-<span class="sourceLineNo">1859</span>    return this.onDiskDataSizeWithHeader;<a name="line.1859"></a>
-<span class="sourceLineNo">1860</span>  }<a name="line.1860"></a>
-<span class="sourceLineNo">1861</span><a name="line.1861"></a>
-<span class="sourceLineNo">1862</span>  /**<a name="line.1862"></a>
-<span class="sourceLineNo">1863</span>   * Calcuate the number of bytes required to store all the checksums<a name="line.1863"></a>
-<span class="sourceLineNo">1864</span>   * for this block. Each checksum value is a 4 byte integer.<a name="line.1864"></a>
-<span class="sourceLineNo">1865</span>   */<a name="line.1865"></a>
-<span class="sourceLineNo">1866</span>  int totalChecksumBytes() {<a name="line.1866"></a>
-<span class="sourceLineNo">1867</span>    // If the hfile block has minorVersion 0, then there are no checksum<a name="line.1867"></a>
-<span class="sourceLineNo">1868</span>    // data to validate. Similarly, a zero value in this.bytesPerChecksum<a name="line.1868"></a>
-<span class="sourceLineNo">1869</span>    // indicates that cached blocks do not have checksum data because<a name="line.1869"></a>
-<span class="sourceLineNo">1870</span>    // checksums were already validated when the block was read from disk.<a name="line.1870"></a>
-<span class="sourceLineNo">1871</span>    if (!fileContext.isUseHBaseChecksum() || this.fileContext.getBytesPerChecksum() == 0) {<a name="line.1871"></a>
-<span class="sourceLineNo">1872</span>      return 0;<a name="line.1872"></a>
-<span class="sourceLineNo">1873</span>    }<a name="line.1873"></a>
-<span class="sourceLineNo">1874</span>    return (int) ChecksumUtil.numBytes(onDiskDataSizeWithHeader,<a name="line.1874"></a>
-<span class="sourceLineNo">1875</span>        this.fileContext.getBytesPerChecksum());<a name="line.1875"></a>
-<span class="sourceLineNo">1876</span>  }<a name="line.1876"></a>
-<span class="sourceLineNo">1877</span><a name="line.1877"></a>
-<span class="sourceLineNo">1878</span>  /**<a name="line.1878"></a>
-<span class="sourceLineNo">1879</span>   * Returns the size of this block header.<a name="line.1879"></a>
-<span class="sourceLineNo">1880</span>   */<a name="line.1880"></a>
-<span class="sourceLineNo">1881</span>  public int headerSize() {<a name="line.1881"></a>
-<span class="sourceLineNo">1882</span>    return headerSize(this.fileContext.isUseHBaseChecksum());<a name="line.1882"></a>
-<span class="sourceLineNo">1883</span>  }<a name="line.1883"></a>
-<span class="sourceLineNo">1884</span><a name="line.1884"></a>
-<span class="sourceLineNo">1885</span>  /**<a name="line.1885"></a>
-<span class="sourceLineNo">1886</span>   * Maps a minor version to the size of the header.<a name="line.1886"></a>
-<span class="sourceLineNo">1887</span>   */<a name="line.1887"></a>
-<span class="sourceLineNo">1888</span>  public static int headerSize(boolean usesHBaseChecksum) {<a name="line.1888"></a>
-<span class="sourceLineNo">1889</span>    if (usesHBaseChecksum) {<a name="line.1889"></a>
-<span class="sourceLineNo">1890</span>      return HConstants.HFILEBLOCK_HEADER_SIZE;<a name="line.1890"></a>
-<span class="sourceLineNo">1891</span>    }<a name="line.1891"></a>
-<span class="sourceLineNo">1892</span>    return HConstants.HFILEBLOCK_HEADER_SIZE_NO_CHECKSUM;<a name="line.1892"></a>
-<span class="sourceLineNo">1893</span>  }<a name="line.1893"></a>
-<span class="sourceLineNo">1894</span><a name="line.1894"></a>
-<span class="sourceLineNo">1895</span>  /**<a name="line.1895"></a>
-<span class="sourceLineNo">1896</span>   * Return the appropriate DUMMY_HEADER for the minor version<a name="line.1896"></a>
-<span class="sourceLineNo">1897</span>   */<a name="line.1897"></a>
-<span class="sourceLineNo">1898</span>  public byte[] getDummyHeaderForVersion() {<a name="line.1898"></a>
-<span class="sourceLineNo">1899</span>    return getDummyHeaderForVersion(this.fileContext.isUseHBaseChecksum());<a name="line.1899"></a>
-<span class="sourceLineNo">1900</span>  }<a name="line.1900"></a>
-<span class="sourceLineNo">1901</span><a name="line.1901"></a>
-<span class="sourceLineNo">1902</span>  /**<a name="line.1902"></a>
-<span class="sourceLineNo">1903</span>   * Return the appropriate DUMMY_HEADER for the minor version<a name="line.1903"></a>
-<span class="sourceLineNo">1904</span>   */<a name="line.1904"></a>
-<span class="sourceLineNo">1905</span>  static private byte[] getDummyHeaderForVersion(boolean usesHBaseChecksum) {<a name="line.1905"></a>
-<span class="sourceLineNo">1906</span>    if (usesHBaseChecksum) {<a name="line.1906"></a>
-<span class="sourceLineNo">1907</span>      return HConstants.HFILEBLOCK_DUMMY_HEADER;<a name="line.1907"></a>
-<span class="sourceLineNo">1908</span>    }<a name="line.1908"></a>
-<span class="sourceLineNo">1909</span>    return DUMMY_HEADER_NO_CHECKSUM;<a name="line.1909"></a>
-<span class="sourceLineNo">1910</span>  }<a name="line.1910"></a>
-<span class="sourceLineNo">1911</span><a name="line.1911"></a>
-<span class="sourceLineNo">1912</span>  /**<a name="line.1912"></a>
-<span class="sourceLineNo">1913</span>   * @return the HFileContext used to create this HFileBlock. Not necessary the<a name="line.1913"></a>
-<span class="sourceLineNo">1914</span>   * fileContext for the file from which this block's data was originally read.<a name="line.1914"></a>
-<span class="sourceLineNo">1915</span>   */<a name="line.1915"></a>
-<span class="sourceLineNo">1916</span>  public HFileContext getHFileContext() {<a name="line.1916"></a>
-<span class="sourceLineNo">1917</span>    return this.fileContext;<a name="line.1917"></a>
-<span class="sourceLineNo">1918</span>  }<a name="line.1918"></a>
-<span class="sourceLineNo">1919</span><a name="line.1919"></a>
-<span class="sourceLineNo">1920</span>  @Override<a name="line.1920"></a>
-<span class="sourceLineNo">1921</span>  public MemoryType getMemoryType() {<a name="line.1921"></a>
-<span class="sourceLineNo">1922</span>    return this.memType;<a name="line.1922"></a>
-<span class="sourceLineNo">1923</span>  }<a name="line.1923"></a>
-<span class="sourceLineNo">1924</span><a name="line.1924"></a>
-<span class="sourceLineNo">1925</span>  /**<a name="line.1925"></a>
-<span class="sourceLineNo">1926</span>   * @return true if this block is backed by a shared memory area(such as that of a BucketCache).<a name="line.1926"></a>
-<span class="sourceLineNo">1927</span>   */<a name="line.1927"></a>
-<span class="sourceLineNo">1928</span>  public boolean usesSharedMemory() {<a name="line.1928"></a>
-<span class="sourceLineNo">1929</span>    return this.memType == MemoryType.SHARED;<a name="line.1929"></a>
-<span class="sourceLineNo">1930</span>  }<a name="line.1930"></a>
-<span class="sourceLineNo">1931</span><a name="line.1931"></a>
-<span class="sourceLineNo">1932</span>  /**<a name="line.1932"></a>
-<span class="sourceLineNo">1933</span>   * Convert the contents of the block header into a human readable string.<a name="line.1933"></a>
-<span class="sourceLineNo">1934</span>   * This is mostly helpful for debugging. This assumes that the block<a name="line.1934"></a>
-<span class="sourceLineNo">1935</span>   * has minor version &gt; 0.<a name="line.1935"></a>
-<span class="sourceLineNo">1936</span>   */<a name="line.1936"></a>
-<span class="sourceLineNo">1937</span>  static String toStringHeader(ByteBuff buf) throws IOException {<a name="line.1937"></a>
-<span class="sourceLineNo">1938</span>    byte[] magicBuf = new byte[Math.min(buf.limit() - buf.position(), BlockType.MAGIC_LENGTH)];<a name="line.1938"></a>
-<span class="sourceLineNo">1939</span>    buf.get(magicBuf);<a name="line.1939"></a>
-<span class="sourceLineNo">1940</span>    BlockType bt = BlockType.parse(magicBuf, 0, BlockType.MAGIC_LENGTH);<a name="line.1940"></a>
-<span class="sourceLineNo">1941</span>    int compressedBlockSizeNoHeader = buf.getInt();<a name="line.1941"></a>
-<span class="sourceLineNo">1942</span>    int uncompressedBlockSizeNoHeader = buf.getInt();<a name="line.1942"></a>
-<span class="sourceLineNo">1943</span>    long prevBlockOffset = buf.getLong();<a name="line.1943"></a>
-<span class="sourceLineNo">1944</span>    byte cksumtype = buf.get();<a name="line.1944"></a>
-<span class="sourceLineNo">1945</span>    long bytesPerChecksum = buf.getInt();<a name="line.1945"></a>
-<span class="sourceLineNo">1946</span>    long onDiskDataSizeWithHeader = buf.getInt();<a name="line.1946"></a>
-<span class="sourceLineNo">1947</span>    return " Header dump: magic: " + Bytes.toString(magicBuf) +<a name="line.1947"></a>
-<span class="sourceLineNo">1948</span>                   " blockType " + bt +<a name="line.1948"></a>
-<span class="sourceLineNo">1949</span>                   " compressedBlockSizeNoHeader " +<a name="line.1949"></a>
-<span class="sourceLineNo">1950</span>                   compressedBlockSizeNoHeader +<a name="line.1950"></a>
-<span class="sourceLineNo">1951</span>                   " uncompressedBlockSizeNoHeader " +<a name="line.1951"></a>
-<span class="sourceLineNo">1952</span>                   uncompressedBlockSizeNoHeader +<a name="line.1952"></a>
-<span class="sourceLineNo">1953</span>                   " prevBlockOffset " + prevBlockOffset +<a name="line.1953"></a>
-<span class="sourceLineNo">1954</span>                   " checksumType " + ChecksumType.codeToType(cksumtype) +<a name="line.1954"></a>
-<span class="sourceLineNo">1955</span>                   " bytesPerChecksum " + bytesPerChecksum +<a name="line.1955"></a>
-<span class="sourceLineNo">1956</span>                   " onDiskDataSizeWithHeader " + onDiskDataSizeWithHeader;<a name="line.1956"></a>
-<span class="sourceLineNo">1957</span>  }<a name="line.1957"></a>
-<span class="sourceLineNo">1958</span>}<a name="line.1958"></a>
+<span class="sourceLineNo">1361</span>    protected HFileContext fileContext;<a name="line.1361"></a>
+<span class="sourceLineNo">1362</span>    // Cache the fileName<a name="line.1362"></a>
+<span class="sourceLineNo">1363</span>    protected String pathName;<a name="line.1363"></a>
+<span class="sourceLineNo">1364</span><a name="line.1364"></a>
+<span class="sourceLineNo">1365</span>    public FSReaderImpl(FSDataInputStreamWrapper stream, long fileSize, HFileSystem hfs, Path path,<a name="line.1365"></a>
+<span class="sourceLineNo">1366</span>        HFileContext fileContext) throws IOException {<a name="line.1366"></a>
+<span class="sourceLineNo">1367</span>      this.fileSize = fileSize;<a name="line.1367"></a>
+<span class="sourceLineNo">1368</span>      this.hfs = hfs;<a name="line.1368"></a>
+<span class="sourceLineNo">1369</span>      if (path != null) {<a name="line.1369"></a>
+<span class="sourceLineNo">1370</span>        this.pathName = path.toString();<a name="line.1370"></a>
+<span class="sourceLineNo">1371</span>      }<a name="line.1371"></a>
+<span class="sourceLineNo">1372</span>      this.fileContext = fileContext;<a name="line.1372"></a>
+<span class="sourceLineNo">1373</span>      this.hdrSize = headerSize(fileContext.isUseHBaseChecksum());<a name="line.1373"></a>
+<span class="sourceLineNo">1374</span><a name="line.1374"></a>
+<span class="sourceLineNo">1375</span>      this.streamWrapper = stream;<a name="line.1375"></a>
+<span class="sourceLineNo">1376</span>      // Older versions of HBase didn't support checksum.<a name="line.1376"></a>
+<span class="sourceLineNo">1377</span>      this.streamWrapper.prepareForBlockReader(!fileContext.isUseHBaseChecksum());<a name="line.1377"></a>
+<span class="sourceLineNo">1378</span>      defaultDecodingCtx = new HFileBlockDefaultDecodingContext(fileContext);<a name="line.1378"></a>
+<span class="sourceLineNo">1379</span>      encodedBlockDecodingCtx = defaultDecodingCtx;<a name="line.1379"></a>
+<span class="sourceLineNo">1380</span>    }<a name="line.1380"></a>
+<span class="sourceLineNo">1381</span><a name="line.1381"></a>
+<span class="sourceLineNo">1382</span>    /**<a name="line.1382"></a>
+<span class="sourceLineNo">1383</span>     * A constructor that reads files with the latest minor version.<a name="line.1383"></a>
+<span class="sourceLineNo">1384</span>     * This is used by unit tests only.<a name="line.1384"></a>
+<span class="sourceLineNo">1385</span>     */<a name="line.1385"></a>
+<span class="sourceLineNo">1386</span>    FSReaderImpl(FSDataInputStream istream, long fileSize, HFileContext fileContext)<a name="line.1386"></a>
+<span class="sourceLineNo">1387</span>    throws IOException {<a name="line.1387"></a>
+<span class="sourceLineNo">1388</span>      this(new FSDataInputStreamWrapper(istream), fileSize, null, null, fileContext);<a name="line.1388"></a>
+<span class="sourceLineNo">1389</span>    }<a name="line.1389"></a>
+<span class="sourceLineNo">1390</span><a name="line.1390"></a>
+<span class="sourceLineNo">1391</span>    public BlockIterator blockRange(final long startOffset, final long endOffset) {<a name="line.1391"></a>
+<span class="sourceLineNo">1392</span>      final FSReader owner = this; // handle for inner class<a name="line.1392"></a>
+<span class="sourceLineNo">1393</span>      return new BlockIterator() {<a name="line.1393"></a>
+<span class="sourceLineNo">1394</span>        private long offset = startOffset;<a name="line.1394"></a>
+<span class="sourceLineNo">1395</span><a name="line.1395"></a>
+<span class="sourceLineNo">1396</span>        @Override<a name="line.1396"></a>
+<span class="sourceLineNo">1397</span>        public HFileBlock nextBlock() throws IOException {<a name="line.1397"></a>
+<span class="sourceLineNo">1398</span>          if (offset &gt;= endOffset)<a name="line.1398"></a>
+<span class="sourceLineNo">1399</span>            return null;<a name="line.1399"></a>
+<span class="sourceLineNo">1400</span>          HFileBlock b = readBlockData(offset, -1, -1, false);<a name="line.1400"></a>
+<span class="sourceLineNo">1401</span>          offset += b.getOnDiskSizeWithHeader();<a name="line.1401"></a>
+<span class="sourceLineNo">1402</span>          return b.unpack(fileContext, owner);<a name="line.1402"></a>
+<span class="sourceLineNo">1403</span>        }<a name="line.1403"></a>
+<span class="sourceLineNo">1404</span><a name="line.1404"></a>
+<span class="sourceLineNo">1405</span>        @Override<a name="line.1405"></a>
+<span class="sourceLineNo">1406</span>        public HFileBlock nextBlockWithBlockType(BlockType blockType)<a name="line.1406"></a>
+<span class="sourceLineNo">1407</span>            throws IOException {<a name="line.1407"></a>
+<span class="sourceLineNo">1408</span>          HFileBlock blk = nextBlock();<a name="line.1408"></a>
+<span class="sourceLineNo">1409</span>          if (blk.getBlockType() != blockType) {<a name="line.1409"></a>
+<span class="sourceLineNo">1410</span>            throw new IOException("Expected block of type " + blockType<a name="line.1410"></a>
+<span class="sourceLineNo">1411</span>                + " but found " + blk.getBlockType());<a name="line.1411"></a>
+<span class="sourceLineNo">1412</span>          }<a name="line.1412"></a>
+<span class="sourceLineNo">1413</span>          return blk;<a name="line.1413"></a>
+<span class="sourceLineNo">1414</span>        }<a name="line.1414"></a>
+<span class="sourceLineNo">1415</span>      };<a name="line.1415"></a>
+<span class="sourceLineNo">1416</span>    }<a name="line.1416"></a>
+<span class="sourceLineNo">1417</span><a name="line.1417"></a>
+<span class="sourceLineNo">1418</span>    /**<a name="line.1418"></a>
+<span class="sourceLineNo">1419</span>     * Does a positional read or a seek and read into the given buffer. Returns<a name="line.1419"></a>
+<span class="sourceLineNo">1420</span>     * the on-disk size of the next block, or -1 if it could not be determined.<a name="line.1420"></a>
+<span class="sourceLineNo">1421</span>     *<a name="line.1421"></a>
+<span class="sourceLineNo">1422</span>     * @param dest destination buffer<a name="line.1422"></a>
+<span class="sourceLineNo">1423</span>     * @param destOffset offset in the destination buffer<a name="line.1423"></a>
+<span class="sourceLineNo">1424</span>     * @param size size of the block to be read<a name="line.1424"></a>
+<span class="sourceLineNo">1425</span>     * @param peekIntoNextBlock whether to read the next block's on-disk size<a name="line.1425"></a>
+<span class="sourceLineNo">1426</span>     * @param fileOffset position in the stream to read at<a name="line.1426"></a>
+<span class="sourceLineNo">1427</span>     * @param pread whether we should do a positional read<a name="line.1427"></a>
+<span class="sourceLineNo">1428</span>     * @param istream The input source of data<a name="line.1428"></a>
+<span class="sourceLineNo">1429</span>     * @return the on-disk size of the next block with header size included, or<a name="line.1429"></a>
+<span class="sourceLineNo">1430</span>     *         -1 if it could not be determined<a name="line.1430"></a>
+<span class="sourceLineNo">1431</span>     * @throws IOException<a name="line.1431"></a>
+<span class="sourceLineNo">1432</span>     */<a name="line.1432"></a>
+<span class="sourceLineNo">1433</span>    protected int readAtOffset(FSDataInputStream istream,<a name="line.1433"></a>
+<span class="sourceLineNo">1434</span>        byte[] dest, int destOffset, int size,<a name="line.1434"></a>
+<span class="sourceLineNo">1435</span>        boolean peekIntoNextBlock, long fileOffset, boolean pread)<a name="line.1435"></a>
+<span class="sourceLineNo">1436</span>        throws IOException {<a name="line.1436"></a>
+<span class="sourceLineNo">1437</span>      if (peekIntoNextBlock &amp;&amp;<a name="line.1437"></a>
+<span class="sourceLineNo">1438</span>          destOffset + size + hdrSize &gt; dest.length) {<a name="line.1438"></a>
+<span class="sourceLineNo">1439</span>        // We are asked to read the next block's header as well, but there is<a name="line.1439"></a>
+<span class="sourceLineNo">1440</span>        // not enough room in the array.<a name="line.1440"></a>
+<span class="sourceLineNo">1441</span>        throw new IOException("Attempted to read " + size + " bytes and " +<a name="line.1441"></a>
+<span class="sourceLineNo">1442</span>            hdrSize + " bytes of next header into a " + dest.length +<a name="line.1442"></a>
+<span class="sourceLineNo">1443</span>            "-byte array at offset " + destOffset);<a name="line.1443"></a>
+<span class="sourceLineNo">1444</span>      }<a name="line.1444"></a>
+<span class="sourceLineNo">1445</span><a name="line.1445"></a>
+<span class="sourceLineNo">1446</span>      if (!pread &amp;&amp; streamLock.tryLock()) {<a name="line.1446"></a>
+<span class="sourceLineNo">1447</span>        // Seek + read. Better for scanning.<a name="line.1447"></a>
+<span class="sourceLineNo">1448</span>        try {<a name="line.1448"></a>
+<span class="sourceLineNo">1449</span>          istream.seek(fileOffset);<a name="line.1449"></a>
+<span class="sourceLineNo">1450</span><a name="line.1450"></a>
+<span class="sourceLineNo">1451</span>          long realOffset = istream.getPos();<a name="line.1451"></a>
+<span class="sourceLineNo">1452</span>          if (realOffset != fileOffset) {<a name="line.1452"></a>
+<span class="sourceLineNo">1453</span>            throw new IOException("Tried to seek to " + fileOffset + " to "<a name="line.1453"></a>
+<span class="sourceLineNo">1454</span>                + "read " + size + " bytes, but pos=" + realOffset<a name="line.1454"></a>
+<span class="sourceLineNo">1455</span>                + " after seek");<a name="line.1455"></a>
+<span class="sourceLineNo">1456</span>          }<a name="line.1456"></a>
+<span class="sourceLineNo">1457</span><a name="line.1457"></a>
+<span class="sourceLineNo">1458</span>          if (!peekIntoNextBlock) {<a name="line.1458"></a>
+<span class="sourceLineNo">1459</span>            IOUtils.readFully(istream, dest, destOffset, size);<a name="line.1459"></a>
+<span class="sourceLineNo">1460</span>            return -1;<a name="line.1460"></a>
+<span class="sourceLineNo">1461</span>          }<a name="line.1461"></a>
+<span class="sourceLineNo">1462</span><a name="line.1462"></a>
+<span class="sourceLineNo">1463</span>          // Try to read the next block header.<a name="line.1463"></a>
+<span class="sourceLineNo">1464</span>          if (!readWithExtra(istream, dest, destOffset, size, hdrSize))<a name="line.1464"></a>
+<span class="sourceLineNo">1465</span>            return -1;<a name="line.1465"></a>
+<span class="sourceLineNo">1466</span>        } finally {<a name="line.1466"></a>
+<span class="sourceLineNo">1467</span>          streamLock.unlock();<a name="line.1467"></a>
+<span class="sourceLineNo">1468</span>        }<a name="line.1468"></a>
+<span class="sourceLineNo">1469</span>      } else {<a name="line.1469"></a>
+<span class="sourceLineNo">1470</span>        // Positional read. Better for random reads; or when the streamLock is already locked.<a name="line.1470"></a>
+<span class="sourceLineNo">1471</span>        int extraSize = peekIntoNextBlock ? hdrSize : 0;<a name="line.1471"></a>
+<span class="sourceLineNo">1472</span>        if (!positionalReadWithExtra(istream, fileOffset, dest, destOffset,<a name="line.1472"></a>
+<span class="sourceLineNo">1473</span>            size, extraSize)) {<a name="line.1473"></a>
+<span class="sourceLineNo">1474</span>          return -1;<a name="line.1474"></a>
+<span class="sourceLineNo">1475</span>        }<a name="line.1475"></a>
+<span class="sourceLineNo">1476</span>      }<a name="line.1476"></a>
+<span class="sourceLineNo">1477</span><a name="line.1477"></a>
+<span class="sourceLineNo">1478</span>      assert peekIntoNextBlock;<a name="line.1478"></a>
+<span class="sourceLineNo">1479</span>      return Bytes.toInt(dest, destOffset + size + BlockType.MAGIC_LENGTH) + hdrSize;<a name="line.1479"></a>
+<span class="sourceLineNo">1480</span>    }<a name="line.1480"></a>
+<span class="sourceLineNo">1481</span><a name="line.1481"></a>
+<span class="sourceLineNo">1482</span>    /**<a name="line.1482"></a>
+<span class="sourceLineNo">1483</span>     * Reads a version 2 block (version 1 blocks not supported and not expected). Tries to do as<a name="line.1483"></a>
+<span class="sourceLineNo">1484</span>     * little memory allocation as possible, using the provided on-disk size.<a name="line.1484"></a>
+<span class="sourceLineNo">1485</span>     *<a name="line.1485"></a>
+<span class="sourceLineNo">1486</span>     * @param offset the offset in the stream to read at<a name="line.1486"></a>
+<span class="sourceLineNo">1487</span>     * @param onDiskSizeWithHeaderL the on-disk size of the block, including<a name="line.1487"></a>
+<span class="sourceLineNo">1488</span>     *          the header, or -1 if unknown<a name="line.1488"></a>
+<span class="sourceLineNo">1489</span>     * @param uncompressedSize the uncompressed size of the the block. Always<a name="line.1489"></a>
+<span class="sourceLineNo">1490</span>     *          expected to be -1. This parameter is only used in version 1.<a name="line.1490"></a>
+<span class="sourceLineNo">1491</span>     * @param pread whether to use a positional read<a name="line.1491"></a>
+<span class="sourceLineNo">1492</span>     */<a name="line.1492"></a>
+<span class="sourceLineNo">1493</span>    @Override<a name="line.1493"></a>
+<span class="sourceLineNo">1494</span>    public HFileBlock readBlockData(long offset, long onDiskSizeWithHeaderL,<a name="line.1494"></a>
+<span class="sourceLineNo">1495</span>        int uncompressedSize, boolean pread)<a name="line.1495"></a>
+<span class="sourceLineNo">1496</span>    throws IOException {<a name="line.1496"></a>
+<span class="sourceLineNo">1497</span><a name="line.1497"></a>
+<span class="sourceLineNo">1498</span>      // get a copy of the current state of whether to validate<a name="line.1498"></a>
+<span class="sourceLineNo">1499</span>      // hbase checksums or not for this read call. This is not<a name="line.1499"></a>
+<span class="sourceLineNo">1500</span>      // thread-safe but the one constaint is that if we decide<a name="line.1500"></a>
+<span class="sourceLineNo">1501</span>      // to skip hbase checksum verification then we are<a name="line.1501"></a>
+<span class="sourceLineNo">1502</span>      // guaranteed to use hdfs checksum verification.<a name="line.1502"></a>
+<span class="sourceLineNo">1503</span>      boolean doVerificationThruHBaseChecksum = streamWrapper.shouldUseHBaseChecksum();<a name="line.1503"></a>
+<span class="sourceLineNo">1504</span>      FSDataInputStream is = streamWrapper.getStream(doVerificationThruHBaseChecksum);<a name="line.1504"></a>
+<span class="sourceLineNo">1505</span><a name="line.1505"></a>
+<span class="sourceLineNo">1506</span>      HFileBlock blk = readBlockDataInternal(is, offset,<a name="line.1506"></a>
+<span class="sourceLineNo">1507</span>                         onDiskSizeWithHeaderL,<a name="line.1507"></a>
+<span class="sourceLineNo">1508</span>                         uncompressedSize, pread,<a name="line.1508"></a>
+<span class="sourceLineNo">1509</span>                         doVerificationThruHBaseChecksum);<a name="line.1509"></a>
+<span class="sourceLineNo">1510</span>      if (blk == null) {<a name="line.1510"></a>
+<span class="sourceLineNo">1511</span>        HFile.LOG.warn("HBase checksum verification failed for file " +<a name="line.1511"></a>
+<span class="sourceLineNo">1512</span>                       pathName + " at offset " +<a name="line.1512"></a>
+<span class="sourceLineNo">1513</span>                       offset + " filesize " + fileSize +<a name="line.1513"></a>
+<span class="sourceLineNo">1514</span>                       ". Retrying read with HDFS checksums turned on...");<a name="line.1514"></a>
+<span class="sourceLineNo">1515</span><a name="line.1515"></a>
+<span class="sourceLineNo">1516</span>        if (!doVerificationThruHBaseChecksum) {<a name="line.1516"></a>
+<span class="sourceLineNo">1517</span>          String msg = "HBase checksum verification failed for file " +<a name="line.1517"></a>
+<span class="sourceLineNo">1518</span>                       pathName + " at offset " +<a name="line.1518"></a>
+<span class="sourceLineNo">1519</span>                       offset + " filesize " + fileSize +<a name="line.1519"></a>
+<span class="sourceLineNo">1520</span>                       " but this cannot happen because doVerify is " +<a name="line.1520"></a>
+<span class="sourceLineNo">1521</span>                       doVerificationThruHBaseChecksum;<a name="line.1521"></a>
+<span class="sourceLineNo">1522</span>          HFile.LOG.warn(msg);<a name="line.1522"></a>
+<span class="sourceLineNo">1523</span>          throw new IOException(msg); // cannot happen case here<a name="line.1523"></a>
+<span class="sourceLineNo">1524</span>        }<a name="line.1524"></a>
+<span class="sourceLineNo">1525</span>        HFile.checksumFailures.incrementAndGet(); // update metrics<a name="line.1525"></a>
+<span class="sourceLineNo">1526</span><a name="line.1526"></a>
+<span class="sourceLineNo">1527</span>        // If we have a checksum failure, we fall back into a mode where<a name="line.1527"></a>
+<span class="sourceLineNo">1528</span>        // the next few reads use HDFS level checksums. We aim to make the<a name="line.1528"></a>
+<span class="sourceLineNo">1529</span>        // next CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD reads avoid<a name="line.1529"></a>
+<span class="sourceLineNo">1530</span>        // hbase checksum verification, but since this value is set without<a name="line.1530"></a>
+<span class="sourceLineNo">1531</span>        // holding any locks, it can so happen that we might actually do<a name="line.1531"></a>
+<span class="sourceLineNo">1532</span>        // a few more than precisely this number.<a name="line.1532"></a>
+<span class="sourceLineNo">1533</span>        is = this.streamWrapper.fallbackToFsChecksum(CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD);<a name="line.1533"></a>
+<span class="sourceLineNo">1534</span>        doVerificationThruHBaseChecksum = false;<a name="line.1534"></a>
+<span class="sourceLineNo">1535</span>        blk = readBlockDataInternal(is, offset, onDiskSizeWithHeaderL,<a name="line.1535"></a>
+<span class="sourceLineNo">1536</span>                                    uncompressedSize, pread,<a name="line.1536"></a>
+<span class="sourceLineNo">1537</span>                                    doVerificationThruHBaseChecksum);<a name="line.1537"></a>
+<span class="sourceLineNo">1538</span>        if (blk != null) {<a name="line.1538"></a>
+<span class="sourceLineNo">1539</span>          HFile.LOG.warn("HDFS checksum verification suceeded for file " +<a name="line.1539"></a>
+<span class="sourceLineNo">1540</span>                         pathName + " at offset " +<a name="line.1540"></a>
+<span class="sourceLineNo">1541</span>                         offset + " filesize " + fileSize);<a name="line.1541"></a>
+<span class="sourceLineNo">1542</span>        }<a name="line.1542"></a>
+<span class="sourceLineNo">1543</span>      }<a name="line.1543"></a>
+<span class="sourceLineNo">1544</span>      if (blk == null &amp;&amp; !doVerificationThruHBaseChecksum) {<a name="line.1544"></a>
+<span class="sourceLineNo">1545</span>        String msg = "readBlockData failed, possibly due to " +<a name="line.1545"></a>
+<span class="sourceLineNo">1546</span>                     "checksum verification failed for file " + pathName +<a name="line.1546"></a>
+<span class="sourceLineNo">1547</span>                     " at offset " + offset + " filesize " + fileSize;<a name="line.1547"></a>
+<span class="sourceLineNo">1548</span>        HFile.LOG.warn(msg);<a name="line.1548"></a>
+<span class="sourceLineNo">1549</span>        throw new IOException(msg);<a name="line.1549"></a>
+<span class="sourceLineNo">1550</span>      }<a name="line.1550"></a>
+<span class="sourceLineNo">1551</span><a name="line.1551"></a>
+<span class="sourceLineNo">1552</span>      // If there is a checksum mismatch earlier, then retry with<a name="line.1552"></a>
+<span class="sourceLineNo">1553</span>      // HBase checksums switched off and use HDFS checksum verification.<a name="line.1553"></a>
+<span class="sourceLineNo">1554</span>      // This triggers HDFS to detect and fix corrupt replicas. The<a name="line.1554"></a>
+<span class="sourceLineNo">1555</span>      // next checksumOffCount read requests will use HDFS checksums.<a name="line.1555"></a>
+<span class="sourceLineNo">1556</span>      // The decrementing of this.checksumOffCount is not thread-safe,<a name="line.1556"></a>
+<span class="sourceLineNo">1557</span>      // but it is harmless because eventually checksumOffCount will be<a name="line.1557"></a>
+<span class="sourceLineNo">1558</span>      // a negative number.<a name="line.1558"></a>
+<span class="sourceLineNo">1559</span>      streamWrapper.checksumOk();<a name="line.1559"></a>
+<span class="sourceLineNo">1560</span>      return blk;<a name="line.1560"></a>
+<span class="sourceLineNo">1561</span>    }<a name="line.1561"></a>
+<span class="sourceLineNo">1562</span><a name="line.1562"></a>
+<span class="sourceLineNo">1563</span>    /**<a name="line.1563"></a>
+<span class="sourceLineNo">1564</span>     * Reads a version 2 block.<a name="line.1564"></a>
+<span class="sourceLineNo">1565</span>     *<a name="line.1565"></a>
+<span class="sourceLineNo">1566</span>     * @param offset the offset in the stream to read at<a name="line.1566"></a>
+<span class="sourceLineNo">1567</span>     * @param onDiskSizeWithHeaderL the on-disk size of the block, including<a name="line.1567"></a>
+<span class="sourceLineNo">1568</span>     *          the header, or -1 if unknown<a name="line.1568"></a>
+<span class="sourceLineNo">1569</span>     * @param uncompressedSize the uncompressed size of the the block. Always<a name="line.1569"></a>
+<span class="sourceLineNo">1570</span>     *          expected to be -1. This parameter is only used in version 1.<a name="line.1570"></a>
+<span class="sourceLineNo">1571</span>     * @param pread whether to use a positional read<a name="line.1571"></a>
+<span class="sourceLineNo">1572</span>     * @param verifyChecksum Whether to use HBase checksums.<a name="line.1572"></a>
+<span class="sourceLineNo">1573</span>     *        If HBase checksum is switched off, then use HDFS checksum.<a name="line.1573"></a>
+<span class="sourceLineNo">1574</span>     * @return the HFileBlock or null if there is a HBase checksum mismatch<a name="line.1574"></a>
+<span class="sourceLineNo">1575</span>     */<a name="line.1575"></a>
+<span class="sourceLineNo">1576</span>    private HFileBlock readBlockDataInternal(FSDataInputStream is, long offset,<a name="line.1576"></a>
+<span class="sourceLineNo">1577</span>        long onDiskSizeWithHeaderL, int uncompressedSize, boolean pread,<a name="line.1577"></a>
+<span class="sourceLineNo">1578</span>        boolean verifyChecksum)<a name="line.1578"></a>
+<span class="sourceLineNo">1579</span>    throws IOException {<a name="line.1579"></a>
+<span class="sourceLineNo">1580</span>      if (offset &lt; 0) {<a name="line.1580"></a>
+<span class="sourceLineNo">1581</span>        throw new IOException("Invalid offset=" + offset + " trying to read "<a name="line.1581"></a>
+<span class="sourceLineNo">1582</span>            + "block (onDiskSize=" + onDiskSizeWithHeaderL<a name="line.1582"></a>
+<span class="sourceLineNo">1583</span>            + ", uncompressedSize=" + uncompressedSize + ")");<a name="line.1583"></a>
+<span class="sourceLineNo">1584</span>      }<a name="line.1584"></a>
+<span class="sourceLineNo">1585</span><a name="line.1585"></a>
+<span class="sourceLineNo">1586</span>      if (uncompressedSize != -1) {<a name="line.1586"></a>
+<span class="sourceLineNo">1587</span>        throw new IOException("Version 2 block reader API does not need " +<a name="line.1587"></a>
+<span class="sourceLineNo">1588</span>            "the uncompressed size parameter");<a name="line.1588"></a>
+<span class="sourceLineNo">1589</span>      }<a name="line.1589"></a>
+<span class="sourceLineNo">1590</span><a name="line.1590"></a>
+<span class="sourceLineNo">1591</span>      if ((onDiskSizeWithHeaderL &lt; hdrSize &amp;&amp; onDiskSizeWithHeaderL != -1)<a name="line.1591"></a>
+<span class="sourceLineNo">1592</span>          || onDiskSizeWithHeaderL &gt;= Integer.MAX_VALUE) {<a name="line.1592"></a>
+<span class="sourceLineNo">1593</span>        throw new IOException("Invalid onDisksize=" + onDiskSizeWithHeaderL<a name="line.1593"></a>
+<span class="sourceLineNo">1594</span>            + ": expected to be at least " + hdrSize<a name="line.1594"></a>
+<span class="sourceLineNo">1595</span>            + " and at most " + Integer.MAX_VALUE + ", or -1 (offset="<a name="line.1595"></a>
+<span class="sourceLineNo">1596</span>            + offset + ", uncompressedSize=" + uncompressedSize + ")");<a name="line.1596"></a>
+<span class="sourceLineNo">1597</span>      }<a name="line.1597"></a>
+<span class="sourceLineNo">1598</span><a name="line.1598"></a>
+<span class="sourceLineNo">1599</span>      int onDiskSizeWithHeader = (int) onDiskSizeWithHeaderL;<a name="line.1599"></a>
+<span class="sourceLineNo">1600</span>      // See if we can avoid reading the header. This is desirable, because<a name="line.1600"></a>
+<span class="

<TRUNCATED>

[21/23] hbase-site git commit: Published site at 2cf8af5bf1d501156cbb3b421cf75c1051ead7d9.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/checkstyle.rss
----------------------------------------------------------------------
diff --git a/checkstyle.rss b/checkstyle.rss
index c9d3ac3..c85f020 100644
--- a/checkstyle.rss
+++ b/checkstyle.rss
@@ -26,7 +26,7 @@ under the License.
     <copyright>&#169;2007 - 2016 The Apache Software Foundation</copyright>
     <item>
       <title>File: 1672,
-             Errors: 12854,
+             Errors: 12853,
              Warnings: 0,
              Infos: 0
       </title>
@@ -10499,7 +10499,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  2
+                  1
                 </td>
               </tr>
                           <tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/coc.html
----------------------------------------------------------------------
diff --git a/coc.html b/coc.html
index 754a398..7564006 100644
--- a/coc.html
+++ b/coc.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20160203" />
+    <meta name="Date-Revision-yyyymmdd" content="20160204" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Code of Conduct Policy
@@ -331,7 +331,7 @@ For flagrant violations requiring a firm response the PMC may opt to skip early
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-04</li>
             </p>
                 </div>
 

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/dependencies.html
----------------------------------------------------------------------
diff --git a/dependencies.html b/dependencies.html
index 4d6095c..c428fac 100644
--- a/dependencies.html
+++ b/dependencies.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20160203" />
+    <meta name="Date-Revision-yyyymmdd" content="20160204" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -518,7 +518,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-04</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/dependency-convergence.html b/dependency-convergence.html
index 9c1b228..83ecdf9 100644
--- a/dependency-convergence.html
+++ b/dependency-convergence.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20160203" />
+    <meta name="Date-Revision-yyyymmdd" content="20160204" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -1593,7 +1593,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-04</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/dependency-info.html
----------------------------------------------------------------------
diff --git a/dependency-info.html b/dependency-info.html
index 0e63ac1..7226691 100644
--- a/dependency-info.html
+++ b/dependency-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20160203" />
+    <meta name="Date-Revision-yyyymmdd" content="20160204" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -312,7 +312,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-04</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/dependency-management.html
----------------------------------------------------------------------
diff --git a/dependency-management.html b/dependency-management.html
index 8a518bf..d6425b3 100644
--- a/dependency-management.html
+++ b/dependency-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20160203" />
+    <meta name="Date-Revision-yyyymmdd" content="20160204" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -786,7 +786,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-04</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/devapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index ab9aff8..1a44d03 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -56474,6 +56474,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/throttle/ThroughputControlUtil.html#NAME_DELIMITER">NAME_DELIMITER</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.throttle.<a href="./org/apache/hadoop/hbase/regionserver/throttle/ThroughputControlUtil.html" title="class in org.apache.hadoop.hbase.regionserver.throttle">ThroughputControlUtil</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#NAME_PATTERN">NAME_PATTERN</a></span> - Static variable in class org.apache.hadoop.hbase.zookeeper.<a href="./org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZooKeeperWatcher</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#NAME_PREFIX">NAME_PREFIX</a></span> - Static variable in class org.apache.hadoop.hbase.security.token.<a href="./org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenSecretManager</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/TableName.html#nameAsString">nameAsString</a></span> - Variable in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a></dt>
@@ -60111,10 +60113,6 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/HFile.WriterFactory.html#path">path</a></span> - Variable in class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/HFile.WriterFactory.html" title="class in org.apache.hadoop.hbase.io.hfile">HFile.WriterFactory</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#path">path</a></span> - Variable in class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileBlock.FSReaderImpl</a></dt>
-<dd>
-<div class="block">The path (if any) where this data is coming from</div>
-</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html#path">path</a></span> - Variable in class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileReaderImpl</a></dt>
 <dd>
 <div class="block">Path of file</div>
@@ -60139,6 +60137,8 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html#path">path</a></span> - Variable in class org.apache.hadoop.hbase.zookeeper.<a href="./org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKUtil.ZKUtilOp</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#pathName">pathName</a></span> - Variable in class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileBlock.FSReaderImpl</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html#pathPrefix">pathPrefix</a></span> - Variable in class org.apache.hadoop.hbase.coprocessor.<a href="./org/apache/hadoop/hbase/coprocessor/CoprocessorHost.html" title="class in org.apache.hadoop.hbase.coprocessor">CoprocessorHost</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/http/HttpServer.Builder.html#pathSpecs">pathSpecs</a></span> - Variable in class org.apache.hadoop.hbase.http.<a href="./org/apache/hadoop/hbase/http/HttpServer.Builder.html" title="class in org.apache.hadoop.hbase.http">HttpServer.Builder</a></dt>
@@ -89910,7 +89910,7 @@ service.</div>
 </dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/coprocessor/AggregationClient.html#validateArgAndGetPB(org.apache.hadoop.hbase.client.Scan,%20org.apache.hadoop.hbase.coprocessor.ColumnInterpreter,%20boolean)">validateArgAndGetPB(Scan, ColumnInterpreter&lt;R, S, P, Q, T&gt;, boolean)</a></span> - Method in class org.apache.hadoop.hbase.client.coprocessor.<a href="./org/apache/hadoop/hbase/client/coprocessor/AggregationClient.html" title="class in org.apache.hadoop.hbase.client.coprocessor">AggregationClient</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html#validateBlockChecksum(org.apache.hadoop.fs.Path,%20org.apache.hadoop.hbase.io.hfile.HFileBlock,%20byte[],%20int)">validateBlockChecksum(Path, HFileBlock, byte[], int)</a></span> - Static method in class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html" title="class in org.apache.hadoop.hbase.io.hfile">ChecksumUtil</a></dt>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html#validateBlockChecksum(java.lang.String,%20org.apache.hadoop.hbase.io.hfile.HFileBlock,%20byte[],%20int)">validateBlockChecksum(String, HFileBlock, byte[], int)</a></span> - Static method in class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html" title="class in org.apache.hadoop.hbase.io.hfile">ChecksumUtil</a></dt>
 <dd>
 <div class="block">Validates that the data in the specified HFileBlock matches the
  checksum.</div>

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

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/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 a1a6bfe..dae9445 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/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/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/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/Filter.ReturnCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="strong">Filter.ReturnCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.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/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/Filter.ReturnCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="strong">Filter.ReturnCode</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/RegexStringComparator.EngineType.html" title="enum in org.apache.hadoop.hbase.filter"><span class="strong">RegexStringComparator.EngineType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/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/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/CompareFilter.CompareOp.html" title="enum in org.apache.hadoop.hbase.filter"><span class="strong">CompareFilter.CompareOp</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.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/BitComparator.BitwiseOp.html" title="enum in org.apache.hadoop.hbase.filter"><span class="strong">BitComparator.BitwiseOp</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/devapidocs/org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html
index fb326f1..6a08ad3 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html
@@ -96,7 +96,7 @@
 <hr>
 <br>
 <pre><a href="../../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.Private.html" title="annotation in org.apache.hadoop.hbase.classification">@InterfaceAudience.Private</a>
-public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html#line.36">ChecksumUtil</a>
+public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html#line.35">ChecksumUtil</a>
 extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">Utility methods to compute and validate checksums.</div>
 </li>
@@ -212,7 +212,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>(package private) static boolean</code></td>
-<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html#validateBlockChecksum(org.apache.hadoop.fs.Path,%20org.apache.hadoop.hbase.io.hfile.HFileBlock,%20byte[],%20int)">validateBlockChecksum</a></strong>(org.apache.hadoop.fs.Path&nbsp;path,
+<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html#validateBlockChecksum(java.lang.String,%20org.apache.hadoop.hbase.io.hfile.HFileBlock,%20byte[],%20int)">validateBlockChecksum</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;pathName,
                                           <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileBlock</a>&nbsp;block,
                                           byte[]&nbsp;data,
                                           int&nbsp;hdrSize)</code>
@@ -248,7 +248,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>public static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html#line.37">LOG</a></pre>
+<pre>public static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html#line.36">LOG</a></pre>
 </li>
 </ul>
 <a name="DUMMY_VALUE">
@@ -257,7 +257,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>DUMMY_VALUE</h4>
-<pre>private static&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html#line.40">DUMMY_VALUE</a></pre>
+<pre>private static&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html#line.39">DUMMY_VALUE</a></pre>
 <div class="block">This is used to reserve space in a byte buffer</div>
 </li>
 </ul>
@@ -267,7 +267,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>generateExceptions</h4>
-<pre>private static&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html#line.49">generateExceptions</a></pre>
+<pre>private static&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html#line.48">generateExceptions</a></pre>
 <div class="block">This is used by unit tests to make checksum failures throw an 
  exception instead of returning null. Returning a null value from 
  checksum validation will cause the higher layer to retry that 
@@ -289,7 +289,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ChecksumUtil</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html#line.36">ChecksumUtil</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html#line.35">ChecksumUtil</a>()</pre>
 </li>
 </ul>
 </li>
@@ -306,7 +306,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>generateChecksums</h4>
-<pre>static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html#line.65">generateChecksums</a>(byte[]&nbsp;indata,
+<pre>static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html#line.64">generateChecksums</a>(byte[]&nbsp;indata,
                      int&nbsp;startOffset,
                      int&nbsp;endOffset,
                      byte[]&nbsp;outdata,
@@ -324,13 +324,13 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
 </li>
 </ul>
-<a name="validateBlockChecksum(org.apache.hadoop.fs.Path, org.apache.hadoop.hbase.io.hfile.HFileBlock, byte[], int)">
+<a name="validateBlockChecksum(java.lang.String, org.apache.hadoop.hbase.io.hfile.HFileBlock, byte[], int)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>validateBlockChecksum</h4>
-<pre>static&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html#line.90">validateBlockChecksum</a>(org.apache.hadoop.fs.Path&nbsp;path,
+<pre>static&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html#line.89">validateBlockChecksum</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;pathName,
                             <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileBlock</a>&nbsp;block,
                             byte[]&nbsp;data,
                             int&nbsp;hdrSize)
@@ -352,7 +352,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>numBytes</h4>
-<pre>static&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html#line.144">numBytes</a>(long&nbsp;datasize,
+<pre>static&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html#line.142">numBytes</a>(long&nbsp;datasize,
             int&nbsp;bytesPerChecksum)</pre>
 <div class="block">Returns the number of bytes needed to store the checksums for
  a specified data size</div>
@@ -366,7 +366,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>numChunks</h4>
-<pre>static&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html#line.156">numChunks</a>(long&nbsp;datasize,
+<pre>static&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html#line.154">numChunks</a>(long&nbsp;datasize,
              int&nbsp;bytesPerChecksum)</pre>
 <div class="block">Returns the number of checksum chunks needed to store the checksums for
  a specified data size</div>
@@ -380,7 +380,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>reserveSpaceForChecksums</h4>
-<pre>static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html#line.172">reserveSpaceForChecksums</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/ByteArrayOutputStream.html?is-external=true" title="class or interface in java.io">ByteArrayOutputStream</a>&nbsp;baos,
+<pre>static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html#line.170">reserveSpaceForChecksums</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/io/ByteArrayOutputStream.html?is-external=true" title="class or interface in java.io">ByteArrayOutputStream</a>&nbsp;baos,
                             int&nbsp;numBytes,
                             int&nbsp;bytesPerChecksum)
                               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>
@@ -398,7 +398,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>generateExceptionForChecksumFailureForTest</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html#line.189">generateExceptionForChecksumFailureForTest</a>(boolean&nbsp;value)</pre>
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html#line.187">generateExceptionForChecksumFailureForTest</a>(boolean&nbsp;value)</pre>
 <div class="block">Mechanism to throw an exception in case of hbase checksum
  failure. This is used by unit tests only.</div>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>value</code> - Setting this to true will cause hbase checksum

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/devapidocs/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html
index 831304c..1e53ede 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html
@@ -164,10 +164,8 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBloc
 </td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>protected org.apache.hadoop.fs.Path</code></td>
-<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#path">path</a></strong></code>
-<div class="block">The path (if any) where this data is coming from</div>
-</td>
+<td class="colFirst"><code>protected <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#pathName">pathName</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/ThreadLocal.html?is-external=true" title="class or interface in java.lang">ThreadLocal</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.PrefetchedHeader.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileBlock.PrefetchedHeader</a>&gt;</code></td>
@@ -396,23 +394,13 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBloc
 <div class="block">The filesystem used to access data</div>
 </li>
 </ul>
-<a name="path">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>path</h4>
-<pre>protected&nbsp;org.apache.hadoop.fs.Path <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#line.1357">path</a></pre>
-<div class="block">The path (if any) where this data is coming from</div>
-</li>
-</ul>
 <a name="streamLock">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>streamLock</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/Lock.html?is-external=true" title="class or interface in java.util.concurrent.locks">Lock</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#line.1359">streamLock</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/Lock.html?is-external=true" title="class or interface in java.util.concurrent.locks">Lock</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#line.1356">streamLock</a></pre>
 </li>
 </ul>
 <a name="DEFAULT_BUFFER_SIZE">
@@ -421,7 +409,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBloc
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_BUFFER_SIZE</h4>
-<pre>public static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#line.1362">DEFAULT_BUFFER_SIZE</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#line.1359">DEFAULT_BUFFER_SIZE</a></pre>
 <div class="block">The default buffer size for our buffered streams</div>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.io.hfile.HFileBlock.FSReaderImpl.DEFAULT_BUFFER_SIZE">Constant Field Values</a></dd></dl>
 </li>
@@ -429,10 +417,19 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBloc
 <a name="fileContext">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>fileContext</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileContext.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileContext</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#line.1364">fileContext</a></pre>
+<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileContext.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileContext</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#line.1361">fileContext</a></pre>
+</li>
+</ul>
+<a name="pathName">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>pathName</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/io/hfile/HFileBlock.FSReaderImpl.html#line.1363">pathName</a></pre>
 </li>
 </ul>
 </li>
@@ -449,7 +446,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBloc
 <ul class="blockList">
 <li class="blockList">
 <h4>HFileBlock.FSReaderImpl</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#line.1366">HFileBlock.FSReaderImpl</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/FSDataInputStreamWrapper.html" title="class in org.apache.hadoop.hbase.io">FSDataInputStreamWrapper</a>&nbsp;stream,
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#line.1365">HFileBlock.FSReaderImpl</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/FSDataInputStreamWrapper.html" title="class in org.apache.hadoop.hbase.io">FSDataInputStreamWrapper</a>&nbsp;stream,
                        long&nbsp;fileSize,
                        <a href="../../../../../../org/apache/hadoop/hbase/fs/HFileSystem.html" title="class in org.apache.hadoop.hbase.fs">HFileSystem</a>&nbsp;hfs,
                        org.apache.hadoop.fs.Path&nbsp;path,
@@ -465,7 +462,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBloc
 <ul class="blockListLast">
 <li class="blockList">
 <h4>HFileBlock.FSReaderImpl</h4>
-<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#line.1385">HFileBlock.FSReaderImpl</a>(org.apache.hadoop.fs.FSDataInputStream&nbsp;istream,
+<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#line.1386">HFileBlock.FSReaderImpl</a>(org.apache.hadoop.fs.FSDataInputStream&nbsp;istream,
                        long&nbsp;fileSize,
                        <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileContext.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileContext</a>&nbsp;fileContext)
                   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>
@@ -489,7 +486,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBloc
 <ul class="blockList">
 <li class="blockList">
 <h4>blockRange</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.BlockIterator.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileBlock.BlockIterator</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#line.1390">blockRange</a>(long&nbsp;startOffset,
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.BlockIterator.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileBlock.BlockIterator</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#line.1391">blockRange</a>(long&nbsp;startOffset,
                                   long&nbsp;endOffset)</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReader.html#blockRange(long,%20long)">HFileBlock.FSReader</a></code></strong></div>
 <div class="block">Creates a block iterator over the given portion of the <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFile.html" title="class in org.apache.hadoop.hbase.io.hfile"><code>HFile</code></a>.
@@ -508,7 +505,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBloc
 <ul class="blockList">
 <li class="blockList">
 <h4>readAtOffset</h4>
-<pre>protected&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#line.1432">readAtOffset</a>(org.apache.hadoop.fs.FSDataInputStream&nbsp;istream,
+<pre>protected&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#line.1433">readAtOffset</a>(org.apache.hadoop.fs.FSDataInputStream&nbsp;istream,
                byte[]&nbsp;dest,
                int&nbsp;destOffset,
                int&nbsp;size,
@@ -531,7 +528,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBloc
 <ul class="blockList">
 <li class="blockList">
 <h4>readBlockData</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileBlock</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#line.1493">readBlockData</a>(long&nbsp;offset,
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileBlock</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#line.1494">readBlockData</a>(long&nbsp;offset,
                        long&nbsp;onDiskSizeWithHeaderL,
                        int&nbsp;uncompressedSize,
                        boolean&nbsp;pread)
@@ -555,7 +552,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBloc
 <ul class="blockList">
 <li class="blockList">
 <h4>readBlockDataInternal</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileBlock</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#line.1575">readBlockDataInternal</a>(org.apache.hadoop.fs.FSDataInputStream&nbsp;is,
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileBlock</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#line.1576">readBlockDataInternal</a>(org.apache.hadoop.fs.FSDataInputStream&nbsp;is,
                                long&nbsp;offset,
                                long&nbsp;onDiskSizeWithHeaderL,
                                int&nbsp;uncompressedSize,
@@ -578,7 +575,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBloc
 <ul class="blockList">
 <li class="blockList">
 <h4>setIncludesMemstoreTS</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#line.1721">setIncludesMemstoreTS</a>(boolean&nbsp;includesMemstoreTS)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#line.1722">setIncludesMemstoreTS</a>(boolean&nbsp;includesMemstoreTS)</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReader.html#setIncludesMemstoreTS(boolean)">setIncludesMemstoreTS</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReader.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileBlock.FSReader</a></code></dd>
@@ -591,7 +588,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBloc
 <ul class="blockList">
 <li class="blockList">
 <h4>setDataBlockEncoder</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#line.1725">setDataBlockEncoder</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoder.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileDataBlockEncoder</a>&nbsp;encoder)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#line.1726">setDataBlockEncoder</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoder.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileDataBlockEncoder</a>&nbsp;encoder)</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReader.html#setDataBlockEncoder(org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoder)">setDataBlockEncoder</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReader.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileBlock.FSReader</a></code></dd>
@@ -604,7 +601,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBloc
 <ul class="blockList">
 <li class="blockList">
 <h4>getBlockDecodingContext</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/encoding/HFileBlockDecodingContext.html" title="interface in org.apache.hadoop.hbase.io.encoding">HFileBlockDecodingContext</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#line.1730">getBlockDecodingContext</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/encoding/HFileBlockDecodingContext.html" title="interface in org.apache.hadoop.hbase.io.encoding">HFileBlockDecodingContext</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#line.1731">getBlockDecodingContext</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReader.html#getBlockDecodingContext()">HFileBlock.FSReader</a></code></strong></div>
 <div class="block">Get a decoder for <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html#ENCODED_DATA"><code>BlockType.ENCODED_DATA</code></a> blocks from this file.</div>
 <dl>
@@ -619,7 +616,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBloc
 <ul class="blockList">
 <li class="blockList">
 <h4>getDefaultBlockDecodingContext</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/encoding/HFileBlockDecodingContext.html" title="interface in org.apache.hadoop.hbase.io.encoding">HFileBlockDecodingContext</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#line.1735">getDefaultBlockDecodingContext</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/encoding/HFileBlockDecodingContext.html" title="interface in org.apache.hadoop.hbase.io.encoding">HFileBlockDecodingContext</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#line.1736">getDefaultBlockDecodingContext</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReader.html#getDefaultBlockDecodingContext()">HFileBlock.FSReader</a></code></strong></div>
 <div class="block">Get the default decoder for blocks from this file.</div>
 <dl>
@@ -634,7 +631,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBloc
 <ul class="blockList">
 <li class="blockList">
 <h4>validateBlockChecksum</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#line.1745">validateBlockChecksum</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileBlock</a>&nbsp;block,
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#line.1746">validateBlockChecksum</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileBlock</a>&nbsp;block,
                             byte[]&nbsp;data,
                             int&nbsp;hdrSize)
                                  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>
@@ -652,7 +649,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBloc
 <ul class="blockList">
 <li class="blockList">
 <h4>closeStreams</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#line.1751">closeStreams</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#line.1752">closeStreams</a>()
                   throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReader.html#closeStreams()">HFileBlock.FSReader</a></code></strong></div>
 <div class="block">Closes the backing streams</div>
@@ -669,7 +666,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBloc
 <ul class="blockListLast">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#line.1756">toString</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#line.1757">toString</a>()</pre>
 <dl>
 <dt><strong>Overrides:</strong></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/devapidocs/org/apache/hadoop/hbase/io/hfile/HFileBlock.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/HFileBlock.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/HFileBlock.html
index b3079e2..0e534ef 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/HFileBlock.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/HFileBlock.html
@@ -1351,7 +1351,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>getSerializedLength</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1762">getSerializedLength</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1763">getSerializedLength</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html#getSerializedLength()">Cacheable</a></code></strong></div>
 <div class="block">Returns the length of the ByteBuffer required to serialized the object. If the
  object cannot be serialized, it should return 0.</div>
@@ -1367,7 +1367,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>serialize</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1772">serialize</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;destination)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1773">serialize</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;destination)</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html#serialize(java.nio.ByteBuffer)">Cacheable</a></code></strong></div>
 <div class="block">Serializes its data into destination.</div>
 <dl>
@@ -1382,7 +1382,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>serializeExtraInfo</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1778">serializeExtraInfo</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;destination)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1779">serializeExtraInfo</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;destination)</pre>
 </li>
 </ul>
 <a name="getDeserializer()">
@@ -1391,7 +1391,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>getDeserializer</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CacheableDeserializer.html" title="interface in org.apache.hadoop.hbase.io.hfile">CacheableDeserializer</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1786">getDeserializer</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CacheableDeserializer.html" title="interface in org.apache.hadoop.hbase.io.hfile">CacheableDeserializer</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1787">getDeserializer</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html#getDeserializer()">Cacheable</a></code></strong></div>
 <div class="block">Returns CacheableDeserializer instance which reconstructs original object from ByteBuffer.</div>
 <dl>
@@ -1406,7 +1406,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>hashCode</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1791">hashCode</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1792">hashCode</a>()</pre>
 <dl>
 <dt><strong>Overrides:</strong></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
@@ -1419,7 +1419,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>equals</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1804">equals</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;comparison)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1805">equals</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;comparison)</pre>
 <dl>
 <dt><strong>Overrides:</strong></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
@@ -1432,7 +1432,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>getDataBlockEncoding</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/encoding/DataBlockEncoding.html" title="enum in org.apache.hadoop.hbase.io.encoding">DataBlockEncoding</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1842">getDataBlockEncoding</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/encoding/DataBlockEncoding.html" title="enum in org.apache.hadoop.hbase.io.encoding">DataBlockEncoding</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1843">getDataBlockEncoding</a>()</pre>
 </li>
 </ul>
 <a name="getChecksumType()">
@@ -1441,7 +1441,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>getChecksumType</h4>
-<pre>byte&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1849">getChecksumType</a>()</pre>
+<pre>byte&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1850">getChecksumType</a>()</pre>
 </li>
 </ul>
 <a name="getBytesPerChecksum()">
@@ -1450,7 +1450,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>getBytesPerChecksum</h4>
-<pre>int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1853">getBytesPerChecksum</a>()</pre>
+<pre>int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1854">getBytesPerChecksum</a>()</pre>
 </li>
 </ul>
 <a name="getOnDiskDataSizeWithHeader()">
@@ -1459,7 +1459,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>getOnDiskDataSizeWithHeader</h4>
-<pre>int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1858">getOnDiskDataSizeWithHeader</a>()</pre>
+<pre>int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1859">getOnDiskDataSizeWithHeader</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>the size of data on disk + header. Excludes checksum.</dd></dl>
 </li>
 </ul>
@@ -1469,7 +1469,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>totalChecksumBytes</h4>
-<pre>int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1866">totalChecksumBytes</a>()</pre>
+<pre>int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1867">totalChecksumBytes</a>()</pre>
 <div class="block">Calcuate the number of bytes required to store all the checksums
  for this block. Each checksum value is a 4 byte integer.</div>
 </li>
@@ -1480,7 +1480,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>headerSize</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1881">headerSize</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1882">headerSize</a>()</pre>
 <div class="block">Returns the size of this block header.</div>
 </li>
 </ul>
@@ -1490,7 +1490,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>headerSize</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1888">headerSize</a>(boolean&nbsp;usesHBaseChecksum)</pre>
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1889">headerSize</a>(boolean&nbsp;usesHBaseChecksum)</pre>
 <div class="block">Maps a minor version to the size of the header.</div>
 </li>
 </ul>
@@ -1500,7 +1500,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>getDummyHeaderForVersion</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1898">getDummyHeaderForVersion</a>()</pre>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1899">getDummyHeaderForVersion</a>()</pre>
 <div class="block">Return the appropriate DUMMY_HEADER for the minor version</div>
 </li>
 </ul>
@@ -1510,7 +1510,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>getDummyHeaderForVersion</h4>
-<pre>private static&nbsp;byte[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1905">getDummyHeaderForVersion</a>(boolean&nbsp;usesHBaseChecksum)</pre>
+<pre>private static&nbsp;byte[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1906">getDummyHeaderForVersion</a>(boolean&nbsp;usesHBaseChecksum)</pre>
 <div class="block">Return the appropriate DUMMY_HEADER for the minor version</div>
 </li>
 </ul>
@@ -1520,7 +1520,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>getHFileContext</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileContext.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileContext</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1916">getHFileContext</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileContext.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileContext</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1917">getHFileContext</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>the HFileContext used to create this HFileBlock. Not necessary the
  fileContext for the file from which this block's data was originally read.</dd></dl>
 </li>
@@ -1531,7 +1531,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>getMemoryType</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.MemoryType.html" title="enum in org.apache.hadoop.hbase.io.hfile">Cacheable.MemoryType</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1921">getMemoryType</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.MemoryType.html" title="enum in org.apache.hadoop.hbase.io.hfile">Cacheable.MemoryType</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1922">getMemoryType</a>()</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html#getMemoryType()">getMemoryType</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html" title="interface in org.apache.hadoop.hbase.io.hfile">Cacheable</a></code></dd>
@@ -1544,7 +1544,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockList">
 <li class="blockList">
 <h4>usesSharedMemory</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1928">usesSharedMemory</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1929">usesSharedMemory</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>true if this block is backed by a shared memory area(such as that of a BucketCache).</dd></dl>
 </li>
 </ul>
@@ -1554,7 +1554,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable
 <ul class="blockListLast">
 <li class="blockList">
 <h4>toStringHeader</h4>
-<pre>static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1937">toStringHeader</a>(<a href="../../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>&nbsp;buf)
+<pre>static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html#line.1938">toStringHeader</a>(<a href="../../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>&nbsp;buf)
                       throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Convert the contents of the block header into a human readable string.
  This is mostly helpful for debugging. This assumes that the block

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/devapidocs/org/apache/hadoop/hbase/io/hfile/class-use/HFileBlock.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/class-use/HFileBlock.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/class-use/HFileBlock.html
index 39c1f5b..3ef5593 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/class-use/HFileBlock.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/class-use/HFileBlock.html
@@ -399,7 +399,7 @@
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>(package private) static boolean</code></td>
-<td class="colLast"><span class="strong">ChecksumUtil.</span><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html#validateBlockChecksum(org.apache.hadoop.fs.Path,%20org.apache.hadoop.hbase.io.hfile.HFileBlock,%20byte[],%20int)">validateBlockChecksum</a></strong>(org.apache.hadoop.fs.Path&nbsp;path,
+<td class="colLast"><span class="strong">ChecksumUtil.</span><code><strong><a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html#validateBlockChecksum(java.lang.String,%20org.apache.hadoop.hbase.io.hfile.HFileBlock,%20byte[],%20int)">validateBlockChecksum</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;pathName,
                                           <a href="../../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileBlock</a>&nbsp;block,
                                           byte[]&nbsp;data,
                                           int&nbsp;hdrSize)</code>

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

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

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
index aaf26d9..409bb8a 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
@@ -145,9 +145,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.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.MarkRegionOfflineOpResult.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="strong">DisableTableProcedure.MarkRegionOfflineOpResult</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="strong">TableProcedureInterface.TableOperationType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerProcedureInterface.ServerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="strong">ServerProcedureInterface.ServerOperationType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="strong">TableProcedureInterface.TableOperationType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.MarkRegionOfflineOpResult.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="strong">DisableTableProcedure.MarkRegionOfflineOpResult</span></a></li>
 </ul>
 </li>
 </ul>


[16/23] hbase-site git commit: Published site at 2cf8af5bf1d501156cbb3b421cf75c1051ead7d9.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.BlockWritable.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.BlockWritable.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.BlockWritable.html
index 745e703..1587e5e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.BlockWritable.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.BlockWritable.html
@@ -1361,609 +1361,610 @@
 <span class="sourceLineNo">1353</span>    /** The filesystem used to access data */<a name="line.1353"></a>
 <span class="sourceLineNo">1354</span>    protected HFileSystem hfs;<a name="line.1354"></a>
 <span class="sourceLineNo">1355</span><a name="line.1355"></a>
-<span class="sourceLineNo">1356</span>    /** The path (if any) where this data is coming from */<a name="line.1356"></a>
-<span class="sourceLineNo">1357</span>    protected Path path;<a name="line.1357"></a>
-<span class="sourceLineNo">1358</span><a name="line.1358"></a>
-<span class="sourceLineNo">1359</span>    private final Lock streamLock = new ReentrantLock();<a name="line.1359"></a>
+<span class="sourceLineNo">1356</span>    private final Lock streamLock = new ReentrantLock();<a name="line.1356"></a>
+<span class="sourceLineNo">1357</span><a name="line.1357"></a>
+<span class="sourceLineNo">1358</span>    /** The default buffer size for our buffered streams */<a name="line.1358"></a>
+<span class="sourceLineNo">1359</span>    public static final int DEFAULT_BUFFER_SIZE = 1 &lt;&lt; 20;<a name="line.1359"></a>
 <span class="sourceLineNo">1360</span><a name="line.1360"></a>
-<span class="sourceLineNo">1361</span>    /** The default buffer size for our buffered streams */<a name="line.1361"></a>
-<span class="sourceLineNo">1362</span>    public static final int DEFAULT_BUFFER_SIZE = 1 &lt;&lt; 20;<a name="line.1362"></a>
-<span class="sourceLineNo">1363</span><a name="line.1363"></a>
-<span class="sourceLineNo">1364</span>    protected HFileContext fileContext;<a name="line.1364"></a>
-<span class="sourceLineNo">1365</span><a name="line.1365"></a>
-<span class="sourceLineNo">1366</span>    public FSReaderImpl(FSDataInputStreamWrapper stream, long fileSize, HFileSystem hfs, Path path,<a name="line.1366"></a>
-<span class="sourceLineNo">1367</span>        HFileContext fileContext) throws IOException {<a name="line.1367"></a>
-<span class="sourceLineNo">1368</span>      this.fileSize = fileSize;<a name="line.1368"></a>
-<span class="sourceLineNo">1369</span>      this.hfs = hfs;<a name="line.1369"></a>
-<span class="sourceLineNo">1370</span>      this.path = path;<a name="line.1370"></a>
-<span class="sourceLineNo">1371</span>      this.fileContext = fileContext;<a name="line.1371"></a>
-<span class="sourceLineNo">1372</span>      this.hdrSize = headerSize(fileContext.isUseHBaseChecksum());<a name="line.1372"></a>
-<span class="sourceLineNo">1373</span><a name="line.1373"></a>
-<span class="sourceLineNo">1374</span>      this.streamWrapper = stream;<a name="line.1374"></a>
-<span class="sourceLineNo">1375</span>      // Older versions of HBase didn't support checksum.<a name="line.1375"></a>
-<span class="sourceLineNo">1376</span>      this.streamWrapper.prepareForBlockReader(!fileContext.isUseHBaseChecksum());<a name="line.1376"></a>
-<span class="sourceLineNo">1377</span>      defaultDecodingCtx = new HFileBlockDefaultDecodingContext(fileContext);<a name="line.1377"></a>
-<span class="sourceLineNo">1378</span>      encodedBlockDecodingCtx = defaultDecodingCtx;<a name="line.1378"></a>
-<span class="sourceLineNo">1379</span>    }<a name="line.1379"></a>
-<span class="sourceLineNo">1380</span><a name="line.1380"></a>
-<span class="sourceLineNo">1381</span>    /**<a name="line.1381"></a>
-<span class="sourceLineNo">1382</span>     * A constructor that reads files with the latest minor version.<a name="line.1382"></a>
-<span class="sourceLineNo">1383</span>     * This is used by unit tests only.<a name="line.1383"></a>
-<span class="sourceLineNo">1384</span>     */<a name="line.1384"></a>
-<span class="sourceLineNo">1385</span>    FSReaderImpl(FSDataInputStream istream, long fileSize, HFileContext fileContext)<a name="line.1385"></a>
-<span class="sourceLineNo">1386</span>    throws IOException {<a name="line.1386"></a>
-<span class="sourceLineNo">1387</span>      this(new FSDataInputStreamWrapper(istream), fileSize, null, null, fileContext);<a name="line.1387"></a>
-<span class="sourceLineNo">1388</span>    }<a name="line.1388"></a>
-<span class="sourceLineNo">1389</span><a name="line.1389"></a>
-<span class="sourceLineNo">1390</span>    public BlockIterator blockRange(final long startOffset, final long endOffset) {<a name="line.1390"></a>
-<span class="sourceLineNo">1391</span>      final FSReader owner = this; // handle for inner class<a name="line.1391"></a>
-<span class="sourceLineNo">1392</span>      return new BlockIterator() {<a name="line.1392"></a>
-<span class="sourceLineNo">1393</span>        private long offset = startOffset;<a name="line.1393"></a>
-<span class="sourceLineNo">1394</span><a name="line.1394"></a>
-<span class="sourceLineNo">1395</span>        @Override<a name="line.1395"></a>
-<span class="sourceLineNo">1396</span>        public HFileBlock nextBlock() throws IOException {<a name="line.1396"></a>
-<span class="sourceLineNo">1397</span>          if (offset &gt;= endOffset)<a name="line.1397"></a>
-<span class="sourceLineNo">1398</span>            return null;<a name="line.1398"></a>
-<span class="sourceLineNo">1399</span>          HFileBlock b = readBlockData(offset, -1, -1, false);<a name="line.1399"></a>
-<span class="sourceLineNo">1400</span>          offset += b.getOnDiskSizeWithHeader();<a name="line.1400"></a>
-<span class="sourceLineNo">1401</span>          return b.unpack(fileContext, owner);<a name="line.1401"></a>
-<span class="sourceLineNo">1402</span>        }<a name="line.1402"></a>
-<span class="sourceLineNo">1403</span><a name="line.1403"></a>
-<span class="sourceLineNo">1404</span>        @Override<a name="line.1404"></a>
-<span class="sourceLineNo">1405</span>        public HFileBlock nextBlockWithBlockType(BlockType blockType)<a name="line.1405"></a>
-<span class="sourceLineNo">1406</span>            throws IOException {<a name="line.1406"></a>
-<span class="sourceLineNo">1407</span>          HFileBlock blk = nextBlock();<a name="line.1407"></a>
-<span class="sourceLineNo">1408</span>          if (blk.getBlockType() != blockType) {<a name="line.1408"></a>
-<span class="sourceLineNo">1409</span>            throw new IOException("Expected block of type " + blockType<a name="line.1409"></a>
-<span class="sourceLineNo">1410</span>                + " but found " + blk.getBlockType());<a name="line.1410"></a>
-<span class="sourceLineNo">1411</span>          }<a name="line.1411"></a>
-<span class="sourceLineNo">1412</span>          return blk;<a name="line.1412"></a>
-<span class="sourceLineNo">1413</span>        }<a name="line.1413"></a>
-<span class="sourceLineNo">1414</span>      };<a name="line.1414"></a>
-<span class="sourceLineNo">1415</span>    }<a name="line.1415"></a>
-<span class="sourceLineNo">1416</span><a name="line.1416"></a>
-<span class="sourceLineNo">1417</span>    /**<a name="line.1417"></a>
-<span class="sourceLineNo">1418</span>     * Does a positional read or a seek and read into the given buffer. Returns<a name="line.1418"></a>
-<span class="sourceLineNo">1419</span>     * the on-disk size of the next block, or -1 if it could not be determined.<a name="line.1419"></a>
-<span class="sourceLineNo">1420</span>     *<a name="line.1420"></a>
-<span class="sourceLineNo">1421</span>     * @param dest destination buffer<a name="line.1421"></a>
-<span class="sourceLineNo">1422</span>     * @param destOffset offset in the destination buffer<a name="line.1422"></a>
-<span class="sourceLineNo">1423</span>     * @param size size of the block to be read<a name="line.1423"></a>
-<span class="sourceLineNo">1424</span>     * @param peekIntoNextBlock whether to read the next block's on-disk size<a name="line.1424"></a>
-<span class="sourceLineNo">1425</span>     * @param fileOffset position in the stream to read at<a name="line.1425"></a>
-<span class="sourceLineNo">1426</span>     * @param pread whether we should do a positional read<a name="line.1426"></a>
-<span class="sourceLineNo">1427</span>     * @param istream The input source of data<a name="line.1427"></a>
-<span class="sourceLineNo">1428</span>     * @return the on-disk size of the next block with header size included, or<a name="line.1428"></a>
-<span class="sourceLineNo">1429</span>     *         -1 if it could not be determined<a name="line.1429"></a>
-<span class="sourceLineNo">1430</span>     * @throws IOException<a name="line.1430"></a>
-<span class="sourceLineNo">1431</span>     */<a name="line.1431"></a>
-<span class="sourceLineNo">1432</span>    protected int readAtOffset(FSDataInputStream istream,<a name="line.1432"></a>
-<span class="sourceLineNo">1433</span>        byte[] dest, int destOffset, int size,<a name="line.1433"></a>
-<span class="sourceLineNo">1434</span>        boolean peekIntoNextBlock, long fileOffset, boolean pread)<a name="line.1434"></a>
-<span class="sourceLineNo">1435</span>        throws IOException {<a name="line.1435"></a>
-<span class="sourceLineNo">1436</span>      if (peekIntoNextBlock &amp;&amp;<a name="line.1436"></a>
-<span class="sourceLineNo">1437</span>          destOffset + size + hdrSize &gt; dest.length) {<a name="line.1437"></a>
-<span class="sourceLineNo">1438</span>        // We are asked to read the next block's header as well, but there is<a name="line.1438"></a>
-<span class="sourceLineNo">1439</span>        // not enough room in the array.<a name="line.1439"></a>
-<span class="sourceLineNo">1440</span>        throw new IOException("Attempted to read " + size + " bytes and " +<a name="line.1440"></a>
-<span class="sourceLineNo">1441</span>            hdrSize + " bytes of next header into a " + dest.length +<a name="line.1441"></a>
-<span class="sourceLineNo">1442</span>            "-byte array at offset " + destOffset);<a name="line.1442"></a>
-<span class="sourceLineNo">1443</span>      }<a name="line.1443"></a>
-<span class="sourceLineNo">1444</span><a name="line.1444"></a>
-<span class="sourceLineNo">1445</span>      if (!pread &amp;&amp; streamLock.tryLock()) {<a name="line.1445"></a>
-<span class="sourceLineNo">1446</span>        // Seek + read. Better for scanning.<a name="line.1446"></a>
-<span class="sourceLineNo">1447</span>        try {<a name="line.1447"></a>
-<span class="sourceLineNo">1448</span>          istream.seek(fileOffset);<a name="line.1448"></a>
-<span class="sourceLineNo">1449</span><a name="line.1449"></a>
-<span class="sourceLineNo">1450</span>          long realOffset = istream.getPos();<a name="line.1450"></a>
-<span class="sourceLineNo">1451</span>          if (realOffset != fileOffset) {<a name="line.1451"></a>
-<span class="sourceLineNo">1452</span>            throw new IOException("Tried to seek to " + fileOffset + " to "<a name="line.1452"></a>
-<span class="sourceLineNo">1453</span>                + "read " + size + " bytes, but pos=" + realOffset<a name="line.1453"></a>
-<span class="sourceLineNo">1454</span>                + " after seek");<a name="line.1454"></a>
-<span class="sourceLineNo">1455</span>          }<a name="line.1455"></a>
-<span class="sourceLineNo">1456</span><a name="line.1456"></a>
-<span class="sourceLineNo">1457</span>          if (!peekIntoNextBlock) {<a name="line.1457"></a>
-<span class="sourceLineNo">1458</span>            IOUtils.readFully(istream, dest, destOffset, size);<a name="line.1458"></a>
-<span class="sourceLineNo">1459</span>            return -1;<a name="line.1459"></a>
-<span class="sourceLineNo">1460</span>          }<a name="line.1460"></a>
-<span class="sourceLineNo">1461</span><a name="line.1461"></a>
-<span class="sourceLineNo">1462</span>          // Try to read the next block header.<a name="line.1462"></a>
-<span class="sourceLineNo">1463</span>          if (!readWithExtra(istream, dest, destOffset, size, hdrSize))<a name="line.1463"></a>
-<span class="sourceLineNo">1464</span>            return -1;<a name="line.1464"></a>
-<span class="sourceLineNo">1465</span>        } finally {<a name="line.1465"></a>
-<span class="sourceLineNo">1466</span>          streamLock.unlock();<a name="line.1466"></a>
-<span class="sourceLineNo">1467</span>        }<a name="line.1467"></a>
-<span class="sourceLineNo">1468</span>      } else {<a name="line.1468"></a>
-<span class="sourceLineNo">1469</span>        // Positional read. Better for random reads; or when the streamLock is already locked.<a name="line.1469"></a>
-<span class="sourceLineNo">1470</span>        int extraSize = peekIntoNextBlock ? hdrSize : 0;<a name="line.1470"></a>
-<span class="sourceLineNo">1471</span>        if (!positionalReadWithExtra(istream, fileOffset, dest, destOffset,<a name="line.1471"></a>
-<span class="sourceLineNo">1472</span>            size, extraSize)) {<a name="line.1472"></a>
-<span class="sourceLineNo">1473</span>          return -1;<a name="line.1473"></a>
-<span class="sourceLineNo">1474</span>        }<a name="line.1474"></a>
-<span class="sourceLineNo">1475</span>      }<a name="line.1475"></a>
-<span class="sourceLineNo">1476</span><a name="line.1476"></a>
-<span class="sourceLineNo">1477</span>      assert peekIntoNextBlock;<a name="line.1477"></a>
-<span class="sourceLineNo">1478</span>      return Bytes.toInt(dest, destOffset + size + BlockType.MAGIC_LENGTH) + hdrSize;<a name="line.1478"></a>
-<span class="sourceLineNo">1479</span>    }<a name="line.1479"></a>
-<span class="sourceLineNo">1480</span><a name="line.1480"></a>
-<span class="sourceLineNo">1481</span>    /**<a name="line.1481"></a>
-<span class="sourceLineNo">1482</span>     * Reads a version 2 block (version 1 blocks not supported and not expected). Tries to do as<a name="line.1482"></a>
-<span class="sourceLineNo">1483</span>     * little memory allocation as possible, using the provided on-disk size.<a name="line.1483"></a>
-<span class="sourceLineNo">1484</span>     *<a name="line.1484"></a>
-<span class="sourceLineNo">1485</span>     * @param offset the offset in the stream to read at<a name="line.1485"></a>
-<span class="sourceLineNo">1486</span>     * @param onDiskSizeWithHeaderL the on-disk size of the block, including<a name="line.1486"></a>
-<span class="sourceLineNo">1487</span>     *          the header, or -1 if unknown<a name="line.1487"></a>
-<span class="sourceLineNo">1488</span>     * @param uncompressedSize the uncompressed size of the the block. Always<a name="line.1488"></a>
-<span class="sourceLineNo">1489</span>     *          expected to be -1. This parameter is only used in version 1.<a name="line.1489"></a>
-<span class="sourceLineNo">1490</span>     * @param pread whether to use a positional read<a name="line.1490"></a>
-<span class="sourceLineNo">1491</span>     */<a name="line.1491"></a>
-<span class="sourceLineNo">1492</span>    @Override<a name="line.1492"></a>
-<span class="sourceLineNo">1493</span>    public HFileBlock readBlockData(long offset, long onDiskSizeWithHeaderL,<a name="line.1493"></a>
-<span class="sourceLineNo">1494</span>        int uncompressedSize, boolean pread)<a name="line.1494"></a>
-<span class="sourceLineNo">1495</span>    throws IOException {<a name="line.1495"></a>
-<span class="sourceLineNo">1496</span><a name="line.1496"></a>
-<span class="sourceLineNo">1497</span>      // get a copy of the current state of whether to validate<a name="line.1497"></a>
-<span class="sourceLineNo">1498</span>      // hbase checksums or not for this read call. This is not<a name="line.1498"></a>
-<span class="sourceLineNo">1499</span>      // thread-safe but the one constaint is that if we decide<a name="line.1499"></a>
-<span class="sourceLineNo">1500</span>      // to skip hbase checksum verification then we are<a name="line.1500"></a>
-<span class="sourceLineNo">1501</span>      // guaranteed to use hdfs checksum verification.<a name="line.1501"></a>
-<span class="sourceLineNo">1502</span>      boolean doVerificationThruHBaseChecksum = streamWrapper.shouldUseHBaseChecksum();<a name="line.1502"></a>
-<span class="sourceLineNo">1503</span>      FSDataInputStream is = streamWrapper.getStream(doVerificationThruHBaseChecksum);<a name="line.1503"></a>
-<span class="sourceLineNo">1504</span><a name="line.1504"></a>
-<span class="sourceLineNo">1505</span>      HFileBlock blk = readBlockDataInternal(is, offset,<a name="line.1505"></a>
-<span class="sourceLineNo">1506</span>                         onDiskSizeWithHeaderL,<a name="line.1506"></a>
-<span class="sourceLineNo">1507</span>                         uncompressedSize, pread,<a name="line.1507"></a>
-<span class="sourceLineNo">1508</span>                         doVerificationThruHBaseChecksum);<a name="line.1508"></a>
-<span class="sourceLineNo">1509</span>      if (blk == null) {<a name="line.1509"></a>
-<span class="sourceLineNo">1510</span>        HFile.LOG.warn("HBase checksum verification failed for file " +<a name="line.1510"></a>
-<span class="sourceLineNo">1511</span>                       path + " at offset " +<a name="line.1511"></a>
-<span class="sourceLineNo">1512</span>                       offset + " filesize " + fileSize +<a name="line.1512"></a>
-<span class="sourceLineNo">1513</span>                       ". Retrying read with HDFS checksums turned on...");<a name="line.1513"></a>
-<span class="sourceLineNo">1514</span><a name="line.1514"></a>
-<span class="sourceLineNo">1515</span>        if (!doVerificationThruHBaseChecksum) {<a name="line.1515"></a>
-<span class="sourceLineNo">1516</span>          String msg = "HBase checksum verification failed for file " +<a name="line.1516"></a>
-<span class="sourceLineNo">1517</span>                       path + " at offset " +<a name="line.1517"></a>
-<span class="sourceLineNo">1518</span>                       offset + " filesize " + fileSize +<a name="line.1518"></a>
-<span class="sourceLineNo">1519</span>                       " but this cannot happen because doVerify is " +<a name="line.1519"></a>
-<span class="sourceLineNo">1520</span>                       doVerificationThruHBaseChecksum;<a name="line.1520"></a>
-<span class="sourceLineNo">1521</span>          HFile.LOG.warn(msg);<a name="line.1521"></a>
-<span class="sourceLineNo">1522</span>          throw new IOException(msg); // cannot happen case here<a name="line.1522"></a>
-<span class="sourceLineNo">1523</span>        }<a name="line.1523"></a>
-<span class="sourceLineNo">1524</span>        HFile.checksumFailures.incrementAndGet(); // update metrics<a name="line.1524"></a>
-<span class="sourceLineNo">1525</span><a name="line.1525"></a>
-<span class="sourceLineNo">1526</span>        // If we have a checksum failure, we fall back into a mode where<a name="line.1526"></a>
-<span class="sourceLineNo">1527</span>        // the next few reads use HDFS level checksums. We aim to make the<a name="line.1527"></a>
-<span class="sourceLineNo">1528</span>        // next CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD reads avoid<a name="line.1528"></a>
-<span class="sourceLineNo">1529</span>        // hbase checksum verification, but since this value is set without<a name="line.1529"></a>
-<span class="sourceLineNo">1530</span>        // holding any locks, it can so happen that we might actually do<a name="line.1530"></a>
-<span class="sourceLineNo">1531</span>        // a few more than precisely this number.<a name="line.1531"></a>
-<span class="sourceLineNo">1532</span>        is = this.streamWrapper.fallbackToFsChecksum(CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD);<a name="line.1532"></a>
-<span class="sourceLineNo">1533</span>        doVerificationThruHBaseChecksum = false;<a name="line.1533"></a>
-<span class="sourceLineNo">1534</span>        blk = readBlockDataInternal(is, offset, onDiskSizeWithHeaderL,<a name="line.1534"></a>
-<span class="sourceLineNo">1535</span>                                    uncompressedSize, pread,<a name="line.1535"></a>
-<span class="sourceLineNo">1536</span>                                    doVerificationThruHBaseChecksum);<a name="line.1536"></a>
-<span class="sourceLineNo">1537</span>        if (blk != null) {<a name="line.1537"></a>
-<span class="sourceLineNo">1538</span>          HFile.LOG.warn("HDFS checksum verification suceeded for file " +<a name="line.1538"></a>
-<span class="sourceLineNo">1539</span>                         path + " at offset " +<a name="line.1539"></a>
-<span class="sourceLineNo">1540</span>                         offset + " filesize " + fileSize);<a name="line.1540"></a>
-<span class="sourceLineNo">1541</span>        }<a name="line.1541"></a>
-<span class="sourceLineNo">1542</span>      }<a name="line.1542"></a>
-<span class="sourceLineNo">1543</span>      if (blk == null &amp;&amp; !doVerificationThruHBaseChecksum) {<a name="line.1543"></a>
-<span class="sourceLineNo">1544</span>        String msg = "readBlockData failed, possibly due to " +<a name="line.1544"></a>
-<span class="sourceLineNo">1545</span>                     "checksum verification failed for file " + path +<a name="line.1545"></a>
-<span class="sourceLineNo">1546</span>                     " at offset " + offset + " filesize " + fileSize;<a name="line.1546"></a>
-<span class="sourceLineNo">1547</span>        HFile.LOG.warn(msg);<a name="line.1547"></a>
-<span class="sourceLineNo">1548</span>        throw new IOException(msg);<a name="line.1548"></a>
-<span class="sourceLineNo">1549</span>      }<a name="line.1549"></a>
-<span class="sourceLineNo">1550</span><a name="line.1550"></a>
-<span class="sourceLineNo">1551</span>      // If there is a checksum mismatch earlier, then retry with<a name="line.1551"></a>
-<span class="sourceLineNo">1552</span>      // HBase checksums switched off and use HDFS checksum verification.<a name="line.1552"></a>
-<span class="sourceLineNo">1553</span>      // This triggers HDFS to detect and fix corrupt replicas. The<a name="line.1553"></a>
-<span class="sourceLineNo">1554</span>      // next checksumOffCount read requests will use HDFS checksums.<a name="line.1554"></a>
-<span class="sourceLineNo">1555</span>      // The decrementing of this.checksumOffCount is not thread-safe,<a name="line.1555"></a>
-<span class="sourceLineNo">1556</span>      // but it is harmless because eventually checksumOffCount will be<a name="line.1556"></a>
-<span class="sourceLineNo">1557</span>      // a negative number.<a name="line.1557"></a>
-<span class="sourceLineNo">1558</span>      streamWrapper.checksumOk();<a name="line.1558"></a>
-<span class="sourceLineNo">1559</span>      return blk;<a name="line.1559"></a>
-<span class="sourceLineNo">1560</span>    }<a name="line.1560"></a>
-<span class="sourceLineNo">1561</span><a name="line.1561"></a>
-<span class="sourceLineNo">1562</span>    /**<a name="line.1562"></a>
-<span class="sourceLineNo">1563</span>     * Reads a version 2 block.<a name="line.1563"></a>
-<span class="sourceLineNo">1564</span>     *<a name="line.1564"></a>
-<span class="sourceLineNo">1565</span>     * @param offset the offset in the stream to read at<a name="line.1565"></a>
-<span class="sourceLineNo">1566</span>     * @param onDiskSizeWithHeaderL the on-disk size of the block, including<a name="line.1566"></a>
-<span class="sourceLineNo">1567</span>     *          the header, or -1 if unknown<a name="line.1567"></a>
-<span class="sourceLineNo">1568</span>     * @param uncompressedSize the uncompressed size of the the block. Always<a name="line.1568"></a>
-<span class="sourceLineNo">1569</span>     *          expected to be -1. This parameter is only used in version 1.<a name="line.1569"></a>
-<span class="sourceLineNo">1570</span>     * @param pread whether to use a positional read<a name="line.1570"></a>
-<span class="sourceLineNo">1571</span>     * @param verifyChecksum Whether to use HBase checksums.<a name="line.1571"></a>
-<span class="sourceLineNo">1572</span>     *        If HBase checksum is switched off, then use HDFS checksum.<a name="line.1572"></a>
-<span class="sourceLineNo">1573</span>     * @return the HFileBlock or null if there is a HBase checksum mismatch<a name="line.1573"></a>
-<span class="sourceLineNo">1574</span>     */<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span>    private HFileBlock readBlockDataInternal(FSDataInputStream is, long offset,<a name="line.1575"></a>
-<span class="sourceLineNo">1576</span>        long onDiskSizeWithHeaderL, int uncompressedSize, boolean pread,<a name="line.1576"></a>
-<span class="sourceLineNo">1577</span>        boolean verifyChecksum)<a name="line.1577"></a>
-<span class="sourceLineNo">1578</span>    throws IOException {<a name="line.1578"></a>
-<span class="sourceLineNo">1579</span>      if (offset &lt; 0) {<a name="line.1579"></a>
-<span class="sourceLineNo">1580</span>        throw new IOException("Invalid offset=" + offset + " trying to read "<a name="line.1580"></a>
-<span class="sourceLineNo">1581</span>            + "block (onDiskSize=" + onDiskSizeWithHeaderL<a name="line.1581"></a>
-<span class="sourceLineNo">1582</span>            + ", uncompressedSize=" + uncompressedSize + ")");<a name="line.1582"></a>
-<span class="sourceLineNo">1583</span>      }<a name="line.1583"></a>
-<span class="sourceLineNo">1584</span><a name="line.1584"></a>
-<span class="sourceLineNo">1585</span>      if (uncompressedSize != -1) {<a name="line.1585"></a>
-<span class="sourceLineNo">1586</span>        throw new IOException("Version 2 block reader API does not need " +<a name="line.1586"></a>
-<span class="sourceLineNo">1587</span>            "the uncompressed size parameter");<a name="line.1587"></a>
-<span class="sourceLineNo">1588</span>      }<a name="line.1588"></a>
-<span class="sourceLineNo">1589</span><a name="line.1589"></a>
-<span class="sourceLineNo">1590</span>      if ((onDiskSizeWithHeaderL &lt; hdrSize &amp;&amp; onDiskSizeWithHeaderL != -1)<a name="line.1590"></a>
-<span class="sourceLineNo">1591</span>          || onDiskSizeWithHeaderL &gt;= Integer.MAX_VALUE) {<a name="line.1591"></a>
-<span class="sourceLineNo">1592</span>        throw new IOException("Invalid onDisksize=" + onDiskSizeWithHeaderL<a name="line.1592"></a>
-<span class="sourceLineNo">1593</span>            + ": expected to be at least " + hdrSize<a name="line.1593"></a>
-<span class="sourceLineNo">1594</span>            + " and at most " + Integer.MAX_VALUE + ", or -1 (offset="<a name="line.1594"></a>
-<span class="sourceLineNo">1595</span>            + offset + ", uncompressedSize=" + uncompressedSize + ")");<a name="line.1595"></a>
-<span class="sourceLineNo">1596</span>      }<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span><a name="line.1597"></a>
-<span class="sourceLineNo">1598</span>      int onDiskSizeWithHeader = (int) onDiskSizeWithHeaderL;<a name="line.1598"></a>
-<span class="sourceLineNo">1599</span>      // See if we can avoid reading the header. This is desirable, because<a name="line.1599"></a>
-<span class="sourceLineNo">1600</span>      // we will not incur a backward seek operation if we have already<a name="line.1600"></a>
-<span class="sourceLineNo">1601</span>      // read this block's header as part of the previous read's look-ahead.<a name="line.1601"></a>
-<span class="sourceLineNo">1602</span>      // And we also want to skip reading the header again if it has already<a name="line.1602"></a>
-<span class="sourceLineNo">1603</span>      // been read.<a name="line.1603"></a>
-<span class="sourceLineNo">1604</span>      // TODO: How often does this optimization fire? Has to be same thread so the thread local<a name="line.1604"></a>
-<span class="sourceLineNo">1605</span>      // is pertinent and we have to be reading next block as in a big scan.<a name="line.1605"></a>
-<span class="sourceLineNo">1606</span>      PrefetchedHeader prefetchedHeader = prefetchedHeaderForThread.get();<a name="line.1606"></a>
-<span class="sourceLineNo">1607</span>      ByteBuffer headerBuf = prefetchedHeader.offset == offset? prefetchedHeader.buf: null;<a name="line.1607"></a>
-<span class="sourceLineNo">1608</span><a name="line.1608"></a>
-<span class="sourceLineNo">1609</span>      // Allocate enough space to fit the next block's header too.<a name="line.1609"></a>
-<span class="sourceLineNo">1610</span>      int nextBlockOnDiskSize = 0;<a name="line.1610"></a>
-<span class="sourceLineNo">1611</span>      byte[] onDiskBlock = null;<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span><a name="line.1612"></a>
-<span class="sourceLineNo">1613</span>      HFileBlock b = null;<a name="line.1613"></a>
-<span class="sourceLineNo">1614</span>      if (onDiskSizeWithHeader &gt; 0) {<a name="line.1614"></a>
-<span class="sourceLineNo">1615</span>        // We know the total on-disk size. Read the entire block into memory,<a name="line.1615"></a>
-<span class="sourceLineNo">1616</span>        // then parse the header. This code path is used when<a name="line.1616"></a>
-<span class="sourceLineNo">1617</span>        // doing a random read operation relying on the block index, as well as<a name="line.1617"></a>
-<span class="sourceLineNo">1618</span>        // when the client knows the on-disk size from peeking into the next<a name="line.1618"></a>
-<span class="sourceLineNo">1619</span>        // block's header (e.g. this block's header) when reading the previous<a name="line.1619"></a>
-<span class="sourceLineNo">1620</span>        // block. This is the faster and more preferable case.<a name="line.1620"></a>
-<span class="sourceLineNo">1621</span><a name="line.1621"></a>
-<span class="sourceLineNo">1622</span>        // Size that we have to skip in case we have already read the header.<a name="line.1622"></a>
-<span class="sourceLineNo">1623</span>        int preReadHeaderSize = headerBuf == null ? 0 : hdrSize;<a name="line.1623"></a>
-<span class="sourceLineNo">1624</span>        onDiskBlock = new byte[onDiskSizeWithHeader + hdrSize]; // room for this block plus the<a name="line.1624"></a>
-<span class="sourceLineNo">1625</span>                                                                // next block's header<a name="line.1625"></a>
-<span class="sourceLineNo">1626</span>        nextBlockOnDiskSize = readAtOffset(is, onDiskBlock,<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span>            preReadHeaderSize, onDiskSizeWithHeader - preReadHeaderSize,<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span>            true, offset + preReadHeaderSize, pread);<a name="line.1628"></a>
-<span class="sourceLineNo">1629</span>        if (headerBuf != null) {<a name="line.1629"></a>
-<span class="sourceLineNo">1630</span>          // the header has been read when reading the previous block, copy<a name="line.1630"></a>
-<span class="sourceLineNo">1631</span>          // to this block's header<a name="line.1631"></a>
-<span class="sourceLineNo">1632</span>          // headerBuf is HBB<a name="line.1632"></a>
-<span class="sourceLineNo">1633</span>          assert headerBuf.hasArray();<a name="line.1633"></a>
-<span class="sourceLineNo">1634</span>          System.arraycopy(headerBuf.array(),<a name="line.1634"></a>
-<span class="sourceLineNo">1635</span>              headerBuf.arrayOffset(), onDiskBlock, 0, hdrSize);<a name="line.1635"></a>
-<span class="sourceLineNo">1636</span>        } else {<a name="line.1636"></a>
-<span class="sourceLineNo">1637</span>          headerBuf = ByteBuffer.wrap(onDiskBlock, 0, hdrSize);<a name="line.1637"></a>
-<span class="sourceLineNo">1638</span>        }<a name="line.1638"></a>
-<span class="sourceLineNo">1639</span>        // We know the total on-disk size but not the uncompressed size. Parse the header.<a name="line.1639"></a>
-<span class="sourceLineNo">1640</span>        try {<a name="line.1640"></a>
-<span class="sourceLineNo">1641</span>          // TODO: FIX!!! Expensive parse just to get a length<a name="line.1641"></a>
-<span class="sourceLineNo">1642</span>          b = new HFileBlock(headerBuf, fileContext.isUseHBaseChecksum());<a name="line.1642"></a>
-<span class="sourceLineNo">1643</span>        } catch (IOException ex) {<a name="line.1643"></a>
-<span class="sourceLineNo">1644</span>          // Seen in load testing. Provide comprehensive debug info.<a name="line.1644"></a>
-<span class="sourceLineNo">1645</span>          throw new IOException("Failed to read compressed block at "<a name="line.1645"></a>
-<span class="sourceLineNo">1646</span>              + offset<a name="line.1646"></a>
-<span class="sourceLineNo">1647</span>              + ", onDiskSizeWithoutHeader="<a name="line.1647"></a>
-<span class="sourceLineNo">1648</span>              + onDiskSizeWithHeader<a name="line.1648"></a>
-<span class="sourceLineNo">1649</span>              + ", preReadHeaderSize="<a name="line.1649"></a>
-<span class="sourceLineNo">1650</span>              + hdrSize<a name="line.1650"></a>
-<span class="sourceLineNo">1651</span>              + ", header.length="<a name="line.1651"></a>
-<span class="sourceLineNo">1652</span>              + prefetchedHeader.header.length<a name="line.1652"></a>
-<span class="sourceLineNo">1653</span>              + ", header bytes: "<a name="line.1653"></a>
-<span class="sourceLineNo">1654</span>              + Bytes.toStringBinary(prefetchedHeader.header, 0,<a name="line.1654"></a>
-<span class="sourceLineNo">1655</span>                  hdrSize), ex);<a name="line.1655"></a>
-<span class="sourceLineNo">1656</span>        }<a name="line.1656"></a>
-<span class="sourceLineNo">1657</span>        // if the caller specifies a onDiskSizeWithHeader, validate it.<a name="line.1657"></a>
-<span class="sourceLineNo">1658</span>        int onDiskSizeWithoutHeader = onDiskSizeWithHeader - hdrSize;<a name="line.1658"></a>
-<span class="sourceLineNo">1659</span>        assert onDiskSizeWithoutHeader &gt;= 0;<a name="line.1659"></a>
-<span class="sourceLineNo">1660</span>        b.validateOnDiskSizeWithoutHeader(onDiskSizeWithoutHeader);<a name="line.1660"></a>
-<span class="sourceLineNo">1661</span>      } else {<a name="line.1661"></a>
-<span class="sourceLineNo">1662</span>        // Check headerBuf to see if we have read this block's header as part of<a name="line.1662"></a>
-<span class="sourceLineNo">1663</span>        // reading the previous block. This is an optimization of peeking into<a name="line.1663"></a>
-<span class="sourceLineNo">1664</span>        // the next block's header (e.g.this block's header) when reading the<a name="line.1664"></a>
-<span class="sourceLineNo">1665</span>        // previous block. This is the faster and more preferable case. If the<a name="line.1665"></a>
-<span class="sourceLineNo">1666</span>        // header is already there, don't read the header again.<a name="line.1666"></a>
-<span class="sourceLineNo">1667</span><a name="line.1667"></a>
-<span class="sourceLineNo">1668</span>        // Unfortunately, we still have to do a separate read operation to<a name="line.1668"></a>
-<span class="sourceLineNo">1669</span>        // read the header.<a name="line.1669"></a>
-<span class="sourceLineNo">1670</span>        if (headerBuf == null) {<a name="line.1670"></a>
-<span class="sourceLineNo">1671</span>          // From the header, determine the on-disk size of the given hfile<a name="line.1671"></a>
-<span class="sourceLineNo">1672</span>          // block, and read the remaining data, thereby incurring two read<a name="line.1672"></a>
-<span class="sourceLineNo">1673</span>          // operations. This might happen when we are doing the first read<a name="line.1673"></a>
-<span class="sourceLineNo">1674</span>          // in a series of reads or a random read, and we don't have access<a name="line.1674"></a>
-<span class="sourceLineNo">1675</span>          // to the block index. This is costly and should happen very rarely.<a name="line.1675"></a>
-<span class="sourceLineNo">1676</span>          headerBuf = ByteBuffer.allocate(hdrSize);<a name="line.1676"></a>
-<span class="sourceLineNo">1677</span>          // headerBuf is HBB<a name="line.1677"></a>
-<span class="sourceLineNo">1678</span>          readAtOffset(is, headerBuf.array(), headerBuf.arrayOffset(),<a name="line.1678"></a>
-<span class="sourceLineNo">1679</span>              hdrSize, false, offset, pread);<a name="line.1679"></a>
-<span class="sourceLineNo">1680</span>        }<a name="line.1680"></a>
-<span class="sourceLineNo">1681</span>        // TODO: FIX!!! Expensive parse just to get a length<a name="line.1681"></a>
-<span class="sourceLineNo">1682</span>        b = new HFileBlock(headerBuf, fileContext.isUseHBaseChecksum());<a name="line.1682"></a>
-<span class="sourceLineNo">1683</span>        onDiskBlock = new byte[b.getOnDiskSizeWithHeader() + hdrSize];<a name="line.1683"></a>
-<span class="sourceLineNo">1684</span>        // headerBuf is HBB<a name="line.1684"></a>
-<span class="sourceLineNo">1685</span>        System.arraycopy(headerBuf.array(), headerBuf.arrayOffset(), onDiskBlock, 0, hdrSize);<a name="line.1685"></a>
-<span class="sourceLineNo">1686</span>        nextBlockOnDiskSize =<a name="line.1686"></a>
-<span class="sourceLineNo">1687</span>          readAtOffset(is, onDiskBlock, hdrSize, b.getOnDiskSizeWithHeader()<a name="line.1687"></a>
-<span class="sourceLineNo">1688</span>              - hdrSize, true, offset + hdrSize, pread);<a name="line.1688"></a>
-<span class="sourceLineNo">1689</span>        onDiskSizeWithHeader = b.onDiskSizeWithoutHeader + hdrSize;<a name="line.1689"></a>
-<span class="sourceLineNo">1690</span>      }<a name="line.1690"></a>
-<span class="sourceLineNo">1691</span><a name="line.1691"></a>
-<span class="sourceLineNo">1692</span>      if (!fileContext.isCompressedOrEncrypted()) {<a name="line.1692"></a>
-<span class="sourceLineNo">1693</span>        b.assumeUncompressed();<a name="line.1693"></a>
-<span class="sourceLineNo">1694</span>      }<a name="line.1694"></a>
-<span class="sourceLineNo">1695</span><a name="line.1695"></a>
-<span class="sourceLineNo">1696</span>      if (verifyChecksum &amp;&amp; !validateBlockChecksum(b, onDiskBlock, hdrSize)) {<a name="line.1696"></a>
-<span class="sourceLineNo">1697</span>        return null;             // checksum mismatch<a name="line.1697"></a>
-<span class="sourceLineNo">1698</span>      }<a name="line.1698"></a>
-<span class="sourceLineNo">1699</span><a name="line.1699"></a>
-<span class="sourceLineNo">1700</span>      // The onDiskBlock will become the headerAndDataBuffer for this block.<a name="line.1700"></a>
-<span class="sourceLineNo">1701</span>      // If nextBlockOnDiskSizeWithHeader is not zero, the onDiskBlock already<a name="line.1701"></a>
-<span class="sourceLineNo">1702</span>      // contains the header of next block, so no need to set next<a name="line.1702"></a>
-<span class="sourceLineNo">1703</span>      // block's header in it.<a name="line.1703"></a>
-<span class="sourceLineNo">1704</span>      b = new HFileBlock(ByteBuffer.wrap(onDiskBlock, 0, onDiskSizeWithHeader),<a name="line.1704"></a>
-<span class="sourceLineNo">1705</span>        this.fileContext.isUseHBaseChecksum());<a name="line.1705"></a>
-<span class="sourceLineNo">1706</span><a name="line.1706"></a>
-<span class="sourceLineNo">1707</span>      b.nextBlockOnDiskSizeWithHeader = nextBlockOnDiskSize;<a name="line.1707"></a>
-<span class="sourceLineNo">1708</span><a name="line.1708"></a>
-<span class="sourceLineNo">1709</span>      // Set prefetched header<a name="line.1709"></a>
-<span class="sourceLineNo">1710</span>      if (b.hasNextBlockHeader()) {<a name="line.1710"></a>
-<span class="sourceLineNo">1711</span>        prefetchedHeader.offset = offset + b.getOnDiskSizeWithHeader();<a name="line.1711"></a>
-<span class="sourceLineNo">1712</span>        System.arraycopy(onDiskBlock, onDiskSizeWithHeader, prefetchedHeader.header, 0, hdrSize);<a name="line.1712"></a>
-<span class="sourceLineNo">1713</span>      }<a name="line.1713"></a>
-<span class="sourceLineNo">1714</span><a name="line.1714"></a>
-<span class="sourceLineNo">1715</span>      b.offset = offset;<a name="line.1715"></a>
-<span class="sourceLineNo">1716</span>      b.fileContext.setIncludesTags(this.fileContext.isIncludesTags());<a name="line.1716"></a>
-<span class="sourceLineNo">1717</span>      b.fileContext.setIncludesMvcc(this.fileContext.isIncludesMvcc());<a name="line.1717"></a>
-<span class="sourceLineNo">1718</span>      return b;<a name="line.1718"></a>
-<span class="sourceLineNo">1719</span>    }<a name="line.1719"></a>
-<span class="sourceLineNo">1720</span><a name="line.1720"></a>
-<span class="sourceLineNo">1721</span>    public void setIncludesMemstoreTS(boolean includesMemstoreTS) {<a name="line.1721"></a>
-<span class="sourceLineNo">1722</span>      this.fileContext.setIncludesMvcc(includesMemstoreTS);<a name="line.1722"></a>
-<span class="sourceLineNo">1723</span>    }<a name="line.1723"></a>
-<span class="sourceLineNo">1724</span><a name="line.1724"></a>
-<span class="sourceLineNo">1725</span>    public void setDataBlockEncoder(HFileDataBlockEncoder encoder) {<a name="line.1725"></a>
-<span class="sourceLineNo">1726</span>      encodedBlockDecodingCtx = encoder.newDataBlockDecodingContext(this.fileContext);<a name="line.1726"></a>
-<span class="sourceLineNo">1727</span>    }<a name="line.1727"></a>
-<span class="sourceLineNo">1728</span><a name="line.1728"></a>
-<span class="sourceLineNo">1729</span>    @Override<a name="line.1729"></a>
-<span class="sourceLineNo">1730</span>    public HFileBlockDecodingContext getBlockDecodingContext() {<a name="line.1730"></a>
-<span class="sourceLineNo">1731</span>      return this.encodedBlockDecodingCtx;<a name="line.1731"></a>
-<span class="sourceLineNo">1732</span>    }<a name="line.1732"></a>
-<span class="sourceLineNo">1733</span><a name="line.1733"></a>
-<span class="sourceLineNo">1734</span>    @Override<a name="line.1734"></a>
-<span class="sourceLineNo">1735</span>    public HFileBlockDecodingContext getDefaultBlockDecodingContext() {<a name="line.1735"></a>
-<span class="sourceLineNo">1736</span>      return this.defaultDecodingCtx;<a name="line.1736"></a>
-<span class="sourceLineNo">1737</span>    }<a name="line.1737"></a>
-<span class="sourceLineNo">1738</span><a name="line.1738"></a>
-<span class="sourceLineNo">1739</span>    /**<a name="line.1739"></a>
-<span class="sourceLineNo">1740</span>     * Generates the checksum for the header as well as the data and<a name="line.1740"></a>
-<span class="sourceLineNo">1741</span>     * then validates that it matches the value stored in the header.<a name="line.1741"></a>
-<span class="sourceLineNo">1742</span>     * If there is a checksum mismatch, then return false. Otherwise<a name="line.1742"></a>
-<span class="sourceLineNo">1743</span>     * return true.<a name="line.1743"></a>
-<span class="sourceLineNo">1744</span>     */<a name="line.1744"></a>
-<span class="sourceLineNo">1745</span>    protected boolean validateBlockChecksum(HFileBlock block,  byte[] data, int hdrSize)<a name="line.1745"></a>
-<span class="sourceLineNo">1746</span>        throws IOException {<a name="line.1746"></a>
-<span class="sourceLineNo">1747</span>      return ChecksumUtil.validateBlockChecksum(path, block, data, hdrSize);<a name="line.1747"></a>
-<span class="sourceLineNo">1748</span>    }<a name="line.1748"></a>
-<span class="sourceLineNo">1749</span><a name="line.1749"></a>
-<span class="sourceLineNo">1750</span>    @Override<a name="line.1750"></a>
-<span class="sourceLineNo">1751</span>    public void closeStreams() throws IOException {<a name="line.1751"></a>
-<span class="sourceLineNo">1752</span>      streamWrapper.close();<a name="line.1752"></a>
-<span class="sourceLineNo">1753</span>    }<a name="line.1753"></a>
-<span class="sourceLineNo">1754</span><a name="line.1754"></a>
-<span class="sourceLineNo">1755</span>    @Override<a name="line.1755"></a>
-<span class="sourceLineNo">1756</span>    public String toString() {<a name="line.1756"></a>
-<span class="sourceLineNo">1757</span>      return "hfs=" + hfs + ", path=" + path + ", fileContext=" + fileContext;<a name="line.1757"></a>
-<span class="sourceLineNo">1758</span>    }<a name="line.1758"></a>
-<span class="sourceLineNo">1759</span>  }<a name="line.1759"></a>
-<span class="sourceLineNo">1760</span><a name="line.1760"></a>
-<span class="sourceLineNo">1761</span>  @Override<a name="line.1761"></a>
-<span class="sourceLineNo">1762</span>  public int getSerializedLength() {<a name="line.1762"></a>
-<span class="sourceLineNo">1763</span>    if (buf != null) {<a name="line.1763"></a>
-<span class="sourceLineNo">1764</span>      // include extra bytes for the next header when it's available.<a name="line.1764"></a>
-<span class="sourceLineNo">1765</span>      int extraSpace = hasNextBlockHeader() ? headerSize() : 0;<a name="line.1765"></a>
-<span class="sourceLineNo">1766</span>      return this.buf.limit() + extraSpace + HFileBlock.EXTRA_SERIALIZATION_SPACE;<a name="line.1766"></a>
-<span class="sourceLineNo">1767</span>    }<a name="line.1767"></a>
-<span class="sourceLineNo">1768</span>    return 0;<a name="line.1768"></a>
-<span class="sourceLineNo">1769</span>  }<a name="line.1769"></a>
-<span class="sourceLineNo">1770</span><a name="line.1770"></a>
-<span class="sourceLineNo">1771</span>  @Override<a name="line.1771"></a>
-<span class="sourceLineNo">1772</span>  public void serialize(ByteBuffer destination) {<a name="line.1772"></a>
-<span class="sourceLineNo">1773</span>    this.buf.get(destination, 0, getSerializedLength()<a name="line.1773"></a>
-<span class="sourceLineNo">1774</span>        - EXTRA_SERIALIZATION_SPACE);<a name="line.1774"></a>
-<span class="sourceLineNo">1775</span>    serializeExtraInfo(destination);<a name="line.1775"></a>
-<span class="sourceLineNo">1776</span>  }<a name="line.1776"></a>
-<span class="sourceLineNo">1777</span><a name="line.1777"></a>
-<span class="sourceLineNo">1778</span>  public void serializeExtraInfo(ByteBuffer destination) {<a name="line.1778"></a>
-<span class="sourceLineNo">1779</span>    destination.put(this.fileContext.isUseHBaseChecksum() ? (byte) 1 : (byte) 0);<a name="line.1779"></a>
-<span class="sourceLineNo">1780</span>    destination.putLong(this.offset);<a name="line.1780"></a>
-<span class="sourceLineNo">1781</span>    destination.putInt(this.nextBlockOnDiskSizeWithHeader);<a name="line.1781"></a>
-<span class="sourceLineNo">1782</span>    destination.rewind();<a name="line.1782"></a>
-<span class="sourceLineNo">1783</span>  }<a name="line.1783"></a>
-<span class="sourceLineNo">1784</span><a name="line.1784"></a>
-<span class="sourceLineNo">1785</span>  @Override<a name="line.1785"></a>
-<span class="sourceLineNo">1786</span>  public CacheableDeserializer&lt;Cacheable&gt; getDeserializer() {<a name="line.1786"></a>
-<span class="sourceLineNo">1787</span>    return HFileBlock.blockDeserializer;<a name="line.1787"></a>
-<span class="sourceLineNo">1788</span>  }<a name="line.1788"></a>
-<span class="sourceLineNo">1789</span><a name="line.1789"></a>
-<span class="sourceLineNo">1790</span>  @Override<a name="line.1790"></a>
-<span class="sourceLineNo">1791</span>  public int hashCode() {<a name="line.1791"></a>
-<span class="sourceLineNo">1792</span>    int result = 1;<a name="line.1792"></a>
-<span class="sourceLineNo">1793</span>    result = result * 31 + blockType.hashCode();<a name="line.1793"></a>
-<span class="sourceLineNo">1794</span>    result = result * 31 + nextBlockOnDiskSizeWithHeader;<a name="line.1794"></a>
-<span class="sourceLineNo">1795</span>    result = result * 31 + (int) (offset ^ (offset &gt;&gt;&gt; 32));<a name="line.1795"></a>
-<span class="sourceLineNo">1796</span>    result = result * 31 + onDiskSizeWithoutHeader;<a name="line.1796"></a>
-<span class="sourceLineNo">1797</span>    result = result * 31 + (int) (prevBlockOffset ^ (prevBlockOffset &gt;&gt;&gt; 32));<a name="line.1797"></a>
-<span class="sourceLineNo">1798</span>    result = result * 31 + uncompressedSizeWithoutHeader;<a name="line.1798"></a>
-<span class="sourceLineNo">1799</span>    result = result * 31 + buf.hashCode();<a name="line.1799"></a>
-<span class="sourceLineNo">1800</span>    return result;<a name="line.1800"></a>
-<span class="sourceLineNo">1801</span>  }<a name="line.1801"></a>
-<span class="sourceLineNo">1802</span><a name="line.1802"></a>
-<span class="sourceLineNo">1803</span>  @Override<a name="line.1803"></a>
-<span class="sourceLineNo">1804</span>  public boolean equals(Object comparison) {<a name="line.1804"></a>
-<span class="sourceLineNo">1805</span>    if (this == comparison) {<a name="line.1805"></a>
-<span class="sourceLineNo">1806</span>      return true;<a name="line.1806"></a>
-<span class="sourceLineNo">1807</span>    }<a name="line.1807"></a>
-<span class="sourceLineNo">1808</span>    if (comparison == null) {<a name="line.1808"></a>
-<span class="sourceLineNo">1809</span>      return false;<a name="line.1809"></a>
-<span class="sourceLineNo">1810</span>    }<a name="line.1810"></a>
-<span class="sourceLineNo">1811</span>    if (comparison.getClass() != this.getClass()) {<a name="line.1811"></a>
-<span class="sourceLineNo">1812</span>      return false;<a name="line.1812"></a>
-<span class="sourceLineNo">1813</span>    }<a name="line.1813"></a>
-<span class="sourceLineNo">1814</span><a name="line.1814"></a>
-<span class="sourceLineNo">1815</span>    HFileBlock castedComparison = (HFileBlock) comparison;<a name="line.1815"></a>
-<span class="sourceLineNo">1816</span><a name="line.1816"></a>
-<span class="sourceLineNo">1817</span>    if (castedComparison.blockType != this.blockType) {<a name="line.1817"></a>
-<span class="sourceLineNo">1818</span>      return false;<a name="line.1818"></a>
-<span class="sourceLineNo">1819</span>    }<a name="line.1819"></a>
-<span class="sourceLineNo">1820</span>    if (castedComparison.nextBlockOnDiskSizeWithHeader != this.nextBlockOnDiskSizeWithHeader) {<a name="line.1820"></a>
-<span class="sourceLineNo">1821</span>      return false;<a name="line.1821"></a>
-<span class="sourceLineNo">1822</span>    }<a name="line.1822"></a>
-<span class="sourceLineNo">1823</span>    if (castedComparison.offset != this.offset) {<a name="line.1823"></a>
-<span class="sourceLineNo">1824</span>      return false;<a name="line.1824"></a>
-<span class="sourceLineNo">1825</span>    }<a name="line.1825"></a>
-<span class="sourceLineNo">1826</span>    if (castedComparison.onDiskSizeWithoutHeader != this.onDiskSizeWithoutHeader) {<a name="line.1826"></a>
-<span class="sourceLineNo">1827</span>      return false;<a name="line.1827"></a>
-<span class="sourceLineNo">1828</span>    }<a name="line.1828"></a>
-<span class="sourceLineNo">1829</span>    if (castedComparison.prevBlockOffset != this.prevBlockOffset) {<a name="line.1829"></a>
-<span class="sourceLineNo">1830</span>      return false;<a name="line.1830"></a>
-<span class="sourceLineNo">1831</span>    }<a name="line.1831"></a>
-<span class="sourceLineNo">1832</span>    if (castedComparison.uncompressedSizeWithoutHeader != this.uncompressedSizeWithoutHeader) {<a name="line.1832"></a>
-<span class="sourceLineNo">1833</span>      return false;<a name="line.1833"></a>
-<span class="sourceLineNo">1834</span>    }<a name="line.1834"></a>
-<span class="sourceLineNo">1835</span>    if (ByteBuff.compareTo(this.buf, 0, this.buf.limit(), castedComparison.buf, 0,<a name="line.1835"></a>
-<span class="sourceLineNo">1836</span>        castedComparison.buf.limit()) != 0) {<a name="line.1836"></a>
-<span class="sourceLineNo">1837</span>      return false;<a name="line.1837"></a>
-<span class="sourceLineNo">1838</span>    }<a name="line.1838"></a>
-<span class="sourceLineNo">1839</span>    return true;<a name="line.1839"></a>
-<span class="sourceLineNo">1840</span>  }<a name="line.1840"></a>
-<span class="sourceLineNo">1841</span><a name="line.1841"></a>
-<span class="sourceLineNo">1842</span>  public DataBlockEncoding getDataBlockEncoding() {<a name="line.1842"></a>
-<span class="sourceLineNo">1843</span>    if (blockType == BlockType.ENCODED_DATA) {<a name="line.1843"></a>
-<span class="sourceLineNo">1844</span>      return DataBlockEncoding.getEncodingById(getDataBlockEncodingId());<a name="line.1844"></a>
-<span class="sourceLineNo">1845</span>    }<a name="line.1845"></a>
-<span class="sourceLineNo">1846</span>    return DataBlockEncoding.NONE;<a name="line.1846"></a>
-<span class="sourceLineNo">1847</span>  }<a name="line.1847"></a>
-<span class="sourceLineNo">1848</span><a name="line.1848"></a>
-<span class="sourceLineNo">1849</span>  byte getChecksumType() {<a name="line.1849"></a>
-<span class="sourceLineNo">1850</span>    return this.fileContext.getChecksumType().getCode();<a name="line.1850"></a>
-<span class="sourceLineNo">1851</span>  }<a name="line.1851"></a>
-<span class="sourceLineNo">1852</span><a name="line.1852"></a>
-<span class="sourceLineNo">1853</span>  int getBytesPerChecksum() {<a name="line.1853"></a>
-<span class="sourceLineNo">1854</span>    return this.fileContext.getBytesPerChecksum();<a name="line.1854"></a>
-<span class="sourceLineNo">1855</span>  }<a name="line.1855"></a>
-<span class="sourceLineNo">1856</span><a name="line.1856"></a>
-<span class="sourceLineNo">1857</span>  /** @return the size of data on disk + header. Excludes checksum. */<a name="line.1857"></a>
-<span class="sourceLineNo">1858</span>  int getOnDiskDataSizeWithHeader() {<a name="line.1858"></a>
-<span class="sourceLineNo">1859</span>    return this.onDiskDataSizeWithHeader;<a name="line.1859"></a>
-<span class="sourceLineNo">1860</span>  }<a name="line.1860"></a>
-<span class="sourceLineNo">1861</span><a name="line.1861"></a>
-<span class="sourceLineNo">1862</span>  /**<a name="line.1862"></a>
-<span class="sourceLineNo">1863</span>   * Calcuate the number of bytes required to store all the checksums<a name="line.1863"></a>
-<span class="sourceLineNo">1864</span>   * for this block. Each checksum value is a 4 byte integer.<a name="line.1864"></a>
-<span class="sourceLineNo">1865</span>   */<a name="line.1865"></a>
-<span class="sourceLineNo">1866</span>  int totalChecksumBytes() {<a name="line.1866"></a>
-<span class="sourceLineNo">1867</span>    // If the hfile block has minorVersion 0, then there are no checksum<a name="line.1867"></a>
-<span class="sourceLineNo">1868</span>    // data to validate. Similarly, a zero value in this.bytesPerChecksum<a name="line.1868"></a>
-<span class="sourceLineNo">1869</span>    // indicates that cached blocks do not have checksum data because<a name="line.1869"></a>
-<span class="sourceLineNo">1870</span>    // checksums were already validated when the block was read from disk.<a name="line.1870"></a>
-<span class="sourceLineNo">1871</span>    if (!fileContext.isUseHBaseChecksum() || this.fileContext.getBytesPerChecksum() == 0) {<a name="line.1871"></a>
-<span class="sourceLineNo">1872</span>      return 0;<a name="line.1872"></a>
-<span class="sourceLineNo">1873</span>    }<a name="line.1873"></a>
-<span class="sourceLineNo">1874</span>    return (int) ChecksumUtil.numBytes(onDiskDataSizeWithHeader,<a name="line.1874"></a>
-<span class="sourceLineNo">1875</span>        this.fileContext.getBytesPerChecksum());<a name="line.1875"></a>
-<span class="sourceLineNo">1876</span>  }<a name="line.1876"></a>
-<span class="sourceLineNo">1877</span><a name="line.1877"></a>
-<span class="sourceLineNo">1878</span>  /**<a name="line.1878"></a>
-<span class="sourceLineNo">1879</span>   * Returns the size of this block header.<a name="line.1879"></a>
-<span class="sourceLineNo">1880</span>   */<a name="line.1880"></a>
-<span class="sourceLineNo">1881</span>  public int headerSize() {<a name="line.1881"></a>
-<span class="sourceLineNo">1882</span>    return headerSize(this.fileContext.isUseHBaseChecksum());<a name="line.1882"></a>
-<span class="sourceLineNo">1883</span>  }<a name="line.1883"></a>
-<span class="sourceLineNo">1884</span><a name="line.1884"></a>
-<span class="sourceLineNo">1885</span>  /**<a name="line.1885"></a>
-<span class="sourceLineNo">1886</span>   * Maps a minor version to the size of the header.<a name="line.1886"></a>
-<span class="sourceLineNo">1887</span>   */<a name="line.1887"></a>
-<span class="sourceLineNo">1888</span>  public static int headerSize(boolean usesHBaseChecksum) {<a name="line.1888"></a>
-<span class="sourceLineNo">1889</span>    if (usesHBaseChecksum) {<a name="line.1889"></a>
-<span class="sourceLineNo">1890</span>      return HConstants.HFILEBLOCK_HEADER_SIZE;<a name="line.1890"></a>
-<span class="sourceLineNo">1891</span>    }<a name="line.1891"></a>
-<span class="sourceLineNo">1892</span>    return HConstants.HFILEBLOCK_HEADER_SIZE_NO_CHECKSUM;<a name="line.1892"></a>
-<span class="sourceLineNo">1893</span>  }<a name="line.1893"></a>
-<span class="sourceLineNo">1894</span><a name="line.1894"></a>
-<span class="sourceLineNo">1895</span>  /**<a name="line.1895"></a>
-<span class="sourceLineNo">1896</span>   * Return the appropriate DUMMY_HEADER for the minor version<a name="line.1896"></a>
-<span class="sourceLineNo">1897</span>   */<a name="line.1897"></a>
-<span class="sourceLineNo">1898</span>  public byte[] getDummyHeaderForVersion() {<a name="line.1898"></a>
-<span class="sourceLineNo">1899</span>    return getDummyHeaderForVersion(this.fileContext.isUseHBaseChecksum());<a name="line.1899"></a>
-<span class="sourceLineNo">1900</span>  }<a name="line.1900"></a>
-<span class="sourceLineNo">1901</span><a name="line.1901"></a>
-<span class="sourceLineNo">1902</span>  /**<a name="line.1902"></a>
-<span class="sourceLineNo">1903</span>   * Return the appropriate DUMMY_HEADER for the minor version<a name="line.1903"></a>
-<span class="sourceLineNo">1904</span>   */<a name="line.1904"></a>
-<span class="sourceLineNo">1905</span>  static private byte[] getDummyHeaderForVersion(boolean usesHBaseChecksum) {<a name="line.1905"></a>
-<span class="sourceLineNo">1906</span>    if (usesHBaseChecksum) {<a name="line.1906"></a>
-<span class="sourceLineNo">1907</span>      return HConstants.HFILEBLOCK_DUMMY_HEADER;<a name="line.1907"></a>
-<span class="sourceLineNo">1908</span>    }<a name="line.1908"></a>
-<span class="sourceLineNo">1909</span>    return DUMMY_HEADER_NO_CHECKSUM;<a name="line.1909"></a>
-<span class="sourceLineNo">1910</span>  }<a name="line.1910"></a>
-<span class="sourceLineNo">1911</span><a name="line.1911"></a>
-<span class="sourceLineNo">1912</span>  /**<a name="line.1912"></a>
-<span class="sourceLineNo">1913</span>   * @return the HFileContext used to create this HFileBlock. Not necessary the<a name="line.1913"></a>
-<span class="sourceLineNo">1914</span>   * fileContext for the file from which this block's data was originally read.<a name="line.1914"></a>
-<span class="sourceLineNo">1915</span>   */<a name="line.1915"></a>
-<span class="sourceLineNo">1916</span>  public HFileContext getHFileContext() {<a name="line.1916"></a>
-<span class="sourceLineNo">1917</span>    return this.fileContext;<a name="line.1917"></a>
-<span class="sourceLineNo">1918</span>  }<a name="line.1918"></a>
-<span class="sourceLineNo">1919</span><a name="line.1919"></a>
-<span class="sourceLineNo">1920</span>  @Override<a name="line.1920"></a>
-<span class="sourceLineNo">1921</span>  public MemoryType getMemoryType() {<a name="line.1921"></a>
-<span class="sourceLineNo">1922</span>    return this.memType;<a name="line.1922"></a>
-<span class="sourceLineNo">1923</span>  }<a name="line.1923"></a>
-<span class="sourceLineNo">1924</span><a name="line.1924"></a>
-<span class="sourceLineNo">1925</span>  /**<a name="line.1925"></a>
-<span class="sourceLineNo">1926</span>   * @return true if this block is backed by a shared memory area(such as that of a BucketCache).<a name="line.1926"></a>
-<span class="sourceLineNo">1927</span>   */<a name="line.1927"></a>
-<span class="sourceLineNo">1928</span>  public boolean usesSharedMemory() {<a name="line.1928"></a>
-<span class="sourceLineNo">1929</span>    return this.memType == MemoryType.SHARED;<a name="line.1929"></a>
-<span class="sourceLineNo">1930</span>  }<a name="line.1930"></a>
-<span class="sourceLineNo">1931</span><a name="line.1931"></a>
-<span class="sourceLineNo">1932</span>  /**<a name="line.1932"></a>
-<span class="sourceLineNo">1933</span>   * Convert the contents of the block header into a human readable string.<a name="line.1933"></a>
-<span class="sourceLineNo">1934</span>   * This is mostly helpful for debugging. This assumes that the block<a name="line.1934"></a>
-<span class="sourceLineNo">1935</span>   * has minor version &gt; 0.<a name="line.1935"></a>
-<span class="sourceLineNo">1936</span>   */<a name="line.1936"></a>
-<span class="sourceLineNo">1937</span>  static String toStringHeader(ByteBuff buf) throws IOException {<a name="line.1937"></a>
-<span class="sourceLineNo">1938</span>    byte[] magicBuf = new byte[Math.min(buf.limit() - buf.position(), BlockType.MAGIC_LENGTH)];<a name="line.1938"></a>
-<span class="sourceLineNo">1939</span>    buf.get(magicBuf);<a name="line.1939"></a>
-<span class="sourceLineNo">1940</span>    BlockType bt = BlockType.parse(magicBuf, 0, BlockType.MAGIC_LENGTH);<a name="line.1940"></a>
-<span class="sourceLineNo">1941</span>    int compressedBlockSizeNoHeader = buf.getInt();<a name="line.1941"></a>
-<span class="sourceLineNo">1942</span>    int uncompressedBlockSizeNoHeader = buf.getInt();<a name="line.1942"></a>
-<span class="sourceLineNo">1943</span>    long prevBlockOffset = buf.getLong();<a name="line.1943"></a>
-<span class="sourceLineNo">1944</span>    byte cksumtype = buf.get();<a name="line.1944"></a>
-<span class="sourceLineNo">1945</span>    long bytesPerChecksum = buf.getInt();<a name="line.1945"></a>
-<span class="sourceLineNo">1946</span>    long onDiskDataSizeWithHeader = buf.getInt();<a name="line.1946"></a>
-<span class="sourceLineNo">1947</span>    return " Header dump: magic: " + Bytes.toString(magicBuf) +<a name="line.1947"></a>
-<span class="sourceLineNo">1948</span>                   " blockType " + bt +<a name="line.1948"></a>
-<span class="sourceLineNo">1949</span>                   " compressedBlockSizeNoHeader " +<a name="line.1949"></a>
-<span class="sourceLineNo">1950</span>                   compressedBlockSizeNoHeader +<a name="line.1950"></a>
-<span class="sourceLineNo">1951</span>                   " uncompressedBlockSizeNoHeader " +<a name="line.1951"></a>
-<span class="sourceLineNo">1952</span>                   uncompressedBlockSizeNoHeader +<a name="line.1952"></a>
-<span class="sourceLineNo">1953</span>                   " prevBlockOffset " + prevBlockOffset +<a name="line.1953"></a>
-<span class="sourceLineNo">1954</span>                   " checksumType " + ChecksumType.codeToType(cksumtype) +<a name="line.1954"></a>
-<span class="sourceLineNo">1955</span>                   " bytesPerChecksum " + bytesPerChecksum +<a name="line.1955"></a>
-<span class="sourceLineNo">1956</span>                   " onDiskDataSizeWithHeader " + onDiskDataSizeWithHeader;<a name="line.1956"></a>
-<span class="sourceLineNo">1957</span>  }<a name="line.1957"></a>
-<span class="sourceLineNo">1958</span>}<a name="line.1958"></a>
+<span class="sourceLineNo">1361</span>    protected HFileContext fileContext;<a name="line.1361"></a>
+<span class="sourceLineNo">1362</span>    // Cache the fileName<a name="line.1362"></a>
+<span class="sourceLineNo">1363</span>    protected String pathName;<a name="line.1363"></a>
+<span class="sourceLineNo">1364</span><a name="line.1364"></a>
+<span class="sourceLineNo">1365</span>    public FSReaderImpl(FSDataInputStreamWrapper stream, long fileSize, HFileSystem hfs, Path path,<a name="line.1365"></a>
+<span class="sourceLineNo">1366</span>        HFileContext fileContext) throws IOException {<a name="line.1366"></a>
+<span class="sourceLineNo">1367</span>      this.fileSize = fileSize;<a name="line.1367"></a>
+<span class="sourceLineNo">1368</span>      this.hfs = hfs;<a name="line.1368"></a>
+<span class="sourceLineNo">1369</span>      if (path != null) {<a name="line.1369"></a>
+<span class="sourceLineNo">1370</span>        this.pathName = path.toString();<a name="line.1370"></a>
+<span class="sourceLineNo">1371</span>      }<a name="line.1371"></a>
+<span class="sourceLineNo">1372</span>      this.fileContext = fileContext;<a name="line.1372"></a>
+<span class="sourceLineNo">1373</span>      this.hdrSize = headerSize(fileContext.isUseHBaseChecksum());<a name="line.1373"></a>
+<span class="sourceLineNo">1374</span><a name="line.1374"></a>
+<span class="sourceLineNo">1375</span>      this.streamWrapper = stream;<a name="line.1375"></a>
+<span class="sourceLineNo">1376</span>      // Older versions of HBase didn't support checksum.<a name="line.1376"></a>
+<span class="sourceLineNo">1377</span>      this.streamWrapper.prepareForBlockReader(!fileContext.isUseHBaseChecksum());<a name="line.1377"></a>
+<span class="sourceLineNo">1378</span>      defaultDecodingCtx = new HFileBlockDefaultDecodingContext(fileContext);<a name="line.1378"></a>
+<span class="sourceLineNo">1379</span>      encodedBlockDecodingCtx = defaultDecodingCtx;<a name="line.1379"></a>
+<span class="sourceLineNo">1380</span>    }<a name="line.1380"></a>
+<span class="sourceLineNo">1381</span><a name="line.1381"></a>
+<span class="sourceLineNo">1382</span>    /**<a name="line.1382"></a>
+<span class="sourceLineNo">1383</span>     * A constructor that reads files with the latest minor version.<a name="line.1383"></a>
+<span class="sourceLineNo">1384</span>     * This is used by unit tests only.<a name="line.1384"></a>
+<span class="sourceLineNo">1385</span>     */<a name="line.1385"></a>
+<span class="sourceLineNo">1386</span>    FSReaderImpl(FSDataInputStream istream, long fileSize, HFileContext fileContext)<a name="line.1386"></a>
+<span class="sourceLineNo">1387</span>    throws IOException {<a name="line.1387"></a>
+<span class="sourceLineNo">1388</span>      this(new FSDataInputStreamWrapper(istream), fileSize, null, null, fileContext);<a name="line.1388"></a>
+<span class="sourceLineNo">1389</span>    }<a name="line.1389"></a>
+<span class="sourceLineNo">1390</span><a name="line.1390"></a>
+<span class="sourceLineNo">1391</span>    public BlockIterator blockRange(final long startOffset, final long endOffset) {<a name="line.1391"></a>
+<span class="sourceLineNo">1392</span>      final FSReader owner = this; // handle for inner class<a name="line.1392"></a>
+<span class="sourceLineNo">1393</span>      return new BlockIterator() {<a name="line.1393"></a>
+<span class="sourceLineNo">1394</span>        private long offset = startOffset;<a name="line.1394"></a>
+<span class="sourceLineNo">1395</span><a name="line.1395"></a>
+<span class="sourceLineNo">1396</span>        @Override<a name="line.1396"></a>
+<span class="sourceLineNo">1397</span>        public HFileBlock nextBlock() throws IOException {<a name="line.1397"></a>
+<span class="sourceLineNo">1398</span>          if (offset &gt;= endOffset)<a name="line.1398"></a>
+<span class="sourceLineNo">1399</span>            return null;<a name="line.1399"></a>
+<span class="sourceLineNo">1400</span>          HFileBlock b = readBlockData(offset, -1, -1, false);<a name="line.1400"></a>
+<span class="sourceLineNo">1401</span>          offset += b.getOnDiskSizeWithHeader();<a name="line.1401"></a>
+<span class="sourceLineNo">1402</span>          return b.unpack(fileContext, owner);<a name="line.1402"></a>
+<span class="sourceLineNo">1403</span>        }<a name="line.1403"></a>
+<span class="sourceLineNo">1404</span><a name="line.1404"></a>
+<span class="sourceLineNo">1405</span>        @Override<a name="line.1405"></a>
+<span class="sourceLineNo">1406</span>        public HFileBlock nextBlockWithBlockType(BlockType blockType)<a name="line.1406"></a>
+<span class="sourceLineNo">1407</span>            throws IOException {<a name="line.1407"></a>
+<span class="sourceLineNo">1408</span>          HFileBlock blk = nextBlock();<a name="line.1408"></a>
+<span class="sourceLineNo">1409</span>          if (blk.getBlockType() != blockType) {<a name="line.1409"></a>
+<span class="sourceLineNo">1410</span>            throw new IOException("Expected block of type " + blockType<a name="line.1410"></a>
+<span class="sourceLineNo">1411</span>                + " but found " + blk.getBlockType());<a name="line.1411"></a>
+<span class="sourceLineNo">1412</span>          }<a name="line.1412"></a>
+<span class="sourceLineNo">1413</span>          return blk;<a name="line.1413"></a>
+<span class="sourceLineNo">1414</span>        }<a name="line.1414"></a>
+<span class="sourceLineNo">1415</span>      };<a name="line.1415"></a>
+<span class="sourceLineNo">1416</span>    }<a name="line.1416"></a>
+<span class="sourceLineNo">1417</span><a name="line.1417"></a>
+<span class="sourceLineNo">1418</span>    /**<a name="line.1418"></a>
+<span class="sourceLineNo">1419</span>     * Does a positional read or a seek and read into the given buffer. Returns<a name="line.1419"></a>
+<span class="sourceLineNo">1420</span>     * the on-disk size of the next block, or -1 if it could not be determined.<a name="line.1420"></a>
+<span class="sourceLineNo">1421</span>     *<a name="line.1421"></a>
+<span class="sourceLineNo">1422</span>     * @param dest destination buffer<a name="line.1422"></a>
+<span class="sourceLineNo">1423</span>     * @param destOffset offset in the destination buffer<a name="line.1423"></a>
+<span class="sourceLineNo">1424</span>     * @param size size of the block to be read<a name="line.1424"></a>
+<span class="sourceLineNo">1425</span>     * @param peekIntoNextBlock whether to read the next block's on-disk size<a name="line.1425"></a>
+<span class="sourceLineNo">1426</span>     * @param fileOffset position in the stream to read at<a name="line.1426"></a>
+<span class="sourceLineNo">1427</span>     * @param pread whether we should do a positional read<a name="line.1427"></a>
+<span class="sourceLineNo">1428</span>     * @param istream The input source of data<a name="line.1428"></a>
+<span class="sourceLineNo">1429</span>     * @return the on-disk size of the next block with header size included, or<a name="line.1429"></a>
+<span class="sourceLineNo">1430</span>     *         -1 if it could not be determined<a name="line.1430"></a>
+<span class="sourceLineNo">1431</span>     * @throws IOException<a name="line.1431"></a>
+<span class="sourceLineNo">1432</span>     */<a name="line.1432"></a>
+<span class="sourceLineNo">1433</span>    protected int readAtOffset(FSDataInputStream istream,<a name="line.1433"></a>
+<span class="sourceLineNo">1434</span>        byte[] dest, int destOffset, int size,<a name="line.1434"></a>
+<span class="sourceLineNo">1435</span>        boolean peekIntoNextBlock, long fileOffset, boolean pread)<a name="line.1435"></a>
+<span class="sourceLineNo">1436</span>        throws IOException {<a name="line.1436"></a>
+<span class="sourceLineNo">1437</span>      if (peekIntoNextBlock &amp;&amp;<a name="line.1437"></a>
+<span class="sourceLineNo">1438</span>          destOffset + size + hdrSize &gt; dest.length) {<a name="line.1438"></a>
+<span class="sourceLineNo">1439</span>        // We are asked to read the next block's header as well, but there is<a name="line.1439"></a>
+<span class="sourceLineNo">1440</span>        // not enough room in the array.<a name="line.1440"></a>
+<span class="sourceLineNo">1441</span>        throw new IOException("Attempted to read " + size + " bytes and " +<a name="line.1441"></a>
+<span class="sourceLineNo">1442</span>            hdrSize + " bytes of next header into a " + dest.length +<a name="line.1442"></a>
+<span class="sourceLineNo">1443</span>            "-byte array at offset " + destOffset);<a name="line.1443"></a>
+<span class="sourceLineNo">1444</span>      }<a name="line.1444"></a>
+<span class="sourceLineNo">1445</span><a name="line.1445"></a>
+<span class="sourceLineNo">1446</span>      if (!pread &amp;&amp; streamLock.tryLock()) {<a name="line.1446"></a>
+<span class="sourceLineNo">1447</span>        // Seek + read. Better for scanning.<a name="line.1447"></a>
+<span class="sourceLineNo">1448</span>        try {<a name="line.1448"></a>
+<span class="sourceLineNo">1449</span>          istream.seek(fileOffset);<a name="line.1449"></a>
+<span class="sourceLineNo">1450</span><a name="line.1450"></a>
+<span class="sourceLineNo">1451</span>          long realOffset = istream.getPos();<a name="line.1451"></a>
+<span class="sourceLineNo">1452</span>          if (realOffset != fileOffset) {<a name="line.1452"></a>
+<span class="sourceLineNo">1453</span>            throw new IOException("Tried to seek to " + fileOffset + " to "<a name="line.1453"></a>
+<span class="sourceLineNo">1454</span>                + "read " + size + " bytes, but pos=" + realOffset<a name="line.1454"></a>
+<span class="sourceLineNo">1455</span>                + " after seek");<a name="line.1455"></a>
+<span class="sourceLineNo">1456</span>          }<a name="line.1456"></a>
+<span class="sourceLineNo">1457</span><a name="line.1457"></a>
+<span class="sourceLineNo">1458</span>          if (!peekIntoNextBlock) {<a name="line.1458"></a>
+<span class="sourceLineNo">1459</span>            IOUtils.readFully(istream, dest, destOffset, size);<a name="line.1459"></a>
+<span class="sourceLineNo">1460</span>            return -1;<a name="line.1460"></a>
+<span class="sourceLineNo">1461</span>          }<a name="line.1461"></a>
+<span class="sourceLineNo">1462</span><a name="line.1462"></a>
+<span class="sourceLineNo">1463</span>          // Try to read the next block header.<a name="line.1463"></a>
+<span class="sourceLineNo">1464</span>          if (!readWithExtra(istream, dest, destOffset, size, hdrSize))<a name="line.1464"></a>
+<span class="sourceLineNo">1465</span>            return -1;<a name="line.1465"></a>
+<span class="sourceLineNo">1466</span>        } finally {<a name="line.1466"></a>
+<span class="sourceLineNo">1467</span>          streamLock.unlock();<a name="line.1467"></a>
+<span class="sourceLineNo">1468</span>        }<a name="line.1468"></a>
+<span class="sourceLineNo">1469</span>      } else {<a name="line.1469"></a>
+<span class="sourceLineNo">1470</span>        // Positional read. Better for random reads; or when the streamLock is already locked.<a name="line.1470"></a>
+<span class="sourceLineNo">1471</span>        int extraSize = peekIntoNextBlock ? hdrSize : 0;<a name="line.1471"></a>
+<span class="sourceLineNo">1472</span>        if (!positionalReadWithExtra(istream, fileOffset, dest, destOffset,<a name="line.1472"></a>
+<span class="sourceLineNo">1473</span>            size, extraSize)) {<a name="line.1473"></a>
+<span class="sourceLineNo">1474</span>          return -1;<a name="line.1474"></a>
+<span class="sourceLineNo">1475</span>        }<a name="line.1475"></a>
+<span class="sourceLineNo">1476</span>      }<a name="line.1476"></a>
+<span class="sourceLineNo">1477</span><a name="line.1477"></a>
+<span class="sourceLineNo">1478</span>      assert peekIntoNextBlock;<a name="line.1478"></a>
+<span class="sourceLineNo">1479</span>      return Bytes.toInt(dest, destOffset + size + BlockType.MAGIC_LENGTH) + hdrSize;<a name="line.1479"></a>
+<span class="sourceLineNo">1480</span>    }<a name="line.1480"></a>
+<span class="sourceLineNo">1481</span><a name="line.1481"></a>
+<span class="sourceLineNo">1482</span>    /**<a name="line.1482"></a>
+<span class="sourceLineNo">1483</span>     * Reads a version 2 block (version 1 blocks not supported and not expected). Tries to do as<a name="line.1483"></a>
+<span class="sourceLineNo">1484</span>     * little memory allocation as possible, using the provided on-disk size.<a name="line.1484"></a>
+<span class="sourceLineNo">1485</span>     *<a name="line.1485"></a>
+<span class="sourceLineNo">1486</span>     * @param offset the offset in the stream to read at<a name="line.1486"></a>
+<span class="sourceLineNo">1487</span>     * @param onDiskSizeWithHeaderL the on-disk size of the block, including<a name="line.1487"></a>
+<span class="sourceLineNo">1488</span>     *          the header, or -1 if unknown<a name="line.1488"></a>
+<span class="sourceLineNo">1489</span>     * @param uncompressedSize the uncompressed size of the the block. Always<a name="line.1489"></a>
+<span class="sourceLineNo">1490</span>     *          expected to be -1. This parameter is only used in version 1.<a name="line.1490"></a>
+<span class="sourceLineNo">1491</span>     * @param pread whether to use a positional read<a name="line.1491"></a>
+<span class="sourceLineNo">1492</span>     */<a name="line.1492"></a>
+<span class="sourceLineNo">1493</span>    @Override<a name="line.1493"></a>
+<span class="sourceLineNo">1494</span>    public HFileBlock readBlockData(long offset, long onDiskSizeWithHeaderL,<a name="line.1494"></a>
+<span class="sourceLineNo">1495</span>        int uncompressedSize, boolean pread)<a name="line.1495"></a>
+<span class="sourceLineNo">1496</span>    throws IOException {<a name="line.1496"></a>
+<span class="sourceLineNo">1497</span><a name="line.1497"></a>
+<span class="sourceLineNo">1498</span>      // get a copy of the current state of whether to validate<a name="line.1498"></a>
+<span class="sourceLineNo">1499</span>      // hbase checksums or not for this read call. This is not<a name="line.1499"></a>
+<span class="sourceLineNo">1500</span>      // thread-safe but the one constaint is that if we decide<a name="line.1500"></a>
+<span class="sourceLineNo">1501</span>      // to skip hbase checksum verification then we are<a name="line.1501"></a>
+<span class="sourceLineNo">1502</span>      // guaranteed to use hdfs checksum verification.<a name="line.1502"></a>
+<span class="sourceLineNo">1503</span>      boolean doVerificationThruHBaseChecksum = streamWrapper.shouldUseHBaseChecksum();<a name="line.1503"></a>
+<span class="sourceLineNo">1504</span>      FSDataInputStream is = streamWrapper.getStream(doVerificationThruHBaseChecksum);<a name="line.1504"></a>
+<span class="sourceLineNo">1505</span><a name="line.1505"></a>
+<span class="sourceLineNo">1506</span>      HFileBlock blk = readBlockDataInternal(is, offset,<a name="line.1506"></a>
+<span class="sourceLineNo">1507</span>                         onDiskSizeWithHeaderL,<a name="line.1507"></a>
+<span class="sourceLineNo">1508</span>                         uncompressedSize, pread,<a name="line.1508"></a>
+<span class="sourceLineNo">1509</span>                         doVerificationThruHBaseChecksum);<a name="line.1509"></a>
+<span class="sourceLineNo">1510</span>      if (blk == null) {<a name="line.1510"></a>
+<span class="sourceLineNo">1511</span>        HFile.LOG.warn("HBase checksum verification failed for file " +<a name="line.1511"></a>
+<span class="sourceLineNo">1512</span>                       pathName + " at offset " +<a name="line.1512"></a>
+<span class="sourceLineNo">1513</span>                       offset + " filesize " + fileSize +<a name="line.1513"></a>
+<span class="sourceLineNo">1514</span>                       ". Retrying read with HDFS checksums turned on...");<a name="line.1514"></a>
+<span class="sourceLineNo">1515</span><a name="line.1515"></a>
+<span class="sourceLineNo">1516</span>        if (!doVerificationThruHBaseChecksum) {<a name="line.1516"></a>
+<span class="sourceLineNo">1517</span>          String msg = "HBase checksum verification failed for file " +<a name="line.1517"></a>
+<span class="sourceLineNo">1518</span>                       pathName + " at offset " +<a name="line.1518"></a>
+<span class="sourceLineNo">1519</span>                       offset + " filesize " + fileSize +<a name="line.1519"></a>
+<span class="sourceLineNo">1520</span>                       " but this cannot happen because doVerify is " +<a name="line.1520"></a>
+<span class="sourceLineNo">1521</span>                       doVerificationThruHBaseChecksum;<a name="line.1521"></a>
+<span class="sourceLineNo">1522</span>          HFile.LOG.warn(msg);<a name="line.1522"></a>
+<span class="sourceLineNo">1523</span>          throw new IOException(msg); // cannot happen case here<a name="line.1523"></a>
+<span class="sourceLineNo">1524</span>        }<a name="line.1524"></a>
+<span class="sourceLineNo">1525</span>        HFile.checksumFailures.incrementAndGet(); // update metrics<a name="line.1525"></a>
+<span class="sourceLineNo">1526</span><a name="line.1526"></a>
+<span class="sourceLineNo">1527</span>        // If we have a checksum failure, we fall back into a mode where<a name="line.1527"></a>
+<span class="sourceLineNo">1528</span>        // the next few reads use HDFS level checksums. We aim to make the<a name="line.1528"></a>
+<span class="sourceLineNo">1529</span>        // next CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD reads avoid<a name="line.1529"></a>
+<span class="sourceLineNo">1530</span>        // hbase checksum verification, but since this value is set without<a name="line.1530"></a>
+<span class="sourceLineNo">1531</span>        // holding any locks, it can so happen that we might actually do<a name="line.1531"></a>
+<span class="sourceLineNo">1532</span>        // a few more than precisely this number.<a name="line.1532"></a>
+<span class="sourceLineNo">1533</span>        is = this.streamWrapper.fallbackToFsChecksum(CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD);<a name="line.1533"></a>
+<span class="sourceLineNo">1534</span>        doVerificationThruHBaseChecksum = false;<a name="line.1534"></a>
+<span class="sourceLineNo">1535</span>        blk = readBlockDataInternal(is, offset, onDiskSizeWithHeaderL,<a name="line.1535"></a>
+<span class="sourceLineNo">1536</span>                                    uncompressedSize, pread,<a name="line.1536"></a>
+<span class="sourceLineNo">1537</span>                                    doVerificationThruHBaseChecksum);<a name="line.1537"></a>
+<span class="sourceLineNo">1538</span>        if (blk != null) {<a name="line.1538"></a>
+<span class="sourceLineNo">1539</span>          HFile.LOG.warn("HDFS checksum verification suceeded for file " +<a name="line.1539"></a>
+<span class="sourceLineNo">1540</span>                         pathName + " at offset " +<a name="line.1540"></a>
+<span class="sourceLineNo">1541</span>                         offset + " filesize " + fileSize);<a name="line.1541"></a>
+<span class="sourceLineNo">1542</span>        }<a name="line.1542"></a>
+<span class="sourceLineNo">1543</span>      }<a name="line.1543"></a>
+<span class="sourceLineNo">1544</span>      if (blk == null &amp;&amp; !doVerificationThruHBaseChecksum) {<a name="line.1544"></a>
+<span class="sourceLineNo">1545</span>        String msg = "readBlockData failed, possibly due to " +<a name="line.1545"></a>
+<span class="sourceLineNo">1546</span>                     "checksum verification failed for file " + pathName +<a name="line.1546"></a>
+<span class="sourceLineNo">1547</span>                     " at offset " + offset + " filesize " + fileSize;<a name="line.1547"></a>
+<span class="sourceLineNo">1548</span>        HFile.LOG.warn(msg);<a name="line.1548"></a>
+<span class="sourceLineNo">1549</span>        throw new IOException(msg);<a name="line.1549"></a>
+<span class="sourceLineNo">1550</span>      }<a name="line.1550"></a>
+<span class="sourceLineNo">1551</span><a name="line.1551"></a>
+<span class="sourceLineNo">1552</span>      // If there is a checksum mismatch earlier, then retry with<a name="line.1552"></a>
+<span class="sourceLineNo">1553</span>      // HBase checksums switched off and use HDFS checksum verification.<a name="line.1553"></a>
+<span class="sourceLineNo">1554</span>      // This triggers HDFS to detect and fix corrupt replicas. The<a name="line.1554"></a>
+<span class="sourceLineNo">1555</span>      // next checksumOffCount read requests will use HDFS checksums.<a name="line.1555"></a>
+<span class="sourceLineNo">1556</span>      // The decrementing of this.checksumOffCount is not thread-safe,<a name="line.1556"></a>
+<span class="sourceLineNo">1557</span>      // but it is harmless because eventually checksumOffCount will be<a name="line.1557"></a>
+<span class="sourceLineNo">1558</span>      // a negative number.<a name="line.1558"></a>
+<span class="sourceLineNo">1559</span>      streamWrapper.checksumOk();<a name="line.1559"></a>
+<span class="sourceLineNo">1560</span>      return blk;<a name="line.1560"></a>
+<span class="sourceLineNo">1561</span>    }<a name="line.1561"></a>
+<span class="sourceLineNo">1562</span><a name="line.1562"></a>
+<span class="sourceLineNo">1563</span>    /**<a name="line.1563"></a>
+<span class="sourceLineNo">1564</span>     * Reads a version 2 block.<a name="line.1564"></a>
+<span class="sourceLineNo">1565</span>     *<a name="line.1565"></a>
+<span class="sourceLineNo">1566</span>     * @param offset the offset in the stream to read at<a name="line.1566"></a>
+<span class="sourceLineNo">1567</span>     * @param onDiskSizeWithHeaderL the on-disk size of the block, including<a name="line.1567"></a>
+<span class="sourceLineNo">1568</span>     *          the header, or -1 if unknown<a name="line.1568"></a>
+<span class="sourceLineNo">1569</span>     * @param uncompressedSize the uncompressed size of the the block. Always<a name="line.1569"></a>
+<span class="sourceLineNo">1570</span>     *          expected to be -1. This parameter is only used in version 1.<a name="line.1570"></a>
+<span class="sourceLineNo">1571</span>     * @param pread whether to use a positional read<a name="line.1571"></a>
+<span class="sourceLineNo">1572</span>     * @param verifyChecksum Whether to use HBase checksums.<a name="line.1572"></a>
+<span class="sourceLineNo">1573</span>     *        If HBase checksum is switched off, then use HDFS checksum.<a name="line.1573"></a>
+<span class="sourceLineNo">1574</span>     * @return the HFileBlock or null if there is a HBase checksum mismatch<a name="line.1574"></a>
+<span class="sourceLineNo">1575</span>     */<a name="line.1575"></a>
+<span class="sourceLineNo">1576</span>    private HFileBlock readBlockDataInternal(FSDataInputStream is, long offset,<a name="line.1576"></a>
+<span class="sourceLineNo">1577</span>        long onDiskSizeWithHeaderL, int uncompressedSize, boolean pread,<a name="line.1577"></a>
+<span class="sourceLineNo">1578</span>        boolean verifyChecksum)<a name="line.1578"></a>
+<span class="sourceLineNo">1579</span>    throws IOException {<a name="line.1579"></a>
+<span class="sourceLineNo">1580</span>      if (offset &lt; 0) {<a name="line.1580"></a>
+<span class="sourceLineNo">1581</span>        throw new IOException("Invalid offset=" + offset + " trying to read "<a name="line.1581"></a>
+<span class="sourceLineNo">1582</span>            + "block (onDiskSize=" + onDiskSizeWithHeaderL<a name="line.1582"></a>
+<span class="sourceLineNo">1583</span>            + ", uncompressedSize=" + uncompressedSize + ")");<a name="line.1583"></a>
+<span class="sourceLineNo">1584</span>      }<a name="line.1584"></a>
+<span class="sourceLineNo">1585</span><a name="line.1585"></a>
+<span class="sourceLineNo">1586</span>      if (uncompressedSize != -1) {<a name="line.1586"></a>
+<span class="sourceLineNo">1587</span>        throw new IOException("Version 2 block reader API does not need " +<a name="line.1587"></a>
+<span class="sourceLineNo">1588</span>            "the uncompressed size parameter");<a name="line.1588"></a>
+<span class="sourceLineNo">1589</span>      }<a name="line.1589"></a>
+<span class="sourceLineNo">1590</span><a name="line.1590"></a>
+<span class="sourceLineNo">1591</span>      if ((onDiskSizeWithHeaderL &lt; hdrSize &amp;&amp; onDiskSizeWithHeaderL != -1)<a name="line.1591"></a>
+<span class="sourceLineNo">1592</span>          || onDiskSizeWithHeaderL &gt;= Integer.MAX_VALUE) {<a name="line.1592"></a>
+<span class="sourceLineNo">1593</span>        throw new IOException("Invalid onDisksize=" + onDiskSizeWithHeaderL<a name="line.1593"></a>
+<span class="sourceLineNo">1594</span>            + ": expected to be at least " + hdrSize<a name="line.1594"></a>
+<span class="sourceLineNo">1595</span>            + " and at most " + Integer.MAX_VALUE + ", or -1 (offset="<a name="line.1595"></a>
+<span class="sourceLineNo">1596</span>            + offset + ", uncompressedSize=" + uncompressedSize + ")");<a name="line.1596"></a>
+<span class="sourceLineNo">1597</span>      }<a name="line.1597"></a>
+<span class="sourceLineNo">1598</span><a name="line.1598"></a>
+<span class="sourceLineNo">1599</span>      int onDiskSizeWithHeader = (int) onDiskSizeWithHeaderL;<a name="line.1599"></a>
+<span class="sourceLineNo">1600</span>      // See if we can avoid reading the header. This is desirable, because<a name="line.1600"></a>
+<span class="

<TRUNCATED>

[19/23] hbase-site git commit: Published site at 2cf8af5bf1d501156cbb3b421cf75c1051ead7d9.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/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 a1040c8..8fcc9fb 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html
@@ -297,22 +297,22 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.88">m_format__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_filter">
+<a name="m_bcv">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_filter</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.100">m_filter</a></pre>
+<h4>m_bcv</h4>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.100">m_bcv</a></pre>
 </li>
 </ul>
-<a name="m_filter__IsNotDefault">
+<a name="m_bcv__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_filter__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.105">m_filter__IsNotDefault</a></pre>
+<h4>m_bcv__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.105">m_bcv__IsNotDefault</a></pre>
 </li>
 </ul>
 <a name="m_bcn">
@@ -333,22 +333,22 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <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_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.134">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.134">m_filter</a></pre>
 </li>
 </ul>
-<a name="m_bcv__IsNotDefault">
+<a name="m_filter__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>m_bcv__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.139">m_bcv__IsNotDefault</a></pre>
+<h4>m_filter__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.139">m_filter__IsNotDefault</a></pre>
 </li>
 </ul>
 </li>
@@ -421,31 +421,31 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.84">getFormat__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setFilter(java.lang.String)">
+<a name="setBcv(java.lang.String)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setFilter</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.90">setFilter</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;filter)</pre>
+<h4>setBcv</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.90">setBcv</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;bcv)</pre>
 </li>
 </ul>
-<a name="getFilter()">
+<a name="getBcv()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getFilter</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.96">getFilter</a>()</pre>
+<h4>getBcv</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.96">getBcv</a>()</pre>
 </li>
 </ul>
-<a name="getFilter__IsNotDefault()">
+<a name="getBcv__IsNotDefault()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getFilter__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.101">getFilter__IsNotDefault</a>()</pre>
+<h4>getBcv__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.101">getBcv__IsNotDefault</a>()</pre>
 </li>
 </ul>
 <a name="setBcn(java.lang.String)">
@@ -475,31 +475,31 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <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="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.124">setBcv</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;bcv)</pre>
+<h4>setFilter</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.124">setFilter</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;filter)</pre>
 </li>
 </ul>
-<a name="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.130">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.130">getFilter</a>()</pre>
 </li>
 </ul>
-<a name="getBcv__IsNotDefault()">
+<a name="getFilter__IsNotDefault()">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>getBcv__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.135">getBcv__IsNotDefault</a>()</pre>
+<h4>getFilter__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.135">getFilter__IsNotDefault</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/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 71e0e55..990dd14 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html
@@ -292,13 +292,13 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.151">format</a></pre>
 </li>
 </ul>
-<a name="filter">
+<a name="bcv">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>filter</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.158">filter</a></pre>
+<h4>bcv</h4>
+<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.158">bcv</a></pre>
 </li>
 </ul>
 <a name="bcn">
@@ -310,13 +310,13 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <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="bcv">
+<a name="filter">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>bcv</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.172">bcv</a></pre>
+<h4>filter</h4>
+<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.172">filter</a></pre>
 </li>
 </ul>
 </li>
@@ -397,13 +397,13 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.152">setFormat</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_format)</pre>
 </li>
 </ul>
-<a name="setFilter(java.lang.String)">
+<a name="setBcv(java.lang.String)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setFilter</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.159">setFilter</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_filter)</pre>
+<h4>setBcv</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.159">setBcv</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_bcv)</pre>
 </li>
 </ul>
 <a name="setBcn(java.lang.String)">
@@ -415,13 +415,13 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <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="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.173">setBcv</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_bcv)</pre>
+<h4>setFilter</h4>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RSStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html#line.173">setFilter</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;p_filter)</pre>
 </li>
 </ul>
 <a name="constructImpl(java.lang.Class)">

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/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 d70d470..ec5e384 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
@@ -461,11 +461,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.util.<a href="../../../../../org/apache/hadoop/hbase/util/Order.html" title="enum in org.apache.hadoop.hbase.util"><span class="strong">Order</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PoolMap.PoolType.html" title="enum in org.apache.hadoop.hbase.util"><span class="strong">PoolMap.PoolType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/HBaseFsck.ErrorReporter.ERROR_CODE.html" title="enum in org.apache.hadoop.hbase.util"><span class="strong">HBaseFsck.ErrorReporter.ERROR_CODE</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="strong">Bytes.LexicographicalComparerHolder.PureJavaComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/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/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/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>
 <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/PrettyPrinter.Unit.html" title="enum in org.apache.hadoop.hbase.util"><span class="strong">PrettyPrinter.Unit</span></a></li>
 </ul>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/devapidocs/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html
index e5e9de3..48bcb6e 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html
@@ -104,7 +104,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/zookeeper/ZooKeeperWatcher.html#line.62">ZooKeeperWatcher</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.64">ZooKeeperWatcher</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.zookeeper.Watcher, <a href="../../../../../org/apache/hadoop/hbase/Abortable.html" title="interface in org.apache.hadoop.hbase">Abortable</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/io/Closeable.html?is-external=true" title="class or interface in java.io">Closeable</a></pre>
 <div class="block">Acts as the single ZooKeeper Watcher.  One instance of this is instantiated
@@ -214,46 +214,50 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#metaReplicaZnodes">metaReplicaZnodes</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code>private static <a href="http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex">Pattern</a></code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#NAME_PATTERN">NAME_PATTERN</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#namespaceZNode">namespaceZNode</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#prefix">prefix</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#quorum">quorum</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper">RecoverableZooKeeper</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#recoverableZooKeeper">recoverableZooKeeper</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#recoveringRegionsZNode">recoveringRegionsZNode</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#regionNormalizerZNode">regionNormalizerZNode</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#rsZNode">rsZNode</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CountDownLatch.html?is-external=true" title="class or interface in java.util.concurrent">CountDownLatch</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#saslLatch">saslLatch</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#splitLogZNode">splitLogZNode</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#tableLockZNode">tableLockZNode</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#tableZNode">tableZNode</a></strong></code>
 <div class="block"><strong>Deprecated.</strong>&nbsp;</div>
@@ -531,7 +535,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <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/zookeeper/ZooKeeperWatcher.html#line.63">LOG</a></pre>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.65">LOG</a></pre>
 </li>
 </ul>
 <a name="prefix">
@@ -540,7 +544,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>prefix</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/zookeeper/ZooKeeperWatcher.html#line.67">prefix</a></pre>
+<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/zookeeper/ZooKeeperWatcher.html#line.69">prefix</a></pre>
 </li>
 </ul>
 <a name="identifier">
@@ -549,7 +553,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>identifier</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/zookeeper/ZooKeeperWatcher.html#line.68">identifier</a></pre>
+<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/zookeeper/ZooKeeperWatcher.html#line.70">identifier</a></pre>
 </li>
 </ul>
 <a name="quorum">
@@ -558,7 +562,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>quorum</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/zookeeper/ZooKeeperWatcher.html#line.71">quorum</a></pre>
+<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/zookeeper/ZooKeeperWatcher.html#line.73">quorum</a></pre>
 </li>
 </ul>
 <a name="recoverableZooKeeper">
@@ -567,7 +571,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>recoverableZooKeeper</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper">RecoverableZooKeeper</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.74">recoverableZooKeeper</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper">RecoverableZooKeeper</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.76">recoverableZooKeeper</a></pre>
 </li>
 </ul>
 <a name="abortable">
@@ -576,7 +580,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>abortable</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Abortable.html" title="interface in org.apache.hadoop.hbase">Abortable</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.77">abortable</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Abortable.html" title="interface in org.apache.hadoop.hbase">Abortable</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.79">abortable</a></pre>
 </li>
 </ul>
 <a name="aborted">
@@ -585,7 +589,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>aborted</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.79">aborted</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.81">aborted</a></pre>
 </li>
 </ul>
 <a name="listeners">
@@ -594,7 +598,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>listeners</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZooKeeperListener.html" title="class in org.apache.hadoop.hbase.zookeeper">ZooKeeperListener</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.82">listeners</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZooKeeperListener.html" title="class in org.apache.hadoop.hbase.zookeeper">ZooKeeperListener</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.84">listeners</a></pre>
 </li>
 </ul>
 <a name="saslLatch">
@@ -603,7 +607,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>saslLatch</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CountDownLatch.html?is-external=true" title="class or interface in java.util.concurrent">CountDownLatch</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.87">saslLatch</a></pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CountDownLatch.html?is-external=true" title="class or interface in java.util.concurrent">CountDownLatch</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.89">saslLatch</a></pre>
 </li>
 </ul>
 <a name="baseZNode">
@@ -612,7 +616,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>baseZNode</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> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.92">baseZNode</a></pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.94">baseZNode</a></pre>
 </li>
 </ul>
 <a name="metaReplicaZnodes">
@@ -621,7 +625,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>metaReplicaZnodes</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/Integer.html?is-external=true" title="class or interface in java.lang">Integer</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>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.94">metaReplicaZnodes</a></pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</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>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.96">metaReplicaZnodes</a></pre>
 </li>
 </ul>
 <a name="rsZNode">
@@ -630,7 +634,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>rsZNode</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> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.96">rsZNode</a></pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.98">rsZNode</a></pre>
 </li>
 </ul>
 <a name="drainingZNode">
@@ -639,7 +643,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>drainingZNode</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> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.98">drainingZNode</a></pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.100">drainingZNode</a></pre>
 </li>
 </ul>
 <a name="masterAddressZNode">
@@ -648,7 +652,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>masterAddressZNode</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/zookeeper/ZooKeeperWatcher.html#line.100">masterAddressZNode</a></pre>
+<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/zookeeper/ZooKeeperWatcher.html#line.102">masterAddressZNode</a></pre>
 </li>
 </ul>
 <a name="backupMasterAddressesZNode">
@@ -657,7 +661,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>backupMasterAddressesZNode</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> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.102">backupMasterAddressesZNode</a></pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.104">backupMasterAddressesZNode</a></pre>
 </li>
 </ul>
 <a name="clusterStateZNode">
@@ -666,7 +670,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>clusterStateZNode</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> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.104">clusterStateZNode</a></pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.106">clusterStateZNode</a></pre>
 </li>
 </ul>
 <a name="tableZNode">
@@ -676,7 +680,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <li class="blockList">
 <h4>tableZNode</h4>
 <pre><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-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> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.107">tableZNode</a></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> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.109">tableZNode</a></pre>
 <div class="block"><span class="strong">Deprecated.</span>&nbsp;</div>
 </li>
 </ul>
@@ -686,7 +690,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>clusterIdZNode</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> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.109">clusterIdZNode</a></pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.111">clusterIdZNode</a></pre>
 </li>
 </ul>
 <a name="splitLogZNode">
@@ -695,7 +699,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>splitLogZNode</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> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.111">splitLogZNode</a></pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.113">splitLogZNode</a></pre>
 </li>
 </ul>
 <a name="balancerZNode">
@@ -704,7 +708,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>balancerZNode</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> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.113">balancerZNode</a></pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.115">balancerZNode</a></pre>
 </li>
 </ul>
 <a name="regionNormalizerZNode">
@@ -713,7 +717,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>regionNormalizerZNode</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/zookeeper/ZooKeeperWatcher.html#line.115">regionNormalizerZNode</a></pre>
+<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/zookeeper/ZooKeeperWatcher.html#line.117">regionNormalizerZNode</a></pre>
 </li>
 </ul>
 <a name="tableLockZNode">
@@ -722,7 +726,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>tableLockZNode</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> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.117">tableLockZNode</a></pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.119">tableLockZNode</a></pre>
 </li>
 </ul>
 <a name="recoveringRegionsZNode">
@@ -731,7 +735,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>recoveringRegionsZNode</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> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.119">recoveringRegionsZNode</a></pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.121">recoveringRegionsZNode</a></pre>
 </li>
 </ul>
 <a name="namespaceZNode">
@@ -740,7 +744,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>namespaceZNode</h4>
-<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.121">namespaceZNode</a></pre>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.123">namespaceZNode</a></pre>
 </li>
 </ul>
 <a name="META_ZNODE_PREFIX">
@@ -749,7 +753,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>META_ZNODE_PREFIX</h4>
-<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.123">META_ZNODE_PREFIX</a></pre>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.125">META_ZNODE_PREFIX</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.META_ZNODE_PREFIX">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -759,16 +763,25 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>conf</h4>
-<pre>private final&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.125">conf</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.127">conf</a></pre>
 </li>
 </ul>
 <a name="constructorCaller">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>constructorCaller</h4>
-<pre>private final&nbsp;<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> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.127">constructorCaller</a></pre>
+<pre>private final&nbsp;<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> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.129">constructorCaller</a></pre>
+</li>
+</ul>
+<a name="NAME_PATTERN">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>NAME_PATTERN</h4>
+<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex">Pattern</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.132">NAME_PATTERN</a></pre>
 </li>
 </ul>
 </li>
@@ -785,7 +798,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>ZooKeeperWatcher</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.136">ZooKeeperWatcher</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.141">ZooKeeperWatcher</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                 <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;identifier,
                 <a href="../../../../../org/apache/hadoop/hbase/Abortable.html" title="interface in org.apache.hadoop.hbase">Abortable</a>&nbsp;abortable)
                  throws <a href="../../../../../org/apache/hadoop/hbase/ZooKeeperConnectionException.html" title="class in org.apache.hadoop.hbase">ZooKeeperConnectionException</a>,
@@ -804,7 +817,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ZooKeeperWatcher</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.152">ZooKeeperWatcher</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.157">ZooKeeperWatcher</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                 <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;identifier,
                 <a href="../../../../../org/apache/hadoop/hbase/Abortable.html" title="interface in org.apache.hadoop.hbase">Abortable</a>&nbsp;abortable,
                 boolean&nbsp;canCreateBaseZNode)
@@ -833,7 +846,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>createBaseZNodes</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.176">createBaseZNodes</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.181">createBaseZNodes</a>()
                        throws <a href="../../../../../org/apache/hadoop/hbase/ZooKeeperConnectionException.html" title="class in org.apache.hadoop.hbase">ZooKeeperConnectionException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/ZooKeeperConnectionException.html" title="class in org.apache.hadoop.hbase">ZooKeeperConnectionException</a></code></dd></dl>
@@ -845,7 +858,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>isClientReadable</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.195">isClientReadable</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;node)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.200">isClientReadable</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;node)</pre>
 <div class="block">Returns whether the znode is supposed to be readable by the client
  and DOES NOT contain sensitive information (world readable).</div>
 </li>
@@ -856,7 +869,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndSetZNodeAcls</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.216">checkAndSetZNodeAcls</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.221">checkAndSetZNodeAcls</a>()</pre>
 <div class="block">On master start, we check the znode ACLs under the root directory and set the ACLs properly
  if needed. If the cluster goes from an unsecure setup to a secure setup, this step is needed
  so that the existing znodes created with open permissions are now changed with restrictive
@@ -869,7 +882,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>setZnodeAclsRecursive</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.244">setZnodeAclsRecursive</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;znode)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.250">setZnodeAclsRecursive</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;znode)
                             throws org.apache.zookeeper.KeeperException,
                                    <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block">Set the znode perms recursively. This will do post-order recursion, so that baseZnode ACLs
@@ -886,7 +899,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>isBaseZnodeAclSetup</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.261">isBaseZnodeAclSetup</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.zookeeper.data.ACL&gt;&nbsp;acls)
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.267">isBaseZnodeAclSetup</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.zookeeper.data.ACL&gt;&nbsp;acls)
                              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">Checks whether the ACLs returned from the base znode (/hbase) is set for secure setup.</div>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>acls</code> - acls from zookeeper</dd>
@@ -901,7 +914,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>checkACLForSuperUsers</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.303">checkACLForSuperUsers</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;superUsers,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.343">checkACLForSuperUsers</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;superUsers,
                             <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.zookeeper.data.ACL&gt;&nbsp;acls)</pre>
 </li>
 </ul>
@@ -911,7 +924,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>isSuperUserId</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.325">isSuperUserId</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;superUsers,
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.373">isSuperUserId</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;superUsers,
                     org.apache.zookeeper.data.Id&nbsp;id)</pre>
 </li>
 </ul>
@@ -921,7 +934,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.336">toString</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.384">toString</a>()</pre>
 <dl>
 <dt><strong>Overrides:</strong></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
@@ -934,7 +947,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>prefix</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/zookeeper/ZooKeeperWatcher.html#line.346">prefix</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;str)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.394">prefix</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;str)</pre>
 <div class="block">Adds this instance's identifier as a prefix to the passed <code>str</code></div>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>str</code> - String to amend.</dd>
 <dt><span class="strong">Returns:</span></dt><dd>A new string with this instance's identifier as prefix: e.g.
@@ -947,7 +960,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>setNodeNames</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.353">setNodeNames</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.401">setNodeNames</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 <div class="block">Set the local variable node names using the specified configuration.</div>
 </li>
 </ul>
@@ -957,7 +970,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>isAnyMetaReplicaZnode</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.398">isAnyMetaReplicaZnode</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;node)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.446">isAnyMetaReplicaZnode</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;node)</pre>
 <div class="block">Is the znode of any meta replica</div>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>node</code> - </dd>
 <dt><span class="strong">Returns:</span></dt><dd>true or false</dd></dl>
@@ -969,7 +982,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>isDefaultMetaReplicaZnode</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.410">isDefaultMetaReplicaZnode</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;node)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.458">isDefaultMetaReplicaZnode</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;node)</pre>
 <div class="block">Is it the default meta replica's znode</div>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>node</code> - </dd>
 <dt><span class="strong">Returns:</span></dt><dd>true or false</dd></dl>
@@ -981,7 +994,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetaReplicaNodes</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.422">getMetaReplicaNodes</a>()
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.470">getMetaReplicaNodes</a>()
                                  throws org.apache.zookeeper.KeeperException</pre>
 <div class="block">Get the znodes corresponding to the meta replicas from ZK</div>
 <dl><dt><span class="strong">Returns:</span></dt><dd>list of znodes</dd>
@@ -995,7 +1008,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>getZNodeForReplica</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/zookeeper/ZooKeeperWatcher.html#line.437">getZNodeForReplica</a>(int&nbsp;replicaId)</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.485">getZNodeForReplica</a>(int&nbsp;replicaId)</pre>
 <div class="block">Get the znode string corresponding to a replicaId</div>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>replicaId</code> - </dd>
 <dt><span class="strong">Returns:</span></dt><dd>znode</dd></dl>
@@ -1007,7 +1020,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetaReplicaIdFromZnode</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.454">getMetaReplicaIdFromZnode</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;znode)</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.502">getMetaReplicaIdFromZnode</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;znode)</pre>
 <div class="block">Parse the meta replicaId from the passed znode</div>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>znode</code> - </dd>
 <dt><span class="strong">Returns:</span></dt><dd>replicaId</dd></dl>
@@ -1019,7 +1032,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>registerListener</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.466">registerListener</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZooKeeperListener.html" title="class in org.apache.hadoop.hbase.zookeeper">ZooKeeperListener</a>&nbsp;listener)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.514">registerListener</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZooKeeperListener.html" title="class in org.apache.hadoop.hbase.zookeeper">ZooKeeperListener</a>&nbsp;listener)</pre>
 <div class="block">Register the specified listener to receive ZooKeeper events.</div>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>listener</code> - </dd></dl>
 </li>
@@ -1030,7 +1043,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>registerListenerFirst</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.475">registerListenerFirst</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZooKeeperListener.html" title="class in org.apache.hadoop.hbase.zookeeper">ZooKeeperListener</a>&nbsp;listener)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.523">registerListenerFirst</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZooKeeperListener.html" title="class in org.apache.hadoop.hbase.zookeeper">ZooKeeperListener</a>&nbsp;listener)</pre>
 <div class="block">Register the specified listener to receive ZooKeeper events and add it as
  the first in the list of current listeners.</div>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>listener</code> - </dd></dl>
@@ -1042,7 +1055,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>unregisterListener</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.479">unregisterListener</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZooKeeperListener.html" title="class in org.apache.hadoop.hbase.zookeeper">ZooKeeperListener</a>&nbsp;listener)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.527">unregisterListener</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZooKeeperListener.html" title="class in org.apache.hadoop.hbase.zookeeper">ZooKeeperListener</a>&nbsp;listener)</pre>
 </li>
 </ul>
 <a name="unregisterAllListeners()">
@@ -1051,7 +1064,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>unregisterAllListeners</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.486">unregisterAllListeners</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.534">unregisterAllListeners</a>()</pre>
 <div class="block">Clean all existing listeners</div>
 </li>
 </ul>
@@ -1061,7 +1074,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>getListeners</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/zookeeper/ZooKeeperListener.html" title="class in org.apache.hadoop.hbase.zookeeper">ZooKeeperListener</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.493">getListeners</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZooKeeperListener.html" title="class in org.apache.hadoop.hbase.zookeeper">ZooKeeperListener</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.541">getListeners</a>()</pre>
 <div class="block">Get a copy of current registered listeners</div>
 </li>
 </ul>
@@ -1071,7 +1084,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>getNumberOfListeners</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.500">getNumberOfListeners</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.548">getNumberOfListeners</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>The number of currently registered listeners</dd></dl>
 </li>
 </ul>
@@ -1081,7 +1094,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>getRecoverableZooKeeper</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper">RecoverableZooKeeper</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.508">getRecoverableZooKeeper</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper">RecoverableZooKeeper</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.556">getRecoverableZooKeeper</a>()</pre>
 <div class="block">Get the connection to ZooKeeper.</div>
 <dl><dt><span class="strong">Returns:</span></dt><dd>connection reference to zookeeper</dd></dl>
 </li>
@@ -1092,7 +1105,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>reconnectAfterExpiration</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.512">reconnectAfterExpiration</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.560">reconnectAfterExpiration</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>,
                                      org.apache.zookeeper.KeeperException,
                                      <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
@@ -1108,7 +1121,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>getQuorum</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/zookeeper/ZooKeeperWatcher.html#line.520">getQuorum</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.568">getQuorum</a>()</pre>
 <div class="block">Get the quorum address of this instance.</div>
 <dl><dt><span class="strong">Returns:</span></dt><dd>quorum string of this zookeeper connection instance</dd></dl>
 </li>
@@ -1119,7 +1132,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>getBaseZNode</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/zookeeper/ZooKeeperWatcher.html#line.527">getBaseZNode</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.575">getBaseZNode</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>the base znode of this zookeeper connection instance.</dd></dl>
 </li>
 </ul>
@@ -1129,7 +1142,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>process</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.538">process</a>(org.apache.zookeeper.WatchedEvent&nbsp;event)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.586">process</a>(org.apache.zookeeper.WatchedEvent&nbsp;event)</pre>
 <div class="block">Method called from ZooKeeper for events and connection status.
  <p>
  Valid events are passed along to listeners.  Connection status changes
@@ -1146,7 +1159,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>connectionEvent</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.596">connectionEvent</a>(org.apache.zookeeper.WatchedEvent&nbsp;event)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.644">connectionEvent</a>(org.apache.zookeeper.WatchedEvent&nbsp;event)</pre>
 <div class="block">Called when there is a connection-related event via the Watcher callback.
  <p>
  If Disconnected or Expired, this should shutdown the cluster. But, since
@@ -1163,7 +1176,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>sync</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.663">sync</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;path)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.711">sync</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;path)
           throws org.apache.zookeeper.KeeperException</pre>
 <div class="block">Forces a synchronization of this ZooKeeper client connection.
  <p>
@@ -1185,7 +1198,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>keeperException</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.677">keeperException</a>(org.apache.zookeeper.KeeperException&nbsp;ke)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.725">keeperException</a>(org.apache.zookeeper.KeeperException&nbsp;ke)
                      throws org.apache.zookeeper.KeeperException</pre>
 <div class="block">Handles KeeperExceptions in client calls.
  <p>
@@ -1204,7 +1217,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>interruptedException</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.694">interruptedException</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>&nbsp;ie)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.742">interruptedException</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>&nbsp;ie)</pre>
 <div class="block">Handles InterruptedExceptions in client calls.
  <p>
  This may be temporary but for now this gives one place to deal with these.
@@ -1222,7 +1235,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>close</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.706">close</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.754">close</a>()</pre>
 <div class="block">Close the connection to ZooKeeper.</div>
 <dl>
 <dt><strong>Specified by:</strong></dt>
@@ -1238,7 +1251,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>getConfiguration</h4>
-<pre>public&nbsp;org.apache.hadoop.conf.Configuration&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.716">getConfiguration</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.conf.Configuration&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.764">getConfiguration</a>()</pre>
 </li>
 </ul>
 <a name="abort(java.lang.String, java.lang.Throwable)">
@@ -1247,7 +1260,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>abort</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.721">abort</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;why,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.769">abort</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;why,
          <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;e)</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/Abortable.html#abort(java.lang.String,%20java.lang.Throwable)">Abortable</a></code></strong></div>
 <div class="block">Abort the server or client.</div>
@@ -1263,7 +1276,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>isAborted</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.727">isAborted</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.775">isAborted</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/Abortable.html#isAborted()">Abortable</a></code></strong></div>
 <div class="block">Check if the server or client was aborted.</div>
 <dl>
@@ -1278,7 +1291,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockList">
 <li class="blockList">
 <h4>getMasterAddressZNode</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/zookeeper/ZooKeeperWatcher.html#line.734">getMasterAddressZNode</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.782">getMasterAddressZNode</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>Path to the currently active master.</dd></dl>
 </li>
 </ul>
@@ -1288,7 +1301,7 @@ public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.h
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getRegionNormalizerZNode</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/zookeeper/ZooKeeperWatcher.html#line.741">getRegionNormalizerZNode</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZooKeeperWatcher.html#line.789">getRegionNormalizerZNode</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>ZooKeeper znode for region normalizer state</dd></dl>
 </li>
 </ul>


[06/23] hbase-site git commit: Published site at 2cf8af5bf1d501156cbb3b421cf75c1051ead7d9.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/distribution-management.html
----------------------------------------------------------------------
diff --git a/distribution-management.html b/distribution-management.html
index 55b50f5..c7e5fe4 100644
--- a/distribution-management.html
+++ b/distribution-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20160203" />
+    <meta name="Date-Revision-yyyymmdd" content="20160204" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Distribution Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -290,7 +290,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-04</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/export_control.html
----------------------------------------------------------------------
diff --git a/export_control.html b/export_control.html
index 3119da1..6a27891 100644
--- a/export_control.html
+++ b/export_control.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20160203" />
+    <meta name="Date-Revision-yyyymmdd" content="20160204" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Export Control
@@ -330,7 +330,7 @@ for more details.</p>
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-04</li>
             </p>
                 </div>
 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/index.html
----------------------------------------------------------------------
diff --git a/index.html b/index.html
index 3f45878..93c4871 100644
--- a/index.html
+++ b/index.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20160203" />
+    <meta name="Date-Revision-yyyymmdd" content="20160204" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBaseâ„¢ Home</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -422,7 +422,7 @@ Apache HBase is an open-source, distributed, versioned, non-relational database
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-04</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/integration.html
----------------------------------------------------------------------
diff --git a/integration.html b/integration.html
index ebac656..e63aa06 100644
--- a/integration.html
+++ b/integration.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20160203" />
+    <meta name="Date-Revision-yyyymmdd" content="20160204" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Continuous Integration</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -290,7 +290,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-04</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/issue-tracking.html
----------------------------------------------------------------------
diff --git a/issue-tracking.html b/issue-tracking.html
index 5fad980..697b073 100644
--- a/issue-tracking.html
+++ b/issue-tracking.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20160203" />
+    <meta name="Date-Revision-yyyymmdd" content="20160204" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Issue Tracking</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -287,7 +287,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-04</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/license.html
----------------------------------------------------------------------
diff --git a/license.html b/license.html
index 3cbec9e..f9dc9c8 100644
--- a/license.html
+++ b/license.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20160203" />
+    <meta name="Date-Revision-yyyymmdd" content="20160204" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project License</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -490,7 +490,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-04</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/mail-lists.html
----------------------------------------------------------------------
diff --git a/mail-lists.html b/mail-lists.html
index 71de976..64cb13e 100644
--- a/mail-lists.html
+++ b/mail-lists.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20160203" />
+    <meta name="Date-Revision-yyyymmdd" content="20160204" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -340,7 +340,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-04</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/metrics.html
----------------------------------------------------------------------
diff --git a/metrics.html b/metrics.html
index 539c057..dfc9f96 100644
--- a/metrics.html
+++ b/metrics.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20160203" />
+    <meta name="Date-Revision-yyyymmdd" content="20160204" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) Metrics
@@ -458,7 +458,7 @@ export HBASE_REGIONSERVER_OPTS=&quot;$HBASE_JMX_OPTS -Dcom.sun.management.jmxrem
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-04</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/modules.html
----------------------------------------------------------------------
diff --git a/modules.html b/modules.html
index 7f82eef..5184087 100644
--- a/modules.html
+++ b/modules.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20160203" />
+    <meta name="Date-Revision-yyyymmdd" content="20160204" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Modules</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -366,7 +366,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-04</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/old_news.html
----------------------------------------------------------------------
diff --git a/old_news.html b/old_news.html
index 9be344a..dad3890 100644
--- a/old_news.html
+++ b/old_news.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20160203" />
+    <meta name="Date-Revision-yyyymmdd" content="20160204" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Old Apache HBase (TM) News
@@ -413,7 +413,7 @@ under the License. -->
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-04</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/plugin-management.html
----------------------------------------------------------------------
diff --git a/plugin-management.html b/plugin-management.html
index 9c63441..802908a 100644
--- a/plugin-management.html
+++ b/plugin-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20160203" />
+    <meta name="Date-Revision-yyyymmdd" content="20160204" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -423,7 +423,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-04</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/plugins.html
----------------------------------------------------------------------
diff --git a/plugins.html b/plugins.html
index 998ccb0..5dd5bb4 100644
--- a/plugins.html
+++ b/plugins.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20160203" />
+    <meta name="Date-Revision-yyyymmdd" content="20160204" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Build Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -366,7 +366,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-04</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/poweredbyhbase.html
----------------------------------------------------------------------
diff --git a/poweredbyhbase.html b/poweredbyhbase.html
index 6ab5424..a17c01b 100644
--- a/poweredbyhbase.html
+++ b/poweredbyhbase.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20160203" />
+    <meta name="Date-Revision-yyyymmdd" content="20160204" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Powered By Apache HBase™</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -768,7 +768,7 @@ under the License. -->
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-04</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/project-info.html
----------------------------------------------------------------------
diff --git a/project-info.html b/project-info.html
index 755ab55..43a08ab 100644
--- a/project-info.html
+++ b/project-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20160203" />
+    <meta name="Date-Revision-yyyymmdd" content="20160204" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -340,7 +340,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-04</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/project-reports.html
----------------------------------------------------------------------
diff --git a/project-reports.html b/project-reports.html
index 8011c43..7b9765e 100644
--- a/project-reports.html
+++ b/project-reports.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20160203" />
+    <meta name="Date-Revision-yyyymmdd" content="20160204" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -310,7 +310,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-04</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/project-summary.html
----------------------------------------------------------------------
diff --git a/project-summary.html b/project-summary.html
index 166498d..31e738d 100644
--- a/project-summary.html
+++ b/project-summary.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20160203" />
+    <meta name="Date-Revision-yyyymmdd" content="20160204" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -330,7 +330,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-04</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/pseudo-distributed.html
----------------------------------------------------------------------
diff --git a/pseudo-distributed.html b/pseudo-distributed.html
index 203e908..d31e533 100644
--- a/pseudo-distributed.html
+++ b/pseudo-distributed.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20160203" />
+    <meta name="Date-Revision-yyyymmdd" content="20160204" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
 Running Apache HBase (TM) in pseudo-distributed mode
@@ -307,7 +307,7 @@ under the License. -->
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-04</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/replication.html
----------------------------------------------------------------------
diff --git a/replication.html b/replication.html
index 1a7ea4c..9f32069 100644
--- a/replication.html
+++ b/replication.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20160203" />
+    <meta name="Date-Revision-yyyymmdd" content="20160204" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Apache HBase (TM) Replication
@@ -302,7 +302,7 @@ under the License. -->
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-04</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/resources.html
----------------------------------------------------------------------
diff --git a/resources.html b/resources.html
index 3158aa9..ce55dc0 100644
--- a/resources.html
+++ b/resources.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20160203" />
+    <meta name="Date-Revision-yyyymmdd" content="20160204" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Other Apache HBase (TM) Resources</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -324,7 +324,7 @@ under the License. -->
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-04</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/source-repository.html
----------------------------------------------------------------------
diff --git a/source-repository.html b/source-repository.html
index 10aae54..ff46263 100644
--- a/source-repository.html
+++ b/source-repository.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20160203" />
+    <meta name="Date-Revision-yyyymmdd" content="20160204" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Source Repository</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -298,7 +298,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-04</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/sponsors.html
----------------------------------------------------------------------
diff --git a/sponsors.html b/sponsors.html
index 67fce19..a0dd6d2 100644
--- a/sponsors.html
+++ b/sponsors.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20160203" />
+    <meta name="Date-Revision-yyyymmdd" content="20160204" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBase™ Sponsors</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -332,7 +332,7 @@ under the License. -->
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-04</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/supportingprojects.html
----------------------------------------------------------------------
diff --git a/supportingprojects.html b/supportingprojects.html
index 6efb7de..c951f23 100644
--- a/supportingprojects.html
+++ b/supportingprojects.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20160203" />
+    <meta name="Date-Revision-yyyymmdd" content="20160204" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Supporting Projects</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -519,7 +519,7 @@ under the License. -->
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-04</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/team-list.html
----------------------------------------------------------------------
diff --git a/team-list.html b/team-list.html
index ed61c5c..9bc6ef1 100644
--- a/team-list.html
+++ b/team-list.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20160203" />
+    <meta name="Date-Revision-yyyymmdd" content="20160204" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Team list</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -785,7 +785,7 @@ window.onLoad = init();
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-04</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/testdevapidocs/org/apache/hadoop/hbase/io/hfile/TestChecksum.FSReaderImplTest.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/io/hfile/TestChecksum.FSReaderImplTest.html b/testdevapidocs/org/apache/hadoop/hbase/io/hfile/TestChecksum.FSReaderImplTest.html
index b8360d2..fc40bb7 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/io/hfile/TestChecksum.FSReaderImplTest.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/io/hfile/TestChecksum.FSReaderImplTest.html
@@ -147,8 +147,8 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TestChecksum.FSReaderImplTest.html#hfs">hfs</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>protected org.apache.hadoop.fs.Path</code></td>
-<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TestChecksum.FSReaderImplTest.html#path">path</a></strong></code>&nbsp;</td>
+<td class="colFirst"><code>protected <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TestChecksum.FSReaderImplTest.html#pathName">pathName</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>protected org.apache.hadoop.hbase.io.FSDataInputStreamWrapper</code></td>
@@ -304,15 +304,6 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <pre>protected&nbsp;org.apache.hadoop.hbase.fs.HFileSystem <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#line.0">hfs</a></pre>
 </li>
 </ul>
-<a name="path">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>path</h4>
-<pre>protected&nbsp;org.apache.hadoop.fs.Path <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#line.0">path</a></pre>
-</li>
-</ul>
 <a name="DEFAULT_BUFFER_SIZE">
 <!--   -->
 </a>
@@ -326,12 +317,21 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <a name="fileContext">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>fileContext</h4>
 <pre>protected&nbsp;org.apache.hadoop.hbase.io.hfile.HFileContext <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html#line.0">fileContext</a></pre>
 </li>
 </ul>
+<a name="pathName">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>pathName</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/io/hfile/HFileBlock.FSReaderImpl.html#line.0">pathName</a></pre>
+</li>
+</ul>
 </li>
 </ul>
 <!-- ========= CONSTRUCTOR DETAIL ======== -->


[09/23] hbase-site git commit: Published site at 2cf8af5bf1d501156cbb3b421cf75c1051ead7d9.

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

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


[04/23] hbase-site git commit: Published site at 2cf8af5bf1d501156cbb3b421cf75c1051ead7d9.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html b/xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html
index 4b7478a..cae54a4 100644
--- a/xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html
+++ b/xref/org/apache/hadoop/hbase/io/hfile/HFileBlock.html
@@ -1363,609 +1363,610 @@
 <a class="jxr_linenumber" name="1353" href="#1353">1353</a>     <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> The filesystem used to access data */</em>
 <a class="jxr_linenumber" name="1354" href="#1354">1354</a>     <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/hadoop/hbase/fs/HFileSystem.html">HFileSystem</a> hfs;
 <a class="jxr_linenumber" name="1355" href="#1355">1355</a> 
-<a class="jxr_linenumber" name="1356" href="#1356">1356</a>     <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> The path (if any) where this data is coming from */</em>
-<a class="jxr_linenumber" name="1357" href="#1357">1357</a>     <strong class="jxr_keyword">protected</strong> Path path;
-<a class="jxr_linenumber" name="1358" href="#1358">1358</a> 
-<a class="jxr_linenumber" name="1359" href="#1359">1359</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Lock streamLock = <strong class="jxr_keyword">new</strong> ReentrantLock();
+<a class="jxr_linenumber" name="1356" href="#1356">1356</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Lock streamLock = <strong class="jxr_keyword">new</strong> ReentrantLock();
+<a class="jxr_linenumber" name="1357" href="#1357">1357</a> 
+<a class="jxr_linenumber" name="1358" href="#1358">1358</a>     <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> The default buffer size for our buffered streams */</em>
+<a class="jxr_linenumber" name="1359" href="#1359">1359</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> DEFAULT_BUFFER_SIZE = 1 &lt;&lt; 20;
 <a class="jxr_linenumber" name="1360" href="#1360">1360</a> 
-<a class="jxr_linenumber" name="1361" href="#1361">1361</a>     <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> The default buffer size for our buffered streams */</em>
-<a class="jxr_linenumber" name="1362" href="#1362">1362</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> DEFAULT_BUFFER_SIZE = 1 &lt;&lt; 20;
-<a class="jxr_linenumber" name="1363" href="#1363">1363</a> 
-<a class="jxr_linenumber" name="1364" href="#1364">1364</a>     <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileContext.html">HFileContext</a> fileContext;
-<a class="jxr_linenumber" name="1365" href="#1365">1365</a> 
-<a class="jxr_linenumber" name="1366" href="#1366">1366</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html">FSReaderImpl</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/FSDataInputStreamWrapper.html">FSDataInputStreamWrapper</a> stream, <strong class="jxr_keyword">long</strong> fileSize, <a href="../../../../../../org/apache/hadoop/hbase/fs/HFileSystem.html">HFileSystem</a> hfs, Path path,
-<a class="jxr_linenumber" name="1367" href="#1367">1367</a>         <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileContext.html">HFileContext</a> fileContext) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="1368" href="#1368">1368</a>       <strong class="jxr_keyword">this</strong>.fileSize = fileSize;
-<a class="jxr_linenumber" name="1369" href="#1369">1369</a>       <strong class="jxr_keyword">this</strong>.hfs = hfs;
-<a class="jxr_linenumber" name="1370" href="#1370">1370</a>       <strong class="jxr_keyword">this</strong>.path = path;
-<a class="jxr_linenumber" name="1371" href="#1371">1371</a>       <strong class="jxr_keyword">this</strong>.fileContext = fileContext;
-<a class="jxr_linenumber" name="1372" href="#1372">1372</a>       <strong class="jxr_keyword">this</strong>.hdrSize = headerSize(fileContext.isUseHBaseChecksum());
-<a class="jxr_linenumber" name="1373" href="#1373">1373</a> 
-<a class="jxr_linenumber" name="1374" href="#1374">1374</a>       <strong class="jxr_keyword">this</strong>.streamWrapper = stream;
-<a class="jxr_linenumber" name="1375" href="#1375">1375</a>       <em class="jxr_comment">// Older versions of HBase didn't support checksum.</em>
-<a class="jxr_linenumber" name="1376" href="#1376">1376</a>       <strong class="jxr_keyword">this</strong>.streamWrapper.prepareForBlockReader(!fileContext.isUseHBaseChecksum());
-<a class="jxr_linenumber" name="1377" href="#1377">1377</a>       defaultDecodingCtx = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/hadoop/hbase/io/encoding/HFileBlockDefaultDecodingContext.html">HFileBlockDefaultDecodingContext</a>(fileContext);
-<a class="jxr_linenumber" name="1378" href="#1378">1378</a>       encodedBlockDecodingCtx = defaultDecodingCtx;
-<a class="jxr_linenumber" name="1379" href="#1379">1379</a>     }
-<a class="jxr_linenumber" name="1380" href="#1380">1380</a> 
-<a class="jxr_linenumber" name="1381" href="#1381">1381</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="1382" href="#1382">1382</a> <em class="jxr_javadoccomment">     * A constructor that reads files with the latest minor version.</em>
-<a class="jxr_linenumber" name="1383" href="#1383">1383</a> <em class="jxr_javadoccomment">     * This is used by unit tests only.</em>
-<a class="jxr_linenumber" name="1384" href="#1384">1384</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="1385" href="#1385">1385</a>     <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html">FSReaderImpl</a>(FSDataInputStream istream, <strong class="jxr_keyword">long</strong> fileSize, <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileContext.html">HFileContext</a> fileContext)
-<a class="jxr_linenumber" name="1386" href="#1386">1386</a>     <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="1387" href="#1387">1387</a>       <strong class="jxr_keyword">this</strong>(<strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/hadoop/hbase/io/FSDataInputStreamWrapper.html">FSDataInputStreamWrapper</a>(istream), fileSize, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, fileContext);
-<a class="jxr_linenumber" name="1388" href="#1388">1388</a>     }
-<a class="jxr_linenumber" name="1389" href="#1389">1389</a> 
-<a class="jxr_linenumber" name="1390" href="#1390">1390</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html">BlockIterator</a> blockRange(<strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> startOffset, <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> endOffset) {
-<a class="jxr_linenumber" name="1391" href="#1391">1391</a>       <strong class="jxr_keyword">final</strong> <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html">FSReader</a> owner = <strong class="jxr_keyword">this</strong>; <em class="jxr_comment">// handle for inner class</em>
-<a class="jxr_linenumber" name="1392" href="#1392">1392</a>       <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html">BlockIterator</a>() {
-<a class="jxr_linenumber" name="1393" href="#1393">1393</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">long</strong> offset = startOffset;
-<a class="jxr_linenumber" name="1394" href="#1394">1394</a> 
-<a class="jxr_linenumber" name="1395" href="#1395">1395</a>         @Override
-<a class="jxr_linenumber" name="1396" href="#1396">1396</a>         <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html">HFileBlock</a> nextBlock() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="1397" href="#1397">1397</a>           <strong class="jxr_keyword">if</strong> (offset &gt;= endOffset)
-<a class="jxr_linenumber" name="1398" href="#1398">1398</a>             <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="1399" href="#1399">1399</a>           <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html">HFileBlock</a> b = readBlockData(offset, -1, -1, false);
-<a class="jxr_linenumber" name="1400" href="#1400">1400</a>           offset += b.getOnDiskSizeWithHeader();
-<a class="jxr_linenumber" name="1401" href="#1401">1401</a>           <strong class="jxr_keyword">return</strong> b.unpack(fileContext, owner);
-<a class="jxr_linenumber" name="1402" href="#1402">1402</a>         }
-<a class="jxr_linenumber" name="1403" href="#1403">1403</a> 
-<a class="jxr_linenumber" name="1404" href="#1404">1404</a>         @Override
-<a class="jxr_linenumber" name="1405" href="#1405">1405</a>         <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html">HFileBlock</a> nextBlockWithBlockType(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html">BlockType</a> blockType)
-<a class="jxr_linenumber" name="1406" href="#1406">1406</a>             <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="1407" href="#1407">1407</a>           <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html">HFileBlock</a> blk = nextBlock();
-<a class="jxr_linenumber" name="1408" href="#1408">1408</a>           <strong class="jxr_keyword">if</strong> (blk.getBlockType() != blockType) {
-<a class="jxr_linenumber" name="1409" href="#1409">1409</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IOException(<span class="jxr_string">"Expected block of type "</span> + blockType
-<a class="jxr_linenumber" name="1410" href="#1410">1410</a>                 + <span class="jxr_string">" but found "</span> + blk.getBlockType());
-<a class="jxr_linenumber" name="1411" href="#1411">1411</a>           }
-<a class="jxr_linenumber" name="1412" href="#1412">1412</a>           <strong class="jxr_keyword">return</strong> blk;
-<a class="jxr_linenumber" name="1413" href="#1413">1413</a>         }
-<a class="jxr_linenumber" name="1414" href="#1414">1414</a>       };
-<a class="jxr_linenumber" name="1415" href="#1415">1415</a>     }
-<a class="jxr_linenumber" name="1416" href="#1416">1416</a> 
-<a class="jxr_linenumber" name="1417" href="#1417">1417</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="1418" href="#1418">1418</a> <em class="jxr_javadoccomment">     * Does a positional read or a seek and read into the given buffer. Returns</em>
-<a class="jxr_linenumber" name="1419" href="#1419">1419</a> <em class="jxr_javadoccomment">     * the on-disk size of the next block, or -1 if it could not be determined.</em>
-<a class="jxr_linenumber" name="1420" href="#1420">1420</a> <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="1421" href="#1421">1421</a> <em class="jxr_javadoccomment">     * @param dest destination buffer</em>
-<a class="jxr_linenumber" name="1422" href="#1422">1422</a> <em class="jxr_javadoccomment">     * @param destOffset offset in the destination buffer</em>
-<a class="jxr_linenumber" name="1423" href="#1423">1423</a> <em class="jxr_javadoccomment">     * @param size size of the block to be read</em>
-<a class="jxr_linenumber" name="1424" href="#1424">1424</a> <em class="jxr_javadoccomment">     * @param peekIntoNextBlock whether to read the next block's on-disk size</em>
-<a class="jxr_linenumber" name="1425" href="#1425">1425</a> <em class="jxr_javadoccomment">     * @param fileOffset position in the stream to read at</em>
-<a class="jxr_linenumber" name="1426" href="#1426">1426</a> <em class="jxr_javadoccomment">     * @param pread whether we should do a positional read</em>
-<a class="jxr_linenumber" name="1427" href="#1427">1427</a> <em class="jxr_javadoccomment">     * @param istream The input source of data</em>
-<a class="jxr_linenumber" name="1428" href="#1428">1428</a> <em class="jxr_javadoccomment">     * @return the on-disk size of the next block with header size included, or</em>
-<a class="jxr_linenumber" name="1429" href="#1429">1429</a> <em class="jxr_javadoccomment">     *         -1 if it could not be determined</em>
-<a class="jxr_linenumber" name="1430" href="#1430">1430</a> <em class="jxr_javadoccomment">     * @throws IOException</em>
-<a class="jxr_linenumber" name="1431" href="#1431">1431</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="1432" href="#1432">1432</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">int</strong> readAtOffset(FSDataInputStream istream,
-<a class="jxr_linenumber" name="1433" href="#1433">1433</a>         byte[] dest, <strong class="jxr_keyword">int</strong> destOffset, <strong class="jxr_keyword">int</strong> size,
-<a class="jxr_linenumber" name="1434" href="#1434">1434</a>         <strong class="jxr_keyword">boolean</strong> peekIntoNextBlock, <strong class="jxr_keyword">long</strong> fileOffset, <strong class="jxr_keyword">boolean</strong> pread)
-<a class="jxr_linenumber" name="1435" href="#1435">1435</a>         <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="1436" href="#1436">1436</a>       <strong class="jxr_keyword">if</strong> (peekIntoNextBlock &amp;&amp;
-<a class="jxr_linenumber" name="1437" href="#1437">1437</a>           destOffset + size + hdrSize &gt; dest.length) {
-<a class="jxr_linenumber" name="1438" href="#1438">1438</a>         <em class="jxr_comment">// We are asked to read the next block's header as well, but there is</em>
-<a class="jxr_linenumber" name="1439" href="#1439">1439</a>         <em class="jxr_comment">// not enough room in the array.</em>
-<a class="jxr_linenumber" name="1440" href="#1440">1440</a>         <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IOException(<span class="jxr_string">"Attempted to read "</span> + size + <span class="jxr_string">" bytes and "</span> +
-<a class="jxr_linenumber" name="1441" href="#1441">1441</a>             hdrSize + <span class="jxr_string">" bytes of next header into a "</span> + dest.length +
-<a class="jxr_linenumber" name="1442" href="#1442">1442</a>             <span class="jxr_string">"-byte array at offset "</span> + destOffset);
-<a class="jxr_linenumber" name="1443" href="#1443">1443</a>       }
-<a class="jxr_linenumber" name="1444" href="#1444">1444</a> 
-<a class="jxr_linenumber" name="1445" href="#1445">1445</a>       <strong class="jxr_keyword">if</strong> (!pread &amp;&amp; streamLock.tryLock()) {
-<a class="jxr_linenumber" name="1446" href="#1446">1446</a>         <em class="jxr_comment">// Seek + read. Better for scanning.</em>
-<a class="jxr_linenumber" name="1447" href="#1447">1447</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="1448" href="#1448">1448</a>           istream.seek(fileOffset);
-<a class="jxr_linenumber" name="1449" href="#1449">1449</a> 
-<a class="jxr_linenumber" name="1450" href="#1450">1450</a>           <strong class="jxr_keyword">long</strong> realOffset = istream.getPos();
-<a class="jxr_linenumber" name="1451" href="#1451">1451</a>           <strong class="jxr_keyword">if</strong> (realOffset != fileOffset) {
-<a class="jxr_linenumber" name="1452" href="#1452">1452</a>             <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IOException(<span class="jxr_string">"Tried to seek to "</span> + fileOffset + <span class="jxr_string">" to "</span>
-<a class="jxr_linenumber" name="1453" href="#1453">1453</a>                 + <span class="jxr_string">"read "</span> + size + <span class="jxr_string">" bytes, but pos="</span> + realOffset
-<a class="jxr_linenumber" name="1454" href="#1454">1454</a>                 + <span class="jxr_string">" after seek"</span>);
-<a class="jxr_linenumber" name="1455" href="#1455">1455</a>           }
-<a class="jxr_linenumber" name="1456" href="#1456">1456</a> 
-<a class="jxr_linenumber" name="1457" href="#1457">1457</a>           <strong class="jxr_keyword">if</strong> (!peekIntoNextBlock) {
-<a class="jxr_linenumber" name="1458" href="#1458">1458</a>             IOUtils.readFully(istream, dest, destOffset, size);
-<a class="jxr_linenumber" name="1459" href="#1459">1459</a>             <strong class="jxr_keyword">return</strong> -1;
-<a class="jxr_linenumber" name="1460" href="#1460">1460</a>           }
-<a class="jxr_linenumber" name="1461" href="#1461">1461</a> 
-<a class="jxr_linenumber" name="1462" href="#1462">1462</a>           <em class="jxr_comment">// Try to read the next block header.</em>
-<a class="jxr_linenumber" name="1463" href="#1463">1463</a>           <strong class="jxr_keyword">if</strong> (!readWithExtra(istream, dest, destOffset, size, hdrSize))
-<a class="jxr_linenumber" name="1464" href="#1464">1464</a>             <strong class="jxr_keyword">return</strong> -1;
-<a class="jxr_linenumber" name="1465" href="#1465">1465</a>         } <strong class="jxr_keyword">finally</strong> {
-<a class="jxr_linenumber" name="1466" href="#1466">1466</a>           streamLock.unlock();
-<a class="jxr_linenumber" name="1467" href="#1467">1467</a>         }
-<a class="jxr_linenumber" name="1468" href="#1468">1468</a>       } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="1469" href="#1469">1469</a>         <em class="jxr_comment">// Positional read. Better for random reads; or when the streamLock is already locked.</em>
-<a class="jxr_linenumber" name="1470" href="#1470">1470</a>         <strong class="jxr_keyword">int</strong> extraSize = peekIntoNextBlock ? hdrSize : 0;
-<a class="jxr_linenumber" name="1471" href="#1471">1471</a>         <strong class="jxr_keyword">if</strong> (!positionalReadWithExtra(istream, fileOffset, dest, destOffset,
-<a class="jxr_linenumber" name="1472" href="#1472">1472</a>             size, extraSize)) {
-<a class="jxr_linenumber" name="1473" href="#1473">1473</a>           <strong class="jxr_keyword">return</strong> -1;
-<a class="jxr_linenumber" name="1474" href="#1474">1474</a>         }
-<a class="jxr_linenumber" name="1475" href="#1475">1475</a>       }
-<a class="jxr_linenumber" name="1476" href="#1476">1476</a> 
-<a class="jxr_linenumber" name="1477" href="#1477">1477</a>       assert peekIntoNextBlock;
-<a class="jxr_linenumber" name="1478" href="#1478">1478</a>       <strong class="jxr_keyword">return</strong> Bytes.toInt(dest, destOffset + size + BlockType.MAGIC_LENGTH) + hdrSize;
-<a class="jxr_linenumber" name="1479" href="#1479">1479</a>     }
-<a class="jxr_linenumber" name="1480" href="#1480">1480</a> 
-<a class="jxr_linenumber" name="1481" href="#1481">1481</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="1482" href="#1482">1482</a> <em class="jxr_javadoccomment">     * Reads a version 2 block (version 1 blocks not supported and not expected). Tries to do as</em>
-<a class="jxr_linenumber" name="1483" href="#1483">1483</a> <em class="jxr_javadoccomment">     * little memory allocation as possible, using the provided on-disk size.</em>
-<a class="jxr_linenumber" name="1484" href="#1484">1484</a> <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="1485" href="#1485">1485</a> <em class="jxr_javadoccomment">     * @param offset the offset in the stream to read at</em>
-<a class="jxr_linenumber" name="1486" href="#1486">1486</a> <em class="jxr_javadoccomment">     * @param onDiskSizeWithHeaderL the on-disk size of the block, including</em>
-<a class="jxr_linenumber" name="1487" href="#1487">1487</a> <em class="jxr_javadoccomment">     *          the header, or -1 if unknown</em>
-<a class="jxr_linenumber" name="1488" href="#1488">1488</a> <em class="jxr_javadoccomment">     * @param uncompressedSize the uncompressed size of the the block. Always</em>
-<a class="jxr_linenumber" name="1489" href="#1489">1489</a> <em class="jxr_javadoccomment">     *          expected to be -1. This parameter is only used in version 1.</em>
-<a class="jxr_linenumber" name="1490" href="#1490">1490</a> <em class="jxr_javadoccomment">     * @param pread whether to use a positional read</em>
-<a class="jxr_linenumber" name="1491" href="#1491">1491</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="1492" href="#1492">1492</a>     @Override
-<a class="jxr_linenumber" name="1493" href="#1493">1493</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html">HFileBlock</a> readBlockData(<strong class="jxr_keyword">long</strong> offset, <strong class="jxr_keyword">long</strong> onDiskSizeWithHeaderL,
-<a class="jxr_linenumber" name="1494" href="#1494">1494</a>         <strong class="jxr_keyword">int</strong> uncompressedSize, <strong class="jxr_keyword">boolean</strong> pread)
-<a class="jxr_linenumber" name="1495" href="#1495">1495</a>     <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="1496" href="#1496">1496</a> 
-<a class="jxr_linenumber" name="1497" href="#1497">1497</a>       <em class="jxr_comment">// get a copy of the current state of whether to validate</em>
-<a class="jxr_linenumber" name="1498" href="#1498">1498</a>       <em class="jxr_comment">// hbase checksums or not for this read call. This is not</em>
-<a class="jxr_linenumber" name="1499" href="#1499">1499</a>       <em class="jxr_comment">// thread-safe but the one constaint is that if we decide</em>
-<a class="jxr_linenumber" name="1500" href="#1500">1500</a>       <em class="jxr_comment">// to skip hbase checksum verification then we are</em>
-<a class="jxr_linenumber" name="1501" href="#1501">1501</a>       <em class="jxr_comment">// guaranteed to use hdfs checksum verification.</em>
-<a class="jxr_linenumber" name="1502" href="#1502">1502</a>       <strong class="jxr_keyword">boolean</strong> doVerificationThruHBaseChecksum = streamWrapper.shouldUseHBaseChecksum();
-<a class="jxr_linenumber" name="1503" href="#1503">1503</a>       FSDataInputStream is = streamWrapper.getStream(doVerificationThruHBaseChecksum);
-<a class="jxr_linenumber" name="1504" href="#1504">1504</a> 
-<a class="jxr_linenumber" name="1505" href="#1505">1505</a>       <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html">HFileBlock</a> blk = readBlockDataInternal(is, offset,
-<a class="jxr_linenumber" name="1506" href="#1506">1506</a>                          onDiskSizeWithHeaderL,
-<a class="jxr_linenumber" name="1507" href="#1507">1507</a>                          uncompressedSize, pread,
-<a class="jxr_linenumber" name="1508" href="#1508">1508</a>                          doVerificationThruHBaseChecksum);
-<a class="jxr_linenumber" name="1509" href="#1509">1509</a>       <strong class="jxr_keyword">if</strong> (blk == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="1510" href="#1510">1510</a>         HFile.LOG.warn(<span class="jxr_string">"HBase checksum verification failed for file "</span> +
-<a class="jxr_linenumber" name="1511" href="#1511">1511</a>                        path + <span class="jxr_string">" at offset "</span> +
-<a class="jxr_linenumber" name="1512" href="#1512">1512</a>                        offset + <span class="jxr_string">" filesize "</span> + fileSize +
-<a class="jxr_linenumber" name="1513" href="#1513">1513</a>                        <span class="jxr_string">". Retrying read with HDFS checksums turned on..."</span>);
-<a class="jxr_linenumber" name="1514" href="#1514">1514</a> 
-<a class="jxr_linenumber" name="1515" href="#1515">1515</a>         <strong class="jxr_keyword">if</strong> (!doVerificationThruHBaseChecksum) {
-<a class="jxr_linenumber" name="1516" href="#1516">1516</a>           String msg = <span class="jxr_string">"HBase checksum verification failed for file "</span> +
-<a class="jxr_linenumber" name="1517" href="#1517">1517</a>                        path + <span class="jxr_string">" at offset "</span> +
-<a class="jxr_linenumber" name="1518" href="#1518">1518</a>                        offset + <span class="jxr_string">" filesize "</span> + fileSize +
-<a class="jxr_linenumber" name="1519" href="#1519">1519</a>                        <span class="jxr_string">" but this cannot happen because doVerify is "</span> +
-<a class="jxr_linenumber" name="1520" href="#1520">1520</a>                        doVerificationThruHBaseChecksum;
-<a class="jxr_linenumber" name="1521" href="#1521">1521</a>           HFile.LOG.warn(msg);
-<a class="jxr_linenumber" name="1522" href="#1522">1522</a>           <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IOException(msg); <em class="jxr_comment">// cannot happen case here</em>
-<a class="jxr_linenumber" name="1523" href="#1523">1523</a>         }
-<a class="jxr_linenumber" name="1524" href="#1524">1524</a>         HFile.checksumFailures.incrementAndGet(); <em class="jxr_comment">// update metrics</em>
-<a class="jxr_linenumber" name="1525" href="#1525">1525</a> 
-<a class="jxr_linenumber" name="1526" href="#1526">1526</a>         <em class="jxr_comment">// If we have a checksum failure, we fall back into a mode where</em>
-<a class="jxr_linenumber" name="1527" href="#1527">1527</a>         <em class="jxr_comment">// the next few reads use HDFS level checksums. We aim to make the</em>
-<a class="jxr_linenumber" name="1528" href="#1528">1528</a>         <em class="jxr_comment">// next CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD reads avoid</em>
-<a class="jxr_linenumber" name="1529" href="#1529">1529</a>         <em class="jxr_comment">// hbase checksum verification, but since this value is set without</em>
-<a class="jxr_linenumber" name="1530" href="#1530">1530</a>         <em class="jxr_comment">// holding any locks, it can so happen that we might actually do</em>
-<a class="jxr_linenumber" name="1531" href="#1531">1531</a>         <em class="jxr_comment">// a few more than precisely this number.</em>
-<a class="jxr_linenumber" name="1532" href="#1532">1532</a>         is = <strong class="jxr_keyword">this</strong>.streamWrapper.fallbackToFsChecksum(CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD);
-<a class="jxr_linenumber" name="1533" href="#1533">1533</a>         doVerificationThruHBaseChecksum = false;
-<a class="jxr_linenumber" name="1534" href="#1534">1534</a>         blk = readBlockDataInternal(is, offset, onDiskSizeWithHeaderL,
-<a class="jxr_linenumber" name="1535" href="#1535">1535</a>                                     uncompressedSize, pread,
-<a class="jxr_linenumber" name="1536" href="#1536">1536</a>                                     doVerificationThruHBaseChecksum);
-<a class="jxr_linenumber" name="1537" href="#1537">1537</a>         <strong class="jxr_keyword">if</strong> (blk != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="1538" href="#1538">1538</a>           HFile.LOG.warn(<span class="jxr_string">"HDFS checksum verification suceeded for file "</span> +
-<a class="jxr_linenumber" name="1539" href="#1539">1539</a>                          path + <span class="jxr_string">" at offset "</span> +
-<a class="jxr_linenumber" name="1540" href="#1540">1540</a>                          offset + <span class="jxr_string">" filesize "</span> + fileSize);
-<a class="jxr_linenumber" name="1541" href="#1541">1541</a>         }
-<a class="jxr_linenumber" name="1542" href="#1542">1542</a>       }
-<a class="jxr_linenumber" name="1543" href="#1543">1543</a>       <strong class="jxr_keyword">if</strong> (blk == <strong class="jxr_keyword">null</strong> &amp;&amp; !doVerificationThruHBaseChecksum) {
-<a class="jxr_linenumber" name="1544" href="#1544">1544</a>         String msg = <span class="jxr_string">"readBlockData failed, possibly due to "</span> +
-<a class="jxr_linenumber" name="1545" href="#1545">1545</a>                      <span class="jxr_string">"checksum verification failed for file "</span> + path +
-<a class="jxr_linenumber" name="1546" href="#1546">1546</a>                      <span class="jxr_string">" at offset "</span> + offset + <span class="jxr_string">" filesize "</span> + fileSize;
-<a class="jxr_linenumber" name="1547" href="#1547">1547</a>         HFile.LOG.warn(msg);
-<a class="jxr_linenumber" name="1548" href="#1548">1548</a>         <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IOException(msg);
-<a class="jxr_linenumber" name="1549" href="#1549">1549</a>       }
-<a class="jxr_linenumber" name="1550" href="#1550">1550</a> 
-<a class="jxr_linenumber" name="1551" href="#1551">1551</a>       <em class="jxr_comment">// If there is a checksum mismatch earlier, then retry with</em>
-<a class="jxr_linenumber" name="1552" href="#1552">1552</a>       <em class="jxr_comment">// HBase checksums switched off and use HDFS checksum verification.</em>
-<a class="jxr_linenumber" name="1553" href="#1553">1553</a>       <em class="jxr_comment">// This triggers HDFS to detect and fix corrupt replicas. The</em>
-<a class="jxr_linenumber" name="1554" href="#1554">1554</a>       <em class="jxr_comment">// next checksumOffCount read requests will use HDFS checksums.</em>
-<a class="jxr_linenumber" name="1555" href="#1555">1555</a>       <em class="jxr_comment">// The decrementing of this.checksumOffCount is not thread-safe,</em>
-<a class="jxr_linenumber" name="1556" href="#1556">1556</a>       <em class="jxr_comment">// but it is harmless because eventually checksumOffCount will be</em>
-<a class="jxr_linenumber" name="1557" href="#1557">1557</a>       <em class="jxr_comment">// a negative number.</em>
-<a class="jxr_linenumber" name="1558" href="#1558">1558</a>       streamWrapper.checksumOk();
-<a class="jxr_linenumber" name="1559" href="#1559">1559</a>       <strong class="jxr_keyword">return</strong> blk;
-<a class="jxr_linenumber" name="1560" href="#1560">1560</a>     }
-<a class="jxr_linenumber" name="1561" href="#1561">1561</a> 
-<a class="jxr_linenumber" name="1562" href="#1562">1562</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="1563" href="#1563">1563</a> <em class="jxr_javadoccomment">     * Reads a version 2 block.</em>
-<a class="jxr_linenumber" name="1564" href="#1564">1564</a> <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="1565" href="#1565">1565</a> <em class="jxr_javadoccomment">     * @param offset the offset in the stream to read at</em>
-<a class="jxr_linenumber" name="1566" href="#1566">1566</a> <em class="jxr_javadoccomment">     * @param onDiskSizeWithHeaderL the on-disk size of the block, including</em>
-<a class="jxr_linenumber" name="1567" href="#1567">1567</a> <em class="jxr_javadoccomment">     *          the header, or -1 if unknown</em>
-<a class="jxr_linenumber" name="1568" href="#1568">1568</a> <em class="jxr_javadoccomment">     * @param uncompressedSize the uncompressed size of the the block. Always</em>
-<a class="jxr_linenumber" name="1569" href="#1569">1569</a> <em class="jxr_javadoccomment">     *          expected to be -1. This parameter is only used in version 1.</em>
-<a class="jxr_linenumber" name="1570" href="#1570">1570</a> <em class="jxr_javadoccomment">     * @param pread whether to use a positional read</em>
-<a class="jxr_linenumber" name="1571" href="#1571">1571</a> <em class="jxr_javadoccomment">     * @param verifyChecksum Whether to use HBase checksums.</em>
-<a class="jxr_linenumber" name="1572" href="#1572">1572</a> <em class="jxr_javadoccomment">     *        If HBase checksum is switched off, then use HDFS checksum.</em>
-<a class="jxr_linenumber" name="1573" href="#1573">1573</a> <em class="jxr_javadoccomment">     * @return the HFileBlock or null if there is a HBase checksum mismatch</em>
-<a class="jxr_linenumber" name="1574" href="#1574">1574</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="1575" href="#1575">1575</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html">HFileBlock</a> readBlockDataInternal(FSDataInputStream is, <strong class="jxr_keyword">long</strong> offset,
-<a class="jxr_linenumber" name="1576" href="#1576">1576</a>         <strong class="jxr_keyword">long</strong> onDiskSizeWithHeaderL, <strong class="jxr_keyword">int</strong> uncompressedSize, <strong class="jxr_keyword">boolean</strong> pread,
-<a class="jxr_linenumber" name="1577" href="#1577">1577</a>         <strong class="jxr_keyword">boolean</strong> verifyChecksum)
-<a class="jxr_linenumber" name="1578" href="#1578">1578</a>     <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="1579" href="#1579">1579</a>       <strong class="jxr_keyword">if</strong> (offset &lt; 0) {
-<a class="jxr_linenumber" name="1580" href="#1580">1580</a>         <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IOException(<span class="jxr_string">"Invalid offset="</span> + offset + <span class="jxr_string">" trying to read "</span>
-<a class="jxr_linenumber" name="1581" href="#1581">1581</a>             + <span class="jxr_string">"block (onDiskSize="</span> + onDiskSizeWithHeaderL
-<a class="jxr_linenumber" name="1582" href="#1582">1582</a>             + <span class="jxr_string">", uncompressedSize="</span> + uncompressedSize + <span class="jxr_string">")"</span>);
-<a class="jxr_linenumber" name="1583" href="#1583">1583</a>       }
-<a class="jxr_linenumber" name="1584" href="#1584">1584</a> 
-<a class="jxr_linenumber" name="1585" href="#1585">1585</a>       <strong class="jxr_keyword">if</strong> (uncompressedSize != -1) {
-<a class="jxr_linenumber" name="1586" href="#1586">1586</a>         <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IOException(<span class="jxr_string">"Version 2 block reader API does not need "</span> +
-<a class="jxr_linenumber" name="1587" href="#1587">1587</a>             <span class="jxr_string">"the uncompressed size parameter"</span>);
-<a class="jxr_linenumber" name="1588" href="#1588">1588</a>       }
-<a class="jxr_linenumber" name="1589" href="#1589">1589</a> 
-<a class="jxr_linenumber" name="1590" href="#1590">1590</a>       <strong class="jxr_keyword">if</strong> ((onDiskSizeWithHeaderL &lt; hdrSize &amp;&amp; onDiskSizeWithHeaderL != -1)
-<a class="jxr_linenumber" name="1591" href="#1591">1591</a>           || onDiskSizeWithHeaderL &gt;= Integer.MAX_VALUE) {
-<a class="jxr_linenumber" name="1592" href="#1592">1592</a>         <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IOException(<span class="jxr_string">"Invalid onDisksize="</span> + onDiskSizeWithHeaderL
-<a class="jxr_linenumber" name="1593" href="#1593">1593</a>             + <span class="jxr_string">": expected to be at least "</span> + hdrSize
-<a class="jxr_linenumber" name="1594" href="#1594">1594</a>             + <span class="jxr_string">" and at most "</span> + Integer.MAX_VALUE + <span class="jxr_string">", or -1 (offset="</span>
-<a class="jxr_linenumber" name="1595" href="#1595">1595</a>             + offset + <span class="jxr_string">", uncompressedSize="</span> + uncompressedSize + <span class="jxr_string">")"</span>);
-<a class="jxr_linenumber" name="1596" href="#1596">1596</a>       }
-<a class="jxr_linenumber" name="1597" href="#1597">1597</a> 
-<a class="jxr_linenumber" name="1598" href="#1598">1598</a>       <strong class="jxr_keyword">int</strong> onDiskSizeWithHeader = (<strong class="jxr_keyword">int</strong>) onDiskSizeWithHeaderL;
-<a class="jxr_linenumber" name="1599" href="#1599">1599</a>       <em class="jxr_comment">// See if we can avoid reading the header. This is desirable, because</em>
-<a class="jxr_linenumber" name="1600" href="#1600">1600</a>       <em class="jxr_comment">// we will not incur a backward seek operation if we have already</em>
-<a class="jxr_linenumber" name="1601" href="#1601">1601</a>       <em class="jxr_comment">// read this block's header as part of the previous read's look-ahead.</em>
-<a class="jxr_linenumber" name="1602" href="#1602">1602</a>       <em class="jxr_comment">// And we also want to skip reading the header again if it has already</em>
-<a class="jxr_linenumber" name="1603" href="#1603">1603</a>       <em class="jxr_comment">// been read.</em>
-<a class="jxr_linenumber" name="1604" href="#1604">1604</a>       <em class="jxr_comment">// TODO: How often does this optimization fire? Has to be same thread so the thread local</em>
-<a class="jxr_linenumber" name="1605" href="#1605">1605</a>       <em class="jxr_comment">// is pertinent and we have to be reading next block as in a big scan.</em>
-<a class="jxr_linenumber" name="1606" href="#1606">1606</a>       <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html">PrefetchedHeader</a> prefetchedHeader = prefetchedHeaderForThread.get();
-<a class="jxr_linenumber" name="1607" href="#1607">1607</a>       ByteBuffer headerBuf = prefetchedHeader.offset == offset? prefetchedHeader.buf: <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="1608" href="#1608">1608</a> 
-<a class="jxr_linenumber" name="1609" href="#1609">1609</a>       <em class="jxr_comment">// Allocate enough space to fit the next block's header too.</em>
-<a class="jxr_linenumber" name="1610" href="#1610">1610</a>       <strong class="jxr_keyword">int</strong> nextBlockOnDiskSize = 0;
-<a class="jxr_linenumber" name="1611" href="#1611">1611</a>       byte[] onDiskBlock = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="1612" href="#1612">1612</a> 
-<a class="jxr_linenumber" name="1613" href="#1613">1613</a>       <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html">HFileBlock</a> b = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="1614" href="#1614">1614</a>       <strong class="jxr_keyword">if</strong> (onDiskSizeWithHeader &gt; 0) {
-<a class="jxr_linenumber" name="1615" href="#1615">1615</a>         <em class="jxr_comment">// We know the total on-disk size. Read the entire block into memory,</em>
-<a class="jxr_linenumber" name="1616" href="#1616">1616</a>         <em class="jxr_comment">// then parse the header. This code path is used when</em>
-<a class="jxr_linenumber" name="1617" href="#1617">1617</a>         <em class="jxr_comment">// doing a random read operation relying on the block index, as well as</em>
-<a class="jxr_linenumber" name="1618" href="#1618">1618</a>         <em class="jxr_comment">// when the client knows the on-disk size from peeking into the next</em>
-<a class="jxr_linenumber" name="1619" href="#1619">1619</a>         <em class="jxr_comment">// block's header (e.g. this block's header) when reading the previous</em>
-<a class="jxr_linenumber" name="1620" href="#1620">1620</a>         <em class="jxr_comment">// block. This is the faster and more preferable case.</em>
-<a class="jxr_linenumber" name="1621" href="#1621">1621</a> 
-<a class="jxr_linenumber" name="1622" href="#1622">1622</a>         <em class="jxr_comment">// Size that we have to skip in case we have already read the header.</em>
-<a class="jxr_linenumber" name="1623" href="#1623">1623</a>         <strong class="jxr_keyword">int</strong> preReadHeaderSize = headerBuf == <strong class="jxr_keyword">null</strong> ? 0 : hdrSize;
-<a class="jxr_linenumber" name="1624" href="#1624">1624</a>         onDiskBlock = <strong class="jxr_keyword">new</strong> byte[onDiskSizeWithHeader + hdrSize]; <em class="jxr_comment">// room for this block plus the</em>
-<a class="jxr_linenumber" name="1625" href="#1625">1625</a>                                                                 <em class="jxr_comment">// next block's header</em>
-<a class="jxr_linenumber" name="1626" href="#1626">1626</a>         nextBlockOnDiskSize = readAtOffset(is, onDiskBlock,
-<a class="jxr_linenumber" name="1627" href="#1627">1627</a>             preReadHeaderSize, onDiskSizeWithHeader - preReadHeaderSize,
-<a class="jxr_linenumber" name="1628" href="#1628">1628</a>             <strong class="jxr_keyword">true</strong>, offset + preReadHeaderSize, pread);
-<a class="jxr_linenumber" name="1629" href="#1629">1629</a>         <strong class="jxr_keyword">if</strong> (headerBuf != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="1630" href="#1630">1630</a>           <em class="jxr_comment">// the header has been read when reading the previous block, copy</em>
-<a class="jxr_linenumber" name="1631" href="#1631">1631</a>           <em class="jxr_comment">// to this block's header</em>
-<a class="jxr_linenumber" name="1632" href="#1632">1632</a>           <em class="jxr_comment">// headerBuf is HBB</em>
-<a class="jxr_linenumber" name="1633" href="#1633">1633</a>           assert headerBuf.hasArray();
-<a class="jxr_linenumber" name="1634" href="#1634">1634</a>           System.arraycopy(headerBuf.array(),
-<a class="jxr_linenumber" name="1635" href="#1635">1635</a>               headerBuf.arrayOffset(), onDiskBlock, 0, hdrSize);
-<a class="jxr_linenumber" name="1636" href="#1636">1636</a>         } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="1637" href="#1637">1637</a>           headerBuf = ByteBuffer.wrap(onDiskBlock, 0, hdrSize);
-<a class="jxr_linenumber" name="1638" href="#1638">1638</a>         }
-<a class="jxr_linenumber" name="1639" href="#1639">1639</a>         <em class="jxr_comment">// We know the total on-disk size but not the uncompressed size. Parse the header.</em>
-<a class="jxr_linenumber" name="1640" href="#1640">1640</a>         <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="1641" href="#1641">1641</a>           <em class="jxr_comment">// TODO: FIX!!! Expensive parse just to get a length</em>
-<a class="jxr_linenumber" name="1642" href="#1642">1642</a>           b = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html">HFileBlock</a>(headerBuf, fileContext.isUseHBaseChecksum());
-<a class="jxr_linenumber" name="1643" href="#1643">1643</a>         } <strong class="jxr_keyword">catch</strong> (IOException ex) {
-<a class="jxr_linenumber" name="1644" href="#1644">1644</a>           <em class="jxr_comment">// Seen in load testing. Provide comprehensive debug info.</em>
-<a class="jxr_linenumber" name="1645" href="#1645">1645</a>           <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IOException(<span class="jxr_string">"Failed to read compressed block at "</span>
-<a class="jxr_linenumber" name="1646" href="#1646">1646</a>               + offset
-<a class="jxr_linenumber" name="1647" href="#1647">1647</a>               + <span class="jxr_string">", onDiskSizeWithoutHeader="</span>
-<a class="jxr_linenumber" name="1648" href="#1648">1648</a>               + onDiskSizeWithHeader
-<a class="jxr_linenumber" name="1649" href="#1649">1649</a>               + <span class="jxr_string">", preReadHeaderSize="</span>
-<a class="jxr_linenumber" name="1650" href="#1650">1650</a>               + hdrSize
-<a class="jxr_linenumber" name="1651" href="#1651">1651</a>               + <span class="jxr_string">", header.length="</span>
-<a class="jxr_linenumber" name="1652" href="#1652">1652</a>               + prefetchedHeader.header.length
-<a class="jxr_linenumber" name="1653" href="#1653">1653</a>               + <span class="jxr_string">", header bytes: "</span>
-<a class="jxr_linenumber" name="1654" href="#1654">1654</a>               + Bytes.toStringBinary(prefetchedHeader.header, 0,
-<a class="jxr_linenumber" name="1655" href="#1655">1655</a>                   hdrSize), ex);
-<a class="jxr_linenumber" name="1656" href="#1656">1656</a>         }
-<a class="jxr_linenumber" name="1657" href="#1657">1657</a>         <em class="jxr_comment">// if the caller specifies a onDiskSizeWithHeader, validate it.</em>
-<a class="jxr_linenumber" name="1658" href="#1658">1658</a>         <strong class="jxr_keyword">int</strong> onDiskSizeWithoutHeader = onDiskSizeWithHeader - hdrSize;
-<a class="jxr_linenumber" name="1659" href="#1659">1659</a>         assert onDiskSizeWithoutHeader &gt;= 0;
-<a class="jxr_linenumber" name="1660" href="#1660">1660</a>         b.validateOnDiskSizeWithoutHeader(onDiskSizeWithoutHeader);
-<a class="jxr_linenumber" name="1661" href="#1661">1661</a>       } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="1662" href="#1662">1662</a>         <em class="jxr_comment">// Check headerBuf to see if we have read this block's header as part of</em>
-<a class="jxr_linenumber" name="1663" href="#1663">1663</a>         <em class="jxr_comment">// reading the previous block. This is an optimization of peeking into</em>
-<a class="jxr_linenumber" name="1664" href="#1664">1664</a>         <em class="jxr_comment">// the next block's header (e.g.this block's header) when reading the</em>
-<a class="jxr_linenumber" name="1665" href="#1665">1665</a>         <em class="jxr_comment">// previous block. This is the faster and more preferable case. If the</em>
-<a class="jxr_linenumber" name="1666" href="#1666">1666</a>         <em class="jxr_comment">// header is already there, don't read the header again.</em>
-<a class="jxr_linenumber" name="1667" href="#1667">1667</a> 
-<a class="jxr_linenumber" name="1668" href="#1668">1668</a>         <em class="jxr_comment">// Unfortunately, we still have to do a separate read operation to</em>
-<a class="jxr_linenumber" name="1669" href="#1669">1669</a>         <em class="jxr_comment">// read the header.</em>
-<a class="jxr_linenumber" name="1670" href="#1670">1670</a>         <strong class="jxr_keyword">if</strong> (headerBuf == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="1671" href="#1671">1671</a>           <em class="jxr_comment">// From the header, determine the on-disk size of the given hfile</em>
-<a class="jxr_linenumber" name="1672" href="#1672">1672</a>           <em class="jxr_comment">// block, and read the remaining data, thereby incurring two read</em>
-<a class="jxr_linenumber" name="1673" href="#1673">1673</a>           <em class="jxr_comment">// operations. This might happen when we are doing the first read</em>
-<a class="jxr_linenumber" name="1674" href="#1674">1674</a>           <em class="jxr_comment">// in a series of reads or a random read, and we don't have access</em>
-<a class="jxr_linenumber" name="1675" href="#1675">1675</a>           <em class="jxr_comment">// to the block index. This is costly and should happen very rarely.</em>
-<a class="jxr_linenumber" name="1676" href="#1676">1676</a>           headerBuf = ByteBuffer.allocate(hdrSize);
-<a class="jxr_linenumber" name="1677" href="#1677">1677</a>           <em class="jxr_comment">// headerBuf is HBB</em>
-<a class="jxr_linenumber" name="1678" href="#1678">1678</a>           readAtOffset(is, headerBuf.array(), headerBuf.arrayOffset(),
-<a class="jxr_linenumber" name="1679" href="#1679">1679</a>               hdrSize, false, offset, pread);
-<a class="jxr_linenumber" name="1680" href="#1680">1680</a>         }
-<a class="jxr_linenumber" name="1681" href="#1681">1681</a>         <em class="jxr_comment">// TODO: FIX!!! Expensive parse just to get a length</em>
-<a class="jxr_linenumber" name="1682" href="#1682">1682</a>         b = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html">HFileBlock</a>(headerBuf, fileContext.isUseHBaseChecksum());
-<a class="jxr_linenumber" name="1683" href="#1683">1683</a>         onDiskBlock = <strong class="jxr_keyword">new</strong> byte[b.getOnDiskSizeWithHeader() + hdrSize];
-<a class="jxr_linenumber" name="1684" href="#1684">1684</a>         <em class="jxr_comment">// headerBuf is HBB</em>
-<a class="jxr_linenumber" name="1685" href="#1685">1685</a>         System.arraycopy(headerBuf.array(), headerBuf.arrayOffset(), onDiskBlock, 0, hdrSize);
-<a class="jxr_linenumber" name="1686" href="#1686">1686</a>         nextBlockOnDiskSize =
-<a class="jxr_linenumber" name="1687" href="#1687">1687</a>           readAtOffset(is, onDiskBlock, hdrSize, b.getOnDiskSizeWithHeader()
-<a class="jxr_linenumber" name="1688" href="#1688">1688</a>               - hdrSize, <strong class="jxr_keyword">true</strong>, offset + hdrSize, pread);
-<a class="jxr_linenumber" name="1689" href="#1689">1689</a>         onDiskSizeWithHeader = b.onDiskSizeWithoutHeader + hdrSize;
-<a class="jxr_linenumber" name="1690" href="#1690">1690</a>       }
-<a class="jxr_linenumber" name="1691" href="#1691">1691</a> 
-<a class="jxr_linenumber" name="1692" href="#1692">1692</a>       <strong class="jxr_keyword">if</strong> (!fileContext.isCompressedOrEncrypted()) {
-<a class="jxr_linenumber" name="1693" href="#1693">1693</a>         b.assumeUncompressed();
-<a class="jxr_linenumber" name="1694" href="#1694">1694</a>       }
-<a class="jxr_linenumber" name="1695" href="#1695">1695</a> 
-<a class="jxr_linenumber" name="1696" href="#1696">1696</a>       <strong class="jxr_keyword">if</strong> (verifyChecksum &amp;&amp; !validateBlockChecksum(b, onDiskBlock, hdrSize)) {
-<a class="jxr_linenumber" name="1697" href="#1697">1697</a>         <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;             <em class="jxr_comment">// checksum mismatch</em>
-<a class="jxr_linenumber" name="1698" href="#1698">1698</a>       }
-<a class="jxr_linenumber" name="1699" href="#1699">1699</a> 
-<a class="jxr_linenumber" name="1700" href="#1700">1700</a>       <em class="jxr_comment">// The onDiskBlock will become the headerAndDataBuffer for this block.</em>
-<a class="jxr_linenumber" name="1701" href="#1701">1701</a>       <em class="jxr_comment">// If nextBlockOnDiskSizeWithHeader is not zero, the onDiskBlock already</em>
-<a class="jxr_linenumber" name="1702" href="#1702">1702</a>       <em class="jxr_comment">// contains the header of next block, so no need to set next</em>
-<a class="jxr_linenumber" name="1703" href="#1703">1703</a>       <em class="jxr_comment">// block's header in it.</em>
-<a class="jxr_linenumber" name="1704" href="#1704">1704</a>       b = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html">HFileBlock</a>(ByteBuffer.wrap(onDiskBlock, 0, onDiskSizeWithHeader),
-<a class="jxr_linenumber" name="1705" href="#1705">1705</a>         <strong class="jxr_keyword">this</strong>.fileContext.isUseHBaseChecksum());
-<a class="jxr_linenumber" name="1706" href="#1706">1706</a> 
-<a class="jxr_linenumber" name="1707" href="#1707">1707</a>       b.nextBlockOnDiskSizeWithHeader = nextBlockOnDiskSize;
-<a class="jxr_linenumber" name="1708" href="#1708">1708</a> 
-<a class="jxr_linenumber" name="1709" href="#1709">1709</a>       <em class="jxr_comment">// Set prefetched header</em>
-<a class="jxr_linenumber" name="1710" href="#1710">1710</a>       <strong class="jxr_keyword">if</strong> (b.hasNextBlockHeader()) {
-<a class="jxr_linenumber" name="1711" href="#1711">1711</a>         prefetchedHeader.offset = offset + b.getOnDiskSizeWithHeader();
-<a class="jxr_linenumber" name="1712" href="#1712">1712</a>         System.arraycopy(onDiskBlock, onDiskSizeWithHeader, prefetchedHeader.header, 0, hdrSize);
-<a class="jxr_linenumber" name="1713" href="#1713">1713</a>       }
-<a class="jxr_linenumber" name="1714" href="#1714">1714</a> 
-<a class="jxr_linenumber" name="1715" href="#1715">1715</a>       b.offset = offset;
-<a class="jxr_linenumber" name="1716" href="#1716">1716</a>       b.fileContext.setIncludesTags(<strong class="jxr_keyword">this</strong>.fileContext.isIncludesTags());
-<a class="jxr_linenumber" name="1717" href="#1717">1717</a>       b.fileContext.setIncludesMvcc(<strong class="jxr_keyword">this</strong>.fileContext.isIncludesMvcc());
-<a class="jxr_linenumber" name="1718" href="#1718">1718</a>       <strong class="jxr_keyword">return</strong> b;
-<a class="jxr_linenumber" name="1719" href="#1719">1719</a>     }
-<a class="jxr_linenumber" name="1720" href="#1720">1720</a> 
-<a class="jxr_linenumber" name="1721" href="#1721">1721</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setIncludesMemstoreTS(<strong class="jxr_keyword">boolean</strong> includesMemstoreTS) {
-<a class="jxr_linenumber" name="1722" href="#1722">1722</a>       <strong class="jxr_keyword">this</strong>.fileContext.setIncludesMvcc(includesMemstoreTS);
-<a class="jxr_linenumber" name="1723" href="#1723">1723</a>     }
-<a class="jxr_linenumber" name="1724" href="#1724">1724</a> 
-<a class="jxr_linenumber" name="1725" href="#1725">1725</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setDataBlockEncoder(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoder.html">HFileDataBlockEncoder</a> encoder) {
-<a class="jxr_linenumber" name="1726" href="#1726">1726</a>       encodedBlockDecodingCtx = encoder.newDataBlockDecodingContext(<strong class="jxr_keyword">this</strong>.fileContext);
-<a class="jxr_linenumber" name="1727" href="#1727">1727</a>     }
-<a class="jxr_linenumber" name="1728" href="#1728">1728</a> 
-<a class="jxr_linenumber" name="1729" href="#1729">1729</a>     @Override
-<a class="jxr_linenumber" name="1730" href="#1730">1730</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/hadoop/hbase/io/encoding/HFileBlockDecodingContext.html">HFileBlockDecodingContext</a> getBlockDecodingContext() {
-<a class="jxr_linenumber" name="1731" href="#1731">1731</a>       <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.encodedBlockDecodingCtx;
-<a class="jxr_linenumber" name="1732" href="#1732">1732</a>     }
-<a class="jxr_linenumber" name="1733" href="#1733">1733</a> 
-<a class="jxr_linenumber" name="1734" href="#1734">1734</a>     @Override
-<a class="jxr_linenumber" name="1735" href="#1735">1735</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/hadoop/hbase/io/encoding/HFileBlockDecodingContext.html">HFileBlockDecodingContext</a> getDefaultBlockDecodingContext() {
-<a class="jxr_linenumber" name="1736" href="#1736">1736</a>       <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.defaultDecodingCtx;
-<a class="jxr_linenumber" name="1737" href="#1737">1737</a>     }
-<a class="jxr_linenumber" name="1738" href="#1738">1738</a> 
-<a class="jxr_linenumber" name="1739" href="#1739">1739</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="1740" href="#1740">1740</a> <em class="jxr_javadoccomment">     * Generates the checksum for the header as well as the data and</em>
-<a class="jxr_linenumber" name="1741" href="#1741">1741</a> <em class="jxr_javadoccomment">     * then validates that it matches the value stored in the header.</em>
-<a class="jxr_linenumber" name="1742" href="#1742">1742</a> <em class="jxr_javadoccomment">     * If there is a checksum mismatch, then return false. Otherwise</em>
-<a class="jxr_linenumber" name="1743" href="#1743">1743</a> <em class="jxr_javadoccomment">     * return true.</em>
-<a class="jxr_linenumber" name="1744" href="#1744">1744</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="1745" href="#1745">1745</a>     <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> validateBlockChecksum(<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html">HFileBlock</a> block,  byte[] data, <strong class="jxr_keyword">int</strong> hdrSize)
-<a class="jxr_linenumber" name="1746" href="#1746">1746</a>         <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="1747" href="#1747">1747</a>       <strong class="jxr_keyword">return</strong> ChecksumUtil.validateBlockChecksum(path, block, data, hdrSize);
-<a class="jxr_linenumber" name="1748" href="#1748">1748</a>     }
-<a class="jxr_linenumber" name="1749" href="#1749">1749</a> 
-<a class="jxr_linenumber" name="1750" href="#1750">1750</a>     @Override
-<a class="jxr_linenumber" name="1751" href="#1751">1751</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> closeStreams() <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="1752" href="#1752">1752</a>       streamWrapper.close();
-<a class="jxr_linenumber" name="1753" href="#1753">1753</a>     }
-<a class="jxr_linenumber" name="1754" href="#1754">1754</a> 
-<a class="jxr_linenumber" name="1755" href="#1755">1755</a>     @Override
-<a class="jxr_linenumber" name="1756" href="#1756">1756</a>     <strong class="jxr_keyword">public</strong> String toString() {
-<a class="jxr_linenumber" name="1757" href="#1757">1757</a>       <strong class="jxr_keyword">return</strong> <span class="jxr_string">"hfs="</span> + hfs + <span class="jxr_string">", path="</span> + path + <span class="jxr_string">", fileContext="</span> + fileContext;
-<a class="jxr_linenumber" name="1758" href="#1758">1758</a>     }
-<a class="jxr_linenumber" name="1759" href="#1759">1759</a>   }
-<a class="jxr_linenumber" name="1760" href="#1760">1760</a> 
-<a class="jxr_linenumber" name="1761" href="#1761">1761</a>   @Override
-<a class="jxr_linenumber" name="1762" href="#1762">1762</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getSerializedLength() {
-<a class="jxr_linenumber" name="1763" href="#1763">1763</a>     <strong class="jxr_keyword">if</strong> (buf != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="1764" href="#1764">1764</a>       <em class="jxr_comment">// include extra bytes for the next header when it's available.</em>
-<a class="jxr_linenumber" name="1765" href="#1765">1765</a>       <strong class="jxr_keyword">int</strong> extraSpace = hasNextBlockHeader() ? headerSize() : 0;
-<a class="jxr_linenumber" name="1766" href="#1766">1766</a>       <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.buf.limit() + extraSpace + HFileBlock.EXTRA_SERIALIZATION_SPACE;
-<a class="jxr_linenumber" name="1767" href="#1767">1767</a>     }
-<a class="jxr_linenumber" name="1768" href="#1768">1768</a>     <strong class="jxr_keyword">return</strong> 0;
-<a class="jxr_linenumber" name="1769" href="#1769">1769</a>   }
-<a class="jxr_linenumber" name="1770" href="#1770">1770</a> 
-<a class="jxr_linenumber" name="1771" href="#1771">1771</a>   @Override
-<a class="jxr_linenumber" name="1772" href="#1772">1772</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> serialize(ByteBuffer destination) {
-<a class="jxr_linenumber" name="1773" href="#1773">1773</a>     <strong class="jxr_keyword">this</strong>.buf.get(destination, 0, getSerializedLength()
-<a class="jxr_linenumber" name="1774" href="#1774">1774</a>         - EXTRA_SERIALIZATION_SPACE);
-<a class="jxr_linenumber" name="1775" href="#1775">1775</a>     serializeExtraInfo(destination);
-<a class="jxr_linenumber" name="1776" href="#1776">1776</a>   }
-<a class="jxr_linenumber" name="1777" href="#1777">1777</a> 
-<a class="jxr_linenumber" name="1778" href="#1778">1778</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> serializeExtraInfo(ByteBuffer destination) {
-<a class="jxr_linenumber" name="1779" href="#1779">1779</a>     destination.put(<strong class="jxr_keyword">this</strong>.fileContext.isUseHBaseChecksum() ? (byte) 1 : (byte) 0);
-<a class="jxr_linenumber" name="1780" href="#1780">1780</a>     destination.putLong(<strong class="jxr_keyword">this</strong>.offset);
-<a class="jxr_linenumber" name="1781" href="#1781">1781</a>     destination.putInt(<strong class="jxr_keyword">this</strong>.nextBlockOnDiskSizeWithHeader);
-<a class="jxr_linenumber" name="1782" href="#1782">1782</a>     destination.rewind();
-<a class="jxr_linenumber" name="1783" href="#1783">1783</a>   }
-<a class="jxr_linenumber" name="1784" href="#1784">1784</a> 
-<a class="jxr_linenumber" name="1785" href="#1785">1785</a>   @Override
-<a class="jxr_linenumber" name="1786" href="#1786">1786</a>   <strong class="jxr_keyword">public</strong> CacheableDeserializer&lt;Cacheable&gt; getDeserializer() {
-<a class="jxr_linenumber" name="1787" href="#1787">1787</a>     <strong class="jxr_keyword">return</strong> HFileBlock.blockDeserializer;
-<a class="jxr_linenumber" name="1788" href="#1788">1788</a>   }
-<a class="jxr_linenumber" name="1789" href="#1789">1789</a> 
-<a class="jxr_linenumber" name="1790" href="#1790">1790</a>   @Override
-<a class="jxr_linenumber" name="1791" href="#1791">1791</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> hashCode() {
-<a class="jxr_linenumber" name="1792" href="#1792">1792</a>     <strong class="jxr_keyword">int</strong> result = 1;
-<a class="jxr_linenumber" name="1793" href="#1793">1793</a>     result = result * 31 + blockType.hashCode();
-<a class="jxr_linenumber" name="1794" href="#1794">1794</a>     result = result * 31 + nextBlockOnDiskSizeWithHeader;
-<a class="jxr_linenumber" name="1795" href="#1795">1795</a>     result = result * 31 + (<strong class="jxr_keyword">int</strong>) (offset ^ (offset &gt;&gt;&gt; 32));
-<a class="jxr_linenumber" name="1796" href="#1796">1796</a>     result = result * 31 + onDiskSizeWithoutHeader;
-<a class="jxr_linenumber" name="1797" href="#1797">1797</a>     result = result * 31 + (<strong class="jxr_keyword">int</strong>) (prevBlockOffset ^ (prevBlockOffset &gt;&gt;&gt; 32));
-<a class="jxr_linenumber" name="1798" href="#1798">1798</a>     result = result * 31 + uncompressedSizeWithoutHeader;
-<a class="jxr_linenumber" name="1799" href="#1799">1799</a>     result = result * 31 + buf.hashCode();
-<a class="jxr_linenumber" name="1800" href="#1800">1800</a>     <strong class="jxr_keyword">return</strong> result;
-<a class="jxr_linenumber" name="1801" href="#1801">1801</a>   }
-<a class="jxr_linenumber" name="1802" href="#1802">1802</a> 
-<a class="jxr_linenumber" name="1803" href="#1803">1803</a>   @Override
-<a class="jxr_linenumber" name="1804" href="#1804">1804</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> equals(Object comparison) {
-<a class="jxr_linenumber" name="1805" href="#1805">1805</a>     <strong class="jxr_keyword">if</strong> (<strong class="jxr_keyword">this</strong> == comparison) {
-<a class="jxr_linenumber" name="1806" href="#1806">1806</a>       <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="1807" href="#1807">1807</a>     }
-<a class="jxr_linenumber" name="1808" href="#1808">1808</a>     <strong class="jxr_keyword">if</strong> (comparison == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="1809" href="#1809">1809</a>       <strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="1810" href="#1810">1810</a>     }
-<a class="jxr_linenumber" name="1811" href="#1811">1811</a>     <strong class="jxr_keyword">if</strong> (comparison.getClass() != <strong class="jxr_keyword">this</strong>.getClass()) {
-<a class="jxr_linenumber" name="1812" href="#1812">1812</a>       <strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="1813" href="#1813">1813</a>     }
-<a class="jxr_linenumber" name="1814" href="#1814">1814</a> 
-<a class="jxr_linenumber" name="1815" href="#1815">1815</a>     <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html">HFileBlock</a> castedComparison = (HFileBlock) comparison;
-<a class="jxr_linenumber" name="1816" href="#1816">1816</a> 
-<a class="jxr_linenumber" name="1817" href="#1817">1817</a>     <strong class="jxr_keyword">if</strong> (castedComparison.blockType != <strong class="jxr_keyword">this</strong>.blockType) {
-<a class="jxr_linenumber" name="1818" href="#1818">1818</a>       <strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="1819" href="#1819">1819</a>     }
-<a class="jxr_linenumber" name="1820" href="#1820">1820</a>     <strong class="jxr_keyword">if</strong> (castedComparison.nextBlockOnDiskSizeWithHeader != <strong class="jxr_keyword">this</strong>.nextBlockOnDiskSizeWithHeader) {
-<a class="jxr_linenumber" name="1821" href="#1821">1821</a>       <strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="1822" href="#1822">1822</a>     }
-<a class="jxr_linenumber" name="1823" href="#1823">1823</a>     <strong class="jxr_keyword">if</strong> (castedComparison.offset != <strong class="jxr_keyword">this</strong>.offset) {
-<a class="jxr_linenumber" name="1824" href="#1824">1824</a>       <strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="1825" href="#1825">1825</a>     }
-<a class="jxr_linenumber" name="1826" href="#1826">1826</a>     <strong class="jxr_keyword">if</strong> (castedComparison.onDiskSizeWithoutHeader != <strong class="jxr_keyword">this</strong>.onDiskSizeWithoutHeader) {
-<a class="jxr_linenumber" name="1827" href="#1827">1827</a>       <strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="1828" href="#1828">1828</a>     }
-<a class="jxr_linenumber" name="1829" href="#1829">1829</a>     <strong class="jxr_keyword">if</strong> (castedComparison.prevBlockOffset != <strong class="jxr_keyword">this</strong>.prevBlockOffset) {
-<a class="jxr_linenumber" name="1830" href="#1830">1830</a>       <strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="1831" href="#1831">1831</a>     }
-<a class="jxr_linenumber" name="1832" href="#1832">1832</a>     <strong class="jxr_keyword">if</strong> (castedComparison.uncompressedSizeWithoutHeader != <strong class="jxr_keyword">this</strong>.uncompressedSizeWithoutHeader) {
-<a class="jxr_linenumber" name="1833" href="#1833">1833</a>       <strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="1834" href="#1834">1834</a>     }
-<a class="jxr_linenumber" name="1835" href="#1835">1835</a>     <strong class="jxr_keyword">if</strong> (ByteBuff.compareTo(<strong class="jxr_keyword">this</strong>.buf, 0, <strong class="jxr_keyword">this</strong>.buf.limit(), castedComparison.buf, 0,
-<a class="jxr_linenumber" name="1836" href="#1836">1836</a>         castedComparison.buf.limit()) != 0) {
-<a class="jxr_linenumber" name="1837" href="#1837">1837</a>       <strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="1838" href="#1838">1838</a>     }
-<a class="jxr_linenumber" name="1839" href="#1839">1839</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="1840" href="#1840">1840</a>   }
-<a class="jxr_linenumber" name="1841" href="#1841">1841</a> 
-<a class="jxr_linenumber" name="1842" href="#1842">1842</a>   <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/hadoop/hbase/io/encoding/DataBlockEncoding.html">DataBlockEncoding</a> getDataBlockEncoding() {
-<a class="jxr_linenumber" name="1843" href="#1843">1843</a>     <strong class="jxr_keyword">if</strong> (blockType == BlockType.ENCODED_DATA) {
-<a class="jxr_linenumber" name="1844" href="#1844">1844</a>       <strong class="jxr_keyword">return</strong> DataBlockEncoding.getEncodingById(getDataBlockEncodingId());
-<a class="jxr_linenumber" name="1845" href="#1845">1845</a>     }
-<a class="jxr_linenumber" name="1846" href="#1846">1846</a>     <strong class="jxr_keyword">return</strong> DataBlockEncoding.NONE;
-<a class="jxr_linenumber" name="1847" href="#1847">1847</a>   }
-<a class="jxr_linenumber" name="1848" href="#1848">1848</a> 
-<a class="jxr_linenumber" name="1849" href="#1849">1849</a>   byte getChecksumType() {
-<a class="jxr_linenumber" name="1850" href="#1850">1850</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.fileContext.getChecksumType().getCode();
-<a class="jxr_linenumber" name="1851" href="#1851">1851</a>   }
-<a class="jxr_linenumber" name="1852" href="#1852">1852</a> 
-<a class="jxr_linenumber" name="1853" href="#1853">1853</a>   <strong class="jxr_keyword">int</strong> getBytesPerChecksum() {
-<a class="jxr_linenumber" name="1854" href="#1854">1854</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.fileContext.getBytesPerChecksum();
-<a class="jxr_linenumber" name="1855" href="#1855">1855</a>   }
-<a class="jxr_linenumber" name="1856" href="#1856">1856</a> 
-<a class="jxr_linenumber" name="1857" href="#1857">1857</a>   <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> @return the size of data on disk + header. Excludes checksum. */</em>
-<a class="jxr_linenumber" name="1858" href="#1858">1858</a>   <strong class="jxr_keyword">int</strong> getOnDiskDataSizeWithHeader() {
-<a class="jxr_linenumber" name="1859" href="#1859">1859</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.onDiskDataSizeWithHeader;
-<a class="jxr_linenumber" name="1860" href="#1860">1860</a>   }
-<a class="jxr_linenumber" name="1861" href="#1861">1861</a> 
-<a class="jxr_linenumber" name="1862" href="#1862">1862</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="1863" href="#1863">1863</a> <em class="jxr_javadoccomment">   * Calcuate the number of bytes required to store all the checksums</em>
-<a class="jxr_linenumber" name="1864" href="#1864">1864</a> <em class="jxr_javadoccomment">   * for this block. Each checksum value is a 4 byte integer.</em>
-<a class="jxr_linenumber" name="1865" href="#1865">1865</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="1866" href="#1866">1866</a>   <strong class="jxr_keyword">int</strong> totalChecksumBytes() {
-<a class="jxr_linenumber" name="1867" href="#1867">1867</a>     <em class="jxr_comment">// If the hfile block has minorVersion 0, then there are no checksum</em>
-<a class="jxr_linenumber" name="1868" href="#1868">1868</a>     <em class="jxr_comment">// data to validate. Similarly, a zero value in this.bytesPerChecksum</em>
-<a class="jxr_linenumber" name="1869" href="#1869">1869</a>     <em class="jxr_comment">// indicates that cached blocks do not have checksum data because</em>
-<a class="jxr_linenumber" name="1870" href="#1870">1870</a>     <em class="jxr_comment">// checksums were already validated when the block was read from disk.</em>
-<a class="jxr_linenumber" name="1871" href="#1871">1871</a>     <strong class="jxr_keyword">if</strong> (!fileContext.isUseHBaseChecksum() || <strong class="jxr_keyword">this</strong>.fileContext.getBytesPerChecksum() == 0) {
-<a class="jxr_linenumber" name="1872" href="#1872">1872</a>       <strong class="jxr_keyword">return</strong> 0;
-<a class="jxr_linenumber" name="1873" href="#1873">1873</a>     }
-<a class="jxr_linenumber" name="1874" href="#1874">1874</a>     <strong class="jxr_keyword">return</strong> (<strong class="jxr_keyword">int</strong>) ChecksumUtil.numBytes(onDiskDataSizeWithHeader,
-<a class="jxr_linenumber" name="1875" href="#1875">1875</a>         <strong class="jxr_keyword">this</strong>.fileContext.getBytesPerChecksum());
-<a class="jxr_linenumber" name="1876" href="#1876">1876</a>   }
-<a class="jxr_linenumber" name="1877" href="#1877">1877</a> 
-<a class="jxr_linenumber" name="1878" href="#1878">1878</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="1879" href="#1879">1879</a> <em class="jxr_javadoccomment">   * Returns the size of this block header.</em>
-<a class="jxr_linenumber" name="1880" href="#1880">1880</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="1881" href="#1881">1881</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> headerSize() {
-<a class="jxr_linenumber" name="1882" href="#1882">1882</a>     <strong class="jxr_keyword">return</strong> headerSize(<strong class="jxr_keyword">this</strong>.fileContext.isUseHBaseChecksum());
-<a class="jxr_linenumber" name="1883" href="#1883">1883</a>   }
-<a class="jxr_linenumber" name="1884" href="#1884">1884</a> 
-<a class="jxr_linenumber" name="1885" href="#1885">1885</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="1886" href="#1886">1886</a> <em class="jxr_javadoccomment">   * Maps a minor version to the size of the header.</em>
-<a class="jxr_linenumber" name="1887" href="#1887">1887</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="1888" href="#1888">1888</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">int</strong> headerSize(<strong class="jxr_keyword">boolean</strong> usesHBaseChecksum) {
-<a class="jxr_linenumber" name="1889" href="#1889">1889</a>     <strong class="jxr_keyword">if</strong> (usesHBaseChecksum) {
-<a class="jxr_linenumber" name="1890" href="#1890">1890</a>       <strong class="jxr_keyword">return</strong> HConstants.HFILEBLOCK_HEADER_SIZE;
-<a class="jxr_linenumber" name="1891" href="#1891">1891</a>     }
-<a class="jxr_linenumber" name="1892" href="#1892">1892</a>     <strong class="jxr_keyword">return</strong> HConstants.HFILEBLOCK_HEADER_SIZE_NO_CHECKSUM;
-<a class="jxr_linenumber" name="1893" href="#1893">1893</a>   }
-<a class="jxr_linenumber" name="1894" href="#1894">1894</a> 
-<a class="jxr_linenumber" name="1895" href="#1895">1895</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="1896" href="#1896">1896</a> <em class="jxr_javadoccomment">   * Return the appropriate DUMMY_HEADER for the minor version</em>
-<a class="jxr_linenumber" name="1897" href="#1897">1897</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="1898" href="#1898">1898</a>   <strong class="jxr_keyword">public</strong> byte[] getDummyHeaderForVersion() {
-<a class="jxr_linenumber" name="1899" href="#1899">1899</a>     <strong class="jxr_keyword">return</strong> getDummyHeaderForVersion(<strong class="jxr_keyword">this</strong>.fileContext.isUseHBaseChecksum());
-<a class="jxr_linenumber" name="1900" href="#1900">1900</a>   }
-<a class="jxr_linenumber" name="1901" href="#1901">1901</a> 
-<a class="jxr_linenumber" name="1902" href="#1902">1902</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="1903" href="#1903">1903</a> <em class="jxr_javadoccomment">   * Return the appropriate DUMMY_HEADER for the minor version</em>
-<a class="jxr_linenumber" name="1904" href="#1904">1904</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="1905" href="#1905">1905</a>   <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">private</strong> byte[] getDummyHeaderForVersion(<strong class="jxr_keyword">boolean</strong> usesHBaseChecksum) {
-<a class="jxr_linenumber" name="1906" href="#1906">1906</a>     <strong class="jxr_keyword">if</strong> (usesHBaseChecksum) {
-<a class="jxr_linenumber" name="1907" href="#1907">1907</a>       <strong class="jxr_keyword">return</strong> HConstants.HFILEBLOCK_DUMMY_HEADER;
-<a class="jxr_linenumber" name="1908" href="#1908">1908</a>     }
-<a class="jxr_linenumber" name="1909" href="#1909">1909</a>     <strong class="jxr_keyword">return</strong> DUMMY_HEADER_NO_CHECKSUM;
-<a class="jxr_linenumber" name="1910" href="#1910">1910</a>   }
-<a class="jxr_linenumber" name="1911" href="#1911">1911</a> 
-<a class="jxr_linenumber" name="1912" href="#1912">1912</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="1913" href="#1913">1913</a> <em class="jxr_javadoccomment">   * @return the HFileContext used to create this HFileBlock. Not necessary the</em>
-<a class="jxr_linenumber" name="1914" href="#1914">1914</a> <em class="jxr_javadoccomment">   * fileContext for the file from which this block's data was originally read.</em>
-<a class="jxr_linenumber" name="1915" href="#1915">1915</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="1916" href="#1916">1916</a>   <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileContext.html">HFileContext</a> getHFileContext() {
-<a class="jxr_linenumber" name="1917" href="#1917">1917</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.fileContext;
-<a class="jxr_linenumber" name="1918" href="#1918">1918</a>   }
-<a class="jxr_linenumber" name="1919" href="#1919">1919</a> 
-<a class="jxr_linenumber" name="1920" href="#1920">1920</a>   @Override
-<a class="jxr_linenumber" name="1921" href="#1921">1921</a>   <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.html">MemoryType</a> getMemoryType() {
-<a class="jxr_linenumber" name="1922" href="#1922">1922</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.memType;
-<a class="jxr_linenumber" name="1923" href="#1923">1923</a>   }
-<a class="jxr_linenumber" name="1924" href="#1924">1924</a> 
-<a class="jxr_linenumber" name="1925" href="#1925">1925</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="1926" href="#1926">1926</a> <em class="jxr_javadoccomment">   * @return true if this block is backed by a shared memory area(such as that of a BucketCache).</em>
-<a class="jxr_linenumber" name="1927" href="#1927">1927</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="1928" href="#1928">1928</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> usesSharedMemory() {
-<a class="jxr_linenumber" name="1929" href="#1929">1929</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>.memType == MemoryType.SHARED;
-<a class="jxr_linenumber" name="1930" href="#1930">1930</a>   }
-<a class="jxr_linenumber" name="1931" href="#1931">1931</a> 
-<a class="jxr_linenumber" name="1932" href="#1932">1932</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="1933" href="#1933">1933</a> <em class="jxr_javadoccomment">   * Convert the contents of the block header into a human readable string.</em>
-<a class="jxr_linenumber" name="1934" href="#1934">1934</a> <em class="jxr_javadoccomment">   * This is mostly helpful for debugging. This assumes that the block</em>
-<a class="jxr_linenumber" name="1935" href="#1935">1935</a> <em class="jxr_javadoccomment">   * has minor version &gt; 0.</em>
-<a class="jxr_linenumber" name="1936" href="#1936">1936</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="1937" href="#1937">1937</a>   <strong class="jxr_keyword">static</strong> String toStringHeader(<a href="../../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html">ByteBuff</a> buf) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="1938" href="#1938">1938</a>     byte[] magicBuf = <strong class="jxr_keyword">new</strong> byte[Math.min(buf.limit() - buf.position(), BlockType.MAGIC_LENGTH)];
-<a class="jxr_linenumber" name="1939" href="#1939">1939</a>     buf.get(magicBuf);
-<a class="jxr_linenumber" name="1940" href="#1940">1940</a>     <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html">BlockType</a> bt = BlockType.parse(magicBuf, 0, BlockType.MAGIC_LENGTH);
-<a class="jxr_linenumber" name="1941" href="#1941">1941</a>     <strong class="jxr_keyword">int</strong> compressedBlockSizeNoHeader = buf.getInt();
-<a class="jxr_linenumber" name="1942" href="#1942">1942</a>     <strong class="jxr_keyword">int</strong> uncompressedBlockSizeNoHeader = buf.getInt();
-<a class="jxr_linenumber" name="1943" href="#1943">1943</a>     <strong class="jxr_keyword">long</strong> prevBlockOffset = buf.getLong();
-<a class="jxr_linenumber" name="1944" href="#1944">1944</a>     byte cksumtype = buf.get();
-<a class="jxr_linenumber" name="1945" href="#1945">1945</a>     <strong class="jxr_keyword">long</strong> bytesPerChecksum = buf.getInt();
-<a class="jxr_linenumber" name="1946" href="#1946">1946</a>     <strong class="jxr_keyword">long</strong> onDiskDataSizeWithHeader = buf.getInt();
-<a class="jxr_linenumber" name="1947" href="#1947">1947</a>     <strong class="jxr_keyword">return</strong> <span class="jxr_string">" Header dump: magic: "</span> + Bytes.toString(magicBuf) +
-<a class="jxr_linenumber" name="1948" href="#1948">1948</a>                    <span class="jxr_string">" blockType "</span> + bt +
-<a class="jxr_linenumber" name="1949" href="#1949">1949</a>                    <span class="jxr_string">" compressedBlockSizeNoHeader "</span> +
-<a class="jxr_linenumber" name="1950" href="#1950">1950</a>                    compressedBlockSizeNoHeader +
-<a class="jxr_linenumber" name="1951" href="#1951">1951</a>                    <span class="jxr_string">" uncompressedBlockSizeNoHeader "</span> +
-<a class="jxr_linenumber" name="1952" href="#1952">1952</a>                    uncompressedBlockSizeNoHeader +
-<a class="jxr_linenumber" name="1953" href="#1953">1953</a>                    <span class="jxr_string">" prevBlockOffset "</span> + prevBlockOffset +
-<a class="jxr_linenumber" name="1954" href="#1954">1954</a>                    <span class="jxr_string">" checksumType "</span> + ChecksumType.codeToType(cksumtype) +
-<a class="jxr_linenumber" name="1955" href="#1955">1955</a>                    <span class="jxr_string">" bytesPerChecksum "</span> + bytesPerChecksum +
-<a class="jxr_linenumber" name="1956" href="#1956">1956</a>                    <span class="jxr_string">" onDiskDataSizeWithHeader "</span> + onDiskDataSizeWithHeader;
-<a class="jxr_linenumber" name="1957" href="#1957">1957</a>   }
-<a class="jxr_linenumber" name="1958" href="#1958">1958</a> }
+<a class="jxr_linenumber" name="1361" href="#1361">1361</a>     <strong class="jxr_keyword">protected</strong> <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileContext.html">HFileContext</a> fileContext;
+<a class="jxr_linenumber" name="1362" href="#1362">1362</a>     <em class="jxr_comment">// Cache the fileName</em>
+<a class="jxr_linenumber" name="1363" href="#1363">1363</a>     <strong class="jxr_keyword">protected</strong> String pathName;
+<a class="jxr_linenumber" name="1364" href="#1364">1364</a> 
+<a class="jxr_linenumber" name="1365" href="#1365">1365</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html">FSReaderImpl</a>(<a href="../../../../../../org/apache/hadoop/hbase/io/FSDataInputStreamWrapper.html">FSDataInputStreamWrapper</a> stream, <strong class="jxr_keyword">long</strong> fileSize, <a href="../../../../../../org/apache/hadoop/hbase/fs/HFileSystem.html">HFileSystem</a> hfs, Path path,
+<a class="jxr_linenumber" name="1366" href="#1366">1366</a>         <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileContext.html">HFileContext</a> fileContext) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="1367" href="#1367">1367</a>       <strong class="jxr_keyword">this</strong>.fileSize = fileSize;
+<a class="jxr_linenumber" name="1368" href="#1368">1368</a>       <strong class="jxr_keyword">this</strong>.hfs = hfs;
+<a class="jxr_linenumber" name="1369" href="#1369">1369</a>       <strong class="jxr_keyword">if</strong> (path != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="1370" href="#1370">1370</a>         <strong class="jxr_keyword">this</strong>.pathName = path.toString();
+<a class="jxr_linenumber" name="1371" href="#1371">1371</a>       }
+<a class="jxr_linenumber" name="1372" href="#1372">1372</a>       <strong class="jxr_keyword">this</strong>.fileContext = fileContext;
+<a class="jxr_linenumber" name="1373" href="#1373">1373</a>       <strong class="jxr_keyword">this</strong>.hdrSize = headerSize(fileContext.isUseHBaseChecksum());
+<a class="jxr_linenumber" name="1374" href="#1374">1374</a> 
+<a class="jxr_linenumber" name="1375" href="#1375">1375</a>       <strong class="jxr_keyword">this</strong>.streamWrapper = stream;
+<a class="jxr_linenumber" name="1376" href="#1376">1376</a>       <em class="jxr_comment">// Older versions of HBase didn't support checksum.</em>
+<a class="jxr_linenumber" name="1377" href="#1377">1377</a>       <strong class="jxr_keyword">this</strong>.streamWrapper.prepareForBlockReader(!fileContext.isUseHBaseChecksum());
+<a class="jxr_linenumber" name="1378" href="#1378">1378</a>       defaultDecodingCtx = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/hadoop/hbase/io/encoding/HFileBlockDefaultDecodingContext.html">HFileBlockDefaultDecodingContext</a>(fileContext);
+<a class="jxr_linenumber" name="1379" href="#1379">1379</a>       encodedBlockDecodingCtx = defaultDecodingCtx;
+<a class="jxr_linenumber" name="1380" href="#1380">1380</a>     }
+<a class="jxr_linenumber" name="1381" href="#1381">1381</a> 
+<a class="jxr_linenumber" name="1382" href="#1382">1382</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="1383" href="#1383">1383</a> <em class="jxr_javadoccomment">     * A constructor that reads files with the latest minor version.</em>
+<a class="jxr_linenumber" name="1384" href="#1384">1384</a> <em class="jxr_javadoccomment">     * This is used by unit tests only.</em>
+<a class="jxr_linenumber" name="1385" href="#1385">1385</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="1386" href="#1386">1386</a>     <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html">FSReaderImpl</a>(FSDataInputStream istream, <strong class="jxr_keyword">long</strong> fileSize, <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileContext.html">HFileContext</a> fileContext)
+<a class="jxr_linenumber" name="1387" href="#1387">1387</a>     <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="1388" href="#1388">1388</a>       <strong class="jxr_keyword">this</strong>(<strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/hadoop/hbase/io/FSDataInputStreamWrapper.html">FSDataInputStreamWrapper</a>(istream), fileSize, <strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>, fileContext);
+<a class="jxr_linenumber" name="1389" href="#1389">1389</a>     }
+<a class="jxr_linenumber" name="1390" href="#1390">1390</a> 
+<a class="jxr_linenumber" name="1391" href="#1391">1391</a>     <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html">BlockIterator</a> blockRange(<strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> startOffset, <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> endOffset) {
+<a class="jxr_linenumber" name="1392" href="#1392">1392</a>       <strong class="jxr_keyword">final</strong> <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html">FSReader</a> owner = <strong class="jxr_keyword">this</strong>; <em class="jxr_comment">// handle for inner class</em>
+<a class="jxr_linenumber" name="1393" href="#1393">1393</a>       <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html">BlockIterator</a>() {
+<a class="jxr_linenumber" name="1394" href="#1394">1394</a>         <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">long</strong> offset = startOffset;
+<a class="jxr_linenumber" name="1395" href="#1395">1395</a> 
+<a class="jxr_linenu

<TRUNCATED>

[15/23] hbase-site git commit: Published site at 2cf8af5bf1d501156cbb3b421cf75c1051ead7d9.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReader.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReader.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReader.html
index 745e703..1587e5e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReader.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReader.html
@@ -1361,609 +1361,610 @@
 <span class="sourceLineNo">1353</span>    /** The filesystem used to access data */<a name="line.1353"></a>
 <span class="sourceLineNo">1354</span>    protected HFileSystem hfs;<a name="line.1354"></a>
 <span class="sourceLineNo">1355</span><a name="line.1355"></a>
-<span class="sourceLineNo">1356</span>    /** The path (if any) where this data is coming from */<a name="line.1356"></a>
-<span class="sourceLineNo">1357</span>    protected Path path;<a name="line.1357"></a>
-<span class="sourceLineNo">1358</span><a name="line.1358"></a>
-<span class="sourceLineNo">1359</span>    private final Lock streamLock = new ReentrantLock();<a name="line.1359"></a>
+<span class="sourceLineNo">1356</span>    private final Lock streamLock = new ReentrantLock();<a name="line.1356"></a>
+<span class="sourceLineNo">1357</span><a name="line.1357"></a>
+<span class="sourceLineNo">1358</span>    /** The default buffer size for our buffered streams */<a name="line.1358"></a>
+<span class="sourceLineNo">1359</span>    public static final int DEFAULT_BUFFER_SIZE = 1 &lt;&lt; 20;<a name="line.1359"></a>
 <span class="sourceLineNo">1360</span><a name="line.1360"></a>
-<span class="sourceLineNo">1361</span>    /** The default buffer size for our buffered streams */<a name="line.1361"></a>
-<span class="sourceLineNo">1362</span>    public static final int DEFAULT_BUFFER_SIZE = 1 &lt;&lt; 20;<a name="line.1362"></a>
-<span class="sourceLineNo">1363</span><a name="line.1363"></a>
-<span class="sourceLineNo">1364</span>    protected HFileContext fileContext;<a name="line.1364"></a>
-<span class="sourceLineNo">1365</span><a name="line.1365"></a>
-<span class="sourceLineNo">1366</span>    public FSReaderImpl(FSDataInputStreamWrapper stream, long fileSize, HFileSystem hfs, Path path,<a name="line.1366"></a>
-<span class="sourceLineNo">1367</span>        HFileContext fileContext) throws IOException {<a name="line.1367"></a>
-<span class="sourceLineNo">1368</span>      this.fileSize = fileSize;<a name="line.1368"></a>
-<span class="sourceLineNo">1369</span>      this.hfs = hfs;<a name="line.1369"></a>
-<span class="sourceLineNo">1370</span>      this.path = path;<a name="line.1370"></a>
-<span class="sourceLineNo">1371</span>      this.fileContext = fileContext;<a name="line.1371"></a>
-<span class="sourceLineNo">1372</span>      this.hdrSize = headerSize(fileContext.isUseHBaseChecksum());<a name="line.1372"></a>
-<span class="sourceLineNo">1373</span><a name="line.1373"></a>
-<span class="sourceLineNo">1374</span>      this.streamWrapper = stream;<a name="line.1374"></a>
-<span class="sourceLineNo">1375</span>      // Older versions of HBase didn't support checksum.<a name="line.1375"></a>
-<span class="sourceLineNo">1376</span>      this.streamWrapper.prepareForBlockReader(!fileContext.isUseHBaseChecksum());<a name="line.1376"></a>
-<span class="sourceLineNo">1377</span>      defaultDecodingCtx = new HFileBlockDefaultDecodingContext(fileContext);<a name="line.1377"></a>
-<span class="sourceLineNo">1378</span>      encodedBlockDecodingCtx = defaultDecodingCtx;<a name="line.1378"></a>
-<span class="sourceLineNo">1379</span>    }<a name="line.1379"></a>
-<span class="sourceLineNo">1380</span><a name="line.1380"></a>
-<span class="sourceLineNo">1381</span>    /**<a name="line.1381"></a>
-<span class="sourceLineNo">1382</span>     * A constructor that reads files with the latest minor version.<a name="line.1382"></a>
-<span class="sourceLineNo">1383</span>     * This is used by unit tests only.<a name="line.1383"></a>
-<span class="sourceLineNo">1384</span>     */<a name="line.1384"></a>
-<span class="sourceLineNo">1385</span>    FSReaderImpl(FSDataInputStream istream, long fileSize, HFileContext fileContext)<a name="line.1385"></a>
-<span class="sourceLineNo">1386</span>    throws IOException {<a name="line.1386"></a>
-<span class="sourceLineNo">1387</span>      this(new FSDataInputStreamWrapper(istream), fileSize, null, null, fileContext);<a name="line.1387"></a>
-<span class="sourceLineNo">1388</span>    }<a name="line.1388"></a>
-<span class="sourceLineNo">1389</span><a name="line.1389"></a>
-<span class="sourceLineNo">1390</span>    public BlockIterator blockRange(final long startOffset, final long endOffset) {<a name="line.1390"></a>
-<span class="sourceLineNo">1391</span>      final FSReader owner = this; // handle for inner class<a name="line.1391"></a>
-<span class="sourceLineNo">1392</span>      return new BlockIterator() {<a name="line.1392"></a>
-<span class="sourceLineNo">1393</span>        private long offset = startOffset;<a name="line.1393"></a>
-<span class="sourceLineNo">1394</span><a name="line.1394"></a>
-<span class="sourceLineNo">1395</span>        @Override<a name="line.1395"></a>
-<span class="sourceLineNo">1396</span>        public HFileBlock nextBlock() throws IOException {<a name="line.1396"></a>
-<span class="sourceLineNo">1397</span>          if (offset &gt;= endOffset)<a name="line.1397"></a>
-<span class="sourceLineNo">1398</span>            return null;<a name="line.1398"></a>
-<span class="sourceLineNo">1399</span>          HFileBlock b = readBlockData(offset, -1, -1, false);<a name="line.1399"></a>
-<span class="sourceLineNo">1400</span>          offset += b.getOnDiskSizeWithHeader();<a name="line.1400"></a>
-<span class="sourceLineNo">1401</span>          return b.unpack(fileContext, owner);<a name="line.1401"></a>
-<span class="sourceLineNo">1402</span>        }<a name="line.1402"></a>
-<span class="sourceLineNo">1403</span><a name="line.1403"></a>
-<span class="sourceLineNo">1404</span>        @Override<a name="line.1404"></a>
-<span class="sourceLineNo">1405</span>        public HFileBlock nextBlockWithBlockType(BlockType blockType)<a name="line.1405"></a>
-<span class="sourceLineNo">1406</span>            throws IOException {<a name="line.1406"></a>
-<span class="sourceLineNo">1407</span>          HFileBlock blk = nextBlock();<a name="line.1407"></a>
-<span class="sourceLineNo">1408</span>          if (blk.getBlockType() != blockType) {<a name="line.1408"></a>
-<span class="sourceLineNo">1409</span>            throw new IOException("Expected block of type " + blockType<a name="line.1409"></a>
-<span class="sourceLineNo">1410</span>                + " but found " + blk.getBlockType());<a name="line.1410"></a>
-<span class="sourceLineNo">1411</span>          }<a name="line.1411"></a>
-<span class="sourceLineNo">1412</span>          return blk;<a name="line.1412"></a>
-<span class="sourceLineNo">1413</span>        }<a name="line.1413"></a>
-<span class="sourceLineNo">1414</span>      };<a name="line.1414"></a>
-<span class="sourceLineNo">1415</span>    }<a name="line.1415"></a>
-<span class="sourceLineNo">1416</span><a name="line.1416"></a>
-<span class="sourceLineNo">1417</span>    /**<a name="line.1417"></a>
-<span class="sourceLineNo">1418</span>     * Does a positional read or a seek and read into the given buffer. Returns<a name="line.1418"></a>
-<span class="sourceLineNo">1419</span>     * the on-disk size of the next block, or -1 if it could not be determined.<a name="line.1419"></a>
-<span class="sourceLineNo">1420</span>     *<a name="line.1420"></a>
-<span class="sourceLineNo">1421</span>     * @param dest destination buffer<a name="line.1421"></a>
-<span class="sourceLineNo">1422</span>     * @param destOffset offset in the destination buffer<a name="line.1422"></a>
-<span class="sourceLineNo">1423</span>     * @param size size of the block to be read<a name="line.1423"></a>
-<span class="sourceLineNo">1424</span>     * @param peekIntoNextBlock whether to read the next block's on-disk size<a name="line.1424"></a>
-<span class="sourceLineNo">1425</span>     * @param fileOffset position in the stream to read at<a name="line.1425"></a>
-<span class="sourceLineNo">1426</span>     * @param pread whether we should do a positional read<a name="line.1426"></a>
-<span class="sourceLineNo">1427</span>     * @param istream The input source of data<a name="line.1427"></a>
-<span class="sourceLineNo">1428</span>     * @return the on-disk size of the next block with header size included, or<a name="line.1428"></a>
-<span class="sourceLineNo">1429</span>     *         -1 if it could not be determined<a name="line.1429"></a>
-<span class="sourceLineNo">1430</span>     * @throws IOException<a name="line.1430"></a>
-<span class="sourceLineNo">1431</span>     */<a name="line.1431"></a>
-<span class="sourceLineNo">1432</span>    protected int readAtOffset(FSDataInputStream istream,<a name="line.1432"></a>
-<span class="sourceLineNo">1433</span>        byte[] dest, int destOffset, int size,<a name="line.1433"></a>
-<span class="sourceLineNo">1434</span>        boolean peekIntoNextBlock, long fileOffset, boolean pread)<a name="line.1434"></a>
-<span class="sourceLineNo">1435</span>        throws IOException {<a name="line.1435"></a>
-<span class="sourceLineNo">1436</span>      if (peekIntoNextBlock &amp;&amp;<a name="line.1436"></a>
-<span class="sourceLineNo">1437</span>          destOffset + size + hdrSize &gt; dest.length) {<a name="line.1437"></a>
-<span class="sourceLineNo">1438</span>        // We are asked to read the next block's header as well, but there is<a name="line.1438"></a>
-<span class="sourceLineNo">1439</span>        // not enough room in the array.<a name="line.1439"></a>
-<span class="sourceLineNo">1440</span>        throw new IOException("Attempted to read " + size + " bytes and " +<a name="line.1440"></a>
-<span class="sourceLineNo">1441</span>            hdrSize + " bytes of next header into a " + dest.length +<a name="line.1441"></a>
-<span class="sourceLineNo">1442</span>            "-byte array at offset " + destOffset);<a name="line.1442"></a>
-<span class="sourceLineNo">1443</span>      }<a name="line.1443"></a>
-<span class="sourceLineNo">1444</span><a name="line.1444"></a>
-<span class="sourceLineNo">1445</span>      if (!pread &amp;&amp; streamLock.tryLock()) {<a name="line.1445"></a>
-<span class="sourceLineNo">1446</span>        // Seek + read. Better for scanning.<a name="line.1446"></a>
-<span class="sourceLineNo">1447</span>        try {<a name="line.1447"></a>
-<span class="sourceLineNo">1448</span>          istream.seek(fileOffset);<a name="line.1448"></a>
-<span class="sourceLineNo">1449</span><a name="line.1449"></a>
-<span class="sourceLineNo">1450</span>          long realOffset = istream.getPos();<a name="line.1450"></a>
-<span class="sourceLineNo">1451</span>          if (realOffset != fileOffset) {<a name="line.1451"></a>
-<span class="sourceLineNo">1452</span>            throw new IOException("Tried to seek to " + fileOffset + " to "<a name="line.1452"></a>
-<span class="sourceLineNo">1453</span>                + "read " + size + " bytes, but pos=" + realOffset<a name="line.1453"></a>
-<span class="sourceLineNo">1454</span>                + " after seek");<a name="line.1454"></a>
-<span class="sourceLineNo">1455</span>          }<a name="line.1455"></a>
-<span class="sourceLineNo">1456</span><a name="line.1456"></a>
-<span class="sourceLineNo">1457</span>          if (!peekIntoNextBlock) {<a name="line.1457"></a>
-<span class="sourceLineNo">1458</span>            IOUtils.readFully(istream, dest, destOffset, size);<a name="line.1458"></a>
-<span class="sourceLineNo">1459</span>            return -1;<a name="line.1459"></a>
-<span class="sourceLineNo">1460</span>          }<a name="line.1460"></a>
-<span class="sourceLineNo">1461</span><a name="line.1461"></a>
-<span class="sourceLineNo">1462</span>          // Try to read the next block header.<a name="line.1462"></a>
-<span class="sourceLineNo">1463</span>          if (!readWithExtra(istream, dest, destOffset, size, hdrSize))<a name="line.1463"></a>
-<span class="sourceLineNo">1464</span>            return -1;<a name="line.1464"></a>
-<span class="sourceLineNo">1465</span>        } finally {<a name="line.1465"></a>
-<span class="sourceLineNo">1466</span>          streamLock.unlock();<a name="line.1466"></a>
-<span class="sourceLineNo">1467</span>        }<a name="line.1467"></a>
-<span class="sourceLineNo">1468</span>      } else {<a name="line.1468"></a>
-<span class="sourceLineNo">1469</span>        // Positional read. Better for random reads; or when the streamLock is already locked.<a name="line.1469"></a>
-<span class="sourceLineNo">1470</span>        int extraSize = peekIntoNextBlock ? hdrSize : 0;<a name="line.1470"></a>
-<span class="sourceLineNo">1471</span>        if (!positionalReadWithExtra(istream, fileOffset, dest, destOffset,<a name="line.1471"></a>
-<span class="sourceLineNo">1472</span>            size, extraSize)) {<a name="line.1472"></a>
-<span class="sourceLineNo">1473</span>          return -1;<a name="line.1473"></a>
-<span class="sourceLineNo">1474</span>        }<a name="line.1474"></a>
-<span class="sourceLineNo">1475</span>      }<a name="line.1475"></a>
-<span class="sourceLineNo">1476</span><a name="line.1476"></a>
-<span class="sourceLineNo">1477</span>      assert peekIntoNextBlock;<a name="line.1477"></a>
-<span class="sourceLineNo">1478</span>      return Bytes.toInt(dest, destOffset + size + BlockType.MAGIC_LENGTH) + hdrSize;<a name="line.1478"></a>
-<span class="sourceLineNo">1479</span>    }<a name="line.1479"></a>
-<span class="sourceLineNo">1480</span><a name="line.1480"></a>
-<span class="sourceLineNo">1481</span>    /**<a name="line.1481"></a>
-<span class="sourceLineNo">1482</span>     * Reads a version 2 block (version 1 blocks not supported and not expected). Tries to do as<a name="line.1482"></a>
-<span class="sourceLineNo">1483</span>     * little memory allocation as possible, using the provided on-disk size.<a name="line.1483"></a>
-<span class="sourceLineNo">1484</span>     *<a name="line.1484"></a>
-<span class="sourceLineNo">1485</span>     * @param offset the offset in the stream to read at<a name="line.1485"></a>
-<span class="sourceLineNo">1486</span>     * @param onDiskSizeWithHeaderL the on-disk size of the block, including<a name="line.1486"></a>
-<span class="sourceLineNo">1487</span>     *          the header, or -1 if unknown<a name="line.1487"></a>
-<span class="sourceLineNo">1488</span>     * @param uncompressedSize the uncompressed size of the the block. Always<a name="line.1488"></a>
-<span class="sourceLineNo">1489</span>     *          expected to be -1. This parameter is only used in version 1.<a name="line.1489"></a>
-<span class="sourceLineNo">1490</span>     * @param pread whether to use a positional read<a name="line.1490"></a>
-<span class="sourceLineNo">1491</span>     */<a name="line.1491"></a>
-<span class="sourceLineNo">1492</span>    @Override<a name="line.1492"></a>
-<span class="sourceLineNo">1493</span>    public HFileBlock readBlockData(long offset, long onDiskSizeWithHeaderL,<a name="line.1493"></a>
-<span class="sourceLineNo">1494</span>        int uncompressedSize, boolean pread)<a name="line.1494"></a>
-<span class="sourceLineNo">1495</span>    throws IOException {<a name="line.1495"></a>
-<span class="sourceLineNo">1496</span><a name="line.1496"></a>
-<span class="sourceLineNo">1497</span>      // get a copy of the current state of whether to validate<a name="line.1497"></a>
-<span class="sourceLineNo">1498</span>      // hbase checksums or not for this read call. This is not<a name="line.1498"></a>
-<span class="sourceLineNo">1499</span>      // thread-safe but the one constaint is that if we decide<a name="line.1499"></a>
-<span class="sourceLineNo">1500</span>      // to skip hbase checksum verification then we are<a name="line.1500"></a>
-<span class="sourceLineNo">1501</span>      // guaranteed to use hdfs checksum verification.<a name="line.1501"></a>
-<span class="sourceLineNo">1502</span>      boolean doVerificationThruHBaseChecksum = streamWrapper.shouldUseHBaseChecksum();<a name="line.1502"></a>
-<span class="sourceLineNo">1503</span>      FSDataInputStream is = streamWrapper.getStream(doVerificationThruHBaseChecksum);<a name="line.1503"></a>
-<span class="sourceLineNo">1504</span><a name="line.1504"></a>
-<span class="sourceLineNo">1505</span>      HFileBlock blk = readBlockDataInternal(is, offset,<a name="line.1505"></a>
-<span class="sourceLineNo">1506</span>                         onDiskSizeWithHeaderL,<a name="line.1506"></a>
-<span class="sourceLineNo">1507</span>                         uncompressedSize, pread,<a name="line.1507"></a>
-<span class="sourceLineNo">1508</span>                         doVerificationThruHBaseChecksum);<a name="line.1508"></a>
-<span class="sourceLineNo">1509</span>      if (blk == null) {<a name="line.1509"></a>
-<span class="sourceLineNo">1510</span>        HFile.LOG.warn("HBase checksum verification failed for file " +<a name="line.1510"></a>
-<span class="sourceLineNo">1511</span>                       path + " at offset " +<a name="line.1511"></a>
-<span class="sourceLineNo">1512</span>                       offset + " filesize " + fileSize +<a name="line.1512"></a>
-<span class="sourceLineNo">1513</span>                       ". Retrying read with HDFS checksums turned on...");<a name="line.1513"></a>
-<span class="sourceLineNo">1514</span><a name="line.1514"></a>
-<span class="sourceLineNo">1515</span>        if (!doVerificationThruHBaseChecksum) {<a name="line.1515"></a>
-<span class="sourceLineNo">1516</span>          String msg = "HBase checksum verification failed for file " +<a name="line.1516"></a>
-<span class="sourceLineNo">1517</span>                       path + " at offset " +<a name="line.1517"></a>
-<span class="sourceLineNo">1518</span>                       offset + " filesize " + fileSize +<a name="line.1518"></a>
-<span class="sourceLineNo">1519</span>                       " but this cannot happen because doVerify is " +<a name="line.1519"></a>
-<span class="sourceLineNo">1520</span>                       doVerificationThruHBaseChecksum;<a name="line.1520"></a>
-<span class="sourceLineNo">1521</span>          HFile.LOG.warn(msg);<a name="line.1521"></a>
-<span class="sourceLineNo">1522</span>          throw new IOException(msg); // cannot happen case here<a name="line.1522"></a>
-<span class="sourceLineNo">1523</span>        }<a name="line.1523"></a>
-<span class="sourceLineNo">1524</span>        HFile.checksumFailures.incrementAndGet(); // update metrics<a name="line.1524"></a>
-<span class="sourceLineNo">1525</span><a name="line.1525"></a>
-<span class="sourceLineNo">1526</span>        // If we have a checksum failure, we fall back into a mode where<a name="line.1526"></a>
-<span class="sourceLineNo">1527</span>        // the next few reads use HDFS level checksums. We aim to make the<a name="line.1527"></a>
-<span class="sourceLineNo">1528</span>        // next CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD reads avoid<a name="line.1528"></a>
-<span class="sourceLineNo">1529</span>        // hbase checksum verification, but since this value is set without<a name="line.1529"></a>
-<span class="sourceLineNo">1530</span>        // holding any locks, it can so happen that we might actually do<a name="line.1530"></a>
-<span class="sourceLineNo">1531</span>        // a few more than precisely this number.<a name="line.1531"></a>
-<span class="sourceLineNo">1532</span>        is = this.streamWrapper.fallbackToFsChecksum(CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD);<a name="line.1532"></a>
-<span class="sourceLineNo">1533</span>        doVerificationThruHBaseChecksum = false;<a name="line.1533"></a>
-<span class="sourceLineNo">1534</span>        blk = readBlockDataInternal(is, offset, onDiskSizeWithHeaderL,<a name="line.1534"></a>
-<span class="sourceLineNo">1535</span>                                    uncompressedSize, pread,<a name="line.1535"></a>
-<span class="sourceLineNo">1536</span>                                    doVerificationThruHBaseChecksum);<a name="line.1536"></a>
-<span class="sourceLineNo">1537</span>        if (blk != null) {<a name="line.1537"></a>
-<span class="sourceLineNo">1538</span>          HFile.LOG.warn("HDFS checksum verification suceeded for file " +<a name="line.1538"></a>
-<span class="sourceLineNo">1539</span>                         path + " at offset " +<a name="line.1539"></a>
-<span class="sourceLineNo">1540</span>                         offset + " filesize " + fileSize);<a name="line.1540"></a>
-<span class="sourceLineNo">1541</span>        }<a name="line.1541"></a>
-<span class="sourceLineNo">1542</span>      }<a name="line.1542"></a>
-<span class="sourceLineNo">1543</span>      if (blk == null &amp;&amp; !doVerificationThruHBaseChecksum) {<a name="line.1543"></a>
-<span class="sourceLineNo">1544</span>        String msg = "readBlockData failed, possibly due to " +<a name="line.1544"></a>
-<span class="sourceLineNo">1545</span>                     "checksum verification failed for file " + path +<a name="line.1545"></a>
-<span class="sourceLineNo">1546</span>                     " at offset " + offset + " filesize " + fileSize;<a name="line.1546"></a>
-<span class="sourceLineNo">1547</span>        HFile.LOG.warn(msg);<a name="line.1547"></a>
-<span class="sourceLineNo">1548</span>        throw new IOException(msg);<a name="line.1548"></a>
-<span class="sourceLineNo">1549</span>      }<a name="line.1549"></a>
-<span class="sourceLineNo">1550</span><a name="line.1550"></a>
-<span class="sourceLineNo">1551</span>      // If there is a checksum mismatch earlier, then retry with<a name="line.1551"></a>
-<span class="sourceLineNo">1552</span>      // HBase checksums switched off and use HDFS checksum verification.<a name="line.1552"></a>
-<span class="sourceLineNo">1553</span>      // This triggers HDFS to detect and fix corrupt replicas. The<a name="line.1553"></a>
-<span class="sourceLineNo">1554</span>      // next checksumOffCount read requests will use HDFS checksums.<a name="line.1554"></a>
-<span class="sourceLineNo">1555</span>      // The decrementing of this.checksumOffCount is not thread-safe,<a name="line.1555"></a>
-<span class="sourceLineNo">1556</span>      // but it is harmless because eventually checksumOffCount will be<a name="line.1556"></a>
-<span class="sourceLineNo">1557</span>      // a negative number.<a name="line.1557"></a>
-<span class="sourceLineNo">1558</span>      streamWrapper.checksumOk();<a name="line.1558"></a>
-<span class="sourceLineNo">1559</span>      return blk;<a name="line.1559"></a>
-<span class="sourceLineNo">1560</span>    }<a name="line.1560"></a>
-<span class="sourceLineNo">1561</span><a name="line.1561"></a>
-<span class="sourceLineNo">1562</span>    /**<a name="line.1562"></a>
-<span class="sourceLineNo">1563</span>     * Reads a version 2 block.<a name="line.1563"></a>
-<span class="sourceLineNo">1564</span>     *<a name="line.1564"></a>
-<span class="sourceLineNo">1565</span>     * @param offset the offset in the stream to read at<a name="line.1565"></a>
-<span class="sourceLineNo">1566</span>     * @param onDiskSizeWithHeaderL the on-disk size of the block, including<a name="line.1566"></a>
-<span class="sourceLineNo">1567</span>     *          the header, or -1 if unknown<a name="line.1567"></a>
-<span class="sourceLineNo">1568</span>     * @param uncompressedSize the uncompressed size of the the block. Always<a name="line.1568"></a>
-<span class="sourceLineNo">1569</span>     *          expected to be -1. This parameter is only used in version 1.<a name="line.1569"></a>
-<span class="sourceLineNo">1570</span>     * @param pread whether to use a positional read<a name="line.1570"></a>
-<span class="sourceLineNo">1571</span>     * @param verifyChecksum Whether to use HBase checksums.<a name="line.1571"></a>
-<span class="sourceLineNo">1572</span>     *        If HBase checksum is switched off, then use HDFS checksum.<a name="line.1572"></a>
-<span class="sourceLineNo">1573</span>     * @return the HFileBlock or null if there is a HBase checksum mismatch<a name="line.1573"></a>
-<span class="sourceLineNo">1574</span>     */<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span>    private HFileBlock readBlockDataInternal(FSDataInputStream is, long offset,<a name="line.1575"></a>
-<span class="sourceLineNo">1576</span>        long onDiskSizeWithHeaderL, int uncompressedSize, boolean pread,<a name="line.1576"></a>
-<span class="sourceLineNo">1577</span>        boolean verifyChecksum)<a name="line.1577"></a>
-<span class="sourceLineNo">1578</span>    throws IOException {<a name="line.1578"></a>
-<span class="sourceLineNo">1579</span>      if (offset &lt; 0) {<a name="line.1579"></a>
-<span class="sourceLineNo">1580</span>        throw new IOException("Invalid offset=" + offset + " trying to read "<a name="line.1580"></a>
-<span class="sourceLineNo">1581</span>            + "block (onDiskSize=" + onDiskSizeWithHeaderL<a name="line.1581"></a>
-<span class="sourceLineNo">1582</span>            + ", uncompressedSize=" + uncompressedSize + ")");<a name="line.1582"></a>
-<span class="sourceLineNo">1583</span>      }<a name="line.1583"></a>
-<span class="sourceLineNo">1584</span><a name="line.1584"></a>
-<span class="sourceLineNo">1585</span>      if (uncompressedSize != -1) {<a name="line.1585"></a>
-<span class="sourceLineNo">1586</span>        throw new IOException("Version 2 block reader API does not need " +<a name="line.1586"></a>
-<span class="sourceLineNo">1587</span>            "the uncompressed size parameter");<a name="line.1587"></a>
-<span class="sourceLineNo">1588</span>      }<a name="line.1588"></a>
-<span class="sourceLineNo">1589</span><a name="line.1589"></a>
-<span class="sourceLineNo">1590</span>      if ((onDiskSizeWithHeaderL &lt; hdrSize &amp;&amp; onDiskSizeWithHeaderL != -1)<a name="line.1590"></a>
-<span class="sourceLineNo">1591</span>          || onDiskSizeWithHeaderL &gt;= Integer.MAX_VALUE) {<a name="line.1591"></a>
-<span class="sourceLineNo">1592</span>        throw new IOException("Invalid onDisksize=" + onDiskSizeWithHeaderL<a name="line.1592"></a>
-<span class="sourceLineNo">1593</span>            + ": expected to be at least " + hdrSize<a name="line.1593"></a>
-<span class="sourceLineNo">1594</span>            + " and at most " + Integer.MAX_VALUE + ", or -1 (offset="<a name="line.1594"></a>
-<span class="sourceLineNo">1595</span>            + offset + ", uncompressedSize=" + uncompressedSize + ")");<a name="line.1595"></a>
-<span class="sourceLineNo">1596</span>      }<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span><a name="line.1597"></a>
-<span class="sourceLineNo">1598</span>      int onDiskSizeWithHeader = (int) onDiskSizeWithHeaderL;<a name="line.1598"></a>
-<span class="sourceLineNo">1599</span>      // See if we can avoid reading the header. This is desirable, because<a name="line.1599"></a>
-<span class="sourceLineNo">1600</span>      // we will not incur a backward seek operation if we have already<a name="line.1600"></a>
-<span class="sourceLineNo">1601</span>      // read this block's header as part of the previous read's look-ahead.<a name="line.1601"></a>
-<span class="sourceLineNo">1602</span>      // And we also want to skip reading the header again if it has already<a name="line.1602"></a>
-<span class="sourceLineNo">1603</span>      // been read.<a name="line.1603"></a>
-<span class="sourceLineNo">1604</span>      // TODO: How often does this optimization fire? Has to be same thread so the thread local<a name="line.1604"></a>
-<span class="sourceLineNo">1605</span>      // is pertinent and we have to be reading next block as in a big scan.<a name="line.1605"></a>
-<span class="sourceLineNo">1606</span>      PrefetchedHeader prefetchedHeader = prefetchedHeaderForThread.get();<a name="line.1606"></a>
-<span class="sourceLineNo">1607</span>      ByteBuffer headerBuf = prefetchedHeader.offset == offset? prefetchedHeader.buf: null;<a name="line.1607"></a>
-<span class="sourceLineNo">1608</span><a name="line.1608"></a>
-<span class="sourceLineNo">1609</span>      // Allocate enough space to fit the next block's header too.<a name="line.1609"></a>
-<span class="sourceLineNo">1610</span>      int nextBlockOnDiskSize = 0;<a name="line.1610"></a>
-<span class="sourceLineNo">1611</span>      byte[] onDiskBlock = null;<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span><a name="line.1612"></a>
-<span class="sourceLineNo">1613</span>      HFileBlock b = null;<a name="line.1613"></a>
-<span class="sourceLineNo">1614</span>      if (onDiskSizeWithHeader &gt; 0) {<a name="line.1614"></a>
-<span class="sourceLineNo">1615</span>        // We know the total on-disk size. Read the entire block into memory,<a name="line.1615"></a>
-<span class="sourceLineNo">1616</span>        // then parse the header. This code path is used when<a name="line.1616"></a>
-<span class="sourceLineNo">1617</span>        // doing a random read operation relying on the block index, as well as<a name="line.1617"></a>
-<span class="sourceLineNo">1618</span>        // when the client knows the on-disk size from peeking into the next<a name="line.1618"></a>
-<span class="sourceLineNo">1619</span>        // block's header (e.g. this block's header) when reading the previous<a name="line.1619"></a>
-<span class="sourceLineNo">1620</span>        // block. This is the faster and more preferable case.<a name="line.1620"></a>
-<span class="sourceLineNo">1621</span><a name="line.1621"></a>
-<span class="sourceLineNo">1622</span>        // Size that we have to skip in case we have already read the header.<a name="line.1622"></a>
-<span class="sourceLineNo">1623</span>        int preReadHeaderSize = headerBuf == null ? 0 : hdrSize;<a name="line.1623"></a>
-<span class="sourceLineNo">1624</span>        onDiskBlock = new byte[onDiskSizeWithHeader + hdrSize]; // room for this block plus the<a name="line.1624"></a>
-<span class="sourceLineNo">1625</span>                                                                // next block's header<a name="line.1625"></a>
-<span class="sourceLineNo">1626</span>        nextBlockOnDiskSize = readAtOffset(is, onDiskBlock,<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span>            preReadHeaderSize, onDiskSizeWithHeader - preReadHeaderSize,<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span>            true, offset + preReadHeaderSize, pread);<a name="line.1628"></a>
-<span class="sourceLineNo">1629</span>        if (headerBuf != null) {<a name="line.1629"></a>
-<span class="sourceLineNo">1630</span>          // the header has been read when reading the previous block, copy<a name="line.1630"></a>
-<span class="sourceLineNo">1631</span>          // to this block's header<a name="line.1631"></a>
-<span class="sourceLineNo">1632</span>          // headerBuf is HBB<a name="line.1632"></a>
-<span class="sourceLineNo">1633</span>          assert headerBuf.hasArray();<a name="line.1633"></a>
-<span class="sourceLineNo">1634</span>          System.arraycopy(headerBuf.array(),<a name="line.1634"></a>
-<span class="sourceLineNo">1635</span>              headerBuf.arrayOffset(), onDiskBlock, 0, hdrSize);<a name="line.1635"></a>
-<span class="sourceLineNo">1636</span>        } else {<a name="line.1636"></a>
-<span class="sourceLineNo">1637</span>          headerBuf = ByteBuffer.wrap(onDiskBlock, 0, hdrSize);<a name="line.1637"></a>
-<span class="sourceLineNo">1638</span>        }<a name="line.1638"></a>
-<span class="sourceLineNo">1639</span>        // We know the total on-disk size but not the uncompressed size. Parse the header.<a name="line.1639"></a>
-<span class="sourceLineNo">1640</span>        try {<a name="line.1640"></a>
-<span class="sourceLineNo">1641</span>          // TODO: FIX!!! Expensive parse just to get a length<a name="line.1641"></a>
-<span class="sourceLineNo">1642</span>          b = new HFileBlock(headerBuf, fileContext.isUseHBaseChecksum());<a name="line.1642"></a>
-<span class="sourceLineNo">1643</span>        } catch (IOException ex) {<a name="line.1643"></a>
-<span class="sourceLineNo">1644</span>          // Seen in load testing. Provide comprehensive debug info.<a name="line.1644"></a>
-<span class="sourceLineNo">1645</span>          throw new IOException("Failed to read compressed block at "<a name="line.1645"></a>
-<span class="sourceLineNo">1646</span>              + offset<a name="line.1646"></a>
-<span class="sourceLineNo">1647</span>              + ", onDiskSizeWithoutHeader="<a name="line.1647"></a>
-<span class="sourceLineNo">1648</span>              + onDiskSizeWithHeader<a name="line.1648"></a>
-<span class="sourceLineNo">1649</span>              + ", preReadHeaderSize="<a name="line.1649"></a>
-<span class="sourceLineNo">1650</span>              + hdrSize<a name="line.1650"></a>
-<span class="sourceLineNo">1651</span>              + ", header.length="<a name="line.1651"></a>
-<span class="sourceLineNo">1652</span>              + prefetchedHeader.header.length<a name="line.1652"></a>
-<span class="sourceLineNo">1653</span>              + ", header bytes: "<a name="line.1653"></a>
-<span class="sourceLineNo">1654</span>              + Bytes.toStringBinary(prefetchedHeader.header, 0,<a name="line.1654"></a>
-<span class="sourceLineNo">1655</span>                  hdrSize), ex);<a name="line.1655"></a>
-<span class="sourceLineNo">1656</span>        }<a name="line.1656"></a>
-<span class="sourceLineNo">1657</span>        // if the caller specifies a onDiskSizeWithHeader, validate it.<a name="line.1657"></a>
-<span class="sourceLineNo">1658</span>        int onDiskSizeWithoutHeader = onDiskSizeWithHeader - hdrSize;<a name="line.1658"></a>
-<span class="sourceLineNo">1659</span>        assert onDiskSizeWithoutHeader &gt;= 0;<a name="line.1659"></a>
-<span class="sourceLineNo">1660</span>        b.validateOnDiskSizeWithoutHeader(onDiskSizeWithoutHeader);<a name="line.1660"></a>
-<span class="sourceLineNo">1661</span>      } else {<a name="line.1661"></a>
-<span class="sourceLineNo">1662</span>        // Check headerBuf to see if we have read this block's header as part of<a name="line.1662"></a>
-<span class="sourceLineNo">1663</span>        // reading the previous block. This is an optimization of peeking into<a name="line.1663"></a>
-<span class="sourceLineNo">1664</span>        // the next block's header (e.g.this block's header) when reading the<a name="line.1664"></a>
-<span class="sourceLineNo">1665</span>        // previous block. This is the faster and more preferable case. If the<a name="line.1665"></a>
-<span class="sourceLineNo">1666</span>        // header is already there, don't read the header again.<a name="line.1666"></a>
-<span class="sourceLineNo">1667</span><a name="line.1667"></a>
-<span class="sourceLineNo">1668</span>        // Unfortunately, we still have to do a separate read operation to<a name="line.1668"></a>
-<span class="sourceLineNo">1669</span>        // read the header.<a name="line.1669"></a>
-<span class="sourceLineNo">1670</span>        if (headerBuf == null) {<a name="line.1670"></a>
-<span class="sourceLineNo">1671</span>          // From the header, determine the on-disk size of the given hfile<a name="line.1671"></a>
-<span class="sourceLineNo">1672</span>          // block, and read the remaining data, thereby incurring two read<a name="line.1672"></a>
-<span class="sourceLineNo">1673</span>          // operations. This might happen when we are doing the first read<a name="line.1673"></a>
-<span class="sourceLineNo">1674</span>          // in a series of reads or a random read, and we don't have access<a name="line.1674"></a>
-<span class="sourceLineNo">1675</span>          // to the block index. This is costly and should happen very rarely.<a name="line.1675"></a>
-<span class="sourceLineNo">1676</span>          headerBuf = ByteBuffer.allocate(hdrSize);<a name="line.1676"></a>
-<span class="sourceLineNo">1677</span>          // headerBuf is HBB<a name="line.1677"></a>
-<span class="sourceLineNo">1678</span>          readAtOffset(is, headerBuf.array(), headerBuf.arrayOffset(),<a name="line.1678"></a>
-<span class="sourceLineNo">1679</span>              hdrSize, false, offset, pread);<a name="line.1679"></a>
-<span class="sourceLineNo">1680</span>        }<a name="line.1680"></a>
-<span class="sourceLineNo">1681</span>        // TODO: FIX!!! Expensive parse just to get a length<a name="line.1681"></a>
-<span class="sourceLineNo">1682</span>        b = new HFileBlock(headerBuf, fileContext.isUseHBaseChecksum());<a name="line.1682"></a>
-<span class="sourceLineNo">1683</span>        onDiskBlock = new byte[b.getOnDiskSizeWithHeader() + hdrSize];<a name="line.1683"></a>
-<span class="sourceLineNo">1684</span>        // headerBuf is HBB<a name="line.1684"></a>
-<span class="sourceLineNo">1685</span>        System.arraycopy(headerBuf.array(), headerBuf.arrayOffset(), onDiskBlock, 0, hdrSize);<a name="line.1685"></a>
-<span class="sourceLineNo">1686</span>        nextBlockOnDiskSize =<a name="line.1686"></a>
-<span class="sourceLineNo">1687</span>          readAtOffset(is, onDiskBlock, hdrSize, b.getOnDiskSizeWithHeader()<a name="line.1687"></a>
-<span class="sourceLineNo">1688</span>              - hdrSize, true, offset + hdrSize, pread);<a name="line.1688"></a>
-<span class="sourceLineNo">1689</span>        onDiskSizeWithHeader = b.onDiskSizeWithoutHeader + hdrSize;<a name="line.1689"></a>
-<span class="sourceLineNo">1690</span>      }<a name="line.1690"></a>
-<span class="sourceLineNo">1691</span><a name="line.1691"></a>
-<span class="sourceLineNo">1692</span>      if (!fileContext.isCompressedOrEncrypted()) {<a name="line.1692"></a>
-<span class="sourceLineNo">1693</span>        b.assumeUncompressed();<a name="line.1693"></a>
-<span class="sourceLineNo">1694</span>      }<a name="line.1694"></a>
-<span class="sourceLineNo">1695</span><a name="line.1695"></a>
-<span class="sourceLineNo">1696</span>      if (verifyChecksum &amp;&amp; !validateBlockChecksum(b, onDiskBlock, hdrSize)) {<a name="line.1696"></a>
-<span class="sourceLineNo">1697</span>        return null;             // checksum mismatch<a name="line.1697"></a>
-<span class="sourceLineNo">1698</span>      }<a name="line.1698"></a>
-<span class="sourceLineNo">1699</span><a name="line.1699"></a>
-<span class="sourceLineNo">1700</span>      // The onDiskBlock will become the headerAndDataBuffer for this block.<a name="line.1700"></a>
-<span class="sourceLineNo">1701</span>      // If nextBlockOnDiskSizeWithHeader is not zero, the onDiskBlock already<a name="line.1701"></a>
-<span class="sourceLineNo">1702</span>      // contains the header of next block, so no need to set next<a name="line.1702"></a>
-<span class="sourceLineNo">1703</span>      // block's header in it.<a name="line.1703"></a>
-<span class="sourceLineNo">1704</span>      b = new HFileBlock(ByteBuffer.wrap(onDiskBlock, 0, onDiskSizeWithHeader),<a name="line.1704"></a>
-<span class="sourceLineNo">1705</span>        this.fileContext.isUseHBaseChecksum());<a name="line.1705"></a>
-<span class="sourceLineNo">1706</span><a name="line.1706"></a>
-<span class="sourceLineNo">1707</span>      b.nextBlockOnDiskSizeWithHeader = nextBlockOnDiskSize;<a name="line.1707"></a>
-<span class="sourceLineNo">1708</span><a name="line.1708"></a>
-<span class="sourceLineNo">1709</span>      // Set prefetched header<a name="line.1709"></a>
-<span class="sourceLineNo">1710</span>      if (b.hasNextBlockHeader()) {<a name="line.1710"></a>
-<span class="sourceLineNo">1711</span>        prefetchedHeader.offset = offset + b.getOnDiskSizeWithHeader();<a name="line.1711"></a>
-<span class="sourceLineNo">1712</span>        System.arraycopy(onDiskBlock, onDiskSizeWithHeader, prefetchedHeader.header, 0, hdrSize);<a name="line.1712"></a>
-<span class="sourceLineNo">1713</span>      }<a name="line.1713"></a>
-<span class="sourceLineNo">1714</span><a name="line.1714"></a>
-<span class="sourceLineNo">1715</span>      b.offset = offset;<a name="line.1715"></a>
-<span class="sourceLineNo">1716</span>      b.fileContext.setIncludesTags(this.fileContext.isIncludesTags());<a name="line.1716"></a>
-<span class="sourceLineNo">1717</span>      b.fileContext.setIncludesMvcc(this.fileContext.isIncludesMvcc());<a name="line.1717"></a>
-<span class="sourceLineNo">1718</span>      return b;<a name="line.1718"></a>
-<span class="sourceLineNo">1719</span>    }<a name="line.1719"></a>
-<span class="sourceLineNo">1720</span><a name="line.1720"></a>
-<span class="sourceLineNo">1721</span>    public void setIncludesMemstoreTS(boolean includesMemstoreTS) {<a name="line.1721"></a>
-<span class="sourceLineNo">1722</span>      this.fileContext.setIncludesMvcc(includesMemstoreTS);<a name="line.1722"></a>
-<span class="sourceLineNo">1723</span>    }<a name="line.1723"></a>
-<span class="sourceLineNo">1724</span><a name="line.1724"></a>
-<span class="sourceLineNo">1725</span>    public void setDataBlockEncoder(HFileDataBlockEncoder encoder) {<a name="line.1725"></a>
-<span class="sourceLineNo">1726</span>      encodedBlockDecodingCtx = encoder.newDataBlockDecodingContext(this.fileContext);<a name="line.1726"></a>
-<span class="sourceLineNo">1727</span>    }<a name="line.1727"></a>
-<span class="sourceLineNo">1728</span><a name="line.1728"></a>
-<span class="sourceLineNo">1729</span>    @Override<a name="line.1729"></a>
-<span class="sourceLineNo">1730</span>    public HFileBlockDecodingContext getBlockDecodingContext() {<a name="line.1730"></a>
-<span class="sourceLineNo">1731</span>      return this.encodedBlockDecodingCtx;<a name="line.1731"></a>
-<span class="sourceLineNo">1732</span>    }<a name="line.1732"></a>
-<span class="sourceLineNo">1733</span><a name="line.1733"></a>
-<span class="sourceLineNo">1734</span>    @Override<a name="line.1734"></a>
-<span class="sourceLineNo">1735</span>    public HFileBlockDecodingContext getDefaultBlockDecodingContext() {<a name="line.1735"></a>
-<span class="sourceLineNo">1736</span>      return this.defaultDecodingCtx;<a name="line.1736"></a>
-<span class="sourceLineNo">1737</span>    }<a name="line.1737"></a>
-<span class="sourceLineNo">1738</span><a name="line.1738"></a>
-<span class="sourceLineNo">1739</span>    /**<a name="line.1739"></a>
-<span class="sourceLineNo">1740</span>     * Generates the checksum for the header as well as the data and<a name="line.1740"></a>
-<span class="sourceLineNo">1741</span>     * then validates that it matches the value stored in the header.<a name="line.1741"></a>
-<span class="sourceLineNo">1742</span>     * If there is a checksum mismatch, then return false. Otherwise<a name="line.1742"></a>
-<span class="sourceLineNo">1743</span>     * return true.<a name="line.1743"></a>
-<span class="sourceLineNo">1744</span>     */<a name="line.1744"></a>
-<span class="sourceLineNo">1745</span>    protected boolean validateBlockChecksum(HFileBlock block,  byte[] data, int hdrSize)<a name="line.1745"></a>
-<span class="sourceLineNo">1746</span>        throws IOException {<a name="line.1746"></a>
-<span class="sourceLineNo">1747</span>      return ChecksumUtil.validateBlockChecksum(path, block, data, hdrSize);<a name="line.1747"></a>
-<span class="sourceLineNo">1748</span>    }<a name="line.1748"></a>
-<span class="sourceLineNo">1749</span><a name="line.1749"></a>
-<span class="sourceLineNo">1750</span>    @Override<a name="line.1750"></a>
-<span class="sourceLineNo">1751</span>    public void closeStreams() throws IOException {<a name="line.1751"></a>
-<span class="sourceLineNo">1752</span>      streamWrapper.close();<a name="line.1752"></a>
-<span class="sourceLineNo">1753</span>    }<a name="line.1753"></a>
-<span class="sourceLineNo">1754</span><a name="line.1754"></a>
-<span class="sourceLineNo">1755</span>    @Override<a name="line.1755"></a>
-<span class="sourceLineNo">1756</span>    public String toString() {<a name="line.1756"></a>
-<span class="sourceLineNo">1757</span>      return "hfs=" + hfs + ", path=" + path + ", fileContext=" + fileContext;<a name="line.1757"></a>
-<span class="sourceLineNo">1758</span>    }<a name="line.1758"></a>
-<span class="sourceLineNo">1759</span>  }<a name="line.1759"></a>
-<span class="sourceLineNo">1760</span><a name="line.1760"></a>
-<span class="sourceLineNo">1761</span>  @Override<a name="line.1761"></a>
-<span class="sourceLineNo">1762</span>  public int getSerializedLength() {<a name="line.1762"></a>
-<span class="sourceLineNo">1763</span>    if (buf != null) {<a name="line.1763"></a>
-<span class="sourceLineNo">1764</span>      // include extra bytes for the next header when it's available.<a name="line.1764"></a>
-<span class="sourceLineNo">1765</span>      int extraSpace = hasNextBlockHeader() ? headerSize() : 0;<a name="line.1765"></a>
-<span class="sourceLineNo">1766</span>      return this.buf.limit() + extraSpace + HFileBlock.EXTRA_SERIALIZATION_SPACE;<a name="line.1766"></a>
-<span class="sourceLineNo">1767</span>    }<a name="line.1767"></a>
-<span class="sourceLineNo">1768</span>    return 0;<a name="line.1768"></a>
-<span class="sourceLineNo">1769</span>  }<a name="line.1769"></a>
-<span class="sourceLineNo">1770</span><a name="line.1770"></a>
-<span class="sourceLineNo">1771</span>  @Override<a name="line.1771"></a>
-<span class="sourceLineNo">1772</span>  public void serialize(ByteBuffer destination) {<a name="line.1772"></a>
-<span class="sourceLineNo">1773</span>    this.buf.get(destination, 0, getSerializedLength()<a name="line.1773"></a>
-<span class="sourceLineNo">1774</span>        - EXTRA_SERIALIZATION_SPACE);<a name="line.1774"></a>
-<span class="sourceLineNo">1775</span>    serializeExtraInfo(destination);<a name="line.1775"></a>
-<span class="sourceLineNo">1776</span>  }<a name="line.1776"></a>
-<span class="sourceLineNo">1777</span><a name="line.1777"></a>
-<span class="sourceLineNo">1778</span>  public void serializeExtraInfo(ByteBuffer destination) {<a name="line.1778"></a>
-<span class="sourceLineNo">1779</span>    destination.put(this.fileContext.isUseHBaseChecksum() ? (byte) 1 : (byte) 0);<a name="line.1779"></a>
-<span class="sourceLineNo">1780</span>    destination.putLong(this.offset);<a name="line.1780"></a>
-<span class="sourceLineNo">1781</span>    destination.putInt(this.nextBlockOnDiskSizeWithHeader);<a name="line.1781"></a>
-<span class="sourceLineNo">1782</span>    destination.rewind();<a name="line.1782"></a>
-<span class="sourceLineNo">1783</span>  }<a name="line.1783"></a>
-<span class="sourceLineNo">1784</span><a name="line.1784"></a>
-<span class="sourceLineNo">1785</span>  @Override<a name="line.1785"></a>
-<span class="sourceLineNo">1786</span>  public CacheableDeserializer&lt;Cacheable&gt; getDeserializer() {<a name="line.1786"></a>
-<span class="sourceLineNo">1787</span>    return HFileBlock.blockDeserializer;<a name="line.1787"></a>
-<span class="sourceLineNo">1788</span>  }<a name="line.1788"></a>
-<span class="sourceLineNo">1789</span><a name="line.1789"></a>
-<span class="sourceLineNo">1790</span>  @Override<a name="line.1790"></a>
-<span class="sourceLineNo">1791</span>  public int hashCode() {<a name="line.1791"></a>
-<span class="sourceLineNo">1792</span>    int result = 1;<a name="line.1792"></a>
-<span class="sourceLineNo">1793</span>    result = result * 31 + blockType.hashCode();<a name="line.1793"></a>
-<span class="sourceLineNo">1794</span>    result = result * 31 + nextBlockOnDiskSizeWithHeader;<a name="line.1794"></a>
-<span class="sourceLineNo">1795</span>    result = result * 31 + (int) (offset ^ (offset &gt;&gt;&gt; 32));<a name="line.1795"></a>
-<span class="sourceLineNo">1796</span>    result = result * 31 + onDiskSizeWithoutHeader;<a name="line.1796"></a>
-<span class="sourceLineNo">1797</span>    result = result * 31 + (int) (prevBlockOffset ^ (prevBlockOffset &gt;&gt;&gt; 32));<a name="line.1797"></a>
-<span class="sourceLineNo">1798</span>    result = result * 31 + uncompressedSizeWithoutHeader;<a name="line.1798"></a>
-<span class="sourceLineNo">1799</span>    result = result * 31 + buf.hashCode();<a name="line.1799"></a>
-<span class="sourceLineNo">1800</span>    return result;<a name="line.1800"></a>
-<span class="sourceLineNo">1801</span>  }<a name="line.1801"></a>
-<span class="sourceLineNo">1802</span><a name="line.1802"></a>
-<span class="sourceLineNo">1803</span>  @Override<a name="line.1803"></a>
-<span class="sourceLineNo">1804</span>  public boolean equals(Object comparison) {<a name="line.1804"></a>
-<span class="sourceLineNo">1805</span>    if (this == comparison) {<a name="line.1805"></a>
-<span class="sourceLineNo">1806</span>      return true;<a name="line.1806"></a>
-<span class="sourceLineNo">1807</span>    }<a name="line.1807"></a>
-<span class="sourceLineNo">1808</span>    if (comparison == null) {<a name="line.1808"></a>
-<span class="sourceLineNo">1809</span>      return false;<a name="line.1809"></a>
-<span class="sourceLineNo">1810</span>    }<a name="line.1810"></a>
-<span class="sourceLineNo">1811</span>    if (comparison.getClass() != this.getClass()) {<a name="line.1811"></a>
-<span class="sourceLineNo">1812</span>      return false;<a name="line.1812"></a>
-<span class="sourceLineNo">1813</span>    }<a name="line.1813"></a>
-<span class="sourceLineNo">1814</span><a name="line.1814"></a>
-<span class="sourceLineNo">1815</span>    HFileBlock castedComparison = (HFileBlock) comparison;<a name="line.1815"></a>
-<span class="sourceLineNo">1816</span><a name="line.1816"></a>
-<span class="sourceLineNo">1817</span>    if (castedComparison.blockType != this.blockType) {<a name="line.1817"></a>
-<span class="sourceLineNo">1818</span>      return false;<a name="line.1818"></a>
-<span class="sourceLineNo">1819</span>    }<a name="line.1819"></a>
-<span class="sourceLineNo">1820</span>    if (castedComparison.nextBlockOnDiskSizeWithHeader != this.nextBlockOnDiskSizeWithHeader) {<a name="line.1820"></a>
-<span class="sourceLineNo">1821</span>      return false;<a name="line.1821"></a>
-<span class="sourceLineNo">1822</span>    }<a name="line.1822"></a>
-<span class="sourceLineNo">1823</span>    if (castedComparison.offset != this.offset) {<a name="line.1823"></a>
-<span class="sourceLineNo">1824</span>      return false;<a name="line.1824"></a>
-<span class="sourceLineNo">1825</span>    }<a name="line.1825"></a>
-<span class="sourceLineNo">1826</span>    if (castedComparison.onDiskSizeWithoutHeader != this.onDiskSizeWithoutHeader) {<a name="line.1826"></a>
-<span class="sourceLineNo">1827</span>      return false;<a name="line.1827"></a>
-<span class="sourceLineNo">1828</span>    }<a name="line.1828"></a>
-<span class="sourceLineNo">1829</span>    if (castedComparison.prevBlockOffset != this.prevBlockOffset) {<a name="line.1829"></a>
-<span class="sourceLineNo">1830</span>      return false;<a name="line.1830"></a>
-<span class="sourceLineNo">1831</span>    }<a name="line.1831"></a>
-<span class="sourceLineNo">1832</span>    if (castedComparison.uncompressedSizeWithoutHeader != this.uncompressedSizeWithoutHeader) {<a name="line.1832"></a>
-<span class="sourceLineNo">1833</span>      return false;<a name="line.1833"></a>
-<span class="sourceLineNo">1834</span>    }<a name="line.1834"></a>
-<span class="sourceLineNo">1835</span>    if (ByteBuff.compareTo(this.buf, 0, this.buf.limit(), castedComparison.buf, 0,<a name="line.1835"></a>
-<span class="sourceLineNo">1836</span>        castedComparison.buf.limit()) != 0) {<a name="line.1836"></a>
-<span class="sourceLineNo">1837</span>      return false;<a name="line.1837"></a>
-<span class="sourceLineNo">1838</span>    }<a name="line.1838"></a>
-<span class="sourceLineNo">1839</span>    return true;<a name="line.1839"></a>
-<span class="sourceLineNo">1840</span>  }<a name="line.1840"></a>
-<span class="sourceLineNo">1841</span><a name="line.1841"></a>
-<span class="sourceLineNo">1842</span>  public DataBlockEncoding getDataBlockEncoding() {<a name="line.1842"></a>
-<span class="sourceLineNo">1843</span>    if (blockType == BlockType.ENCODED_DATA) {<a name="line.1843"></a>
-<span class="sourceLineNo">1844</span>      return DataBlockEncoding.getEncodingById(getDataBlockEncodingId());<a name="line.1844"></a>
-<span class="sourceLineNo">1845</span>    }<a name="line.1845"></a>
-<span class="sourceLineNo">1846</span>    return DataBlockEncoding.NONE;<a name="line.1846"></a>
-<span class="sourceLineNo">1847</span>  }<a name="line.1847"></a>
-<span class="sourceLineNo">1848</span><a name="line.1848"></a>
-<span class="sourceLineNo">1849</span>  byte getChecksumType() {<a name="line.1849"></a>
-<span class="sourceLineNo">1850</span>    return this.fileContext.getChecksumType().getCode();<a name="line.1850"></a>
-<span class="sourceLineNo">1851</span>  }<a name="line.1851"></a>
-<span class="sourceLineNo">1852</span><a name="line.1852"></a>
-<span class="sourceLineNo">1853</span>  int getBytesPerChecksum() {<a name="line.1853"></a>
-<span class="sourceLineNo">1854</span>    return this.fileContext.getBytesPerChecksum();<a name="line.1854"></a>
-<span class="sourceLineNo">1855</span>  }<a name="line.1855"></a>
-<span class="sourceLineNo">1856</span><a name="line.1856"></a>
-<span class="sourceLineNo">1857</span>  /** @return the size of data on disk + header. Excludes checksum. */<a name="line.1857"></a>
-<span class="sourceLineNo">1858</span>  int getOnDiskDataSizeWithHeader() {<a name="line.1858"></a>
-<span class="sourceLineNo">1859</span>    return this.onDiskDataSizeWithHeader;<a name="line.1859"></a>
-<span class="sourceLineNo">1860</span>  }<a name="line.1860"></a>
-<span class="sourceLineNo">1861</span><a name="line.1861"></a>
-<span class="sourceLineNo">1862</span>  /**<a name="line.1862"></a>
-<span class="sourceLineNo">1863</span>   * Calcuate the number of bytes required to store all the checksums<a name="line.1863"></a>
-<span class="sourceLineNo">1864</span>   * for this block. Each checksum value is a 4 byte integer.<a name="line.1864"></a>
-<span class="sourceLineNo">1865</span>   */<a name="line.1865"></a>
-<span class="sourceLineNo">1866</span>  int totalChecksumBytes() {<a name="line.1866"></a>
-<span class="sourceLineNo">1867</span>    // If the hfile block has minorVersion 0, then there are no checksum<a name="line.1867"></a>
-<span class="sourceLineNo">1868</span>    // data to validate. Similarly, a zero value in this.bytesPerChecksum<a name="line.1868"></a>
-<span class="sourceLineNo">1869</span>    // indicates that cached blocks do not have checksum data because<a name="line.1869"></a>
-<span class="sourceLineNo">1870</span>    // checksums were already validated when the block was read from disk.<a name="line.1870"></a>
-<span class="sourceLineNo">1871</span>    if (!fileContext.isUseHBaseChecksum() || this.fileContext.getBytesPerChecksum() == 0) {<a name="line.1871"></a>
-<span class="sourceLineNo">1872</span>      return 0;<a name="line.1872"></a>
-<span class="sourceLineNo">1873</span>    }<a name="line.1873"></a>
-<span class="sourceLineNo">1874</span>    return (int) ChecksumUtil.numBytes(onDiskDataSizeWithHeader,<a name="line.1874"></a>
-<span class="sourceLineNo">1875</span>        this.fileContext.getBytesPerChecksum());<a name="line.1875"></a>
-<span class="sourceLineNo">1876</span>  }<a name="line.1876"></a>
-<span class="sourceLineNo">1877</span><a name="line.1877"></a>
-<span class="sourceLineNo">1878</span>  /**<a name="line.1878"></a>
-<span class="sourceLineNo">1879</span>   * Returns the size of this block header.<a name="line.1879"></a>
-<span class="sourceLineNo">1880</span>   */<a name="line.1880"></a>
-<span class="sourceLineNo">1881</span>  public int headerSize() {<a name="line.1881"></a>
-<span class="sourceLineNo">1882</span>    return headerSize(this.fileContext.isUseHBaseChecksum());<a name="line.1882"></a>
-<span class="sourceLineNo">1883</span>  }<a name="line.1883"></a>
-<span class="sourceLineNo">1884</span><a name="line.1884"></a>
-<span class="sourceLineNo">1885</span>  /**<a name="line.1885"></a>
-<span class="sourceLineNo">1886</span>   * Maps a minor version to the size of the header.<a name="line.1886"></a>
-<span class="sourceLineNo">1887</span>   */<a name="line.1887"></a>
-<span class="sourceLineNo">1888</span>  public static int headerSize(boolean usesHBaseChecksum) {<a name="line.1888"></a>
-<span class="sourceLineNo">1889</span>    if (usesHBaseChecksum) {<a name="line.1889"></a>
-<span class="sourceLineNo">1890</span>      return HConstants.HFILEBLOCK_HEADER_SIZE;<a name="line.1890"></a>
-<span class="sourceLineNo">1891</span>    }<a name="line.1891"></a>
-<span class="sourceLineNo">1892</span>    return HConstants.HFILEBLOCK_HEADER_SIZE_NO_CHECKSUM;<a name="line.1892"></a>
-<span class="sourceLineNo">1893</span>  }<a name="line.1893"></a>
-<span class="sourceLineNo">1894</span><a name="line.1894"></a>
-<span class="sourceLineNo">1895</span>  /**<a name="line.1895"></a>
-<span class="sourceLineNo">1896</span>   * Return the appropriate DUMMY_HEADER for the minor version<a name="line.1896"></a>
-<span class="sourceLineNo">1897</span>   */<a name="line.1897"></a>
-<span class="sourceLineNo">1898</span>  public byte[] getDummyHeaderForVersion() {<a name="line.1898"></a>
-<span class="sourceLineNo">1899</span>    return getDummyHeaderForVersion(this.fileContext.isUseHBaseChecksum());<a name="line.1899"></a>
-<span class="sourceLineNo">1900</span>  }<a name="line.1900"></a>
-<span class="sourceLineNo">1901</span><a name="line.1901"></a>
-<span class="sourceLineNo">1902</span>  /**<a name="line.1902"></a>
-<span class="sourceLineNo">1903</span>   * Return the appropriate DUMMY_HEADER for the minor version<a name="line.1903"></a>
-<span class="sourceLineNo">1904</span>   */<a name="line.1904"></a>
-<span class="sourceLineNo">1905</span>  static private byte[] getDummyHeaderForVersion(boolean usesHBaseChecksum) {<a name="line.1905"></a>
-<span class="sourceLineNo">1906</span>    if (usesHBaseChecksum) {<a name="line.1906"></a>
-<span class="sourceLineNo">1907</span>      return HConstants.HFILEBLOCK_DUMMY_HEADER;<a name="line.1907"></a>
-<span class="sourceLineNo">1908</span>    }<a name="line.1908"></a>
-<span class="sourceLineNo">1909</span>    return DUMMY_HEADER_NO_CHECKSUM;<a name="line.1909"></a>
-<span class="sourceLineNo">1910</span>  }<a name="line.1910"></a>
-<span class="sourceLineNo">1911</span><a name="line.1911"></a>
-<span class="sourceLineNo">1912</span>  /**<a name="line.1912"></a>
-<span class="sourceLineNo">1913</span>   * @return the HFileContext used to create this HFileBlock. Not necessary the<a name="line.1913"></a>
-<span class="sourceLineNo">1914</span>   * fileContext for the file from which this block's data was originally read.<a name="line.1914"></a>
-<span class="sourceLineNo">1915</span>   */<a name="line.1915"></a>
-<span class="sourceLineNo">1916</span>  public HFileContext getHFileContext() {<a name="line.1916"></a>
-<span class="sourceLineNo">1917</span>    return this.fileContext;<a name="line.1917"></a>
-<span class="sourceLineNo">1918</span>  }<a name="line.1918"></a>
-<span class="sourceLineNo">1919</span><a name="line.1919"></a>
-<span class="sourceLineNo">1920</span>  @Override<a name="line.1920"></a>
-<span class="sourceLineNo">1921</span>  public MemoryType getMemoryType() {<a name="line.1921"></a>
-<span class="sourceLineNo">1922</span>    return this.memType;<a name="line.1922"></a>
-<span class="sourceLineNo">1923</span>  }<a name="line.1923"></a>
-<span class="sourceLineNo">1924</span><a name="line.1924"></a>
-<span class="sourceLineNo">1925</span>  /**<a name="line.1925"></a>
-<span class="sourceLineNo">1926</span>   * @return true if this block is backed by a shared memory area(such as that of a BucketCache).<a name="line.1926"></a>
-<span class="sourceLineNo">1927</span>   */<a name="line.1927"></a>
-<span class="sourceLineNo">1928</span>  public boolean usesSharedMemory() {<a name="line.1928"></a>
-<span class="sourceLineNo">1929</span>    return this.memType == MemoryType.SHARED;<a name="line.1929"></a>
-<span class="sourceLineNo">1930</span>  }<a name="line.1930"></a>
-<span class="sourceLineNo">1931</span><a name="line.1931"></a>
-<span class="sourceLineNo">1932</span>  /**<a name="line.1932"></a>
-<span class="sourceLineNo">1933</span>   * Convert the contents of the block header into a human readable string.<a name="line.1933"></a>
-<span class="sourceLineNo">1934</span>   * This is mostly helpful for debugging. This assumes that the block<a name="line.1934"></a>
-<span class="sourceLineNo">1935</span>   * has minor version &gt; 0.<a name="line.1935"></a>
-<span class="sourceLineNo">1936</span>   */<a name="line.1936"></a>
-<span class="sourceLineNo">1937</span>  static String toStringHeader(ByteBuff buf) throws IOException {<a name="line.1937"></a>
-<span class="sourceLineNo">1938</span>    byte[] magicBuf = new byte[Math.min(buf.limit() - buf.position(), BlockType.MAGIC_LENGTH)];<a name="line.1938"></a>
-<span class="sourceLineNo">1939</span>    buf.get(magicBuf);<a name="line.1939"></a>
-<span class="sourceLineNo">1940</span>    BlockType bt = BlockType.parse(magicBuf, 0, BlockType.MAGIC_LENGTH);<a name="line.1940"></a>
-<span class="sourceLineNo">1941</span>    int compressedBlockSizeNoHeader = buf.getInt();<a name="line.1941"></a>
-<span class="sourceLineNo">1942</span>    int uncompressedBlockSizeNoHeader = buf.getInt();<a name="line.1942"></a>
-<span class="sourceLineNo">1943</span>    long prevBlockOffset = buf.getLong();<a name="line.1943"></a>
-<span class="sourceLineNo">1944</span>    byte cksumtype = buf.get();<a name="line.1944"></a>
-<span class="sourceLineNo">1945</span>    long bytesPerChecksum = buf.getInt();<a name="line.1945"></a>
-<span class="sourceLineNo">1946</span>    long onDiskDataSizeWithHeader = buf.getInt();<a name="line.1946"></a>
-<span class="sourceLineNo">1947</span>    return " Header dump: magic: " + Bytes.toString(magicBuf) +<a name="line.1947"></a>
-<span class="sourceLineNo">1948</span>                   " blockType " + bt +<a name="line.1948"></a>
-<span class="sourceLineNo">1949</span>                   " compressedBlockSizeNoHeader " +<a name="line.1949"></a>
-<span class="sourceLineNo">1950</span>                   compressedBlockSizeNoHeader +<a name="line.1950"></a>
-<span class="sourceLineNo">1951</span>                   " uncompressedBlockSizeNoHeader " +<a name="line.1951"></a>
-<span class="sourceLineNo">1952</span>                   uncompressedBlockSizeNoHeader +<a name="line.1952"></a>
-<span class="sourceLineNo">1953</span>                   " prevBlockOffset " + prevBlockOffset +<a name="line.1953"></a>
-<span class="sourceLineNo">1954</span>                   " checksumType " + ChecksumType.codeToType(cksumtype) +<a name="line.1954"></a>
-<span class="sourceLineNo">1955</span>                   " bytesPerChecksum " + bytesPerChecksum +<a name="line.1955"></a>
-<span class="sourceLineNo">1956</span>                   " onDiskDataSizeWithHeader " + onDiskDataSizeWithHeader;<a name="line.1956"></a>
-<span class="sourceLineNo">1957</span>  }<a name="line.1957"></a>
-<span class="sourceLineNo">1958</span>}<a name="line.1958"></a>
+<span class="sourceLineNo">1361</span>    protected HFileContext fileContext;<a name="line.1361"></a>
+<span class="sourceLineNo">1362</span>    // Cache the fileName<a name="line.1362"></a>
+<span class="sourceLineNo">1363</span>    protected String pathName;<a name="line.1363"></a>
+<span class="sourceLineNo">1364</span><a name="line.1364"></a>
+<span class="sourceLineNo">1365</span>    public FSReaderImpl(FSDataInputStreamWrapper stream, long fileSize, HFileSystem hfs, Path path,<a name="line.1365"></a>
+<span class="sourceLineNo">1366</span>        HFileContext fileContext) throws IOException {<a name="line.1366"></a>
+<span class="sourceLineNo">1367</span>      this.fileSize = fileSize;<a name="line.1367"></a>
+<span class="sourceLineNo">1368</span>      this.hfs = hfs;<a name="line.1368"></a>
+<span class="sourceLineNo">1369</span>      if (path != null) {<a name="line.1369"></a>
+<span class="sourceLineNo">1370</span>        this.pathName = path.toString();<a name="line.1370"></a>
+<span class="sourceLineNo">1371</span>      }<a name="line.1371"></a>
+<span class="sourceLineNo">1372</span>      this.fileContext = fileContext;<a name="line.1372"></a>
+<span class="sourceLineNo">1373</span>      this.hdrSize = headerSize(fileContext.isUseHBaseChecksum());<a name="line.1373"></a>
+<span class="sourceLineNo">1374</span><a name="line.1374"></a>
+<span class="sourceLineNo">1375</span>      this.streamWrapper = stream;<a name="line.1375"></a>
+<span class="sourceLineNo">1376</span>      // Older versions of HBase didn't support checksum.<a name="line.1376"></a>
+<span class="sourceLineNo">1377</span>      this.streamWrapper.prepareForBlockReader(!fileContext.isUseHBaseChecksum());<a name="line.1377"></a>
+<span class="sourceLineNo">1378</span>      defaultDecodingCtx = new HFileBlockDefaultDecodingContext(fileContext);<a name="line.1378"></a>
+<span class="sourceLineNo">1379</span>      encodedBlockDecodingCtx = defaultDecodingCtx;<a name="line.1379"></a>
+<span class="sourceLineNo">1380</span>    }<a name="line.1380"></a>
+<span class="sourceLineNo">1381</span><a name="line.1381"></a>
+<span class="sourceLineNo">1382</span>    /**<a name="line.1382"></a>
+<span class="sourceLineNo">1383</span>     * A constructor that reads files with the latest minor version.<a name="line.1383"></a>
+<span class="sourceLineNo">1384</span>     * This is used by unit tests only.<a name="line.1384"></a>
+<span class="sourceLineNo">1385</span>     */<a name="line.1385"></a>
+<span class="sourceLineNo">1386</span>    FSReaderImpl(FSDataInputStream istream, long fileSize, HFileContext fileContext)<a name="line.1386"></a>
+<span class="sourceLineNo">1387</span>    throws IOException {<a name="line.1387"></a>
+<span class="sourceLineNo">1388</span>      this(new FSDataInputStreamWrapper(istream), fileSize, null, null, fileContext);<a name="line.1388"></a>
+<span class="sourceLineNo">1389</span>    }<a name="line.1389"></a>
+<span class="sourceLineNo">1390</span><a name="line.1390"></a>
+<span class="sourceLineNo">1391</span>    public BlockIterator blockRange(final long startOffset, final long endOffset) {<a name="line.1391"></a>
+<span class="sourceLineNo">1392</span>      final FSReader owner = this; // handle for inner class<a name="line.1392"></a>
+<span class="sourceLineNo">1393</span>      return new BlockIterator() {<a name="line.1393"></a>
+<span class="sourceLineNo">1394</span>        private long offset = startOffset;<a name="line.1394"></a>
+<span class="sourceLineNo">1395</span><a name="line.1395"></a>
+<span class="sourceLineNo">1396</span>        @Override<a name="line.1396"></a>
+<span class="sourceLineNo">1397</span>        public HFileBlock nextBlock() throws IOException {<a name="line.1397"></a>
+<span class="sourceLineNo">1398</span>          if (offset &gt;= endOffset)<a name="line.1398"></a>
+<span class="sourceLineNo">1399</span>            return null;<a name="line.1399"></a>
+<span class="sourceLineNo">1400</span>          HFileBlock b = readBlockData(offset, -1, -1, false);<a name="line.1400"></a>
+<span class="sourceLineNo">1401</span>          offset += b.getOnDiskSizeWithHeader();<a name="line.1401"></a>
+<span class="sourceLineNo">1402</span>          return b.unpack(fileContext, owner);<a name="line.1402"></a>
+<span class="sourceLineNo">1403</span>        }<a name="line.1403"></a>
+<span class="sourceLineNo">1404</span><a name="line.1404"></a>
+<span class="sourceLineNo">1405</span>        @Override<a name="line.1405"></a>
+<span class="sourceLineNo">1406</span>        public HFileBlock nextBlockWithBlockType(BlockType blockType)<a name="line.1406"></a>
+<span class="sourceLineNo">1407</span>            throws IOException {<a name="line.1407"></a>
+<span class="sourceLineNo">1408</span>          HFileBlock blk = nextBlock();<a name="line.1408"></a>
+<span class="sourceLineNo">1409</span>          if (blk.getBlockType() != blockType) {<a name="line.1409"></a>
+<span class="sourceLineNo">1410</span>            throw new IOException("Expected block of type " + blockType<a name="line.1410"></a>
+<span class="sourceLineNo">1411</span>                + " but found " + blk.getBlockType());<a name="line.1411"></a>
+<span class="sourceLineNo">1412</span>          }<a name="line.1412"></a>
+<span class="sourceLineNo">1413</span>          return blk;<a name="line.1413"></a>
+<span class="sourceLineNo">1414</span>        }<a name="line.1414"></a>
+<span class="sourceLineNo">1415</span>      };<a name="line.1415"></a>
+<span class="sourceLineNo">1416</span>    }<a name="line.1416"></a>
+<span class="sourceLineNo">1417</span><a name="line.1417"></a>
+<span class="sourceLineNo">1418</span>    /**<a name="line.1418"></a>
+<span class="sourceLineNo">1419</span>     * Does a positional read or a seek and read into the given buffer. Returns<a name="line.1419"></a>
+<span class="sourceLineNo">1420</span>     * the on-disk size of the next block, or -1 if it could not be determined.<a name="line.1420"></a>
+<span class="sourceLineNo">1421</span>     *<a name="line.1421"></a>
+<span class="sourceLineNo">1422</span>     * @param dest destination buffer<a name="line.1422"></a>
+<span class="sourceLineNo">1423</span>     * @param destOffset offset in the destination buffer<a name="line.1423"></a>
+<span class="sourceLineNo">1424</span>     * @param size size of the block to be read<a name="line.1424"></a>
+<span class="sourceLineNo">1425</span>     * @param peekIntoNextBlock whether to read the next block's on-disk size<a name="line.1425"></a>
+<span class="sourceLineNo">1426</span>     * @param fileOffset position in the stream to read at<a name="line.1426"></a>
+<span class="sourceLineNo">1427</span>     * @param pread whether we should do a positional read<a name="line.1427"></a>
+<span class="sourceLineNo">1428</span>     * @param istream The input source of data<a name="line.1428"></a>
+<span class="sourceLineNo">1429</span>     * @return the on-disk size of the next block with header size included, or<a name="line.1429"></a>
+<span class="sourceLineNo">1430</span>     *         -1 if it could not be determined<a name="line.1430"></a>
+<span class="sourceLineNo">1431</span>     * @throws IOException<a name="line.1431"></a>
+<span class="sourceLineNo">1432</span>     */<a name="line.1432"></a>
+<span class="sourceLineNo">1433</span>    protected int readAtOffset(FSDataInputStream istream,<a name="line.1433"></a>
+<span class="sourceLineNo">1434</span>        byte[] dest, int destOffset, int size,<a name="line.1434"></a>
+<span class="sourceLineNo">1435</span>        boolean peekIntoNextBlock, long fileOffset, boolean pread)<a name="line.1435"></a>
+<span class="sourceLineNo">1436</span>        throws IOException {<a name="line.1436"></a>
+<span class="sourceLineNo">1437</span>      if (peekIntoNextBlock &amp;&amp;<a name="line.1437"></a>
+<span class="sourceLineNo">1438</span>          destOffset + size + hdrSize &gt; dest.length) {<a name="line.1438"></a>
+<span class="sourceLineNo">1439</span>        // We are asked to read the next block's header as well, but there is<a name="line.1439"></a>
+<span class="sourceLineNo">1440</span>        // not enough room in the array.<a name="line.1440"></a>
+<span class="sourceLineNo">1441</span>        throw new IOException("Attempted to read " + size + " bytes and " +<a name="line.1441"></a>
+<span class="sourceLineNo">1442</span>            hdrSize + " bytes of next header into a " + dest.length +<a name="line.1442"></a>
+<span class="sourceLineNo">1443</span>            "-byte array at offset " + destOffset);<a name="line.1443"></a>
+<span class="sourceLineNo">1444</span>      }<a name="line.1444"></a>
+<span class="sourceLineNo">1445</span><a name="line.1445"></a>
+<span class="sourceLineNo">1446</span>      if (!pread &amp;&amp; streamLock.tryLock()) {<a name="line.1446"></a>
+<span class="sourceLineNo">1447</span>        // Seek + read. Better for scanning.<a name="line.1447"></a>
+<span class="sourceLineNo">1448</span>        try {<a name="line.1448"></a>
+<span class="sourceLineNo">1449</span>          istream.seek(fileOffset);<a name="line.1449"></a>
+<span class="sourceLineNo">1450</span><a name="line.1450"></a>
+<span class="sourceLineNo">1451</span>          long realOffset = istream.getPos();<a name="line.1451"></a>
+<span class="sourceLineNo">1452</span>          if (realOffset != fileOffset) {<a name="line.1452"></a>
+<span class="sourceLineNo">1453</span>            throw new IOException("Tried to seek to " + fileOffset + " to "<a name="line.1453"></a>
+<span class="sourceLineNo">1454</span>                + "read " + size + " bytes, but pos=" + realOffset<a name="line.1454"></a>
+<span class="sourceLineNo">1455</span>                + " after seek");<a name="line.1455"></a>
+<span class="sourceLineNo">1456</span>          }<a name="line.1456"></a>
+<span class="sourceLineNo">1457</span><a name="line.1457"></a>
+<span class="sourceLineNo">1458</span>          if (!peekIntoNextBlock) {<a name="line.1458"></a>
+<span class="sourceLineNo">1459</span>            IOUtils.readFully(istream, dest, destOffset, size);<a name="line.1459"></a>
+<span class="sourceLineNo">1460</span>            return -1;<a name="line.1460"></a>
+<span class="sourceLineNo">1461</span>          }<a name="line.1461"></a>
+<span class="sourceLineNo">1462</span><a name="line.1462"></a>
+<span class="sourceLineNo">1463</span>          // Try to read the next block header.<a name="line.1463"></a>
+<span class="sourceLineNo">1464</span>          if (!readWithExtra(istream, dest, destOffset, size, hdrSize))<a name="line.1464"></a>
+<span class="sourceLineNo">1465</span>            return -1;<a name="line.1465"></a>
+<span class="sourceLineNo">1466</span>        } finally {<a name="line.1466"></a>
+<span class="sourceLineNo">1467</span>          streamLock.unlock();<a name="line.1467"></a>
+<span class="sourceLineNo">1468</span>        }<a name="line.1468"></a>
+<span class="sourceLineNo">1469</span>      } else {<a name="line.1469"></a>
+<span class="sourceLineNo">1470</span>        // Positional read. Better for random reads; or when the streamLock is already locked.<a name="line.1470"></a>
+<span class="sourceLineNo">1471</span>        int extraSize = peekIntoNextBlock ? hdrSize : 0;<a name="line.1471"></a>
+<span class="sourceLineNo">1472</span>        if (!positionalReadWithExtra(istream, fileOffset, dest, destOffset,<a name="line.1472"></a>
+<span class="sourceLineNo">1473</span>            size, extraSize)) {<a name="line.1473"></a>
+<span class="sourceLineNo">1474</span>          return -1;<a name="line.1474"></a>
+<span class="sourceLineNo">1475</span>        }<a name="line.1475"></a>
+<span class="sourceLineNo">1476</span>      }<a name="line.1476"></a>
+<span class="sourceLineNo">1477</span><a name="line.1477"></a>
+<span class="sourceLineNo">1478</span>      assert peekIntoNextBlock;<a name="line.1478"></a>
+<span class="sourceLineNo">1479</span>      return Bytes.toInt(dest, destOffset + size + BlockType.MAGIC_LENGTH) + hdrSize;<a name="line.1479"></a>
+<span class="sourceLineNo">1480</span>    }<a name="line.1480"></a>
+<span class="sourceLineNo">1481</span><a name="line.1481"></a>
+<span class="sourceLineNo">1482</span>    /**<a name="line.1482"></a>
+<span class="sourceLineNo">1483</span>     * Reads a version 2 block (version 1 blocks not supported and not expected). Tries to do as<a name="line.1483"></a>
+<span class="sourceLineNo">1484</span>     * little memory allocation as possible, using the provided on-disk size.<a name="line.1484"></a>
+<span class="sourceLineNo">1485</span>     *<a name="line.1485"></a>
+<span class="sourceLineNo">1486</span>     * @param offset the offset in the stream to read at<a name="line.1486"></a>
+<span class="sourceLineNo">1487</span>     * @param onDiskSizeWithHeaderL the on-disk size of the block, including<a name="line.1487"></a>
+<span class="sourceLineNo">1488</span>     *          the header, or -1 if unknown<a name="line.1488"></a>
+<span class="sourceLineNo">1489</span>     * @param uncompressedSize the uncompressed size of the the block. Always<a name="line.1489"></a>
+<span class="sourceLineNo">1490</span>     *          expected to be -1. This parameter is only used in version 1.<a name="line.1490"></a>
+<span class="sourceLineNo">1491</span>     * @param pread whether to use a positional read<a name="line.1491"></a>
+<span class="sourceLineNo">1492</span>     */<a name="line.1492"></a>
+<span class="sourceLineNo">1493</span>    @Override<a name="line.1493"></a>
+<span class="sourceLineNo">1494</span>    public HFileBlock readBlockData(long offset, long onDiskSizeWithHeaderL,<a name="line.1494"></a>
+<span class="sourceLineNo">1495</span>        int uncompressedSize, boolean pread)<a name="line.1495"></a>
+<span class="sourceLineNo">1496</span>    throws IOException {<a name="line.1496"></a>
+<span class="sourceLineNo">1497</span><a name="line.1497"></a>
+<span class="sourceLineNo">1498</span>      // get a copy of the current state of whether to validate<a name="line.1498"></a>
+<span class="sourceLineNo">1499</span>      // hbase checksums or not for this read call. This is not<a name="line.1499"></a>
+<span class="sourceLineNo">1500</span>      // thread-safe but the one constaint is that if we decide<a name="line.1500"></a>
+<span class="sourceLineNo">1501</span>      // to skip hbase checksum verification then we are<a name="line.1501"></a>
+<span class="sourceLineNo">1502</span>      // guaranteed to use hdfs checksum verification.<a name="line.1502"></a>
+<span class="sourceLineNo">1503</span>      boolean doVerificationThruHBaseChecksum = streamWrapper.shouldUseHBaseChecksum();<a name="line.1503"></a>
+<span class="sourceLineNo">1504</span>      FSDataInputStream is = streamWrapper.getStream(doVerificationThruHBaseChecksum);<a name="line.1504"></a>
+<span class="sourceLineNo">1505</span><a name="line.1505"></a>
+<span class="sourceLineNo">1506</span>      HFileBlock blk = readBlockDataInternal(is, offset,<a name="line.1506"></a>
+<span class="sourceLineNo">1507</span>                         onDiskSizeWithHeaderL,<a name="line.1507"></a>
+<span class="sourceLineNo">1508</span>                         uncompressedSize, pread,<a name="line.1508"></a>
+<span class="sourceLineNo">1509</span>                         doVerificationThruHBaseChecksum);<a name="line.1509"></a>
+<span class="sourceLineNo">1510</span>      if (blk == null) {<a name="line.1510"></a>
+<span class="sourceLineNo">1511</span>        HFile.LOG.warn("HBase checksum verification failed for file " +<a name="line.1511"></a>
+<span class="sourceLineNo">1512</span>                       pathName + " at offset " +<a name="line.1512"></a>
+<span class="sourceLineNo">1513</span>                       offset + " filesize " + fileSize +<a name="line.1513"></a>
+<span class="sourceLineNo">1514</span>                       ". Retrying read with HDFS checksums turned on...");<a name="line.1514"></a>
+<span class="sourceLineNo">1515</span><a name="line.1515"></a>
+<span class="sourceLineNo">1516</span>        if (!doVerificationThruHBaseChecksum) {<a name="line.1516"></a>
+<span class="sourceLineNo">1517</span>          String msg = "HBase checksum verification failed for file " +<a name="line.1517"></a>
+<span class="sourceLineNo">1518</span>                       pathName + " at offset " +<a name="line.1518"></a>
+<span class="sourceLineNo">1519</span>                       offset + " filesize " + fileSize +<a name="line.1519"></a>
+<span class="sourceLineNo">1520</span>                       " but this cannot happen because doVerify is " +<a name="line.1520"></a>
+<span class="sourceLineNo">1521</span>                       doVerificationThruHBaseChecksum;<a name="line.1521"></a>
+<span class="sourceLineNo">1522</span>          HFile.LOG.warn(msg);<a name="line.1522"></a>
+<span class="sourceLineNo">1523</span>          throw new IOException(msg); // cannot happen case here<a name="line.1523"></a>
+<span class="sourceLineNo">1524</span>        }<a name="line.1524"></a>
+<span class="sourceLineNo">1525</span>        HFile.checksumFailures.incrementAndGet(); // update metrics<a name="line.1525"></a>
+<span class="sourceLineNo">1526</span><a name="line.1526"></a>
+<span class="sourceLineNo">1527</span>        // If we have a checksum failure, we fall back into a mode where<a name="line.1527"></a>
+<span class="sourceLineNo">1528</span>        // the next few reads use HDFS level checksums. We aim to make the<a name="line.1528"></a>
+<span class="sourceLineNo">1529</span>        // next CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD reads avoid<a name="line.1529"></a>
+<span class="sourceLineNo">1530</span>        // hbase checksum verification, but since this value is set without<a name="line.1530"></a>
+<span class="sourceLineNo">1531</span>        // holding any locks, it can so happen that we might actually do<a name="line.1531"></a>
+<span class="sourceLineNo">1532</span>        // a few more than precisely this number.<a name="line.1532"></a>
+<span class="sourceLineNo">1533</span>        is = this.streamWrapper.fallbackToFsChecksum(CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD);<a name="line.1533"></a>
+<span class="sourceLineNo">1534</span>        doVerificationThruHBaseChecksum = false;<a name="line.1534"></a>
+<span class="sourceLineNo">1535</span>        blk = readBlockDataInternal(is, offset, onDiskSizeWithHeaderL,<a name="line.1535"></a>
+<span class="sourceLineNo">1536</span>                                    uncompressedSize, pread,<a name="line.1536"></a>
+<span class="sourceLineNo">1537</span>                                    doVerificationThruHBaseChecksum);<a name="line.1537"></a>
+<span class="sourceLineNo">1538</span>        if (blk != null) {<a name="line.1538"></a>
+<span class="sourceLineNo">1539</span>          HFile.LOG.warn("HDFS checksum verification suceeded for file " +<a name="line.1539"></a>
+<span class="sourceLineNo">1540</span>                         pathName + " at offset " +<a name="line.1540"></a>
+<span class="sourceLineNo">1541</span>                         offset + " filesize " + fileSize);<a name="line.1541"></a>
+<span class="sourceLineNo">1542</span>        }<a name="line.1542"></a>
+<span class="sourceLineNo">1543</span>      }<a name="line.1543"></a>
+<span class="sourceLineNo">1544</span>      if (blk == null &amp;&amp; !doVerificationThruHBaseChecksum) {<a name="line.1544"></a>
+<span class="sourceLineNo">1545</span>        String msg = "readBlockData failed, possibly due to " +<a name="line.1545"></a>
+<span class="sourceLineNo">1546</span>                     "checksum verification failed for file " + pathName +<a name="line.1546"></a>
+<span class="sourceLineNo">1547</span>                     " at offset " + offset + " filesize " + fileSize;<a name="line.1547"></a>
+<span class="sourceLineNo">1548</span>        HFile.LOG.warn(msg);<a name="line.1548"></a>
+<span class="sourceLineNo">1549</span>        throw new IOException(msg);<a name="line.1549"></a>
+<span class="sourceLineNo">1550</span>      }<a name="line.1550"></a>
+<span class="sourceLineNo">1551</span><a name="line.1551"></a>
+<span class="sourceLineNo">1552</span>      // If there is a checksum mismatch earlier, then retry with<a name="line.1552"></a>
+<span class="sourceLineNo">1553</span>      // HBase checksums switched off and use HDFS checksum verification.<a name="line.1553"></a>
+<span class="sourceLineNo">1554</span>      // This triggers HDFS to detect and fix corrupt replicas. The<a name="line.1554"></a>
+<span class="sourceLineNo">1555</span>      // next checksumOffCount read requests will use HDFS checksums.<a name="line.1555"></a>
+<span class="sourceLineNo">1556</span>      // The decrementing of this.checksumOffCount is not thread-safe,<a name="line.1556"></a>
+<span class="sourceLineNo">1557</span>      // but it is harmless because eventually checksumOffCount will be<a name="line.1557"></a>
+<span class="sourceLineNo">1558</span>      // a negative number.<a name="line.1558"></a>
+<span class="sourceLineNo">1559</span>      streamWrapper.checksumOk();<a name="line.1559"></a>
+<span class="sourceLineNo">1560</span>      return blk;<a name="line.1560"></a>
+<span class="sourceLineNo">1561</span>    }<a name="line.1561"></a>
+<span class="sourceLineNo">1562</span><a name="line.1562"></a>
+<span class="sourceLineNo">1563</span>    /**<a name="line.1563"></a>
+<span class="sourceLineNo">1564</span>     * Reads a version 2 block.<a name="line.1564"></a>
+<span class="sourceLineNo">1565</span>     *<a name="line.1565"></a>
+<span class="sourceLineNo">1566</span>     * @param offset the offset in the stream to read at<a name="line.1566"></a>
+<span class="sourceLineNo">1567</span>     * @param onDiskSizeWithHeaderL the on-disk size of the block, including<a name="line.1567"></a>
+<span class="sourceLineNo">1568</span>     *          the header, or -1 if unknown<a name="line.1568"></a>
+<span class="sourceLineNo">1569</span>     * @param uncompressedSize the uncompressed size of the the block. Always<a name="line.1569"></a>
+<span class="sourceLineNo">1570</span>     *          expected to be -1. This parameter is only used in version 1.<a name="line.1570"></a>
+<span class="sourceLineNo">1571</span>     * @param pread whether to use a positional read<a name="line.1571"></a>
+<span class="sourceLineNo">1572</span>     * @param verifyChecksum Whether to use HBase checksums.<a name="line.1572"></a>
+<span class="sourceLineNo">1573</span>     *        If HBase checksum is switched off, then use HDFS checksum.<a name="line.1573"></a>
+<span class="sourceLineNo">1574</span>     * @return the HFileBlock or null if there is a HBase checksum mismatch<a name="line.1574"></a>
+<span class="sourceLineNo">1575</span>     */<a name="line.1575"></a>
+<span class="sourceLineNo">1576</span>    private HFileBlock readBlockDataInternal(FSDataInputStream is, long offset,<a name="line.1576"></a>
+<span class="sourceLineNo">1577</span>        long onDiskSizeWithHeaderL, int uncompressedSize, boolean pread,<a name="line.1577"></a>
+<span class="sourceLineNo">1578</span>        boolean verifyChecksum)<a name="line.1578"></a>
+<span class="sourceLineNo">1579</span>    throws IOException {<a name="line.1579"></a>
+<span class="sourceLineNo">1580</span>      if (offset &lt; 0) {<a name="line.1580"></a>
+<span class="sourceLineNo">1581</span>        throw new IOException("Invalid offset=" + offset + " trying to read "<a name="line.1581"></a>
+<span class="sourceLineNo">1582</span>            + "block (onDiskSize=" + onDiskSizeWithHeaderL<a name="line.1582"></a>
+<span class="sourceLineNo">1583</span>            + ", uncompressedSize=" + uncompressedSize + ")");<a name="line.1583"></a>
+<span class="sourceLineNo">1584</span>      }<a name="line.1584"></a>
+<span class="sourceLineNo">1585</span><a name="line.1585"></a>
+<span class="sourceLineNo">1586</span>      if (uncompressedSize != -1) {<a name="line.1586"></a>
+<span class="sourceLineNo">1587</span>        throw new IOException("Version 2 block reader API does not need " +<a name="line.1587"></a>
+<span class="sourceLineNo">1588</span>            "the uncompressed size parameter");<a name="line.1588"></a>
+<span class="sourceLineNo">1589</span>      }<a name="line.1589"></a>
+<span class="sourceLineNo">1590</span><a name="line.1590"></a>
+<span class="sourceLineNo">1591</span>      if ((onDiskSizeWithHeaderL &lt; hdrSize &amp;&amp; onDiskSizeWithHeaderL != -1)<a name="line.1591"></a>
+<span class="sourceLineNo">1592</span>          || onDiskSizeWithHeaderL &gt;= Integer.MAX_VALUE) {<a name="line.1592"></a>
+<span class="sourceLineNo">1593</span>        throw new IOException("Invalid onDisksize=" + onDiskSizeWithHeaderL<a name="line.1593"></a>
+<span class="sourceLineNo">1594</span>            + ": expected to be at least " + hdrSize<a name="line.1594"></a>
+<span class="sourceLineNo">1595</span>            + " and at most " + Integer.MAX_VALUE + ", or -1 (offset="<a name="line.1595"></a>
+<span class="sourceLineNo">1596</span>            + offset + ", uncompressedSize=" + uncompressedSize + ")");<a name="line.1596"></a>
+<span class="sourceLineNo">1597</span>      }<a name="line.1597"></a>
+<span class="sourceLineNo">1598</span><a name="line.1598"></a>
+<span class="sourceLineNo">1599</span>      int onDiskSizeWithHeader = (int) onDiskSizeWithHeaderL;<a name="line.1599"></a>
+<span class="sourceLineNo">1600</span>      // See if we can avoid reading the header. This is desirable, because<a name="line.1600"></a>
+<span class="sourceLineNo">1601</span>

<TRUNCATED>

[20/23] hbase-site git commit: Published site at 2cf8af5bf1d501156cbb3b421cf75c1051ead7d9.

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/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 f8c8d64..0ba3d38 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -605,23 +605,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/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/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/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/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/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/RegionMergeTransaction.RegionMergeTransactionPhase.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">RegionMergeTransaction.RegionMergeTransactionPhase</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.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/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/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.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/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/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">BloomType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionOpeningState.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">RegionOpeningState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/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/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/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/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/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/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/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/DeleteTracker.DeleteCompare.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">DeleteTracker.DeleteCompare</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.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/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/MetricsRegionServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">MetricsRegionServerSourceFactoryImpl.FactoryStorage</span></a></li>
 </ul>
 </li>
 </ul>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/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 4d2432f..9869b17 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/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/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>
 </ul>
 </li>
 </ul>

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

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

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


[14/23] hbase-site git commit: Published site at 2cf8af5bf1d501156cbb3b421cf75c1051ead7d9.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html
index 745e703..1587e5e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReaderImpl.html
@@ -1361,609 +1361,610 @@
 <span class="sourceLineNo">1353</span>    /** The filesystem used to access data */<a name="line.1353"></a>
 <span class="sourceLineNo">1354</span>    protected HFileSystem hfs;<a name="line.1354"></a>
 <span class="sourceLineNo">1355</span><a name="line.1355"></a>
-<span class="sourceLineNo">1356</span>    /** The path (if any) where this data is coming from */<a name="line.1356"></a>
-<span class="sourceLineNo">1357</span>    protected Path path;<a name="line.1357"></a>
-<span class="sourceLineNo">1358</span><a name="line.1358"></a>
-<span class="sourceLineNo">1359</span>    private final Lock streamLock = new ReentrantLock();<a name="line.1359"></a>
+<span class="sourceLineNo">1356</span>    private final Lock streamLock = new ReentrantLock();<a name="line.1356"></a>
+<span class="sourceLineNo">1357</span><a name="line.1357"></a>
+<span class="sourceLineNo">1358</span>    /** The default buffer size for our buffered streams */<a name="line.1358"></a>
+<span class="sourceLineNo">1359</span>    public static final int DEFAULT_BUFFER_SIZE = 1 &lt;&lt; 20;<a name="line.1359"></a>
 <span class="sourceLineNo">1360</span><a name="line.1360"></a>
-<span class="sourceLineNo">1361</span>    /** The default buffer size for our buffered streams */<a name="line.1361"></a>
-<span class="sourceLineNo">1362</span>    public static final int DEFAULT_BUFFER_SIZE = 1 &lt;&lt; 20;<a name="line.1362"></a>
-<span class="sourceLineNo">1363</span><a name="line.1363"></a>
-<span class="sourceLineNo">1364</span>    protected HFileContext fileContext;<a name="line.1364"></a>
-<span class="sourceLineNo">1365</span><a name="line.1365"></a>
-<span class="sourceLineNo">1366</span>    public FSReaderImpl(FSDataInputStreamWrapper stream, long fileSize, HFileSystem hfs, Path path,<a name="line.1366"></a>
-<span class="sourceLineNo">1367</span>        HFileContext fileContext) throws IOException {<a name="line.1367"></a>
-<span class="sourceLineNo">1368</span>      this.fileSize = fileSize;<a name="line.1368"></a>
-<span class="sourceLineNo">1369</span>      this.hfs = hfs;<a name="line.1369"></a>
-<span class="sourceLineNo">1370</span>      this.path = path;<a name="line.1370"></a>
-<span class="sourceLineNo">1371</span>      this.fileContext = fileContext;<a name="line.1371"></a>
-<span class="sourceLineNo">1372</span>      this.hdrSize = headerSize(fileContext.isUseHBaseChecksum());<a name="line.1372"></a>
-<span class="sourceLineNo">1373</span><a name="line.1373"></a>
-<span class="sourceLineNo">1374</span>      this.streamWrapper = stream;<a name="line.1374"></a>
-<span class="sourceLineNo">1375</span>      // Older versions of HBase didn't support checksum.<a name="line.1375"></a>
-<span class="sourceLineNo">1376</span>      this.streamWrapper.prepareForBlockReader(!fileContext.isUseHBaseChecksum());<a name="line.1376"></a>
-<span class="sourceLineNo">1377</span>      defaultDecodingCtx = new HFileBlockDefaultDecodingContext(fileContext);<a name="line.1377"></a>
-<span class="sourceLineNo">1378</span>      encodedBlockDecodingCtx = defaultDecodingCtx;<a name="line.1378"></a>
-<span class="sourceLineNo">1379</span>    }<a name="line.1379"></a>
-<span class="sourceLineNo">1380</span><a name="line.1380"></a>
-<span class="sourceLineNo">1381</span>    /**<a name="line.1381"></a>
-<span class="sourceLineNo">1382</span>     * A constructor that reads files with the latest minor version.<a name="line.1382"></a>
-<span class="sourceLineNo">1383</span>     * This is used by unit tests only.<a name="line.1383"></a>
-<span class="sourceLineNo">1384</span>     */<a name="line.1384"></a>
-<span class="sourceLineNo">1385</span>    FSReaderImpl(FSDataInputStream istream, long fileSize, HFileContext fileContext)<a name="line.1385"></a>
-<span class="sourceLineNo">1386</span>    throws IOException {<a name="line.1386"></a>
-<span class="sourceLineNo">1387</span>      this(new FSDataInputStreamWrapper(istream), fileSize, null, null, fileContext);<a name="line.1387"></a>
-<span class="sourceLineNo">1388</span>    }<a name="line.1388"></a>
-<span class="sourceLineNo">1389</span><a name="line.1389"></a>
-<span class="sourceLineNo">1390</span>    public BlockIterator blockRange(final long startOffset, final long endOffset) {<a name="line.1390"></a>
-<span class="sourceLineNo">1391</span>      final FSReader owner = this; // handle for inner class<a name="line.1391"></a>
-<span class="sourceLineNo">1392</span>      return new BlockIterator() {<a name="line.1392"></a>
-<span class="sourceLineNo">1393</span>        private long offset = startOffset;<a name="line.1393"></a>
-<span class="sourceLineNo">1394</span><a name="line.1394"></a>
-<span class="sourceLineNo">1395</span>        @Override<a name="line.1395"></a>
-<span class="sourceLineNo">1396</span>        public HFileBlock nextBlock() throws IOException {<a name="line.1396"></a>
-<span class="sourceLineNo">1397</span>          if (offset &gt;= endOffset)<a name="line.1397"></a>
-<span class="sourceLineNo">1398</span>            return null;<a name="line.1398"></a>
-<span class="sourceLineNo">1399</span>          HFileBlock b = readBlockData(offset, -1, -1, false);<a name="line.1399"></a>
-<span class="sourceLineNo">1400</span>          offset += b.getOnDiskSizeWithHeader();<a name="line.1400"></a>
-<span class="sourceLineNo">1401</span>          return b.unpack(fileContext, owner);<a name="line.1401"></a>
-<span class="sourceLineNo">1402</span>        }<a name="line.1402"></a>
-<span class="sourceLineNo">1403</span><a name="line.1403"></a>
-<span class="sourceLineNo">1404</span>        @Override<a name="line.1404"></a>
-<span class="sourceLineNo">1405</span>        public HFileBlock nextBlockWithBlockType(BlockType blockType)<a name="line.1405"></a>
-<span class="sourceLineNo">1406</span>            throws IOException {<a name="line.1406"></a>
-<span class="sourceLineNo">1407</span>          HFileBlock blk = nextBlock();<a name="line.1407"></a>
-<span class="sourceLineNo">1408</span>          if (blk.getBlockType() != blockType) {<a name="line.1408"></a>
-<span class="sourceLineNo">1409</span>            throw new IOException("Expected block of type " + blockType<a name="line.1409"></a>
-<span class="sourceLineNo">1410</span>                + " but found " + blk.getBlockType());<a name="line.1410"></a>
-<span class="sourceLineNo">1411</span>          }<a name="line.1411"></a>
-<span class="sourceLineNo">1412</span>          return blk;<a name="line.1412"></a>
-<span class="sourceLineNo">1413</span>        }<a name="line.1413"></a>
-<span class="sourceLineNo">1414</span>      };<a name="line.1414"></a>
-<span class="sourceLineNo">1415</span>    }<a name="line.1415"></a>
-<span class="sourceLineNo">1416</span><a name="line.1416"></a>
-<span class="sourceLineNo">1417</span>    /**<a name="line.1417"></a>
-<span class="sourceLineNo">1418</span>     * Does a positional read or a seek and read into the given buffer. Returns<a name="line.1418"></a>
-<span class="sourceLineNo">1419</span>     * the on-disk size of the next block, or -1 if it could not be determined.<a name="line.1419"></a>
-<span class="sourceLineNo">1420</span>     *<a name="line.1420"></a>
-<span class="sourceLineNo">1421</span>     * @param dest destination buffer<a name="line.1421"></a>
-<span class="sourceLineNo">1422</span>     * @param destOffset offset in the destination buffer<a name="line.1422"></a>
-<span class="sourceLineNo">1423</span>     * @param size size of the block to be read<a name="line.1423"></a>
-<span class="sourceLineNo">1424</span>     * @param peekIntoNextBlock whether to read the next block's on-disk size<a name="line.1424"></a>
-<span class="sourceLineNo">1425</span>     * @param fileOffset position in the stream to read at<a name="line.1425"></a>
-<span class="sourceLineNo">1426</span>     * @param pread whether we should do a positional read<a name="line.1426"></a>
-<span class="sourceLineNo">1427</span>     * @param istream The input source of data<a name="line.1427"></a>
-<span class="sourceLineNo">1428</span>     * @return the on-disk size of the next block with header size included, or<a name="line.1428"></a>
-<span class="sourceLineNo">1429</span>     *         -1 if it could not be determined<a name="line.1429"></a>
-<span class="sourceLineNo">1430</span>     * @throws IOException<a name="line.1430"></a>
-<span class="sourceLineNo">1431</span>     */<a name="line.1431"></a>
-<span class="sourceLineNo">1432</span>    protected int readAtOffset(FSDataInputStream istream,<a name="line.1432"></a>
-<span class="sourceLineNo">1433</span>        byte[] dest, int destOffset, int size,<a name="line.1433"></a>
-<span class="sourceLineNo">1434</span>        boolean peekIntoNextBlock, long fileOffset, boolean pread)<a name="line.1434"></a>
-<span class="sourceLineNo">1435</span>        throws IOException {<a name="line.1435"></a>
-<span class="sourceLineNo">1436</span>      if (peekIntoNextBlock &amp;&amp;<a name="line.1436"></a>
-<span class="sourceLineNo">1437</span>          destOffset + size + hdrSize &gt; dest.length) {<a name="line.1437"></a>
-<span class="sourceLineNo">1438</span>        // We are asked to read the next block's header as well, but there is<a name="line.1438"></a>
-<span class="sourceLineNo">1439</span>        // not enough room in the array.<a name="line.1439"></a>
-<span class="sourceLineNo">1440</span>        throw new IOException("Attempted to read " + size + " bytes and " +<a name="line.1440"></a>
-<span class="sourceLineNo">1441</span>            hdrSize + " bytes of next header into a " + dest.length +<a name="line.1441"></a>
-<span class="sourceLineNo">1442</span>            "-byte array at offset " + destOffset);<a name="line.1442"></a>
-<span class="sourceLineNo">1443</span>      }<a name="line.1443"></a>
-<span class="sourceLineNo">1444</span><a name="line.1444"></a>
-<span class="sourceLineNo">1445</span>      if (!pread &amp;&amp; streamLock.tryLock()) {<a name="line.1445"></a>
-<span class="sourceLineNo">1446</span>        // Seek + read. Better for scanning.<a name="line.1446"></a>
-<span class="sourceLineNo">1447</span>        try {<a name="line.1447"></a>
-<span class="sourceLineNo">1448</span>          istream.seek(fileOffset);<a name="line.1448"></a>
-<span class="sourceLineNo">1449</span><a name="line.1449"></a>
-<span class="sourceLineNo">1450</span>          long realOffset = istream.getPos();<a name="line.1450"></a>
-<span class="sourceLineNo">1451</span>          if (realOffset != fileOffset) {<a name="line.1451"></a>
-<span class="sourceLineNo">1452</span>            throw new IOException("Tried to seek to " + fileOffset + " to "<a name="line.1452"></a>
-<span class="sourceLineNo">1453</span>                + "read " + size + " bytes, but pos=" + realOffset<a name="line.1453"></a>
-<span class="sourceLineNo">1454</span>                + " after seek");<a name="line.1454"></a>
-<span class="sourceLineNo">1455</span>          }<a name="line.1455"></a>
-<span class="sourceLineNo">1456</span><a name="line.1456"></a>
-<span class="sourceLineNo">1457</span>          if (!peekIntoNextBlock) {<a name="line.1457"></a>
-<span class="sourceLineNo">1458</span>            IOUtils.readFully(istream, dest, destOffset, size);<a name="line.1458"></a>
-<span class="sourceLineNo">1459</span>            return -1;<a name="line.1459"></a>
-<span class="sourceLineNo">1460</span>          }<a name="line.1460"></a>
-<span class="sourceLineNo">1461</span><a name="line.1461"></a>
-<span class="sourceLineNo">1462</span>          // Try to read the next block header.<a name="line.1462"></a>
-<span class="sourceLineNo">1463</span>          if (!readWithExtra(istream, dest, destOffset, size, hdrSize))<a name="line.1463"></a>
-<span class="sourceLineNo">1464</span>            return -1;<a name="line.1464"></a>
-<span class="sourceLineNo">1465</span>        } finally {<a name="line.1465"></a>
-<span class="sourceLineNo">1466</span>          streamLock.unlock();<a name="line.1466"></a>
-<span class="sourceLineNo">1467</span>        }<a name="line.1467"></a>
-<span class="sourceLineNo">1468</span>      } else {<a name="line.1468"></a>
-<span class="sourceLineNo">1469</span>        // Positional read. Better for random reads; or when the streamLock is already locked.<a name="line.1469"></a>
-<span class="sourceLineNo">1470</span>        int extraSize = peekIntoNextBlock ? hdrSize : 0;<a name="line.1470"></a>
-<span class="sourceLineNo">1471</span>        if (!positionalReadWithExtra(istream, fileOffset, dest, destOffset,<a name="line.1471"></a>
-<span class="sourceLineNo">1472</span>            size, extraSize)) {<a name="line.1472"></a>
-<span class="sourceLineNo">1473</span>          return -1;<a name="line.1473"></a>
-<span class="sourceLineNo">1474</span>        }<a name="line.1474"></a>
-<span class="sourceLineNo">1475</span>      }<a name="line.1475"></a>
-<span class="sourceLineNo">1476</span><a name="line.1476"></a>
-<span class="sourceLineNo">1477</span>      assert peekIntoNextBlock;<a name="line.1477"></a>
-<span class="sourceLineNo">1478</span>      return Bytes.toInt(dest, destOffset + size + BlockType.MAGIC_LENGTH) + hdrSize;<a name="line.1478"></a>
-<span class="sourceLineNo">1479</span>    }<a name="line.1479"></a>
-<span class="sourceLineNo">1480</span><a name="line.1480"></a>
-<span class="sourceLineNo">1481</span>    /**<a name="line.1481"></a>
-<span class="sourceLineNo">1482</span>     * Reads a version 2 block (version 1 blocks not supported and not expected). Tries to do as<a name="line.1482"></a>
-<span class="sourceLineNo">1483</span>     * little memory allocation as possible, using the provided on-disk size.<a name="line.1483"></a>
-<span class="sourceLineNo">1484</span>     *<a name="line.1484"></a>
-<span class="sourceLineNo">1485</span>     * @param offset the offset in the stream to read at<a name="line.1485"></a>
-<span class="sourceLineNo">1486</span>     * @param onDiskSizeWithHeaderL the on-disk size of the block, including<a name="line.1486"></a>
-<span class="sourceLineNo">1487</span>     *          the header, or -1 if unknown<a name="line.1487"></a>
-<span class="sourceLineNo">1488</span>     * @param uncompressedSize the uncompressed size of the the block. Always<a name="line.1488"></a>
-<span class="sourceLineNo">1489</span>     *          expected to be -1. This parameter is only used in version 1.<a name="line.1489"></a>
-<span class="sourceLineNo">1490</span>     * @param pread whether to use a positional read<a name="line.1490"></a>
-<span class="sourceLineNo">1491</span>     */<a name="line.1491"></a>
-<span class="sourceLineNo">1492</span>    @Override<a name="line.1492"></a>
-<span class="sourceLineNo">1493</span>    public HFileBlock readBlockData(long offset, long onDiskSizeWithHeaderL,<a name="line.1493"></a>
-<span class="sourceLineNo">1494</span>        int uncompressedSize, boolean pread)<a name="line.1494"></a>
-<span class="sourceLineNo">1495</span>    throws IOException {<a name="line.1495"></a>
-<span class="sourceLineNo">1496</span><a name="line.1496"></a>
-<span class="sourceLineNo">1497</span>      // get a copy of the current state of whether to validate<a name="line.1497"></a>
-<span class="sourceLineNo">1498</span>      // hbase checksums or not for this read call. This is not<a name="line.1498"></a>
-<span class="sourceLineNo">1499</span>      // thread-safe but the one constaint is that if we decide<a name="line.1499"></a>
-<span class="sourceLineNo">1500</span>      // to skip hbase checksum verification then we are<a name="line.1500"></a>
-<span class="sourceLineNo">1501</span>      // guaranteed to use hdfs checksum verification.<a name="line.1501"></a>
-<span class="sourceLineNo">1502</span>      boolean doVerificationThruHBaseChecksum = streamWrapper.shouldUseHBaseChecksum();<a name="line.1502"></a>
-<span class="sourceLineNo">1503</span>      FSDataInputStream is = streamWrapper.getStream(doVerificationThruHBaseChecksum);<a name="line.1503"></a>
-<span class="sourceLineNo">1504</span><a name="line.1504"></a>
-<span class="sourceLineNo">1505</span>      HFileBlock blk = readBlockDataInternal(is, offset,<a name="line.1505"></a>
-<span class="sourceLineNo">1506</span>                         onDiskSizeWithHeaderL,<a name="line.1506"></a>
-<span class="sourceLineNo">1507</span>                         uncompressedSize, pread,<a name="line.1507"></a>
-<span class="sourceLineNo">1508</span>                         doVerificationThruHBaseChecksum);<a name="line.1508"></a>
-<span class="sourceLineNo">1509</span>      if (blk == null) {<a name="line.1509"></a>
-<span class="sourceLineNo">1510</span>        HFile.LOG.warn("HBase checksum verification failed for file " +<a name="line.1510"></a>
-<span class="sourceLineNo">1511</span>                       path + " at offset " +<a name="line.1511"></a>
-<span class="sourceLineNo">1512</span>                       offset + " filesize " + fileSize +<a name="line.1512"></a>
-<span class="sourceLineNo">1513</span>                       ". Retrying read with HDFS checksums turned on...");<a name="line.1513"></a>
-<span class="sourceLineNo">1514</span><a name="line.1514"></a>
-<span class="sourceLineNo">1515</span>        if (!doVerificationThruHBaseChecksum) {<a name="line.1515"></a>
-<span class="sourceLineNo">1516</span>          String msg = "HBase checksum verification failed for file " +<a name="line.1516"></a>
-<span class="sourceLineNo">1517</span>                       path + " at offset " +<a name="line.1517"></a>
-<span class="sourceLineNo">1518</span>                       offset + " filesize " + fileSize +<a name="line.1518"></a>
-<span class="sourceLineNo">1519</span>                       " but this cannot happen because doVerify is " +<a name="line.1519"></a>
-<span class="sourceLineNo">1520</span>                       doVerificationThruHBaseChecksum;<a name="line.1520"></a>
-<span class="sourceLineNo">1521</span>          HFile.LOG.warn(msg);<a name="line.1521"></a>
-<span class="sourceLineNo">1522</span>          throw new IOException(msg); // cannot happen case here<a name="line.1522"></a>
-<span class="sourceLineNo">1523</span>        }<a name="line.1523"></a>
-<span class="sourceLineNo">1524</span>        HFile.checksumFailures.incrementAndGet(); // update metrics<a name="line.1524"></a>
-<span class="sourceLineNo">1525</span><a name="line.1525"></a>
-<span class="sourceLineNo">1526</span>        // If we have a checksum failure, we fall back into a mode where<a name="line.1526"></a>
-<span class="sourceLineNo">1527</span>        // the next few reads use HDFS level checksums. We aim to make the<a name="line.1527"></a>
-<span class="sourceLineNo">1528</span>        // next CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD reads avoid<a name="line.1528"></a>
-<span class="sourceLineNo">1529</span>        // hbase checksum verification, but since this value is set without<a name="line.1529"></a>
-<span class="sourceLineNo">1530</span>        // holding any locks, it can so happen that we might actually do<a name="line.1530"></a>
-<span class="sourceLineNo">1531</span>        // a few more than precisely this number.<a name="line.1531"></a>
-<span class="sourceLineNo">1532</span>        is = this.streamWrapper.fallbackToFsChecksum(CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD);<a name="line.1532"></a>
-<span class="sourceLineNo">1533</span>        doVerificationThruHBaseChecksum = false;<a name="line.1533"></a>
-<span class="sourceLineNo">1534</span>        blk = readBlockDataInternal(is, offset, onDiskSizeWithHeaderL,<a name="line.1534"></a>
-<span class="sourceLineNo">1535</span>                                    uncompressedSize, pread,<a name="line.1535"></a>
-<span class="sourceLineNo">1536</span>                                    doVerificationThruHBaseChecksum);<a name="line.1536"></a>
-<span class="sourceLineNo">1537</span>        if (blk != null) {<a name="line.1537"></a>
-<span class="sourceLineNo">1538</span>          HFile.LOG.warn("HDFS checksum verification suceeded for file " +<a name="line.1538"></a>
-<span class="sourceLineNo">1539</span>                         path + " at offset " +<a name="line.1539"></a>
-<span class="sourceLineNo">1540</span>                         offset + " filesize " + fileSize);<a name="line.1540"></a>
-<span class="sourceLineNo">1541</span>        }<a name="line.1541"></a>
-<span class="sourceLineNo">1542</span>      }<a name="line.1542"></a>
-<span class="sourceLineNo">1543</span>      if (blk == null &amp;&amp; !doVerificationThruHBaseChecksum) {<a name="line.1543"></a>
-<span class="sourceLineNo">1544</span>        String msg = "readBlockData failed, possibly due to " +<a name="line.1544"></a>
-<span class="sourceLineNo">1545</span>                     "checksum verification failed for file " + path +<a name="line.1545"></a>
-<span class="sourceLineNo">1546</span>                     " at offset " + offset + " filesize " + fileSize;<a name="line.1546"></a>
-<span class="sourceLineNo">1547</span>        HFile.LOG.warn(msg);<a name="line.1547"></a>
-<span class="sourceLineNo">1548</span>        throw new IOException(msg);<a name="line.1548"></a>
-<span class="sourceLineNo">1549</span>      }<a name="line.1549"></a>
-<span class="sourceLineNo">1550</span><a name="line.1550"></a>
-<span class="sourceLineNo">1551</span>      // If there is a checksum mismatch earlier, then retry with<a name="line.1551"></a>
-<span class="sourceLineNo">1552</span>      // HBase checksums switched off and use HDFS checksum verification.<a name="line.1552"></a>
-<span class="sourceLineNo">1553</span>      // This triggers HDFS to detect and fix corrupt replicas. The<a name="line.1553"></a>
-<span class="sourceLineNo">1554</span>      // next checksumOffCount read requests will use HDFS checksums.<a name="line.1554"></a>
-<span class="sourceLineNo">1555</span>      // The decrementing of this.checksumOffCount is not thread-safe,<a name="line.1555"></a>
-<span class="sourceLineNo">1556</span>      // but it is harmless because eventually checksumOffCount will be<a name="line.1556"></a>
-<span class="sourceLineNo">1557</span>      // a negative number.<a name="line.1557"></a>
-<span class="sourceLineNo">1558</span>      streamWrapper.checksumOk();<a name="line.1558"></a>
-<span class="sourceLineNo">1559</span>      return blk;<a name="line.1559"></a>
-<span class="sourceLineNo">1560</span>    }<a name="line.1560"></a>
-<span class="sourceLineNo">1561</span><a name="line.1561"></a>
-<span class="sourceLineNo">1562</span>    /**<a name="line.1562"></a>
-<span class="sourceLineNo">1563</span>     * Reads a version 2 block.<a name="line.1563"></a>
-<span class="sourceLineNo">1564</span>     *<a name="line.1564"></a>
-<span class="sourceLineNo">1565</span>     * @param offset the offset in the stream to read at<a name="line.1565"></a>
-<span class="sourceLineNo">1566</span>     * @param onDiskSizeWithHeaderL the on-disk size of the block, including<a name="line.1566"></a>
-<span class="sourceLineNo">1567</span>     *          the header, or -1 if unknown<a name="line.1567"></a>
-<span class="sourceLineNo">1568</span>     * @param uncompressedSize the uncompressed size of the the block. Always<a name="line.1568"></a>
-<span class="sourceLineNo">1569</span>     *          expected to be -1. This parameter is only used in version 1.<a name="line.1569"></a>
-<span class="sourceLineNo">1570</span>     * @param pread whether to use a positional read<a name="line.1570"></a>
-<span class="sourceLineNo">1571</span>     * @param verifyChecksum Whether to use HBase checksums.<a name="line.1571"></a>
-<span class="sourceLineNo">1572</span>     *        If HBase checksum is switched off, then use HDFS checksum.<a name="line.1572"></a>
-<span class="sourceLineNo">1573</span>     * @return the HFileBlock or null if there is a HBase checksum mismatch<a name="line.1573"></a>
-<span class="sourceLineNo">1574</span>     */<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span>    private HFileBlock readBlockDataInternal(FSDataInputStream is, long offset,<a name="line.1575"></a>
-<span class="sourceLineNo">1576</span>        long onDiskSizeWithHeaderL, int uncompressedSize, boolean pread,<a name="line.1576"></a>
-<span class="sourceLineNo">1577</span>        boolean verifyChecksum)<a name="line.1577"></a>
-<span class="sourceLineNo">1578</span>    throws IOException {<a name="line.1578"></a>
-<span class="sourceLineNo">1579</span>      if (offset &lt; 0) {<a name="line.1579"></a>
-<span class="sourceLineNo">1580</span>        throw new IOException("Invalid offset=" + offset + " trying to read "<a name="line.1580"></a>
-<span class="sourceLineNo">1581</span>            + "block (onDiskSize=" + onDiskSizeWithHeaderL<a name="line.1581"></a>
-<span class="sourceLineNo">1582</span>            + ", uncompressedSize=" + uncompressedSize + ")");<a name="line.1582"></a>
-<span class="sourceLineNo">1583</span>      }<a name="line.1583"></a>
-<span class="sourceLineNo">1584</span><a name="line.1584"></a>
-<span class="sourceLineNo">1585</span>      if (uncompressedSize != -1) {<a name="line.1585"></a>
-<span class="sourceLineNo">1586</span>        throw new IOException("Version 2 block reader API does not need " +<a name="line.1586"></a>
-<span class="sourceLineNo">1587</span>            "the uncompressed size parameter");<a name="line.1587"></a>
-<span class="sourceLineNo">1588</span>      }<a name="line.1588"></a>
-<span class="sourceLineNo">1589</span><a name="line.1589"></a>
-<span class="sourceLineNo">1590</span>      if ((onDiskSizeWithHeaderL &lt; hdrSize &amp;&amp; onDiskSizeWithHeaderL != -1)<a name="line.1590"></a>
-<span class="sourceLineNo">1591</span>          || onDiskSizeWithHeaderL &gt;= Integer.MAX_VALUE) {<a name="line.1591"></a>
-<span class="sourceLineNo">1592</span>        throw new IOException("Invalid onDisksize=" + onDiskSizeWithHeaderL<a name="line.1592"></a>
-<span class="sourceLineNo">1593</span>            + ": expected to be at least " + hdrSize<a name="line.1593"></a>
-<span class="sourceLineNo">1594</span>            + " and at most " + Integer.MAX_VALUE + ", or -1 (offset="<a name="line.1594"></a>
-<span class="sourceLineNo">1595</span>            + offset + ", uncompressedSize=" + uncompressedSize + ")");<a name="line.1595"></a>
-<span class="sourceLineNo">1596</span>      }<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span><a name="line.1597"></a>
-<span class="sourceLineNo">1598</span>      int onDiskSizeWithHeader = (int) onDiskSizeWithHeaderL;<a name="line.1598"></a>
-<span class="sourceLineNo">1599</span>      // See if we can avoid reading the header. This is desirable, because<a name="line.1599"></a>
-<span class="sourceLineNo">1600</span>      // we will not incur a backward seek operation if we have already<a name="line.1600"></a>
-<span class="sourceLineNo">1601</span>      // read this block's header as part of the previous read's look-ahead.<a name="line.1601"></a>
-<span class="sourceLineNo">1602</span>      // And we also want to skip reading the header again if it has already<a name="line.1602"></a>
-<span class="sourceLineNo">1603</span>      // been read.<a name="line.1603"></a>
-<span class="sourceLineNo">1604</span>      // TODO: How often does this optimization fire? Has to be same thread so the thread local<a name="line.1604"></a>
-<span class="sourceLineNo">1605</span>      // is pertinent and we have to be reading next block as in a big scan.<a name="line.1605"></a>
-<span class="sourceLineNo">1606</span>      PrefetchedHeader prefetchedHeader = prefetchedHeaderForThread.get();<a name="line.1606"></a>
-<span class="sourceLineNo">1607</span>      ByteBuffer headerBuf = prefetchedHeader.offset == offset? prefetchedHeader.buf: null;<a name="line.1607"></a>
-<span class="sourceLineNo">1608</span><a name="line.1608"></a>
-<span class="sourceLineNo">1609</span>      // Allocate enough space to fit the next block's header too.<a name="line.1609"></a>
-<span class="sourceLineNo">1610</span>      int nextBlockOnDiskSize = 0;<a name="line.1610"></a>
-<span class="sourceLineNo">1611</span>      byte[] onDiskBlock = null;<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span><a name="line.1612"></a>
-<span class="sourceLineNo">1613</span>      HFileBlock b = null;<a name="line.1613"></a>
-<span class="sourceLineNo">1614</span>      if (onDiskSizeWithHeader &gt; 0) {<a name="line.1614"></a>
-<span class="sourceLineNo">1615</span>        // We know the total on-disk size. Read the entire block into memory,<a name="line.1615"></a>
-<span class="sourceLineNo">1616</span>        // then parse the header. This code path is used when<a name="line.1616"></a>
-<span class="sourceLineNo">1617</span>        // doing a random read operation relying on the block index, as well as<a name="line.1617"></a>
-<span class="sourceLineNo">1618</span>        // when the client knows the on-disk size from peeking into the next<a name="line.1618"></a>
-<span class="sourceLineNo">1619</span>        // block's header (e.g. this block's header) when reading the previous<a name="line.1619"></a>
-<span class="sourceLineNo">1620</span>        // block. This is the faster and more preferable case.<a name="line.1620"></a>
-<span class="sourceLineNo">1621</span><a name="line.1621"></a>
-<span class="sourceLineNo">1622</span>        // Size that we have to skip in case we have already read the header.<a name="line.1622"></a>
-<span class="sourceLineNo">1623</span>        int preReadHeaderSize = headerBuf == null ? 0 : hdrSize;<a name="line.1623"></a>
-<span class="sourceLineNo">1624</span>        onDiskBlock = new byte[onDiskSizeWithHeader + hdrSize]; // room for this block plus the<a name="line.1624"></a>
-<span class="sourceLineNo">1625</span>                                                                // next block's header<a name="line.1625"></a>
-<span class="sourceLineNo">1626</span>        nextBlockOnDiskSize = readAtOffset(is, onDiskBlock,<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span>            preReadHeaderSize, onDiskSizeWithHeader - preReadHeaderSize,<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span>            true, offset + preReadHeaderSize, pread);<a name="line.1628"></a>
-<span class="sourceLineNo">1629</span>        if (headerBuf != null) {<a name="line.1629"></a>
-<span class="sourceLineNo">1630</span>          // the header has been read when reading the previous block, copy<a name="line.1630"></a>
-<span class="sourceLineNo">1631</span>          // to this block's header<a name="line.1631"></a>
-<span class="sourceLineNo">1632</span>          // headerBuf is HBB<a name="line.1632"></a>
-<span class="sourceLineNo">1633</span>          assert headerBuf.hasArray();<a name="line.1633"></a>
-<span class="sourceLineNo">1634</span>          System.arraycopy(headerBuf.array(),<a name="line.1634"></a>
-<span class="sourceLineNo">1635</span>              headerBuf.arrayOffset(), onDiskBlock, 0, hdrSize);<a name="line.1635"></a>
-<span class="sourceLineNo">1636</span>        } else {<a name="line.1636"></a>
-<span class="sourceLineNo">1637</span>          headerBuf = ByteBuffer.wrap(onDiskBlock, 0, hdrSize);<a name="line.1637"></a>
-<span class="sourceLineNo">1638</span>        }<a name="line.1638"></a>
-<span class="sourceLineNo">1639</span>        // We know the total on-disk size but not the uncompressed size. Parse the header.<a name="line.1639"></a>
-<span class="sourceLineNo">1640</span>        try {<a name="line.1640"></a>
-<span class="sourceLineNo">1641</span>          // TODO: FIX!!! Expensive parse just to get a length<a name="line.1641"></a>
-<span class="sourceLineNo">1642</span>          b = new HFileBlock(headerBuf, fileContext.isUseHBaseChecksum());<a name="line.1642"></a>
-<span class="sourceLineNo">1643</span>        } catch (IOException ex) {<a name="line.1643"></a>
-<span class="sourceLineNo">1644</span>          // Seen in load testing. Provide comprehensive debug info.<a name="line.1644"></a>
-<span class="sourceLineNo">1645</span>          throw new IOException("Failed to read compressed block at "<a name="line.1645"></a>
-<span class="sourceLineNo">1646</span>              + offset<a name="line.1646"></a>
-<span class="sourceLineNo">1647</span>              + ", onDiskSizeWithoutHeader="<a name="line.1647"></a>
-<span class="sourceLineNo">1648</span>              + onDiskSizeWithHeader<a name="line.1648"></a>
-<span class="sourceLineNo">1649</span>              + ", preReadHeaderSize="<a name="line.1649"></a>
-<span class="sourceLineNo">1650</span>              + hdrSize<a name="line.1650"></a>
-<span class="sourceLineNo">1651</span>              + ", header.length="<a name="line.1651"></a>
-<span class="sourceLineNo">1652</span>              + prefetchedHeader.header.length<a name="line.1652"></a>
-<span class="sourceLineNo">1653</span>              + ", header bytes: "<a name="line.1653"></a>
-<span class="sourceLineNo">1654</span>              + Bytes.toStringBinary(prefetchedHeader.header, 0,<a name="line.1654"></a>
-<span class="sourceLineNo">1655</span>                  hdrSize), ex);<a name="line.1655"></a>
-<span class="sourceLineNo">1656</span>        }<a name="line.1656"></a>
-<span class="sourceLineNo">1657</span>        // if the caller specifies a onDiskSizeWithHeader, validate it.<a name="line.1657"></a>
-<span class="sourceLineNo">1658</span>        int onDiskSizeWithoutHeader = onDiskSizeWithHeader - hdrSize;<a name="line.1658"></a>
-<span class="sourceLineNo">1659</span>        assert onDiskSizeWithoutHeader &gt;= 0;<a name="line.1659"></a>
-<span class="sourceLineNo">1660</span>        b.validateOnDiskSizeWithoutHeader(onDiskSizeWithoutHeader);<a name="line.1660"></a>
-<span class="sourceLineNo">1661</span>      } else {<a name="line.1661"></a>
-<span class="sourceLineNo">1662</span>        // Check headerBuf to see if we have read this block's header as part of<a name="line.1662"></a>
-<span class="sourceLineNo">1663</span>        // reading the previous block. This is an optimization of peeking into<a name="line.1663"></a>
-<span class="sourceLineNo">1664</span>        // the next block's header (e.g.this block's header) when reading the<a name="line.1664"></a>
-<span class="sourceLineNo">1665</span>        // previous block. This is the faster and more preferable case. If the<a name="line.1665"></a>
-<span class="sourceLineNo">1666</span>        // header is already there, don't read the header again.<a name="line.1666"></a>
-<span class="sourceLineNo">1667</span><a name="line.1667"></a>
-<span class="sourceLineNo">1668</span>        // Unfortunately, we still have to do a separate read operation to<a name="line.1668"></a>
-<span class="sourceLineNo">1669</span>        // read the header.<a name="line.1669"></a>
-<span class="sourceLineNo">1670</span>        if (headerBuf == null) {<a name="line.1670"></a>
-<span class="sourceLineNo">1671</span>          // From the header, determine the on-disk size of the given hfile<a name="line.1671"></a>
-<span class="sourceLineNo">1672</span>          // block, and read the remaining data, thereby incurring two read<a name="line.1672"></a>
-<span class="sourceLineNo">1673</span>          // operations. This might happen when we are doing the first read<a name="line.1673"></a>
-<span class="sourceLineNo">1674</span>          // in a series of reads or a random read, and we don't have access<a name="line.1674"></a>
-<span class="sourceLineNo">1675</span>          // to the block index. This is costly and should happen very rarely.<a name="line.1675"></a>
-<span class="sourceLineNo">1676</span>          headerBuf = ByteBuffer.allocate(hdrSize);<a name="line.1676"></a>
-<span class="sourceLineNo">1677</span>          // headerBuf is HBB<a name="line.1677"></a>
-<span class="sourceLineNo">1678</span>          readAtOffset(is, headerBuf.array(), headerBuf.arrayOffset(),<a name="line.1678"></a>
-<span class="sourceLineNo">1679</span>              hdrSize, false, offset, pread);<a name="line.1679"></a>
-<span class="sourceLineNo">1680</span>        }<a name="line.1680"></a>
-<span class="sourceLineNo">1681</span>        // TODO: FIX!!! Expensive parse just to get a length<a name="line.1681"></a>
-<span class="sourceLineNo">1682</span>        b = new HFileBlock(headerBuf, fileContext.isUseHBaseChecksum());<a name="line.1682"></a>
-<span class="sourceLineNo">1683</span>        onDiskBlock = new byte[b.getOnDiskSizeWithHeader() + hdrSize];<a name="line.1683"></a>
-<span class="sourceLineNo">1684</span>        // headerBuf is HBB<a name="line.1684"></a>
-<span class="sourceLineNo">1685</span>        System.arraycopy(headerBuf.array(), headerBuf.arrayOffset(), onDiskBlock, 0, hdrSize);<a name="line.1685"></a>
-<span class="sourceLineNo">1686</span>        nextBlockOnDiskSize =<a name="line.1686"></a>
-<span class="sourceLineNo">1687</span>          readAtOffset(is, onDiskBlock, hdrSize, b.getOnDiskSizeWithHeader()<a name="line.1687"></a>
-<span class="sourceLineNo">1688</span>              - hdrSize, true, offset + hdrSize, pread);<a name="line.1688"></a>
-<span class="sourceLineNo">1689</span>        onDiskSizeWithHeader = b.onDiskSizeWithoutHeader + hdrSize;<a name="line.1689"></a>
-<span class="sourceLineNo">1690</span>      }<a name="line.1690"></a>
-<span class="sourceLineNo">1691</span><a name="line.1691"></a>
-<span class="sourceLineNo">1692</span>      if (!fileContext.isCompressedOrEncrypted()) {<a name="line.1692"></a>
-<span class="sourceLineNo">1693</span>        b.assumeUncompressed();<a name="line.1693"></a>
-<span class="sourceLineNo">1694</span>      }<a name="line.1694"></a>
-<span class="sourceLineNo">1695</span><a name="line.1695"></a>
-<span class="sourceLineNo">1696</span>      if (verifyChecksum &amp;&amp; !validateBlockChecksum(b, onDiskBlock, hdrSize)) {<a name="line.1696"></a>
-<span class="sourceLineNo">1697</span>        return null;             // checksum mismatch<a name="line.1697"></a>
-<span class="sourceLineNo">1698</span>      }<a name="line.1698"></a>
-<span class="sourceLineNo">1699</span><a name="line.1699"></a>
-<span class="sourceLineNo">1700</span>      // The onDiskBlock will become the headerAndDataBuffer for this block.<a name="line.1700"></a>
-<span class="sourceLineNo">1701</span>      // If nextBlockOnDiskSizeWithHeader is not zero, the onDiskBlock already<a name="line.1701"></a>
-<span class="sourceLineNo">1702</span>      // contains the header of next block, so no need to set next<a name="line.1702"></a>
-<span class="sourceLineNo">1703</span>      // block's header in it.<a name="line.1703"></a>
-<span class="sourceLineNo">1704</span>      b = new HFileBlock(ByteBuffer.wrap(onDiskBlock, 0, onDiskSizeWithHeader),<a name="line.1704"></a>
-<span class="sourceLineNo">1705</span>        this.fileContext.isUseHBaseChecksum());<a name="line.1705"></a>
-<span class="sourceLineNo">1706</span><a name="line.1706"></a>
-<span class="sourceLineNo">1707</span>      b.nextBlockOnDiskSizeWithHeader = nextBlockOnDiskSize;<a name="line.1707"></a>
-<span class="sourceLineNo">1708</span><a name="line.1708"></a>
-<span class="sourceLineNo">1709</span>      // Set prefetched header<a name="line.1709"></a>
-<span class="sourceLineNo">1710</span>      if (b.hasNextBlockHeader()) {<a name="line.1710"></a>
-<span class="sourceLineNo">1711</span>        prefetchedHeader.offset = offset + b.getOnDiskSizeWithHeader();<a name="line.1711"></a>
-<span class="sourceLineNo">1712</span>        System.arraycopy(onDiskBlock, onDiskSizeWithHeader, prefetchedHeader.header, 0, hdrSize);<a name="line.1712"></a>
-<span class="sourceLineNo">1713</span>      }<a name="line.1713"></a>
-<span class="sourceLineNo">1714</span><a name="line.1714"></a>
-<span class="sourceLineNo">1715</span>      b.offset = offset;<a name="line.1715"></a>
-<span class="sourceLineNo">1716</span>      b.fileContext.setIncludesTags(this.fileContext.isIncludesTags());<a name="line.1716"></a>
-<span class="sourceLineNo">1717</span>      b.fileContext.setIncludesMvcc(this.fileContext.isIncludesMvcc());<a name="line.1717"></a>
-<span class="sourceLineNo">1718</span>      return b;<a name="line.1718"></a>
-<span class="sourceLineNo">1719</span>    }<a name="line.1719"></a>
-<span class="sourceLineNo">1720</span><a name="line.1720"></a>
-<span class="sourceLineNo">1721</span>    public void setIncludesMemstoreTS(boolean includesMemstoreTS) {<a name="line.1721"></a>
-<span class="sourceLineNo">1722</span>      this.fileContext.setIncludesMvcc(includesMemstoreTS);<a name="line.1722"></a>
-<span class="sourceLineNo">1723</span>    }<a name="line.1723"></a>
-<span class="sourceLineNo">1724</span><a name="line.1724"></a>
-<span class="sourceLineNo">1725</span>    public void setDataBlockEncoder(HFileDataBlockEncoder encoder) {<a name="line.1725"></a>
-<span class="sourceLineNo">1726</span>      encodedBlockDecodingCtx = encoder.newDataBlockDecodingContext(this.fileContext);<a name="line.1726"></a>
-<span class="sourceLineNo">1727</span>    }<a name="line.1727"></a>
-<span class="sourceLineNo">1728</span><a name="line.1728"></a>
-<span class="sourceLineNo">1729</span>    @Override<a name="line.1729"></a>
-<span class="sourceLineNo">1730</span>    public HFileBlockDecodingContext getBlockDecodingContext() {<a name="line.1730"></a>
-<span class="sourceLineNo">1731</span>      return this.encodedBlockDecodingCtx;<a name="line.1731"></a>
-<span class="sourceLineNo">1732</span>    }<a name="line.1732"></a>
-<span class="sourceLineNo">1733</span><a name="line.1733"></a>
-<span class="sourceLineNo">1734</span>    @Override<a name="line.1734"></a>
-<span class="sourceLineNo">1735</span>    public HFileBlockDecodingContext getDefaultBlockDecodingContext() {<a name="line.1735"></a>
-<span class="sourceLineNo">1736</span>      return this.defaultDecodingCtx;<a name="line.1736"></a>
-<span class="sourceLineNo">1737</span>    }<a name="line.1737"></a>
-<span class="sourceLineNo">1738</span><a name="line.1738"></a>
-<span class="sourceLineNo">1739</span>    /**<a name="line.1739"></a>
-<span class="sourceLineNo">1740</span>     * Generates the checksum for the header as well as the data and<a name="line.1740"></a>
-<span class="sourceLineNo">1741</span>     * then validates that it matches the value stored in the header.<a name="line.1741"></a>
-<span class="sourceLineNo">1742</span>     * If there is a checksum mismatch, then return false. Otherwise<a name="line.1742"></a>
-<span class="sourceLineNo">1743</span>     * return true.<a name="line.1743"></a>
-<span class="sourceLineNo">1744</span>     */<a name="line.1744"></a>
-<span class="sourceLineNo">1745</span>    protected boolean validateBlockChecksum(HFileBlock block,  byte[] data, int hdrSize)<a name="line.1745"></a>
-<span class="sourceLineNo">1746</span>        throws IOException {<a name="line.1746"></a>
-<span class="sourceLineNo">1747</span>      return ChecksumUtil.validateBlockChecksum(path, block, data, hdrSize);<a name="line.1747"></a>
-<span class="sourceLineNo">1748</span>    }<a name="line.1748"></a>
-<span class="sourceLineNo">1749</span><a name="line.1749"></a>
-<span class="sourceLineNo">1750</span>    @Override<a name="line.1750"></a>
-<span class="sourceLineNo">1751</span>    public void closeStreams() throws IOException {<a name="line.1751"></a>
-<span class="sourceLineNo">1752</span>      streamWrapper.close();<a name="line.1752"></a>
-<span class="sourceLineNo">1753</span>    }<a name="line.1753"></a>
-<span class="sourceLineNo">1754</span><a name="line.1754"></a>
-<span class="sourceLineNo">1755</span>    @Override<a name="line.1755"></a>
-<span class="sourceLineNo">1756</span>    public String toString() {<a name="line.1756"></a>
-<span class="sourceLineNo">1757</span>      return "hfs=" + hfs + ", path=" + path + ", fileContext=" + fileContext;<a name="line.1757"></a>
-<span class="sourceLineNo">1758</span>    }<a name="line.1758"></a>
-<span class="sourceLineNo">1759</span>  }<a name="line.1759"></a>
-<span class="sourceLineNo">1760</span><a name="line.1760"></a>
-<span class="sourceLineNo">1761</span>  @Override<a name="line.1761"></a>
-<span class="sourceLineNo">1762</span>  public int getSerializedLength() {<a name="line.1762"></a>
-<span class="sourceLineNo">1763</span>    if (buf != null) {<a name="line.1763"></a>
-<span class="sourceLineNo">1764</span>      // include extra bytes for the next header when it's available.<a name="line.1764"></a>
-<span class="sourceLineNo">1765</span>      int extraSpace = hasNextBlockHeader() ? headerSize() : 0;<a name="line.1765"></a>
-<span class="sourceLineNo">1766</span>      return this.buf.limit() + extraSpace + HFileBlock.EXTRA_SERIALIZATION_SPACE;<a name="line.1766"></a>
-<span class="sourceLineNo">1767</span>    }<a name="line.1767"></a>
-<span class="sourceLineNo">1768</span>    return 0;<a name="line.1768"></a>
-<span class="sourceLineNo">1769</span>  }<a name="line.1769"></a>
-<span class="sourceLineNo">1770</span><a name="line.1770"></a>
-<span class="sourceLineNo">1771</span>  @Override<a name="line.1771"></a>
-<span class="sourceLineNo">1772</span>  public void serialize(ByteBuffer destination) {<a name="line.1772"></a>
-<span class="sourceLineNo">1773</span>    this.buf.get(destination, 0, getSerializedLength()<a name="line.1773"></a>
-<span class="sourceLineNo">1774</span>        - EXTRA_SERIALIZATION_SPACE);<a name="line.1774"></a>
-<span class="sourceLineNo">1775</span>    serializeExtraInfo(destination);<a name="line.1775"></a>
-<span class="sourceLineNo">1776</span>  }<a name="line.1776"></a>
-<span class="sourceLineNo">1777</span><a name="line.1777"></a>
-<span class="sourceLineNo">1778</span>  public void serializeExtraInfo(ByteBuffer destination) {<a name="line.1778"></a>
-<span class="sourceLineNo">1779</span>    destination.put(this.fileContext.isUseHBaseChecksum() ? (byte) 1 : (byte) 0);<a name="line.1779"></a>
-<span class="sourceLineNo">1780</span>    destination.putLong(this.offset);<a name="line.1780"></a>
-<span class="sourceLineNo">1781</span>    destination.putInt(this.nextBlockOnDiskSizeWithHeader);<a name="line.1781"></a>
-<span class="sourceLineNo">1782</span>    destination.rewind();<a name="line.1782"></a>
-<span class="sourceLineNo">1783</span>  }<a name="line.1783"></a>
-<span class="sourceLineNo">1784</span><a name="line.1784"></a>
-<span class="sourceLineNo">1785</span>  @Override<a name="line.1785"></a>
-<span class="sourceLineNo">1786</span>  public CacheableDeserializer&lt;Cacheable&gt; getDeserializer() {<a name="line.1786"></a>
-<span class="sourceLineNo">1787</span>    return HFileBlock.blockDeserializer;<a name="line.1787"></a>
-<span class="sourceLineNo">1788</span>  }<a name="line.1788"></a>
-<span class="sourceLineNo">1789</span><a name="line.1789"></a>
-<span class="sourceLineNo">1790</span>  @Override<a name="line.1790"></a>
-<span class="sourceLineNo">1791</span>  public int hashCode() {<a name="line.1791"></a>
-<span class="sourceLineNo">1792</span>    int result = 1;<a name="line.1792"></a>
-<span class="sourceLineNo">1793</span>    result = result * 31 + blockType.hashCode();<a name="line.1793"></a>
-<span class="sourceLineNo">1794</span>    result = result * 31 + nextBlockOnDiskSizeWithHeader;<a name="line.1794"></a>
-<span class="sourceLineNo">1795</span>    result = result * 31 + (int) (offset ^ (offset &gt;&gt;&gt; 32));<a name="line.1795"></a>
-<span class="sourceLineNo">1796</span>    result = result * 31 + onDiskSizeWithoutHeader;<a name="line.1796"></a>
-<span class="sourceLineNo">1797</span>    result = result * 31 + (int) (prevBlockOffset ^ (prevBlockOffset &gt;&gt;&gt; 32));<a name="line.1797"></a>
-<span class="sourceLineNo">1798</span>    result = result * 31 + uncompressedSizeWithoutHeader;<a name="line.1798"></a>
-<span class="sourceLineNo">1799</span>    result = result * 31 + buf.hashCode();<a name="line.1799"></a>
-<span class="sourceLineNo">1800</span>    return result;<a name="line.1800"></a>
-<span class="sourceLineNo">1801</span>  }<a name="line.1801"></a>
-<span class="sourceLineNo">1802</span><a name="line.1802"></a>
-<span class="sourceLineNo">1803</span>  @Override<a name="line.1803"></a>
-<span class="sourceLineNo">1804</span>  public boolean equals(Object comparison) {<a name="line.1804"></a>
-<span class="sourceLineNo">1805</span>    if (this == comparison) {<a name="line.1805"></a>
-<span class="sourceLineNo">1806</span>      return true;<a name="line.1806"></a>
-<span class="sourceLineNo">1807</span>    }<a name="line.1807"></a>
-<span class="sourceLineNo">1808</span>    if (comparison == null) {<a name="line.1808"></a>
-<span class="sourceLineNo">1809</span>      return false;<a name="line.1809"></a>
-<span class="sourceLineNo">1810</span>    }<a name="line.1810"></a>
-<span class="sourceLineNo">1811</span>    if (comparison.getClass() != this.getClass()) {<a name="line.1811"></a>
-<span class="sourceLineNo">1812</span>      return false;<a name="line.1812"></a>
-<span class="sourceLineNo">1813</span>    }<a name="line.1813"></a>
-<span class="sourceLineNo">1814</span><a name="line.1814"></a>
-<span class="sourceLineNo">1815</span>    HFileBlock castedComparison = (HFileBlock) comparison;<a name="line.1815"></a>
-<span class="sourceLineNo">1816</span><a name="line.1816"></a>
-<span class="sourceLineNo">1817</span>    if (castedComparison.blockType != this.blockType) {<a name="line.1817"></a>
-<span class="sourceLineNo">1818</span>      return false;<a name="line.1818"></a>
-<span class="sourceLineNo">1819</span>    }<a name="line.1819"></a>
-<span class="sourceLineNo">1820</span>    if (castedComparison.nextBlockOnDiskSizeWithHeader != this.nextBlockOnDiskSizeWithHeader) {<a name="line.1820"></a>
-<span class="sourceLineNo">1821</span>      return false;<a name="line.1821"></a>
-<span class="sourceLineNo">1822</span>    }<a name="line.1822"></a>
-<span class="sourceLineNo">1823</span>    if (castedComparison.offset != this.offset) {<a name="line.1823"></a>
-<span class="sourceLineNo">1824</span>      return false;<a name="line.1824"></a>
-<span class="sourceLineNo">1825</span>    }<a name="line.1825"></a>
-<span class="sourceLineNo">1826</span>    if (castedComparison.onDiskSizeWithoutHeader != this.onDiskSizeWithoutHeader) {<a name="line.1826"></a>
-<span class="sourceLineNo">1827</span>      return false;<a name="line.1827"></a>
-<span class="sourceLineNo">1828</span>    }<a name="line.1828"></a>
-<span class="sourceLineNo">1829</span>    if (castedComparison.prevBlockOffset != this.prevBlockOffset) {<a name="line.1829"></a>
-<span class="sourceLineNo">1830</span>      return false;<a name="line.1830"></a>
-<span class="sourceLineNo">1831</span>    }<a name="line.1831"></a>
-<span class="sourceLineNo">1832</span>    if (castedComparison.uncompressedSizeWithoutHeader != this.uncompressedSizeWithoutHeader) {<a name="line.1832"></a>
-<span class="sourceLineNo">1833</span>      return false;<a name="line.1833"></a>
-<span class="sourceLineNo">1834</span>    }<a name="line.1834"></a>
-<span class="sourceLineNo">1835</span>    if (ByteBuff.compareTo(this.buf, 0, this.buf.limit(), castedComparison.buf, 0,<a name="line.1835"></a>
-<span class="sourceLineNo">1836</span>        castedComparison.buf.limit()) != 0) {<a name="line.1836"></a>
-<span class="sourceLineNo">1837</span>      return false;<a name="line.1837"></a>
-<span class="sourceLineNo">1838</span>    }<a name="line.1838"></a>
-<span class="sourceLineNo">1839</span>    return true;<a name="line.1839"></a>
-<span class="sourceLineNo">1840</span>  }<a name="line.1840"></a>
-<span class="sourceLineNo">1841</span><a name="line.1841"></a>
-<span class="sourceLineNo">1842</span>  public DataBlockEncoding getDataBlockEncoding() {<a name="line.1842"></a>
-<span class="sourceLineNo">1843</span>    if (blockType == BlockType.ENCODED_DATA) {<a name="line.1843"></a>
-<span class="sourceLineNo">1844</span>      return DataBlockEncoding.getEncodingById(getDataBlockEncodingId());<a name="line.1844"></a>
-<span class="sourceLineNo">1845</span>    }<a name="line.1845"></a>
-<span class="sourceLineNo">1846</span>    return DataBlockEncoding.NONE;<a name="line.1846"></a>
-<span class="sourceLineNo">1847</span>  }<a name="line.1847"></a>
-<span class="sourceLineNo">1848</span><a name="line.1848"></a>
-<span class="sourceLineNo">1849</span>  byte getChecksumType() {<a name="line.1849"></a>
-<span class="sourceLineNo">1850</span>    return this.fileContext.getChecksumType().getCode();<a name="line.1850"></a>
-<span class="sourceLineNo">1851</span>  }<a name="line.1851"></a>
-<span class="sourceLineNo">1852</span><a name="line.1852"></a>
-<span class="sourceLineNo">1853</span>  int getBytesPerChecksum() {<a name="line.1853"></a>
-<span class="sourceLineNo">1854</span>    return this.fileContext.getBytesPerChecksum();<a name="line.1854"></a>
-<span class="sourceLineNo">1855</span>  }<a name="line.1855"></a>
-<span class="sourceLineNo">1856</span><a name="line.1856"></a>
-<span class="sourceLineNo">1857</span>  /** @return the size of data on disk + header. Excludes checksum. */<a name="line.1857"></a>
-<span class="sourceLineNo">1858</span>  int getOnDiskDataSizeWithHeader() {<a name="line.1858"></a>
-<span class="sourceLineNo">1859</span>    return this.onDiskDataSizeWithHeader;<a name="line.1859"></a>
-<span class="sourceLineNo">1860</span>  }<a name="line.1860"></a>
-<span class="sourceLineNo">1861</span><a name="line.1861"></a>
-<span class="sourceLineNo">1862</span>  /**<a name="line.1862"></a>
-<span class="sourceLineNo">1863</span>   * Calcuate the number of bytes required to store all the checksums<a name="line.1863"></a>
-<span class="sourceLineNo">1864</span>   * for this block. Each checksum value is a 4 byte integer.<a name="line.1864"></a>
-<span class="sourceLineNo">1865</span>   */<a name="line.1865"></a>
-<span class="sourceLineNo">1866</span>  int totalChecksumBytes() {<a name="line.1866"></a>
-<span class="sourceLineNo">1867</span>    // If the hfile block has minorVersion 0, then there are no checksum<a name="line.1867"></a>
-<span class="sourceLineNo">1868</span>    // data to validate. Similarly, a zero value in this.bytesPerChecksum<a name="line.1868"></a>
-<span class="sourceLineNo">1869</span>    // indicates that cached blocks do not have checksum data because<a name="line.1869"></a>
-<span class="sourceLineNo">1870</span>    // checksums were already validated when the block was read from disk.<a name="line.1870"></a>
-<span class="sourceLineNo">1871</span>    if (!fileContext.isUseHBaseChecksum() || this.fileContext.getBytesPerChecksum() == 0) {<a name="line.1871"></a>
-<span class="sourceLineNo">1872</span>      return 0;<a name="line.1872"></a>
-<span class="sourceLineNo">1873</span>    }<a name="line.1873"></a>
-<span class="sourceLineNo">1874</span>    return (int) ChecksumUtil.numBytes(onDiskDataSizeWithHeader,<a name="line.1874"></a>
-<span class="sourceLineNo">1875</span>        this.fileContext.getBytesPerChecksum());<a name="line.1875"></a>
-<span class="sourceLineNo">1876</span>  }<a name="line.1876"></a>
-<span class="sourceLineNo">1877</span><a name="line.1877"></a>
-<span class="sourceLineNo">1878</span>  /**<a name="line.1878"></a>
-<span class="sourceLineNo">1879</span>   * Returns the size of this block header.<a name="line.1879"></a>
-<span class="sourceLineNo">1880</span>   */<a name="line.1880"></a>
-<span class="sourceLineNo">1881</span>  public int headerSize() {<a name="line.1881"></a>
-<span class="sourceLineNo">1882</span>    return headerSize(this.fileContext.isUseHBaseChecksum());<a name="line.1882"></a>
-<span class="sourceLineNo">1883</span>  }<a name="line.1883"></a>
-<span class="sourceLineNo">1884</span><a name="line.1884"></a>
-<span class="sourceLineNo">1885</span>  /**<a name="line.1885"></a>
-<span class="sourceLineNo">1886</span>   * Maps a minor version to the size of the header.<a name="line.1886"></a>
-<span class="sourceLineNo">1887</span>   */<a name="line.1887"></a>
-<span class="sourceLineNo">1888</span>  public static int headerSize(boolean usesHBaseChecksum) {<a name="line.1888"></a>
-<span class="sourceLineNo">1889</span>    if (usesHBaseChecksum) {<a name="line.1889"></a>
-<span class="sourceLineNo">1890</span>      return HConstants.HFILEBLOCK_HEADER_SIZE;<a name="line.1890"></a>
-<span class="sourceLineNo">1891</span>    }<a name="line.1891"></a>
-<span class="sourceLineNo">1892</span>    return HConstants.HFILEBLOCK_HEADER_SIZE_NO_CHECKSUM;<a name="line.1892"></a>
-<span class="sourceLineNo">1893</span>  }<a name="line.1893"></a>
-<span class="sourceLineNo">1894</span><a name="line.1894"></a>
-<span class="sourceLineNo">1895</span>  /**<a name="line.1895"></a>
-<span class="sourceLineNo">1896</span>   * Return the appropriate DUMMY_HEADER for the minor version<a name="line.1896"></a>
-<span class="sourceLineNo">1897</span>   */<a name="line.1897"></a>
-<span class="sourceLineNo">1898</span>  public byte[] getDummyHeaderForVersion() {<a name="line.1898"></a>
-<span class="sourceLineNo">1899</span>    return getDummyHeaderForVersion(this.fileContext.isUseHBaseChecksum());<a name="line.1899"></a>
-<span class="sourceLineNo">1900</span>  }<a name="line.1900"></a>
-<span class="sourceLineNo">1901</span><a name="line.1901"></a>
-<span class="sourceLineNo">1902</span>  /**<a name="line.1902"></a>
-<span class="sourceLineNo">1903</span>   * Return the appropriate DUMMY_HEADER for the minor version<a name="line.1903"></a>
-<span class="sourceLineNo">1904</span>   */<a name="line.1904"></a>
-<span class="sourceLineNo">1905</span>  static private byte[] getDummyHeaderForVersion(boolean usesHBaseChecksum) {<a name="line.1905"></a>
-<span class="sourceLineNo">1906</span>    if (usesHBaseChecksum) {<a name="line.1906"></a>
-<span class="sourceLineNo">1907</span>      return HConstants.HFILEBLOCK_DUMMY_HEADER;<a name="line.1907"></a>
-<span class="sourceLineNo">1908</span>    }<a name="line.1908"></a>
-<span class="sourceLineNo">1909</span>    return DUMMY_HEADER_NO_CHECKSUM;<a name="line.1909"></a>
-<span class="sourceLineNo">1910</span>  }<a name="line.1910"></a>
-<span class="sourceLineNo">1911</span><a name="line.1911"></a>
-<span class="sourceLineNo">1912</span>  /**<a name="line.1912"></a>
-<span class="sourceLineNo">1913</span>   * @return the HFileContext used to create this HFileBlock. Not necessary the<a name="line.1913"></a>
-<span class="sourceLineNo">1914</span>   * fileContext for the file from which this block's data was originally read.<a name="line.1914"></a>
-<span class="sourceLineNo">1915</span>   */<a name="line.1915"></a>
-<span class="sourceLineNo">1916</span>  public HFileContext getHFileContext() {<a name="line.1916"></a>
-<span class="sourceLineNo">1917</span>    return this.fileContext;<a name="line.1917"></a>
-<span class="sourceLineNo">1918</span>  }<a name="line.1918"></a>
-<span class="sourceLineNo">1919</span><a name="line.1919"></a>
-<span class="sourceLineNo">1920</span>  @Override<a name="line.1920"></a>
-<span class="sourceLineNo">1921</span>  public MemoryType getMemoryType() {<a name="line.1921"></a>
-<span class="sourceLineNo">1922</span>    return this.memType;<a name="line.1922"></a>
-<span class="sourceLineNo">1923</span>  }<a name="line.1923"></a>
-<span class="sourceLineNo">1924</span><a name="line.1924"></a>
-<span class="sourceLineNo">1925</span>  /**<a name="line.1925"></a>
-<span class="sourceLineNo">1926</span>   * @return true if this block is backed by a shared memory area(such as that of a BucketCache).<a name="line.1926"></a>
-<span class="sourceLineNo">1927</span>   */<a name="line.1927"></a>
-<span class="sourceLineNo">1928</span>  public boolean usesSharedMemory() {<a name="line.1928"></a>
-<span class="sourceLineNo">1929</span>    return this.memType == MemoryType.SHARED;<a name="line.1929"></a>
-<span class="sourceLineNo">1930</span>  }<a name="line.1930"></a>
-<span class="sourceLineNo">1931</span><a name="line.1931"></a>
-<span class="sourceLineNo">1932</span>  /**<a name="line.1932"></a>
-<span class="sourceLineNo">1933</span>   * Convert the contents of the block header into a human readable string.<a name="line.1933"></a>
-<span class="sourceLineNo">1934</span>   * This is mostly helpful for debugging. This assumes that the block<a name="line.1934"></a>
-<span class="sourceLineNo">1935</span>   * has minor version &gt; 0.<a name="line.1935"></a>
-<span class="sourceLineNo">1936</span>   */<a name="line.1936"></a>
-<span class="sourceLineNo">1937</span>  static String toStringHeader(ByteBuff buf) throws IOException {<a name="line.1937"></a>
-<span class="sourceLineNo">1938</span>    byte[] magicBuf = new byte[Math.min(buf.limit() - buf.position(), BlockType.MAGIC_LENGTH)];<a name="line.1938"></a>
-<span class="sourceLineNo">1939</span>    buf.get(magicBuf);<a name="line.1939"></a>
-<span class="sourceLineNo">1940</span>    BlockType bt = BlockType.parse(magicBuf, 0, BlockType.MAGIC_LENGTH);<a name="line.1940"></a>
-<span class="sourceLineNo">1941</span>    int compressedBlockSizeNoHeader = buf.getInt();<a name="line.1941"></a>
-<span class="sourceLineNo">1942</span>    int uncompressedBlockSizeNoHeader = buf.getInt();<a name="line.1942"></a>
-<span class="sourceLineNo">1943</span>    long prevBlockOffset = buf.getLong();<a name="line.1943"></a>
-<span class="sourceLineNo">1944</span>    byte cksumtype = buf.get();<a name="line.1944"></a>
-<span class="sourceLineNo">1945</span>    long bytesPerChecksum = buf.getInt();<a name="line.1945"></a>
-<span class="sourceLineNo">1946</span>    long onDiskDataSizeWithHeader = buf.getInt();<a name="line.1946"></a>
-<span class="sourceLineNo">1947</span>    return " Header dump: magic: " + Bytes.toString(magicBuf) +<a name="line.1947"></a>
-<span class="sourceLineNo">1948</span>                   " blockType " + bt +<a name="line.1948"></a>
-<span class="sourceLineNo">1949</span>                   " compressedBlockSizeNoHeader " +<a name="line.1949"></a>
-<span class="sourceLineNo">1950</span>                   compressedBlockSizeNoHeader +<a name="line.1950"></a>
-<span class="sourceLineNo">1951</span>                   " uncompressedBlockSizeNoHeader " +<a name="line.1951"></a>
-<span class="sourceLineNo">1952</span>                   uncompressedBlockSizeNoHeader +<a name="line.1952"></a>
-<span class="sourceLineNo">1953</span>                   " prevBlockOffset " + prevBlockOffset +<a name="line.1953"></a>
-<span class="sourceLineNo">1954</span>                   " checksumType " + ChecksumType.codeToType(cksumtype) +<a name="line.1954"></a>
-<span class="sourceLineNo">1955</span>                   " bytesPerChecksum " + bytesPerChecksum +<a name="line.1955"></a>
-<span class="sourceLineNo">1956</span>                   " onDiskDataSizeWithHeader " + onDiskDataSizeWithHeader;<a name="line.1956"></a>
-<span class="sourceLineNo">1957</span>  }<a name="line.1957"></a>
-<span class="sourceLineNo">1958</span>}<a name="line.1958"></a>
+<span class="sourceLineNo">1361</span>    protected HFileContext fileContext;<a name="line.1361"></a>
+<span class="sourceLineNo">1362</span>    // Cache the fileName<a name="line.1362"></a>
+<span class="sourceLineNo">1363</span>    protected String pathName;<a name="line.1363"></a>
+<span class="sourceLineNo">1364</span><a name="line.1364"></a>
+<span class="sourceLineNo">1365</span>    public FSReaderImpl(FSDataInputStreamWrapper stream, long fileSize, HFileSystem hfs, Path path,<a name="line.1365"></a>
+<span class="sourceLineNo">1366</span>        HFileContext fileContext) throws IOException {<a name="line.1366"></a>
+<span class="sourceLineNo">1367</span>      this.fileSize = fileSize;<a name="line.1367"></a>
+<span class="sourceLineNo">1368</span>      this.hfs = hfs;<a name="line.1368"></a>
+<span class="sourceLineNo">1369</span>      if (path != null) {<a name="line.1369"></a>
+<span class="sourceLineNo">1370</span>        this.pathName = path.toString();<a name="line.1370"></a>
+<span class="sourceLineNo">1371</span>      }<a name="line.1371"></a>
+<span class="sourceLineNo">1372</span>      this.fileContext = fileContext;<a name="line.1372"></a>
+<span class="sourceLineNo">1373</span>      this.hdrSize = headerSize(fileContext.isUseHBaseChecksum());<a name="line.1373"></a>
+<span class="sourceLineNo">1374</span><a name="line.1374"></a>
+<span class="sourceLineNo">1375</span>      this.streamWrapper = stream;<a name="line.1375"></a>
+<span class="sourceLineNo">1376</span>      // Older versions of HBase didn't support checksum.<a name="line.1376"></a>
+<span class="sourceLineNo">1377</span>      this.streamWrapper.prepareForBlockReader(!fileContext.isUseHBaseChecksum());<a name="line.1377"></a>
+<span class="sourceLineNo">1378</span>      defaultDecodingCtx = new HFileBlockDefaultDecodingContext(fileContext);<a name="line.1378"></a>
+<span class="sourceLineNo">1379</span>      encodedBlockDecodingCtx = defaultDecodingCtx;<a name="line.1379"></a>
+<span class="sourceLineNo">1380</span>    }<a name="line.1380"></a>
+<span class="sourceLineNo">1381</span><a name="line.1381"></a>
+<span class="sourceLineNo">1382</span>    /**<a name="line.1382"></a>
+<span class="sourceLineNo">1383</span>     * A constructor that reads files with the latest minor version.<a name="line.1383"></a>
+<span class="sourceLineNo">1384</span>     * This is used by unit tests only.<a name="line.1384"></a>
+<span class="sourceLineNo">1385</span>     */<a name="line.1385"></a>
+<span class="sourceLineNo">1386</span>    FSReaderImpl(FSDataInputStream istream, long fileSize, HFileContext fileContext)<a name="line.1386"></a>
+<span class="sourceLineNo">1387</span>    throws IOException {<a name="line.1387"></a>
+<span class="sourceLineNo">1388</span>      this(new FSDataInputStreamWrapper(istream), fileSize, null, null, fileContext);<a name="line.1388"></a>
+<span class="sourceLineNo">1389</span>    }<a name="line.1389"></a>
+<span class="sourceLineNo">1390</span><a name="line.1390"></a>
+<span class="sourceLineNo">1391</span>    public BlockIterator blockRange(final long startOffset, final long endOffset) {<a name="line.1391"></a>
+<span class="sourceLineNo">1392</span>      final FSReader owner = this; // handle for inner class<a name="line.1392"></a>
+<span class="sourceLineNo">1393</span>      return new BlockIterator() {<a name="line.1393"></a>
+<span class="sourceLineNo">1394</span>        private long offset = startOffset;<a name="line.1394"></a>
+<span class="sourceLineNo">1395</span><a name="line.1395"></a>
+<span class="sourceLineNo">1396</span>        @Override<a name="line.1396"></a>
+<span class="sourceLineNo">1397</span>        public HFileBlock nextBlock() throws IOException {<a name="line.1397"></a>
+<span class="sourceLineNo">1398</span>          if (offset &gt;= endOffset)<a name="line.1398"></a>
+<span class="sourceLineNo">1399</span>            return null;<a name="line.1399"></a>
+<span class="sourceLineNo">1400</span>          HFileBlock b = readBlockData(offset, -1, -1, false);<a name="line.1400"></a>
+<span class="sourceLineNo">1401</span>          offset += b.getOnDiskSizeWithHeader();<a name="line.1401"></a>
+<span class="sourceLineNo">1402</span>          return b.unpack(fileContext, owner);<a name="line.1402"></a>
+<span class="sourceLineNo">1403</span>        }<a name="line.1403"></a>
+<span class="sourceLineNo">1404</span><a name="line.1404"></a>
+<span class="sourceLineNo">1405</span>        @Override<a name="line.1405"></a>
+<span class="sourceLineNo">1406</span>        public HFileBlock nextBlockWithBlockType(BlockType blockType)<a name="line.1406"></a>
+<span class="sourceLineNo">1407</span>            throws IOException {<a name="line.1407"></a>
+<span class="sourceLineNo">1408</span>          HFileBlock blk = nextBlock();<a name="line.1408"></a>
+<span class="sourceLineNo">1409</span>          if (blk.getBlockType() != blockType) {<a name="line.1409"></a>
+<span class="sourceLineNo">1410</span>            throw new IOException("Expected block of type " + blockType<a name="line.1410"></a>
+<span class="sourceLineNo">1411</span>                + " but found " + blk.getBlockType());<a name="line.1411"></a>
+<span class="sourceLineNo">1412</span>          }<a name="line.1412"></a>
+<span class="sourceLineNo">1413</span>          return blk;<a name="line.1413"></a>
+<span class="sourceLineNo">1414</span>        }<a name="line.1414"></a>
+<span class="sourceLineNo">1415</span>      };<a name="line.1415"></a>
+<span class="sourceLineNo">1416</span>    }<a name="line.1416"></a>
+<span class="sourceLineNo">1417</span><a name="line.1417"></a>
+<span class="sourceLineNo">1418</span>    /**<a name="line.1418"></a>
+<span class="sourceLineNo">1419</span>     * Does a positional read or a seek and read into the given buffer. Returns<a name="line.1419"></a>
+<span class="sourceLineNo">1420</span>     * the on-disk size of the next block, or -1 if it could not be determined.<a name="line.1420"></a>
+<span class="sourceLineNo">1421</span>     *<a name="line.1421"></a>
+<span class="sourceLineNo">1422</span>     * @param dest destination buffer<a name="line.1422"></a>
+<span class="sourceLineNo">1423</span>     * @param destOffset offset in the destination buffer<a name="line.1423"></a>
+<span class="sourceLineNo">1424</span>     * @param size size of the block to be read<a name="line.1424"></a>
+<span class="sourceLineNo">1425</span>     * @param peekIntoNextBlock whether to read the next block's on-disk size<a name="line.1425"></a>
+<span class="sourceLineNo">1426</span>     * @param fileOffset position in the stream to read at<a name="line.1426"></a>
+<span class="sourceLineNo">1427</span>     * @param pread whether we should do a positional read<a name="line.1427"></a>
+<span class="sourceLineNo">1428</span>     * @param istream The input source of data<a name="line.1428"></a>
+<span class="sourceLineNo">1429</span>     * @return the on-disk size of the next block with header size included, or<a name="line.1429"></a>
+<span class="sourceLineNo">1430</span>     *         -1 if it could not be determined<a name="line.1430"></a>
+<span class="sourceLineNo">1431</span>     * @throws IOException<a name="line.1431"></a>
+<span class="sourceLineNo">1432</span>     */<a name="line.1432"></a>
+<span class="sourceLineNo">1433</span>    protected int readAtOffset(FSDataInputStream istream,<a name="line.1433"></a>
+<span class="sourceLineNo">1434</span>        byte[] dest, int destOffset, int size,<a name="line.1434"></a>
+<span class="sourceLineNo">1435</span>        boolean peekIntoNextBlock, long fileOffset, boolean pread)<a name="line.1435"></a>
+<span class="sourceLineNo">1436</span>        throws IOException {<a name="line.1436"></a>
+<span class="sourceLineNo">1437</span>      if (peekIntoNextBlock &amp;&amp;<a name="line.1437"></a>
+<span class="sourceLineNo">1438</span>          destOffset + size + hdrSize &gt; dest.length) {<a name="line.1438"></a>
+<span class="sourceLineNo">1439</span>        // We are asked to read the next block's header as well, but there is<a name="line.1439"></a>
+<span class="sourceLineNo">1440</span>        // not enough room in the array.<a name="line.1440"></a>
+<span class="sourceLineNo">1441</span>        throw new IOException("Attempted to read " + size + " bytes and " +<a name="line.1441"></a>
+<span class="sourceLineNo">1442</span>            hdrSize + " bytes of next header into a " + dest.length +<a name="line.1442"></a>
+<span class="sourceLineNo">1443</span>            "-byte array at offset " + destOffset);<a name="line.1443"></a>
+<span class="sourceLineNo">1444</span>      }<a name="line.1444"></a>
+<span class="sourceLineNo">1445</span><a name="line.1445"></a>
+<span class="sourceLineNo">1446</span>      if (!pread &amp;&amp; streamLock.tryLock()) {<a name="line.1446"></a>
+<span class="sourceLineNo">1447</span>        // Seek + read. Better for scanning.<a name="line.1447"></a>
+<span class="sourceLineNo">1448</span>        try {<a name="line.1448"></a>
+<span class="sourceLineNo">1449</span>          istream.seek(fileOffset);<a name="line.1449"></a>
+<span class="sourceLineNo">1450</span><a name="line.1450"></a>
+<span class="sourceLineNo">1451</span>          long realOffset = istream.getPos();<a name="line.1451"></a>
+<span class="sourceLineNo">1452</span>          if (realOffset != fileOffset) {<a name="line.1452"></a>
+<span class="sourceLineNo">1453</span>            throw new IOException("Tried to seek to " + fileOffset + " to "<a name="line.1453"></a>
+<span class="sourceLineNo">1454</span>                + "read " + size + " bytes, but pos=" + realOffset<a name="line.1454"></a>
+<span class="sourceLineNo">1455</span>                + " after seek");<a name="line.1455"></a>
+<span class="sourceLineNo">1456</span>          }<a name="line.1456"></a>
+<span class="sourceLineNo">1457</span><a name="line.1457"></a>
+<span class="sourceLineNo">1458</span>          if (!peekIntoNextBlock) {<a name="line.1458"></a>
+<span class="sourceLineNo">1459</span>            IOUtils.readFully(istream, dest, destOffset, size);<a name="line.1459"></a>
+<span class="sourceLineNo">1460</span>            return -1;<a name="line.1460"></a>
+<span class="sourceLineNo">1461</span>          }<a name="line.1461"></a>
+<span class="sourceLineNo">1462</span><a name="line.1462"></a>
+<span class="sourceLineNo">1463</span>          // Try to read the next block header.<a name="line.1463"></a>
+<span class="sourceLineNo">1464</span>          if (!readWithExtra(istream, dest, destOffset, size, hdrSize))<a name="line.1464"></a>
+<span class="sourceLineNo">1465</span>            return -1;<a name="line.1465"></a>
+<span class="sourceLineNo">1466</span>        } finally {<a name="line.1466"></a>
+<span class="sourceLineNo">1467</span>          streamLock.unlock();<a name="line.1467"></a>
+<span class="sourceLineNo">1468</span>        }<a name="line.1468"></a>
+<span class="sourceLineNo">1469</span>      } else {<a name="line.1469"></a>
+<span class="sourceLineNo">1470</span>        // Positional read. Better for random reads; or when the streamLock is already locked.<a name="line.1470"></a>
+<span class="sourceLineNo">1471</span>        int extraSize = peekIntoNextBlock ? hdrSize : 0;<a name="line.1471"></a>
+<span class="sourceLineNo">1472</span>        if (!positionalReadWithExtra(istream, fileOffset, dest, destOffset,<a name="line.1472"></a>
+<span class="sourceLineNo">1473</span>            size, extraSize)) {<a name="line.1473"></a>
+<span class="sourceLineNo">1474</span>          return -1;<a name="line.1474"></a>
+<span class="sourceLineNo">1475</span>        }<a name="line.1475"></a>
+<span class="sourceLineNo">1476</span>      }<a name="line.1476"></a>
+<span class="sourceLineNo">1477</span><a name="line.1477"></a>
+<span class="sourceLineNo">1478</span>      assert peekIntoNextBlock;<a name="line.1478"></a>
+<span class="sourceLineNo">1479</span>      return Bytes.toInt(dest, destOffset + size + BlockType.MAGIC_LENGTH) + hdrSize;<a name="line.1479"></a>
+<span class="sourceLineNo">1480</span>    }<a name="line.1480"></a>
+<span class="sourceLineNo">1481</span><a name="line.1481"></a>
+<span class="sourceLineNo">1482</span>    /**<a name="line.1482"></a>
+<span class="sourceLineNo">1483</span>     * Reads a version 2 block (version 1 blocks not supported and not expected). Tries to do as<a name="line.1483"></a>
+<span class="sourceLineNo">1484</span>     * little memory allocation as possible, using the provided on-disk size.<a name="line.1484"></a>
+<span class="sourceLineNo">1485</span>     *<a name="line.1485"></a>
+<span class="sourceLineNo">1486</span>     * @param offset the offset in the stream to read at<a name="line.1486"></a>
+<span class="sourceLineNo">1487</span>     * @param onDiskSizeWithHeaderL the on-disk size of the block, including<a name="line.1487"></a>
+<span class="sourceLineNo">1488</span>     *          the header, or -1 if unknown<a name="line.1488"></a>
+<span class="sourceLineNo">1489</span>     * @param uncompressedSize the uncompressed size of the the block. Always<a name="line.1489"></a>
+<span class="sourceLineNo">1490</span>     *          expected to be -1. This parameter is only used in version 1.<a name="line.1490"></a>
+<span class="sourceLineNo">1491</span>     * @param pread whether to use a positional read<a name="line.1491"></a>
+<span class="sourceLineNo">1492</span>     */<a name="line.1492"></a>
+<span class="sourceLineNo">1493</span>    @Override<a name="line.1493"></a>
+<span class="sourceLineNo">1494</span>    public HFileBlock readBlockData(long offset, long onDiskSizeWithHeaderL,<a name="line.1494"></a>
+<span class="sourceLineNo">1495</span>        int uncompressedSize, boolean pread)<a name="line.1495"></a>
+<span class="sourceLineNo">1496</span>    throws IOException {<a name="line.1496"></a>
+<span class="sourceLineNo">1497</span><a name="line.1497"></a>
+<span class="sourceLineNo">1498</span>      // get a copy of the current state of whether to validate<a name="line.1498"></a>
+<span class="sourceLineNo">1499</span>      // hbase checksums or not for this read call. This is not<a name="line.1499"></a>
+<span class="sourceLineNo">1500</span>      // thread-safe but the one constaint is that if we decide<a name="line.1500"></a>
+<span class="sourceLineNo">1501</span>      // to skip hbase checksum verification then we are<a name="line.1501"></a>
+<span class="sourceLineNo">1502</span>      // guaranteed to use hdfs checksum verification.<a name="line.1502"></a>
+<span class="sourceLineNo">1503</span>      boolean doVerificationThruHBaseChecksum = streamWrapper.shouldUseHBaseChecksum();<a name="line.1503"></a>
+<span class="sourceLineNo">1504</span>      FSDataInputStream is = streamWrapper.getStream(doVerificationThruHBaseChecksum);<a name="line.1504"></a>
+<span class="sourceLineNo">1505</span><a name="line.1505"></a>
+<span class="sourceLineNo">1506</span>      HFileBlock blk = readBlockDataInternal(is, offset,<a name="line.1506"></a>
+<span class="sourceLineNo">1507</span>                         onDiskSizeWithHeaderL,<a name="line.1507"></a>
+<span class="sourceLineNo">1508</span>                         uncompressedSize, pread,<a name="line.1508"></a>
+<span class="sourceLineNo">1509</span>                         doVerificationThruHBaseChecksum);<a name="line.1509"></a>
+<span class="sourceLineNo">1510</span>      if (blk == null) {<a name="line.1510"></a>
+<span class="sourceLineNo">1511</span>        HFile.LOG.warn("HBase checksum verification failed for file " +<a name="line.1511"></a>
+<span class="sourceLineNo">1512</span>                       pathName + " at offset " +<a name="line.1512"></a>
+<span class="sourceLineNo">1513</span>                       offset + " filesize " + fileSize +<a name="line.1513"></a>
+<span class="sourceLineNo">1514</span>                       ". Retrying read with HDFS checksums turned on...");<a name="line.1514"></a>
+<span class="sourceLineNo">1515</span><a name="line.1515"></a>
+<span class="sourceLineNo">1516</span>        if (!doVerificationThruHBaseChecksum) {<a name="line.1516"></a>
+<span class="sourceLineNo">1517</span>          String msg = "HBase checksum verification failed for file " +<a name="line.1517"></a>
+<span class="sourceLineNo">1518</span>                       pathName + " at offset " +<a name="line.1518"></a>
+<span class="sourceLineNo">1519</span>                       offset + " filesize " + fileSize +<a name="line.1519"></a>
+<span class="sourceLineNo">1520</span>                       " but this cannot happen because doVerify is " +<a name="line.1520"></a>
+<span class="sourceLineNo">1521</span>                       doVerificationThruHBaseChecksum;<a name="line.1521"></a>
+<span class="sourceLineNo">1522</span>          HFile.LOG.warn(msg);<a name="line.1522"></a>
+<span class="sourceLineNo">1523</span>          throw new IOException(msg); // cannot happen case here<a name="line.1523"></a>
+<span class="sourceLineNo">1524</span>        }<a name="line.1524"></a>
+<span class="sourceLineNo">1525</span>        HFile.checksumFailures.incrementAndGet(); // update metrics<a name="line.1525"></a>
+<span class="sourceLineNo">1526</span><a name="line.1526"></a>
+<span class="sourceLineNo">1527</span>        // If we have a checksum failure, we fall back into a mode where<a name="line.1527"></a>
+<span class="sourceLineNo">1528</span>        // the next few reads use HDFS level checksums. We aim to make the<a name="line.1528"></a>
+<span class="sourceLineNo">1529</span>        // next CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD reads avoid<a name="line.1529"></a>
+<span class="sourceLineNo">1530</span>        // hbase checksum verification, but since this value is set without<a name="line.1530"></a>
+<span class="sourceLineNo">1531</span>        // holding any locks, it can so happen that we might actually do<a name="line.1531"></a>
+<span class="sourceLineNo">1532</span>        // a few more than precisely this number.<a name="line.1532"></a>
+<span class="sourceLineNo">1533</span>        is = this.streamWrapper.fallbackToFsChecksum(CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD);<a name="line.1533"></a>
+<span class="sourceLineNo">1534</span>        doVerificationThruHBaseChecksum = false;<a name="line.1534"></a>
+<span class="sourceLineNo">1535</span>        blk = readBlockDataInternal(is, offset, onDiskSizeWithHeaderL,<a name="line.1535"></a>
+<span class="sourceLineNo">1536</span>                                    uncompressedSize, pread,<a name="line.1536"></a>
+<span class="sourceLineNo">1537</span>                                    doVerificationThruHBaseChecksum);<a name="line.1537"></a>
+<span class="sourceLineNo">1538</span>        if (blk != null) {<a name="line.1538"></a>
+<span class="sourceLineNo">1539</span>          HFile.LOG.warn("HDFS checksum verification suceeded for file " +<a name="line.1539"></a>
+<span class="sourceLineNo">1540</span>                         pathName + " at offset " +<a name="line.1540"></a>
+<span class="sourceLineNo">1541</span>                         offset + " filesize " + fileSize);<a name="line.1541"></a>
+<span class="sourceLineNo">1542</span>        }<a name="line.1542"></a>
+<span class="sourceLineNo">1543</span>      }<a name="line.1543"></a>
+<span class="sourceLineNo">1544</span>      if (blk == null &amp;&amp; !doVerificationThruHBaseChecksum) {<a name="line.1544"></a>
+<span class="sourceLineNo">1545</span>        String msg = "readBlockData failed, possibly due to " +<a name="line.1545"></a>
+<span class="sourceLineNo">1546</span>                     "checksum verification failed for file " + pathName +<a name="line.1546"></a>
+<span class="sourceLineNo">1547</span>                     " at offset " + offset + " filesize " + fileSize;<a name="line.1547"></a>
+<span class="sourceLineNo">1548</span>        HFile.LOG.warn(msg);<a name="line.1548"></a>
+<span class="sourceLineNo">1549</span>        throw new IOException(msg);<a name="line.1549"></a>
+<span class="sourceLineNo">1550</span>      }<a name="line.1550"></a>
+<span class="sourceLineNo">1551</span><a name="line.1551"></a>
+<span class="sourceLineNo">1552</span>      // If there is a checksum mismatch earlier, then retry with<a name="line.1552"></a>
+<span class="sourceLineNo">1553</span>      // HBase checksums switched off and use HDFS checksum verification.<a name="line.1553"></a>
+<span class="sourceLineNo">1554</span>      // This triggers HDFS to detect and fix corrupt replicas. The<a name="line.1554"></a>
+<span class="sourceLineNo">1555</span>      // next checksumOffCount read requests will use HDFS checksums.<a name="line.1555"></a>
+<span class="sourceLineNo">1556</span>      // The decrementing of this.checksumOffCount is not thread-safe,<a name="line.1556"></a>
+<span class="sourceLineNo">1557</span>      // but it is harmless because eventually checksumOffCount will be<a name="line.1557"></a>
+<span class="sourceLineNo">1558</span>      // a negative number.<a name="line.1558"></a>
+<span class="sourceLineNo">1559</span>      streamWrapper.checksumOk();<a name="line.1559"></a>
+<span class="sourceLineNo">1560</span>      return blk;<a name="line.1560"></a>
+<span class="sourceLineNo">1561</span>    }<a name="line.1561"></a>
+<span class="sourceLineNo">1562</span><a name="line.1562"></a>
+<span class="sourceLineNo">1563</span>    /**<a name="line.1563"></a>
+<span class="sourceLineNo">1564</span>     * Reads a version 2 block.<a name="line.1564"></a>
+<span class="sourceLineNo">1565</span>     *<a name="line.1565"></a>
+<span class="sourceLineNo">1566</span>     * @param offset the offset in the stream to read at<a name="line.1566"></a>
+<span class="sourceLineNo">1567</span>     * @param onDiskSizeWithHeaderL the on-disk size of the block, including<a name="line.1567"></a>
+<span class="sourceLineNo">1568</span>     *          the header, or -1 if unknown<a name="line.1568"></a>
+<span class="sourceLineNo">1569</span>     * @param uncompressedSize the uncompressed size of the the block. Always<a name="line.1569"></a>
+<span class="sourceLineNo">1570</span>     *          expected to be -1. This parameter is only used in version 1.<a name="line.1570"></a>
+<span class="sourceLineNo">1571</span>     * @param pread whether to use a positional read<a name="line.1571"></a>
+<span class="sourceLineNo">1572</span>     * @param verifyChecksum Whether to use HBase checksums.<a name="line.1572"></a>
+<span class="sourceLineNo">1573</span>     *        If HBase checksum is switched off, then use HDFS checksum.<a name="line.1573"></a>
+<span class="sourceLineNo">1574</span>     * @return the HFileBlock or null if there is a HBase checksum mismatch<a name="line.1574"></a>
+<span class="sourceLineNo">1575</span>     */<a name="line.1575"></a>
+<span class="sourceLineNo">1576</span>    private HFileBlock readBlockDataInternal(FSDataInputStream is, long offset,<a name="line.1576"></a>
+<span class="sourceLineNo">1577</span>        long onDiskSizeWithHeaderL, int uncompressedSize, boolean pread,<a name="line.1577"></a>
+<span class="sourceLineNo">1578</span>        boolean verifyChecksum)<a name="line.1578"></a>
+<span class="sourceLineNo">1579</span>    throws IOException {<a name="line.1579"></a>
+<span class="sourceLineNo">1580</span>      if (offset &lt; 0) {<a name="line.1580"></a>
+<span class="sourceLineNo">1581</span>        throw new IOException("Invalid offset=" + offset + " trying to read "<a name="line.1581"></a>
+<span class="sourceLineNo">1582</span>            + "block (onDiskSize=" + onDiskSizeWithHeaderL<a name="line.1582"></a>
+<span class="sourceLineNo">1583</span>            + ", uncompressedSize=" + uncompressedSize + ")");<a name="line.1583"></a>
+<span class="sourceLineNo">1584</span>      }<a name="line.1584"></a>
+<span class="sourceLineNo">1585</span><a name="line.1585"></a>
+<span class="sourceLineNo">1586</span>      if (uncompressedSize != -1) {<a name="line.1586"></a>
+<span class="sourceLineNo">1587</span>        throw new IOException("Version 2 block reader API does not need " +<a name="line.1587"></a>
+<span class="sourceLineNo">1588</span>            "the uncompressed size parameter");<a name="line.1588"></a>
+<span class="sourceLineNo">1589</span>      }<a name="line.1589"></a>
+<span class="sourceLineNo">1590</span><a name="line.1590"></a>
+<span class="sourceLineNo">1591</span>      if ((onDiskSizeWithHeaderL &lt; hdrSize &amp;&amp; onDiskSizeWithHeaderL != -1)<a name="line.1591"></a>
+<span class="sourceLineNo">1592</span>          || onDiskSizeWithHeaderL &gt;= Integer.MAX_VALUE) {<a name="line.1592"></a>
+<span class="sourceLineNo">1593</span>        throw new IOException("Invalid onDisksize=" + onDiskSizeWithHeaderL<a name="line.1593"></a>
+<span class="sourceLineNo">1594</span>            + ": expected to be at least " + hdrSize<a name="line.1594"></a>
+<span class="sourceLineNo">1595</span>            + " and at most " + Integer.MAX_VALUE + ", or -1 (offset="<a name="line.1595"></a>
+<span class="sourceLineNo">1596</span>            + offset + ", uncompressedSize=" + uncompressedSize + ")");<a name="line.1596"></a>
+<span class="sourceLineNo">1597</span>      }<a name="line.1597"></a>
+<span class="sourceLineNo">1598</span><a name="line.1598"></a>
+<span class="sourceLineNo">1599</span>      int onDiskSizeWithHeader = (int) onDiskSizeWithHeaderL;<a name="line.1599"></a>
+<span class="sourceLineNo">1600</span>      // See if we can avoid reading the header. This is desirable, because<a name="line.1600"></a>
+<span class="sourc

<TRUNCATED>

[05/23] hbase-site git commit: Published site at 2cf8af5bf1d501156cbb3b421cf75c1051ead7d9.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/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 aeec2af..149878b 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -156,9 +156,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/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/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/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/TagUsage.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="strong">TagUsage</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/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 eb03253..294e9be 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -506,15 +506,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/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/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/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/HBaseClusterManager.CommandProvider.Operation.html" title="enum in org.apache.hadoop.hbase"><span class="strong">HBaseClusterManager.CommandProvider.Operation</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.ACTION.html" title="enum in org.apache.hadoop.hbase"><span class="strong">IntegrationTestDDLMasterFailover.ACTION</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/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/RESTApiClusterManager.Service.html" title="enum in org.apache.hadoop.hbase"><span class="strong">RESTApiClusterManager.Service</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ClusterManager.ServiceType.html" title="enum in org.apache.hadoop.hbase"><span class="strong">ClusterManager.ServiceType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ResourceChecker.Phase.html" title="enum in org.apache.hadoop.hbase"><span class="strong">ResourceChecker.Phase</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/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/IntegrationTestRegionReplicaPerf.Stat.html" title="enum in org.apache.hadoop.hbase"><span class="strong">IntegrationTestRegionReplicaPerf.Stat</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ScanPerformanceEvaluation.ScanCounter.html" title="enum in org.apache.hadoop.hbase"><span class="strong">ScanPerformanceEvaluation.ScanCounter</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/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/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>
 </ul>
 </li>
 </ul>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/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 300903a..d424d9d 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -545,8 +545,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.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DataBlockEncodingTool.Manipulation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">DataBlockEncodingTool.Manipulation</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">TestAtomicOperation.TestStep</span></a></li>
 <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>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
index 52b2b91..9714a69 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
@@ -235,8 +235,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.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.Verify.Counts.html" title="enum in org.apache.hadoop.hbase.test"><span class="strong">IntegrationTestBigLinkedList.Verify.Counts</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestLoadAndVerify.Counters.html" title="enum in org.apache.hadoop.hbase.test"><span class="strong">IntegrationTestLoadAndVerify.Counters</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestWithCellVisibilityLoadAndVerify.Counters.html" title="enum in org.apache.hadoop.hbase.test"><span class="strong">IntegrationTestWithCellVisibilityLoadAndVerify.Counters</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestLoadAndVerify.Counters.html" title="enum in org.apache.hadoop.hbase.test"><span class="strong">IntegrationTestLoadAndVerify.Counters</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/xref/org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html
----------------------------------------------------------------------
diff --git a/xref/org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html b/xref/org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html
index 902ad67..2212783 100644
--- a/xref/org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html
+++ b/xref/org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html
@@ -35,172 +35,170 @@
 <a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.commons.logging.LogFactory;
 <a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.fs.ChecksumException;
 <a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.classification.InterfaceAudience;
-<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.fs.Path;
-<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.ChecksumType;
-<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.util.DataChecksum;
-<a class="jxr_linenumber" name="31" href="#31">31</a>  
-<a class="jxr_linenumber" name="32" href="#32">32</a>  <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="33" href="#33">33</a>  <em class="jxr_javadoccomment"> * Utility methods to compute and validate checksums.</em>
-<a class="jxr_linenumber" name="34" href="#34">34</a>  <em class="jxr_javadoccomment"> */</em>
-<a class="jxr_linenumber" name="35" href="#35">35</a>  @InterfaceAudience.Private
-<a class="jxr_linenumber" name="36" href="#36">36</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html">ChecksumUtil</a> {
-<a class="jxr_linenumber" name="37" href="#37">37</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Log LOG = LogFactory.getLog(ChecksumUtil.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="38" href="#38">38</a>  
-<a class="jxr_linenumber" name="39" href="#39">39</a>    <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> This is used to reserve space in a byte buffer */</em>
-<a class="jxr_linenumber" name="40" href="#40">40</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> byte[] DUMMY_VALUE = <strong class="jxr_keyword">new</strong> byte[128 * HFileBlock.CHECKSUM_SIZE];
-<a class="jxr_linenumber" name="41" href="#41">41</a>  
-<a class="jxr_linenumber" name="42" href="#42">42</a>    <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> </em>
-<a class="jxr_linenumber" name="43" href="#43">43</a>  <em class="jxr_javadoccomment">   * This is used by unit tests to make checksum failures throw an </em>
-<a class="jxr_linenumber" name="44" href="#44">44</a>  <em class="jxr_javadoccomment">   * exception instead of returning null. Returning a null value from </em>
-<a class="jxr_linenumber" name="45" href="#45">45</a>  <em class="jxr_javadoccomment">   * checksum validation will cause the higher layer to retry that </em>
-<a class="jxr_linenumber" name="46" href="#46">46</a>  <em class="jxr_javadoccomment">   * read with hdfs-level checksums. Instead, we would like checksum </em>
-<a class="jxr_linenumber" name="47" href="#47">47</a>  <em class="jxr_javadoccomment">   * failures to cause the entire unit test to fail.</em>
-<a class="jxr_linenumber" name="48" href="#48">48</a>  <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="49" href="#49">49</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> generateExceptions = false;
-<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">   * Generates a checksum for all the data in indata. The checksum is</em>
-<a class="jxr_linenumber" name="53" href="#53">53</a>  <em class="jxr_javadoccomment">   * written to outdata.</em>
-<a class="jxr_linenumber" name="54" href="#54">54</a>  <em class="jxr_javadoccomment">   * @param indata input data stream</em>
-<a class="jxr_linenumber" name="55" href="#55">55</a>  <em class="jxr_javadoccomment">   * @param startOffset starting offset in the indata stream from where to</em>
-<a class="jxr_linenumber" name="56" href="#56">56</a>  <em class="jxr_javadoccomment">   *                    compute checkums from</em>
-<a class="jxr_linenumber" name="57" href="#57">57</a>  <em class="jxr_javadoccomment">   * @param endOffset ending offset in the indata stream upto</em>
-<a class="jxr_linenumber" name="58" href="#58">58</a>  <em class="jxr_javadoccomment">   *                   which checksums needs to be computed</em>
-<a class="jxr_linenumber" name="59" href="#59">59</a>  <em class="jxr_javadoccomment">   * @param outdata the output buffer where checksum values are written</em>
-<a class="jxr_linenumber" name="60" href="#60">60</a>  <em class="jxr_javadoccomment">   * @param outOffset the starting offset in the outdata where the</em>
-<a class="jxr_linenumber" name="61" href="#61">61</a>  <em class="jxr_javadoccomment">   *                  checksum values are written</em>
-<a class="jxr_linenumber" name="62" href="#62">62</a>  <em class="jxr_javadoccomment">   * @param checksumType type of checksum</em>
-<a class="jxr_linenumber" name="63" href="#63">63</a>  <em class="jxr_javadoccomment">   * @param bytesPerChecksum number of bytes per checksum value</em>
-<a class="jxr_linenumber" name="64" href="#64">64</a>  <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="65" href="#65">65</a>    <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> generateChecksums(byte[] indata, <strong class="jxr_keyword">int</strong> startOffset, <strong class="jxr_keyword">int</strong> endOffset,
-<a class="jxr_linenumber" name="66" href="#66">66</a>      byte[] outdata, <strong class="jxr_keyword">int</strong> outOffset, <a href="../../../../../../org/apache/hadoop/hbase/util/ChecksumType.html">ChecksumType</a> checksumType,
-<a class="jxr_linenumber" name="67" href="#67">67</a>      <strong class="jxr_keyword">int</strong> bytesPerChecksum) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="68" href="#68">68</a>  
-<a class="jxr_linenumber" name="69" href="#69">69</a>      <strong class="jxr_keyword">if</strong> (checksumType == ChecksumType.NULL) {
-<a class="jxr_linenumber" name="70" href="#70">70</a>        <strong class="jxr_keyword">return</strong>; <em class="jxr_comment">// No checksum for this block.</em>
-<a class="jxr_linenumber" name="71" href="#71">71</a>      }
-<a class="jxr_linenumber" name="72" href="#72">72</a>  
-<a class="jxr_linenumber" name="73" href="#73">73</a>      DataChecksum checksum = DataChecksum.newDataChecksum(
-<a class="jxr_linenumber" name="74" href="#74">74</a>          checksumType.getDataChecksumType(), bytesPerChecksum);
-<a class="jxr_linenumber" name="75" href="#75">75</a>  
-<a class="jxr_linenumber" name="76" href="#76">76</a>      checksum.calculateChunkedSums(
-<a class="jxr_linenumber" name="77" href="#77">77</a>         ByteBuffer.wrap(indata, startOffset, endOffset - startOffset),
-<a class="jxr_linenumber" name="78" href="#78">78</a>         ByteBuffer.wrap(outdata, outOffset, outdata.length - outOffset));
-<a class="jxr_linenumber" name="79" href="#79">79</a>    }
-<a class="jxr_linenumber" name="80" href="#80">80</a>  
-<a class="jxr_linenumber" name="81" href="#81">81</a>    <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="82" href="#82">82</a>  <em class="jxr_javadoccomment">   * Validates that the data in the specified HFileBlock matches the</em>
-<a class="jxr_linenumber" name="83" href="#83">83</a>  <em class="jxr_javadoccomment">   * checksum.  Generates the checksum for the data and</em>
-<a class="jxr_linenumber" name="84" href="#84">84</a>  <em class="jxr_javadoccomment">   * then validate that it matches the value stored in the header.</em>
-<a class="jxr_linenumber" name="85" href="#85">85</a>  <em class="jxr_javadoccomment">   * If there is a checksum mismatch, then return false. Otherwise</em>
-<a class="jxr_linenumber" name="86" href="#86">86</a>  <em class="jxr_javadoccomment">   * return true.</em>
-<a class="jxr_linenumber" name="87" href="#87">87</a>  <em class="jxr_javadoccomment">   * The header is extracted from the specified HFileBlock while the</em>
-<a class="jxr_linenumber" name="88" href="#88">88</a>  <em class="jxr_javadoccomment">   * data-to-be-verified is extracted from 'data'.</em>
-<a class="jxr_linenumber" name="89" href="#89">89</a>  <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="90" href="#90">90</a>    <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> validateBlockChecksum(Path path, <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html">HFileBlock</a> block,
-<a class="jxr_linenumber" name="91" href="#91">91</a>      byte[] data, <strong class="jxr_keyword">int</strong> hdrSize) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="92" href="#92">92</a>  
-<a class="jxr_linenumber" name="93" href="#93">93</a>      <em class="jxr_comment">// If this is an older version of the block that does not have</em>
-<a class="jxr_linenumber" name="94" href="#94">94</a>      <em class="jxr_comment">// checksums, then return false indicating that checksum verification</em>
-<a class="jxr_linenumber" name="95" href="#95">95</a>      <em class="jxr_comment">// did not succeed. Actually, this methiod should never be called</em>
-<a class="jxr_linenumber" name="96" href="#96">96</a>      <em class="jxr_comment">// when the minorVersion is 0, thus this is a defensive check for a</em>
-<a class="jxr_linenumber" name="97" href="#97">97</a>      <em class="jxr_comment">// cannot-happen case. Since this is a cannot-happen case, it is</em>
-<a class="jxr_linenumber" name="98" href="#98">98</a>      <em class="jxr_comment">// better to return false to indicate a checksum validation failure.</em>
-<a class="jxr_linenumber" name="99" href="#99">99</a>      <strong class="jxr_keyword">if</strong> (!block.getHFileContext().isUseHBaseChecksum()) {
-<a class="jxr_linenumber" name="100" href="#100">100</a>       <strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="101" href="#101">101</a>     }
-<a class="jxr_linenumber" name="102" href="#102">102</a> 
-<a class="jxr_linenumber" name="103" href="#103">103</a>     <em class="jxr_comment">// Get a checksum object based on the type of checksum that is</em>
-<a class="jxr_linenumber" name="104" href="#104">104</a>     <em class="jxr_comment">// set in the HFileBlock header. A ChecksumType.NULL indicates that </em>
-<a class="jxr_linenumber" name="105" href="#105">105</a>     <em class="jxr_comment">// the caller is not interested in validating checksums, so we</em>
-<a class="jxr_linenumber" name="106" href="#106">106</a>     <em class="jxr_comment">// always return true.</em>
-<a class="jxr_linenumber" name="107" href="#107">107</a>     <a href="../../../../../../org/apache/hadoop/hbase/util/ChecksumType.html">ChecksumType</a> cktype = ChecksumType.codeToType(block.getChecksumType());
-<a class="jxr_linenumber" name="108" href="#108">108</a>     <strong class="jxr_keyword">if</strong> (cktype == ChecksumType.NULL) {
-<a class="jxr_linenumber" name="109" href="#109">109</a>       <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>; <em class="jxr_comment">// No checksum validations needed for this block.</em>
-<a class="jxr_linenumber" name="110" href="#110">110</a>     }
-<a class="jxr_linenumber" name="111" href="#111">111</a> 
-<a class="jxr_linenumber" name="112" href="#112">112</a>     <em class="jxr_comment">// read in the stored value of the checksum size from the header.</em>
-<a class="jxr_linenumber" name="113" href="#113">113</a>     <strong class="jxr_keyword">int</strong> bytesPerChecksum = block.getBytesPerChecksum();
-<a class="jxr_linenumber" name="114" href="#114">114</a> 
-<a class="jxr_linenumber" name="115" href="#115">115</a>     DataChecksum dataChecksum = DataChecksum.newDataChecksum(
-<a class="jxr_linenumber" name="116" href="#116">116</a>         cktype.getDataChecksumType(), bytesPerChecksum);
-<a class="jxr_linenumber" name="117" href="#117">117</a>     assert dataChecksum != <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="118" href="#118">118</a>     <strong class="jxr_keyword">int</strong> sizeWithHeader =  block.getOnDiskDataSizeWithHeader();
-<a class="jxr_linenumber" name="119" href="#119">119</a>     <strong class="jxr_keyword">if</strong> (LOG.isTraceEnabled()) {
-<a class="jxr_linenumber" name="120" href="#120">120</a>       LOG.info(<span class="jxr_string">"length of data = "</span> + data.length
-<a class="jxr_linenumber" name="121" href="#121">121</a>           + <span class="jxr_string">" OnDiskDataSizeWithHeader = "</span> + sizeWithHeader
-<a class="jxr_linenumber" name="122" href="#122">122</a>           + <span class="jxr_string">" checksum type = "</span> + cktype.getName()
-<a class="jxr_linenumber" name="123" href="#123">123</a>           + <span class="jxr_string">" file ="</span> + path.toString()
-<a class="jxr_linenumber" name="124" href="#124">124</a>           + <span class="jxr_string">" header size = "</span> + hdrSize
-<a class="jxr_linenumber" name="125" href="#125">125</a>           + <span class="jxr_string">" bytesPerChecksum = "</span> + bytesPerChecksum);
-<a class="jxr_linenumber" name="126" href="#126">126</a>     }
-<a class="jxr_linenumber" name="127" href="#127">127</a>     <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="128" href="#128">128</a>       dataChecksum.verifyChunkedSums(ByteBuffer.wrap(data, 0, sizeWithHeader),
-<a class="jxr_linenumber" name="129" href="#129">129</a>           ByteBuffer.wrap(data, sizeWithHeader, data.length - sizeWithHeader),
-<a class="jxr_linenumber" name="130" href="#130">130</a>                           path.toString(), 0);
-<a class="jxr_linenumber" name="131" href="#131">131</a>     } <strong class="jxr_keyword">catch</strong> (ChecksumException e) {
-<a class="jxr_linenumber" name="132" href="#132">132</a>       <strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="133" href="#133">133</a>     }
-<a class="jxr_linenumber" name="134" href="#134">134</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;  <em class="jxr_comment">// checksum is valid</em>
-<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">   * Returns the number of bytes needed to store the checksums for</em>
-<a class="jxr_linenumber" name="139" href="#139">139</a> <em class="jxr_javadoccomment">   * a specified data size</em>
-<a class="jxr_linenumber" name="140" href="#140">140</a> <em class="jxr_javadoccomment">   * @param datasize number of bytes of data</em>
-<a class="jxr_linenumber" name="141" href="#141">141</a> <em class="jxr_javadoccomment">   * @param bytesPerChecksum number of bytes in a checksum chunk</em>
-<a class="jxr_linenumber" name="142" href="#142">142</a> <em class="jxr_javadoccomment">   * @return The number of bytes needed to store the checksum values</em>
-<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>   <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">long</strong> numBytes(<strong class="jxr_keyword">long</strong> datasize, <strong class="jxr_keyword">int</strong> bytesPerChecksum) {
-<a class="jxr_linenumber" name="145" href="#145">145</a>     <strong class="jxr_keyword">return</strong> numChunks(datasize, bytesPerChecksum) * 
-<a class="jxr_linenumber" name="146" href="#146">146</a>                      HFileBlock.CHECKSUM_SIZE;
-<a class="jxr_linenumber" name="147" href="#147">147</a>   }
-<a class="jxr_linenumber" name="148" href="#148">148</a> 
-<a class="jxr_linenumber" name="149" href="#149">149</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="150" href="#150">150</a> <em class="jxr_javadoccomment">   * Returns the number of checksum chunks needed to store the checksums for</em>
-<a class="jxr_linenumber" name="151" href="#151">151</a> <em class="jxr_javadoccomment">   * a specified data size</em>
-<a class="jxr_linenumber" name="152" href="#152">152</a> <em class="jxr_javadoccomment">   * @param datasize number of bytes of data</em>
-<a class="jxr_linenumber" name="153" href="#153">153</a> <em class="jxr_javadoccomment">   * @param bytesPerChecksum number of bytes in a checksum chunk</em>
-<a class="jxr_linenumber" name="154" href="#154">154</a> <em class="jxr_javadoccomment">   * @return The number of checksum chunks</em>
-<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>   <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">long</strong> numChunks(<strong class="jxr_keyword">long</strong> datasize, <strong class="jxr_keyword">int</strong> bytesPerChecksum) {
-<a class="jxr_linenumber" name="157" href="#157">157</a>     <strong class="jxr_keyword">long</strong> numChunks = datasize/bytesPerChecksum;
-<a class="jxr_linenumber" name="158" href="#158">158</a>     <strong class="jxr_keyword">if</strong> (datasize % bytesPerChecksum != 0) {
-<a class="jxr_linenumber" name="159" href="#159">159</a>       numChunks++;
-<a class="jxr_linenumber" name="160" href="#160">160</a>     }
-<a class="jxr_linenumber" name="161" href="#161">161</a>     <strong class="jxr_keyword">return</strong> numChunks;
-<a class="jxr_linenumber" name="162" href="#162">162</a>   }
-<a class="jxr_linenumber" name="163" href="#163">163</a> 
-<a class="jxr_linenumber" name="164" href="#164">164</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="165" href="#165">165</a> <em class="jxr_javadoccomment">   * Write dummy checksums to the end of the specified bytes array</em>
-<a class="jxr_linenumber" name="166" href="#166">166</a> <em class="jxr_javadoccomment">   * to reserve space for writing checksums later</em>
-<a class="jxr_linenumber" name="167" href="#167">167</a> <em class="jxr_javadoccomment">   * @param baos OutputStream to write dummy checkum values</em>
-<a class="jxr_linenumber" name="168" href="#168">168</a> <em class="jxr_javadoccomment">   * @param numBytes Number of bytes of data for which dummy checksums</em>
-<a class="jxr_linenumber" name="169" href="#169">169</a> <em class="jxr_javadoccomment">   *                 need to be generated</em>
-<a class="jxr_linenumber" name="170" href="#170">170</a> <em class="jxr_javadoccomment">   * @param bytesPerChecksum Number of bytes per checksum value</em>
-<a class="jxr_linenumber" name="171" href="#171">171</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="172" href="#172">172</a>   <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> reserveSpaceForChecksums(ByteArrayOutputStream baos,
-<a class="jxr_linenumber" name="173" href="#173">173</a>     <strong class="jxr_keyword">int</strong> numBytes, <strong class="jxr_keyword">int</strong> bytesPerChecksum) <strong class="jxr_keyword">throws</strong> IOException {
-<a class="jxr_linenumber" name="174" href="#174">174</a>     <strong class="jxr_keyword">long</strong> numChunks = numChunks(numBytes, bytesPerChecksum);
-<a class="jxr_linenumber" name="175" href="#175">175</a>     <strong class="jxr_keyword">long</strong> bytesLeft = numChunks * HFileBlock.CHECKSUM_SIZE;
-<a class="jxr_linenumber" name="176" href="#176">176</a>     <strong class="jxr_keyword">while</strong> (bytesLeft &gt; 0) {
-<a class="jxr_linenumber" name="177" href="#177">177</a>       <strong class="jxr_keyword">long</strong> count = Math.min(bytesLeft, DUMMY_VALUE.length);
-<a class="jxr_linenumber" name="178" href="#178">178</a>       baos.write(DUMMY_VALUE, 0, (<strong class="jxr_keyword">int</strong>)count);
-<a class="jxr_linenumber" name="179" href="#179">179</a>       bytesLeft -= 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> 
-<a class="jxr_linenumber" name="183" href="#183">183</a>   <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="184" href="#184">184</a> <em class="jxr_javadoccomment">   * Mechanism to throw an exception in case of hbase checksum</em>
-<a class="jxr_linenumber" name="185" href="#185">185</a> <em class="jxr_javadoccomment">   * failure. This is used by unit tests only.</em>
-<a class="jxr_linenumber" name="186" href="#186">186</a> <em class="jxr_javadoccomment">   * @param value Setting this to true will cause hbase checksum</em>
-<a class="jxr_linenumber" name="187" href="#187">187</a> <em class="jxr_javadoccomment">   *              verification failures to generate exceptions.</em>
-<a class="jxr_linenumber" name="188" href="#188">188</a> <em class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="189" href="#189">189</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> generateExceptionForChecksumFailureForTest(<strong class="jxr_keyword">boolean</strong> value) {
-<a class="jxr_linenumber" name="190" href="#190">190</a>     generateExceptions = value;
-<a class="jxr_linenumber" name="191" href="#191">191</a>   }
-<a class="jxr_linenumber" name="192" href="#192">192</a> }
-<a class="jxr_linenumber" name="193" href="#193">193</a> 
+<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.hbase.util.ChecksumType;
+<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.hadoop.util.DataChecksum;
+<a class="jxr_linenumber" name="30" href="#30">30</a>  
+<a class="jxr_linenumber" name="31" href="#31">31</a>  <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="32" href="#32">32</a>  <em class="jxr_javadoccomment"> * Utility methods to compute and validate checksums.</em>
+<a class="jxr_linenumber" name="33" href="#33">33</a>  <em class="jxr_javadoccomment"> */</em>
+<a class="jxr_linenumber" name="34" href="#34">34</a>  @InterfaceAudience.Private
+<a class="jxr_linenumber" name="35" href="#35">35</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/ChecksumUtil.html">ChecksumUtil</a> {
+<a class="jxr_linenumber" name="36" href="#36">36</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Log LOG = LogFactory.getLog(ChecksumUtil.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="37" href="#37">37</a>  
+<a class="jxr_linenumber" name="38" href="#38">38</a>    <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> This is used to reserve space in a byte buffer */</em>
+<a class="jxr_linenumber" name="39" href="#39">39</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> byte[] DUMMY_VALUE = <strong class="jxr_keyword">new</strong> byte[128 * HFileBlock.CHECKSUM_SIZE];
+<a class="jxr_linenumber" name="40" href="#40">40</a>  
+<a class="jxr_linenumber" name="41" href="#41">41</a>    <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> </em>
+<a class="jxr_linenumber" name="42" href="#42">42</a>  <em class="jxr_javadoccomment">   * This is used by unit tests to make checksum failures throw an </em>
+<a class="jxr_linenumber" name="43" href="#43">43</a>  <em class="jxr_javadoccomment">   * exception instead of returning null. Returning a null value from </em>
+<a class="jxr_linenumber" name="44" href="#44">44</a>  <em class="jxr_javadoccomment">   * checksum validation will cause the higher layer to retry that </em>
+<a class="jxr_linenumber" name="45" href="#45">45</a>  <em class="jxr_javadoccomment">   * read with hdfs-level checksums. Instead, we would like checksum </em>
+<a class="jxr_linenumber" name="46" href="#46">46</a>  <em class="jxr_javadoccomment">   * failures to cause the entire unit test to fail.</em>
+<a class="jxr_linenumber" name="47" href="#47">47</a>  <em class="jxr_javadoccomment">   */</em>
+<a class="jxr_linenumber" name="48" href="#48">48</a>    <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> generateExceptions = false;
+<a class="jxr_linenumber" name="49" href="#49">49</a>  
+<a class="jxr_linenumber" name="50" href="#50">50</a>    <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="51" href="#51">51</a>  <em class="jxr_javadoccomment">   * Generates a checksum for all the data in indata. The checksum is</em>
+<a class="jxr_linenumber" name="52" href="#52">52</a>  <em class="jxr_javadoccomment">   * written to outdata.</em>
+<a class="jxr_linenumber" name="53" href="#53">53</a>  <em class="jxr_javadoccomment">   * @param indata input data stream</em>
+<a class="jxr_linenumber" name="54" href="#54">54</a>  <em class="jxr_javadoccomment">   * @param startOffset starting offset in the indata stream from where to</em>
+<a class="jxr_linenumber" name="55" href="#55">55</a>  <em class="jxr_javadoccomment">   *                    compute checkums from</em>
+<a class="jxr_linenumber" name="56" href="#56">56</a>  <em class="jxr_javadoccomment">   * @param endOffset ending offset in the indata stream upto</em>
+<a class="jxr_linenumber" name="57" href="#57">57</a>  <em class="jxr_javadoccomment">   *                   which checksums needs to be computed</em>
+<a class="jxr_linenumber" name="58" href="#58">58</a>  <em class="jxr_javadoccomment">   * @param outdata the output buffer where checksum values are written</em>
+<a class="jxr_linenumber" name="59" href="#59">59</a>  <em class="jxr_javadoccomment">   * @param outOffset the starting offset in the outdata where the</em>
+<a class="jxr_linenumber" name="60" href="#60">60</a>  <em class="jxr_javadoccomment">   *                  checksum values are written</em>
+<a class="jxr_linenumber" name="61" href="#61">61</a>  <em class="jxr_javadoccomment">   * @param checksumType type of checksum</em>
+<a class="jxr_linenumber" name="62" href="#62">62</a>  <em class="jxr_javadoccomment">   * @param bytesPerChecksum number of bytes per checksum value</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>    <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> generateChecksums(byte[] indata, <strong class="jxr_keyword">int</strong> startOffset, <strong class="jxr_keyword">int</strong> endOffset,
+<a class="jxr_linenumber" name="65" href="#65">65</a>      byte[] outdata, <strong class="jxr_keyword">int</strong> outOffset, <a href="../../../../../../org/apache/hadoop/hbase/util/ChecksumType.html">ChecksumType</a> checksumType,
+<a class="jxr_linenumber" name="66" href="#66">66</a>      <strong class="jxr_keyword">int</strong> bytesPerChecksum) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="67" href="#67">67</a>  
+<a class="jxr_linenumber" name="68" href="#68">68</a>      <strong class="jxr_keyword">if</strong> (checksumType == ChecksumType.NULL) {
+<a class="jxr_linenumber" name="69" href="#69">69</a>        <strong class="jxr_keyword">return</strong>; <em class="jxr_comment">// No checksum for this block.</em>
+<a class="jxr_linenumber" name="70" href="#70">70</a>      }
+<a class="jxr_linenumber" name="71" href="#71">71</a>  
+<a class="jxr_linenumber" name="72" href="#72">72</a>      DataChecksum checksum = DataChecksum.newDataChecksum(
+<a class="jxr_linenumber" name="73" href="#73">73</a>          checksumType.getDataChecksumType(), bytesPerChecksum);
+<a class="jxr_linenumber" name="74" href="#74">74</a>  
+<a class="jxr_linenumber" name="75" href="#75">75</a>      checksum.calculateChunkedSums(
+<a class="jxr_linenumber" name="76" href="#76">76</a>         ByteBuffer.wrap(indata, startOffset, endOffset - startOffset),
+<a class="jxr_linenumber" name="77" href="#77">77</a>         ByteBuffer.wrap(outdata, outOffset, outdata.length - outOffset));
+<a class="jxr_linenumber" name="78" href="#78">78</a>    }
+<a class="jxr_linenumber" name="79" href="#79">79</a>  
+<a class="jxr_linenumber" name="80" href="#80">80</a>    <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="81" href="#81">81</a>  <em class="jxr_javadoccomment">   * Validates that the data in the specified HFileBlock matches the</em>
+<a class="jxr_linenumber" name="82" href="#82">82</a>  <em class="jxr_javadoccomment">   * checksum.  Generates the checksum for the data and</em>
+<a class="jxr_linenumber" name="83" href="#83">83</a>  <em class="jxr_javadoccomment">   * then validate that it matches the value stored in the header.</em>
+<a class="jxr_linenumber" name="84" href="#84">84</a>  <em class="jxr_javadoccomment">   * If there is a checksum mismatch, then return false. Otherwise</em>
+<a class="jxr_linenumber" name="85" href="#85">85</a>  <em class="jxr_javadoccomment">   * return true.</em>
+<a class="jxr_linenumber" name="86" href="#86">86</a>  <em class="jxr_javadoccomment">   * The header is extracted from the specified HFileBlock while the</em>
+<a class="jxr_linenumber" name="87" href="#87">87</a>  <em class="jxr_javadoccomment">   * data-to-be-verified is extracted from 'data'.</em>
+<a class="jxr_linenumber" name="88" href="#88">88</a>  <em class="jxr_javadoccomment">   */</em>
+<a class="jxr_linenumber" name="89" href="#89">89</a>    <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> validateBlockChecksum(String pathName, <a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.html">HFileBlock</a> block,
+<a class="jxr_linenumber" name="90" href="#90">90</a>      byte[] data, <strong class="jxr_keyword">int</strong> hdrSize) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="91" href="#91">91</a>  
+<a class="jxr_linenumber" name="92" href="#92">92</a>      <em class="jxr_comment">// If this is an older version of the block that does not have</em>
+<a class="jxr_linenumber" name="93" href="#93">93</a>      <em class="jxr_comment">// checksums, then return false indicating that checksum verification</em>
+<a class="jxr_linenumber" name="94" href="#94">94</a>      <em class="jxr_comment">// did not succeed. Actually, this methiod should never be called</em>
+<a class="jxr_linenumber" name="95" href="#95">95</a>      <em class="jxr_comment">// when the minorVersion is 0, thus this is a defensive check for a</em>
+<a class="jxr_linenumber" name="96" href="#96">96</a>      <em class="jxr_comment">// cannot-happen case. Since this is a cannot-happen case, it is</em>
+<a class="jxr_linenumber" name="97" href="#97">97</a>      <em class="jxr_comment">// better to return false to indicate a checksum validation failure.</em>
+<a class="jxr_linenumber" name="98" href="#98">98</a>      <strong class="jxr_keyword">if</strong> (!block.getHFileContext().isUseHBaseChecksum()) {
+<a class="jxr_linenumber" name="99" href="#99">99</a>        <strong class="jxr_keyword">return</strong> false;
+<a class="jxr_linenumber" name="100" href="#100">100</a>     }
+<a class="jxr_linenumber" name="101" href="#101">101</a> 
+<a class="jxr_linenumber" name="102" href="#102">102</a>     <em class="jxr_comment">// Get a checksum object based on the type of checksum that is</em>
+<a class="jxr_linenumber" name="103" href="#103">103</a>     <em class="jxr_comment">// set in the HFileBlock header. A ChecksumType.NULL indicates that </em>
+<a class="jxr_linenumber" name="104" href="#104">104</a>     <em class="jxr_comment">// the caller is not interested in validating checksums, so we</em>
+<a class="jxr_linenumber" name="105" href="#105">105</a>     <em class="jxr_comment">// always return true.</em>
+<a class="jxr_linenumber" name="106" href="#106">106</a>     <a href="../../../../../../org/apache/hadoop/hbase/util/ChecksumType.html">ChecksumType</a> cktype = ChecksumType.codeToType(block.getChecksumType());
+<a class="jxr_linenumber" name="107" href="#107">107</a>     <strong class="jxr_keyword">if</strong> (cktype == ChecksumType.NULL) {
+<a class="jxr_linenumber" name="108" href="#108">108</a>       <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>; <em class="jxr_comment">// No checksum validations needed for this block.</em>
+<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_comment">// read in the stored value of the checksum size from the header.</em>
+<a class="jxr_linenumber" name="112" href="#112">112</a>     <strong class="jxr_keyword">int</strong> bytesPerChecksum = block.getBytesPerChecksum();
+<a class="jxr_linenumber" name="113" href="#113">113</a> 
+<a class="jxr_linenumber" name="114" href="#114">114</a>     DataChecksum dataChecksum = DataChecksum.newDataChecksum(
+<a class="jxr_linenumber" name="115" href="#115">115</a>         cktype.getDataChecksumType(), bytesPerChecksum);
+<a class="jxr_linenumber" name="116" href="#116">116</a>     assert dataChecksum != <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="117" href="#117">117</a>     <strong class="jxr_keyword">int</strong> sizeWithHeader =  block.getOnDiskDataSizeWithHeader();
+<a class="jxr_linenumber" name="118" href="#118">118</a>     <strong class="jxr_keyword">if</strong> (LOG.isTraceEnabled()) {
+<a class="jxr_linenumber" name="119" href="#119">119</a>       LOG.info(<span class="jxr_string">"length of data = "</span> + data.length
+<a class="jxr_linenumber" name="120" href="#120">120</a>           + <span class="jxr_string">" OnDiskDataSizeWithHeader = "</span> + sizeWithHeader
+<a class="jxr_linenumber" name="121" href="#121">121</a>           + <span class="jxr_string">" checksum type = "</span> + cktype.getName()
+<a class="jxr_linenumber" name="122" href="#122">122</a>           + <span class="jxr_string">" file ="</span> + pathName
+<a class="jxr_linenumber" name="123" href="#123">123</a>           + <span class="jxr_string">" header size = "</span> + hdrSize
+<a class="jxr_linenumber" name="124" href="#124">124</a>           + <span class="jxr_string">" bytesPerChecksum = "</span> + bytesPerChecksum);
+<a class="jxr_linenumber" name="125" href="#125">125</a>     }
+<a class="jxr_linenumber" name="126" href="#126">126</a>     <strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="127" href="#127">127</a>       dataChecksum.verifyChunkedSums(ByteBuffer.wrap(data, 0, sizeWithHeader),
+<a class="jxr_linenumber" name="128" href="#128">128</a>           ByteBuffer.wrap(data, sizeWithHeader, data.length - sizeWithHeader), pathName, 0);
+<a class="jxr_linenumber" name="129" href="#129">129</a>     } <strong class="jxr_keyword">catch</strong> (ChecksumException e) {
+<a class="jxr_linenumber" name="130" href="#130">130</a>       <strong class="jxr_keyword">return</strong> false;
+<a class="jxr_linenumber" name="131" href="#131">131</a>     }
+<a class="jxr_linenumber" name="132" href="#132">132</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;  <em class="jxr_comment">// checksum is valid</em>
+<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>   <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="136" href="#136">136</a> <em class="jxr_javadoccomment">   * Returns the number of bytes needed to store the checksums for</em>
+<a class="jxr_linenumber" name="137" href="#137">137</a> <em class="jxr_javadoccomment">   * a specified data size</em>
+<a class="jxr_linenumber" name="138" href="#138">138</a> <em class="jxr_javadoccomment">   * @param datasize number of bytes of data</em>
+<a class="jxr_linenumber" name="139" href="#139">139</a> <em class="jxr_javadoccomment">   * @param bytesPerChecksum number of bytes in a checksum chunk</em>
+<a class="jxr_linenumber" name="140" href="#140">140</a> <em class="jxr_javadoccomment">   * @return The number of bytes needed to store the checksum values</em>
+<a class="jxr_linenumber" name="141" href="#141">141</a> <em class="jxr_javadoccomment">   */</em>
+<a class="jxr_linenumber" name="142" href="#142">142</a>   <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">long</strong> numBytes(<strong class="jxr_keyword">long</strong> datasize, <strong class="jxr_keyword">int</strong> bytesPerChecksum) {
+<a class="jxr_linenumber" name="143" href="#143">143</a>     <strong class="jxr_keyword">return</strong> numChunks(datasize, bytesPerChecksum) * 
+<a class="jxr_linenumber" name="144" href="#144">144</a>                      HFileBlock.CHECKSUM_SIZE;
+<a class="jxr_linenumber" name="145" href="#145">145</a>   }
+<a class="jxr_linenumber" name="146" href="#146">146</a> 
+<a class="jxr_linenumber" name="147" href="#147">147</a>   <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="148" href="#148">148</a> <em class="jxr_javadoccomment">   * Returns the number of checksum chunks needed to store the checksums for</em>
+<a class="jxr_linenumber" name="149" href="#149">149</a> <em class="jxr_javadoccomment">   * a specified data size</em>
+<a class="jxr_linenumber" name="150" href="#150">150</a> <em class="jxr_javadoccomment">   * @param datasize number of bytes of data</em>
+<a class="jxr_linenumber" name="151" href="#151">151</a> <em class="jxr_javadoccomment">   * @param bytesPerChecksum number of bytes in a checksum chunk</em>
+<a class="jxr_linenumber" name="152" href="#152">152</a> <em class="jxr_javadoccomment">   * @return The number of checksum chunks</em>
+<a class="jxr_linenumber" name="153" href="#153">153</a> <em class="jxr_javadoccomment">   */</em>
+<a class="jxr_linenumber" name="154" href="#154">154</a>   <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">long</strong> numChunks(<strong class="jxr_keyword">long</strong> datasize, <strong class="jxr_keyword">int</strong> bytesPerChecksum) {
+<a class="jxr_linenumber" name="155" href="#155">155</a>     <strong class="jxr_keyword">long</strong> numChunks = datasize/bytesPerChecksum;
+<a class="jxr_linenumber" name="156" href="#156">156</a>     <strong class="jxr_keyword">if</strong> (datasize % bytesPerChecksum != 0) {
+<a class="jxr_linenumber" name="157" href="#157">157</a>       numChunks++;
+<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> numChunks;
+<a class="jxr_linenumber" name="160" href="#160">160</a>   }
+<a class="jxr_linenumber" name="161" href="#161">161</a> 
+<a class="jxr_linenumber" name="162" href="#162">162</a>   <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="163" href="#163">163</a> <em class="jxr_javadoccomment">   * Write dummy checksums to the end of the specified bytes array</em>
+<a class="jxr_linenumber" name="164" href="#164">164</a> <em class="jxr_javadoccomment">   * to reserve space for writing checksums later</em>
+<a class="jxr_linenumber" name="165" href="#165">165</a> <em class="jxr_javadoccomment">   * @param baos OutputStream to write dummy checkum values</em>
+<a class="jxr_linenumber" name="166" href="#166">166</a> <em class="jxr_javadoccomment">   * @param numBytes Number of bytes of data for which dummy checksums</em>
+<a class="jxr_linenumber" name="167" href="#167">167</a> <em class="jxr_javadoccomment">   *                 need to be generated</em>
+<a class="jxr_linenumber" name="168" href="#168">168</a> <em class="jxr_javadoccomment">   * @param bytesPerChecksum Number of bytes per checksum value</em>
+<a class="jxr_linenumber" name="169" href="#169">169</a> <em class="jxr_javadoccomment">   */</em>
+<a class="jxr_linenumber" name="170" href="#170">170</a>   <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> reserveSpaceForChecksums(ByteArrayOutputStream baos,
+<a class="jxr_linenumber" name="171" href="#171">171</a>     <strong class="jxr_keyword">int</strong> numBytes, <strong class="jxr_keyword">int</strong> bytesPerChecksum) <strong class="jxr_keyword">throws</strong> IOException {
+<a class="jxr_linenumber" name="172" href="#172">172</a>     <strong class="jxr_keyword">long</strong> numChunks = numChunks(numBytes, bytesPerChecksum);
+<a class="jxr_linenumber" name="173" href="#173">173</a>     <strong class="jxr_keyword">long</strong> bytesLeft = numChunks * HFileBlock.CHECKSUM_SIZE;
+<a class="jxr_linenumber" name="174" href="#174">174</a>     <strong class="jxr_keyword">while</strong> (bytesLeft &gt; 0) {
+<a class="jxr_linenumber" name="175" href="#175">175</a>       <strong class="jxr_keyword">long</strong> count = Math.min(bytesLeft, DUMMY_VALUE.length);
+<a class="jxr_linenumber" name="176" href="#176">176</a>       baos.write(DUMMY_VALUE, 0, (<strong class="jxr_keyword">int</strong>)count);
+<a class="jxr_linenumber" name="177" href="#177">177</a>       bytesLeft -= count;
+<a class="jxr_linenumber" name="178" href="#178">178</a>     }
+<a class="jxr_linenumber" name="179" href="#179">179</a>   }
+<a class="jxr_linenumber" name="180" href="#180">180</a> 
+<a class="jxr_linenumber" name="181" href="#181">181</a>   <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="182" href="#182">182</a> <em class="jxr_javadoccomment">   * Mechanism to throw an exception in case of hbase checksum</em>
+<a class="jxr_linenumber" name="183" href="#183">183</a> <em class="jxr_javadoccomment">   * failure. This is used by unit tests only.</em>
+<a class="jxr_linenumber" name="184" href="#184">184</a> <em class="jxr_javadoccomment">   * @param value Setting this to true will cause hbase checksum</em>
+<a class="jxr_linenumber" name="185" href="#185">185</a> <em class="jxr_javadoccomment">   *              verification failures to generate exceptions.</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">static</strong> <strong class="jxr_keyword">void</strong> generateExceptionForChecksumFailureForTest(<strong class="jxr_keyword">boolean</strong> value) {
+<a class="jxr_linenumber" name="188" href="#188">188</a>     generateExceptions = value;
+<a class="jxr_linenumber" name="189" href="#189">189</a>   }
+<a class="jxr_linenumber" name="190" href="#190">190</a> }
+<a class="jxr_linenumber" name="191" href="#191">191</a> 
 </pre>
 <hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
 </html>


[02/23] hbase-site git commit: Published site at 2cf8af5bf1d501156cbb3b421cf75c1051ead7d9.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/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 03b4f51..c46ab89 100644
--- a/xref/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html
+++ b/xref/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html
@@ -36,9 +36,9 @@
 <a class="jxr_linenumber" name="26" href="#26">26</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"regionServer"</span>, type = <span class="jxr_string">"HRegionServer"</span>)},
 <a class="jxr_linenumber" name="27" href="#27">27</a>    optionalArguments = {
 <a class="jxr_linenumber" name="28" href="#28">28</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"format"</span>, type = <span class="jxr_string">"String"</span>),
-<a class="jxr_linenumber" name="29" href="#29">29</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"filter"</span>, type = <span class="jxr_string">"String"</span>),
+<a class="jxr_linenumber" name="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">"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">"bcv"</span>, type = <span class="jxr_string">"String"</span>)})
+<a class="jxr_linenumber" name="31" href="#31">31</a>      @org.jamon.annotations.Argument(name = <span class="jxr_string">"filter"</span>, type = <span class="jxr_string">"String"</span>)})
 <a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.html">RSStatusTmpl</a>
 <a class="jxr_linenumber" name="33" href="#33">33</a>    <strong class="jxr_keyword">extends</strong> org.jamon.AbstractTemplateProxy
 <a class="jxr_linenumber" name="34" href="#34">34</a>  {
@@ -96,23 +96,23 @@
 <a class="jxr_linenumber" name="86" href="#86">86</a>        <strong class="jxr_keyword">return</strong> m_format__IsNotDefault;
 <a class="jxr_linenumber" name="87" href="#87">87</a>      }
 <a class="jxr_linenumber" name="88" href="#88">88</a>      <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_format__IsNotDefault;
-<a class="jxr_linenumber" name="89" href="#89">89</a>      <em class="jxr_comment">// 21, 1</em>
-<a class="jxr_linenumber" name="90" href="#90">90</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setFilter(String filter)
+<a class="jxr_linenumber" name="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="91" href="#91">91</a>      {
-<a class="jxr_linenumber" name="92" href="#92">92</a>        <em class="jxr_comment">// 21, 1</em>
-<a class="jxr_linenumber" name="93" href="#93">93</a>        m_filter = filter;
-<a class="jxr_linenumber" name="94" href="#94">94</a>        m_filter__IsNotDefault = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="92" href="#92">92</a>        <em class="jxr_comment">// 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="95" href="#95">95</a>      }
-<a class="jxr_linenumber" name="96" href="#96">96</a>      <strong class="jxr_keyword">public</strong> String getFilter()
+<a class="jxr_linenumber" name="96" href="#96">96</a>      <strong class="jxr_keyword">public</strong> String getBcv()
 <a class="jxr_linenumber" name="97" href="#97">97</a>      {
-<a class="jxr_linenumber" name="98" href="#98">98</a>        <strong class="jxr_keyword">return</strong> m_filter;
+<a class="jxr_linenumber" name="98" href="#98">98</a>        <strong class="jxr_keyword">return</strong> m_bcv;
 <a class="jxr_linenumber" name="99" href="#99">99</a>      }
-<a class="jxr_linenumber" name="100" href="#100">100</a>     <strong class="jxr_keyword">private</strong> String m_filter;
-<a class="jxr_linenumber" name="101" href="#101">101</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getFilter__IsNotDefault()
+<a class="jxr_linenumber" name="100" href="#100">100</a>     <strong class="jxr_keyword">private</strong> String m_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="102" href="#102">102</a>     {
-<a class="jxr_linenumber" name="103" href="#103">103</a>       <strong class="jxr_keyword">return</strong> m_filter__IsNotDefault;
+<a class="jxr_linenumber" name="103" href="#103">103</a>       <strong class="jxr_keyword">return</strong> m_bcv__IsNotDefault;
 <a class="jxr_linenumber" name="104" href="#104">104</a>     }
-<a class="jxr_linenumber" name="105" href="#105">105</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_filter__IsNotDefault;
+<a class="jxr_linenumber" name="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">// 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>     {
@@ -130,23 +130,23 @@
 <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_bcn__IsNotDefault;
-<a class="jxr_linenumber" name="123" href="#123">123</a>     <em class="jxr_comment">// 24, 1</em>
-<a class="jxr_linenumber" name="124" href="#124">124</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setBcv(String bcv)
+<a class="jxr_linenumber" name="123" href="#123">123</a>     <em class="jxr_comment">// 21, 1</em>
+<a class="jxr_linenumber" name="124" href="#124">124</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setFilter(String filter)
 <a class="jxr_linenumber" name="125" href="#125">125</a>     {
-<a class="jxr_linenumber" name="126" href="#126">126</a>       <em class="jxr_comment">// 24, 1</em>
-<a class="jxr_linenumber" name="127" href="#127">127</a>       m_bcv = bcv;
-<a class="jxr_linenumber" name="128" href="#128">128</a>       m_bcv__IsNotDefault = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="126" href="#126">126</a>       <em class="jxr_comment">// 21, 1</em>
+<a class="jxr_linenumber" name="127" href="#127">127</a>       m_filter = filter;
+<a class="jxr_linenumber" name="128" href="#128">128</a>       m_filter__IsNotDefault = <strong class="jxr_keyword">true</strong>;
 <a class="jxr_linenumber" name="129" href="#129">129</a>     }
-<a class="jxr_linenumber" name="130" href="#130">130</a>     <strong class="jxr_keyword">public</strong> String getBcv()
+<a class="jxr_linenumber" name="130" href="#130">130</a>     <strong class="jxr_keyword">public</strong> String getFilter()
 <a class="jxr_linenumber" name="131" href="#131">131</a>     {
-<a class="jxr_linenumber" name="132" href="#132">132</a>       <strong class="jxr_keyword">return</strong> m_bcv;
+<a class="jxr_linenumber" name="132" href="#132">132</a>       <strong class="jxr_keyword">return</strong> m_filter;
 <a class="jxr_linenumber" name="133" href="#133">133</a>     }
-<a class="jxr_linenumber" name="134" href="#134">134</a>     <strong class="jxr_keyword">private</strong> String m_bcv;
-<a class="jxr_linenumber" name="135" href="#135">135</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getBcv__IsNotDefault()
+<a class="jxr_linenumber" name="134" href="#134">134</a>     <strong class="jxr_keyword">private</strong> String m_filter;
+<a class="jxr_linenumber" name="135" href="#135">135</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> getFilter__IsNotDefault()
 <a class="jxr_linenumber" name="136" href="#136">136</a>     {
-<a class="jxr_linenumber" name="137" href="#137">137</a>       <strong class="jxr_keyword">return</strong> m_bcv__IsNotDefault;
+<a class="jxr_linenumber" name="137" href="#137">137</a>       <strong class="jxr_keyword">return</strong> m_filter__IsNotDefault;
 <a class="jxr_linenumber" name="138" href="#138">138</a>     }
-<a class="jxr_linenumber" name="139" href="#139">139</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_bcv__IsNotDefault;
+<a class="jxr_linenumber" name="139" href="#139">139</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> m_filter__IsNotDefault;
 <a class="jxr_linenumber" name="140" href="#140">140</a>   }
 <a class="jxr_linenumber" name="141" href="#141">141</a>   @Override
 <a class="jxr_linenumber" name="142" href="#142">142</a>   <strong class="jxr_keyword">protected</strong> org.jamon.AbstractTemplateProxy.ImplData makeImplData()
@@ -165,10 +165,10 @@
 <a class="jxr_linenumber" name="155" href="#155">155</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
 <a class="jxr_linenumber" name="156" href="#156">156</a>   }
 <a class="jxr_linenumber" name="157" href="#157">157</a>   
-<a class="jxr_linenumber" name="158" href="#158">158</a>   <strong class="jxr_keyword">protected</strong> String filter;
-<a class="jxr_linenumber" name="159" href="#159">159</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFilter(String p_filter)
+<a class="jxr_linenumber" name="158" href="#158">158</a>   <strong class="jxr_keyword">protected</strong> String 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="160" href="#160">160</a>   {
-<a class="jxr_linenumber" name="161" href="#161">161</a>     (getImplData()).setFilter(p_filter);
+<a class="jxr_linenumber" name="161" href="#161">161</a>     (getImplData()).setBcv(p_bcv);
 <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>   
@@ -179,10 +179,10 @@
 <a class="jxr_linenumber" name="169" href="#169">169</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
 <a class="jxr_linenumber" name="170" href="#170">170</a>   }
 <a class="jxr_linenumber" name="171" href="#171">171</a>   
-<a class="jxr_linenumber" name="172" href="#172">172</a>   <strong class="jxr_keyword">protected</strong> String bcv;
-<a class="jxr_linenumber" name="173" href="#173">173</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcv(String p_bcv)
+<a class="jxr_linenumber" name="172" href="#172">172</a>   <strong class="jxr_keyword">protected</strong> String filter;
+<a class="jxr_linenumber" name="173" href="#173">173</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFilter(String p_filter)
 <a class="jxr_linenumber" name="174" href="#174">174</a>   {
-<a class="jxr_linenumber" name="175" href="#175">175</a>     (getImplData()).setBcv(p_bcv);
+<a class="jxr_linenumber" name="175" href="#175">175</a>     (getImplData()).setFilter(p_filter);
 <a class="jxr_linenumber" name="176" href="#176">176</a>     <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
 <a class="jxr_linenumber" name="177" href="#177">177</a>   }
 <a class="jxr_linenumber" name="178" href="#178">178</a>   

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


[08/23] hbase-site git commit: Published site at 2cf8af5bf1d501156cbb3b421cf75c1051ead7d9.

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/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 d85bb00..e0fb608 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
@@ -68,15 +68,15 @@
 <span class="sourceLineNo">060</span><a name="line.60"></a>
 <span class="sourceLineNo">061</span>{<a name="line.61"></a>
 <span class="sourceLineNo">062</span>  private final HMaster master;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  private final String format;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>  private final ServerManager serverManager;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  private final String filter;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  private final AssignmentManager assignmentManager;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  private final List&lt;ServerName&gt; servers;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>  private final Map&lt;String,Integer&gt; frags;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  private final ServerName metaLocation;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  private final Set&lt;ServerName&gt; deadServers;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  private final boolean catalogJanitorEnabled;<a name="line.71"></a>
+<span class="sourceLineNo">063</span>  private final Set&lt;ServerName&gt; deadServers;<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 ServerName metaLocation;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  private final Map&lt;String,Integer&gt; frags;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>  private final ServerManager serverManager;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  private final String format;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>  private final boolean catalogJanitorEnabled;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  private final String filter;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  private final AssignmentManager assignmentManager;<a name="line.71"></a>
 <span class="sourceLineNo">072</span>  // 68, 1<a name="line.72"></a>
 <span class="sourceLineNo">073</span>  <a name="line.73"></a>
 <span class="sourceLineNo">074</span>  public String formatZKString() {<a name="line.74"></a>
@@ -106,41 +106,41 @@
 <span class="sourceLineNo">098</span><a name="line.98"></a>
 <span class="sourceLineNo">099</span>  protected static org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl.ImplData __jamon_setOptionalArguments(org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl.ImplData p_implData)<a name="line.99"></a>
 <span class="sourceLineNo">100</span>  {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    if(! p_implData.getFormat__IsNotDefault())<a name="line.101"></a>
+<span class="sourceLineNo">101</span>    if(! p_implData.getDeadServers__IsNotDefault())<a name="line.101"></a>
 <span class="sourceLineNo">102</span>    {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      p_implData.setFormat("html");<a name="line.103"></a>
+<span class="sourceLineNo">103</span>      p_implData.setDeadServers(null);<a name="line.103"></a>
 <span class="sourceLineNo">104</span>    }<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    if(! p_implData.getServerManager__IsNotDefault())<a name="line.105"></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.setServerManager(null);<a name="line.107"></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.getFilter__IsNotDefault())<a name="line.109"></a>
+<span class="sourceLineNo">109</span>    if(! p_implData.getMetaLocation__IsNotDefault())<a name="line.109"></a>
 <span class="sourceLineNo">110</span>    {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      p_implData.setFilter("general");<a name="line.111"></a>
+<span class="sourceLineNo">111</span>      p_implData.setMetaLocation(null);<a name="line.111"></a>
 <span class="sourceLineNo">112</span>    }<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    if(! p_implData.getAssignmentManager__IsNotDefault())<a name="line.113"></a>
+<span class="sourceLineNo">113</span>    if(! p_implData.getFrags__IsNotDefault())<a name="line.113"></a>
 <span class="sourceLineNo">114</span>    {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      p_implData.setAssignmentManager(null);<a name="line.115"></a>
+<span class="sourceLineNo">115</span>      p_implData.setFrags(null);<a name="line.115"></a>
 <span class="sourceLineNo">116</span>    }<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    if(! p_implData.getServers__IsNotDefault())<a name="line.117"></a>
+<span class="sourceLineNo">117</span>    if(! p_implData.getServerManager__IsNotDefault())<a name="line.117"></a>
 <span class="sourceLineNo">118</span>    {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      p_implData.setServers(null);<a name="line.119"></a>
+<span class="sourceLineNo">119</span>      p_implData.setServerManager(null);<a name="line.119"></a>
 <span class="sourceLineNo">120</span>    }<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    if(! p_implData.getFrags__IsNotDefault())<a name="line.121"></a>
+<span class="sourceLineNo">121</span>    if(! p_implData.getFormat__IsNotDefault())<a name="line.121"></a>
 <span class="sourceLineNo">122</span>    {<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      p_implData.setFrags(null);<a name="line.123"></a>
+<span class="sourceLineNo">123</span>      p_implData.setFormat("html");<a name="line.123"></a>
 <span class="sourceLineNo">124</span>    }<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    if(! p_implData.getMetaLocation__IsNotDefault())<a name="line.125"></a>
+<span class="sourceLineNo">125</span>    if(! p_implData.getCatalogJanitorEnabled__IsNotDefault())<a name="line.125"></a>
 <span class="sourceLineNo">126</span>    {<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      p_implData.setMetaLocation(null);<a name="line.127"></a>
+<span class="sourceLineNo">127</span>      p_implData.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.getFilter__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.setFilter("general");<a name="line.131"></a>
 <span class="sourceLineNo">132</span>    }<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    if(! p_implData.getCatalogJanitorEnabled__IsNotDefault())<a name="line.133"></a>
+<span class="sourceLineNo">133</span>    if(! p_implData.getAssignmentManager__IsNotDefault())<a name="line.133"></a>
 <span class="sourceLineNo">134</span>    {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      p_implData.setCatalogJanitorEnabled(true);<a name="line.135"></a>
+<span class="sourceLineNo">135</span>      p_implData.setAssignmentManager(null);<a name="line.135"></a>
 <span class="sourceLineNo">136</span>    }<a name="line.136"></a>
 <span class="sourceLineNo">137</span>    return p_implData;<a name="line.137"></a>
 <span class="sourceLineNo">138</span>  }<a name="line.138"></a>
@@ -148,15 +148,15 @@
 <span class="sourceLineNo">140</span>  {<a name="line.140"></a>
 <span class="sourceLineNo">141</span>    super(p_templateManager, __jamon_setOptionalArguments(p_implData));<a name="line.141"></a>
 <span class="sourceLineNo">142</span>    master = p_implData.getMaster();<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    format = p_implData.getFormat();<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    serverManager = p_implData.getServerManager();<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    filter = p_implData.getFilter();<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    assignmentManager = p_implData.getAssignmentManager();<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    servers = p_implData.getServers();<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    frags = p_implData.getFrags();<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    metaLocation = p_implData.getMetaLocation();<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    deadServers = p_implData.getDeadServers();<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    catalogJanitorEnabled = p_implData.getCatalogJanitorEnabled();<a name="line.151"></a>
+<span class="sourceLineNo">143</span>    deadServers = p_implData.getDeadServers();<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    servers = p_implData.getServers();<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    metaLocation = p_implData.getMetaLocation();<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    frags = p_implData.getFrags();<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    serverManager = p_implData.getServerManager();<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    format = p_implData.getFormat();<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    catalogJanitorEnabled = p_implData.getCatalogJanitorEnabled();<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    filter = p_implData.getFilter();<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    assignmentManager = p_implData.getAssignmentManager();<a name="line.151"></a>
 <span class="sourceLineNo">152</span>  }<a name="line.152"></a>
 <span class="sourceLineNo">153</span>  <a name="line.153"></a>
 <span class="sourceLineNo">154</span>  @Override public void renderNoFlush(final java.io.Writer jamonWriter)<a name="line.154"></a>
@@ -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_6 = new org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl(this.getTemplateManager());<a name="line.164"></a>
-<span class="sourceLineNo">165</span>        __jamon__var_6.setFormat("json" );<a name="line.165"></a>
-<span class="sourceLineNo">166</span>        __jamon__var_6.setFilter(filter);<a name="line.166"></a>
+<span class="sourceLineNo">165</span>        __jamon__var_6.setFilter(filter);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>        __jamon__var_6.setFormat("json" );<a name="line.166"></a>
 <span class="sourceLineNo">167</span>        __jamon__var_6.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-site/blob/32672884/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 9ce41cc..3761b57 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
@@ -34,9 +34,9 @@
 <span class="sourceLineNo">026</span>    @org.jamon.annotations.Argument(name = "regionServer", type = "HRegionServer")},<a name="line.26"></a>
 <span class="sourceLineNo">027</span>  optionalArguments = {<a name="line.27"></a>
 <span class="sourceLineNo">028</span>    @org.jamon.annotations.Argument(name = "format", type = "String"),<a name="line.28"></a>
-<span class="sourceLineNo">029</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<a name="line.29"></a>
+<span class="sourceLineNo">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 = "bcn", type = "String"),<a name="line.30"></a>
-<span class="sourceLineNo">031</span>    @org.jamon.annotations.Argument(name = "bcv", type = "String")})<a name="line.31"></a>
+<span class="sourceLineNo">031</span>    @org.jamon.annotations.Argument(name = "filter", type = "String")})<a name="line.31"></a>
 <span class="sourceLineNo">032</span>public class RSStatusTmpl<a name="line.32"></a>
 <span class="sourceLineNo">033</span>  extends org.jamon.AbstractTemplateProxy<a name="line.33"></a>
 <span class="sourceLineNo">034</span>{<a name="line.34"></a>
@@ -94,23 +94,23 @@
 <span class="sourceLineNo">086</span>      return m_format__IsNotDefault;<a name="line.86"></a>
 <span class="sourceLineNo">087</span>    }<a name="line.87"></a>
 <span class="sourceLineNo">088</span>    private boolean m_format__IsNotDefault;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    // 21, 1<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    public void setFilter(String filter)<a name="line.90"></a>
+<span class="sourceLineNo">089</span>    // 24, 1<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    public void setBcv(String bcv)<a name="line.90"></a>
 <span class="sourceLineNo">091</span>    {<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      // 21, 1<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      m_filter = filter;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>      m_filter__IsNotDefault = true;<a name="line.94"></a>
+<span class="sourceLineNo">092</span>      // 24, 1<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      m_bcv = bcv;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      m_bcv__IsNotDefault = true;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>    }<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    public String getFilter()<a name="line.96"></a>
+<span class="sourceLineNo">096</span>    public String getBcv()<a name="line.96"></a>
 <span class="sourceLineNo">097</span>    {<a name="line.97"></a>
-<span class="sourceLineNo">098</span>      return m_filter;<a name="line.98"></a>
+<span class="sourceLineNo">098</span>      return m_bcv;<a name="line.98"></a>
 <span class="sourceLineNo">099</span>    }<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    private String m_filter;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    public boolean getFilter__IsNotDefault()<a name="line.101"></a>
+<span class="sourceLineNo">100</span>    private String m_bcv;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    public boolean getBcv__IsNotDefault()<a name="line.101"></a>
 <span class="sourceLineNo">102</span>    {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      return m_filter__IsNotDefault;<a name="line.103"></a>
+<span class="sourceLineNo">103</span>      return m_bcv__IsNotDefault;<a name="line.103"></a>
 <span class="sourceLineNo">104</span>    }<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    private boolean m_filter__IsNotDefault;<a name="line.105"></a>
+<span class="sourceLineNo">105</span>    private boolean m_bcv__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>
@@ -128,23 +128,23 @@
 <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_bcn__IsNotDefault;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    // 24, 1<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    public void setBcv(String bcv)<a name="line.124"></a>
+<span class="sourceLineNo">123</span>    // 21, 1<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    public void setFilter(String filter)<a name="line.124"></a>
 <span class="sourceLineNo">125</span>    {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      // 24, 1<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      m_bcv = bcv;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      m_bcv__IsNotDefault = true;<a name="line.128"></a>
+<span class="sourceLineNo">126</span>      // 21, 1<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      m_filter = filter;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      m_filter__IsNotDefault = true;<a name="line.128"></a>
 <span class="sourceLineNo">129</span>    }<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    public String getBcv()<a name="line.130"></a>
+<span class="sourceLineNo">130</span>    public String getFilter()<a name="line.130"></a>
 <span class="sourceLineNo">131</span>    {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      return m_bcv;<a name="line.132"></a>
+<span class="sourceLineNo">132</span>      return m_filter;<a name="line.132"></a>
 <span class="sourceLineNo">133</span>    }<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    private String m_bcv;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    public boolean getBcv__IsNotDefault()<a name="line.135"></a>
+<span class="sourceLineNo">134</span>    private String m_filter;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    public boolean getFilter__IsNotDefault()<a name="line.135"></a>
 <span class="sourceLineNo">136</span>    {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      return m_bcv__IsNotDefault;<a name="line.137"></a>
+<span class="sourceLineNo">137</span>      return m_filter__IsNotDefault;<a name="line.137"></a>
 <span class="sourceLineNo">138</span>    }<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    private boolean m_bcv__IsNotDefault;<a name="line.139"></a>
+<span class="sourceLineNo">139</span>    private boolean m_filter__IsNotDefault;<a name="line.139"></a>
 <span class="sourceLineNo">140</span>  }<a name="line.140"></a>
 <span class="sourceLineNo">141</span>  @Override<a name="line.141"></a>
 <span class="sourceLineNo">142</span>  protected org.jamon.AbstractTemplateProxy.ImplData makeImplData()<a name="line.142"></a>
@@ -163,10 +163,10 @@
 <span class="sourceLineNo">155</span>    return this;<a name="line.155"></a>
 <span class="sourceLineNo">156</span>  }<a name="line.156"></a>
 <span class="sourceLineNo">157</span>  <a name="line.157"></a>
-<span class="sourceLineNo">158</span>  protected String filter;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFilter(String p_filter)<a name="line.159"></a>
+<span class="sourceLineNo">158</span>  protected String bcv;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcv(String p_bcv)<a name="line.159"></a>
 <span class="sourceLineNo">160</span>  {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    (getImplData()).setFilter(p_filter);<a name="line.161"></a>
+<span class="sourceLineNo">161</span>    (getImplData()).setBcv(p_bcv);<a name="line.161"></a>
 <span class="sourceLineNo">162</span>    return this;<a name="line.162"></a>
 <span class="sourceLineNo">163</span>  }<a name="line.163"></a>
 <span class="sourceLineNo">164</span>  <a name="line.164"></a>
@@ -177,10 +177,10 @@
 <span class="sourceLineNo">169</span>    return this;<a name="line.169"></a>
 <span class="sourceLineNo">170</span>  }<a name="line.170"></a>
 <span class="sourceLineNo">171</span>  <a name="line.171"></a>
-<span class="sourceLineNo">172</span>  protected String bcv;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcv(String p_bcv)<a name="line.173"></a>
+<span class="sourceLineNo">172</span>  protected String filter;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFilter(String p_filter)<a name="line.173"></a>
 <span class="sourceLineNo">174</span>  {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    (getImplData()).setBcv(p_bcv);<a name="line.175"></a>
+<span class="sourceLineNo">175</span>    (getImplData()).setFilter(p_filter);<a name="line.175"></a>
 <span class="sourceLineNo">176</span>    return this;<a name="line.176"></a>
 <span class="sourceLineNo">177</span>  }<a name="line.177"></a>
 <span class="sourceLineNo">178</span>  <a name="line.178"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/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 9ce41cc..3761b57 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
@@ -34,9 +34,9 @@
 <span class="sourceLineNo">026</span>    @org.jamon.annotations.Argument(name = "regionServer", type = "HRegionServer")},<a name="line.26"></a>
 <span class="sourceLineNo">027</span>  optionalArguments = {<a name="line.27"></a>
 <span class="sourceLineNo">028</span>    @org.jamon.annotations.Argument(name = "format", type = "String"),<a name="line.28"></a>
-<span class="sourceLineNo">029</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<a name="line.29"></a>
+<span class="sourceLineNo">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 = "bcn", type = "String"),<a name="line.30"></a>
-<span class="sourceLineNo">031</span>    @org.jamon.annotations.Argument(name = "bcv", type = "String")})<a name="line.31"></a>
+<span class="sourceLineNo">031</span>    @org.jamon.annotations.Argument(name = "filter", type = "String")})<a name="line.31"></a>
 <span class="sourceLineNo">032</span>public class RSStatusTmpl<a name="line.32"></a>
 <span class="sourceLineNo">033</span>  extends org.jamon.AbstractTemplateProxy<a name="line.33"></a>
 <span class="sourceLineNo">034</span>{<a name="line.34"></a>
@@ -94,23 +94,23 @@
 <span class="sourceLineNo">086</span>      return m_format__IsNotDefault;<a name="line.86"></a>
 <span class="sourceLineNo">087</span>    }<a name="line.87"></a>
 <span class="sourceLineNo">088</span>    private boolean m_format__IsNotDefault;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    // 21, 1<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    public void setFilter(String filter)<a name="line.90"></a>
+<span class="sourceLineNo">089</span>    // 24, 1<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    public void setBcv(String bcv)<a name="line.90"></a>
 <span class="sourceLineNo">091</span>    {<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      // 21, 1<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      m_filter = filter;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>      m_filter__IsNotDefault = true;<a name="line.94"></a>
+<span class="sourceLineNo">092</span>      // 24, 1<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      m_bcv = bcv;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      m_bcv__IsNotDefault = true;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>    }<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    public String getFilter()<a name="line.96"></a>
+<span class="sourceLineNo">096</span>    public String getBcv()<a name="line.96"></a>
 <span class="sourceLineNo">097</span>    {<a name="line.97"></a>
-<span class="sourceLineNo">098</span>      return m_filter;<a name="line.98"></a>
+<span class="sourceLineNo">098</span>      return m_bcv;<a name="line.98"></a>
 <span class="sourceLineNo">099</span>    }<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    private String m_filter;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    public boolean getFilter__IsNotDefault()<a name="line.101"></a>
+<span class="sourceLineNo">100</span>    private String m_bcv;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    public boolean getBcv__IsNotDefault()<a name="line.101"></a>
 <span class="sourceLineNo">102</span>    {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      return m_filter__IsNotDefault;<a name="line.103"></a>
+<span class="sourceLineNo">103</span>      return m_bcv__IsNotDefault;<a name="line.103"></a>
 <span class="sourceLineNo">104</span>    }<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    private boolean m_filter__IsNotDefault;<a name="line.105"></a>
+<span class="sourceLineNo">105</span>    private boolean m_bcv__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>
@@ -128,23 +128,23 @@
 <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_bcn__IsNotDefault;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    // 24, 1<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    public void setBcv(String bcv)<a name="line.124"></a>
+<span class="sourceLineNo">123</span>    // 21, 1<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    public void setFilter(String filter)<a name="line.124"></a>
 <span class="sourceLineNo">125</span>    {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      // 24, 1<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      m_bcv = bcv;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      m_bcv__IsNotDefault = true;<a name="line.128"></a>
+<span class="sourceLineNo">126</span>      // 21, 1<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      m_filter = filter;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      m_filter__IsNotDefault = true;<a name="line.128"></a>
 <span class="sourceLineNo">129</span>    }<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    public String getBcv()<a name="line.130"></a>
+<span class="sourceLineNo">130</span>    public String getFilter()<a name="line.130"></a>
 <span class="sourceLineNo">131</span>    {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      return m_bcv;<a name="line.132"></a>
+<span class="sourceLineNo">132</span>      return m_filter;<a name="line.132"></a>
 <span class="sourceLineNo">133</span>    }<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    private String m_bcv;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    public boolean getBcv__IsNotDefault()<a name="line.135"></a>
+<span class="sourceLineNo">134</span>    private String m_filter;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    public boolean getFilter__IsNotDefault()<a name="line.135"></a>
 <span class="sourceLineNo">136</span>    {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      return m_bcv__IsNotDefault;<a name="line.137"></a>
+<span class="sourceLineNo">137</span>      return m_filter__IsNotDefault;<a name="line.137"></a>
 <span class="sourceLineNo">138</span>    }<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    private boolean m_bcv__IsNotDefault;<a name="line.139"></a>
+<span class="sourceLineNo">139</span>    private boolean m_filter__IsNotDefault;<a name="line.139"></a>
 <span class="sourceLineNo">140</span>  }<a name="line.140"></a>
 <span class="sourceLineNo">141</span>  @Override<a name="line.141"></a>
 <span class="sourceLineNo">142</span>  protected org.jamon.AbstractTemplateProxy.ImplData makeImplData()<a name="line.142"></a>
@@ -163,10 +163,10 @@
 <span class="sourceLineNo">155</span>    return this;<a name="line.155"></a>
 <span class="sourceLineNo">156</span>  }<a name="line.156"></a>
 <span class="sourceLineNo">157</span>  <a name="line.157"></a>
-<span class="sourceLineNo">158</span>  protected String filter;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFilter(String p_filter)<a name="line.159"></a>
+<span class="sourceLineNo">158</span>  protected String bcv;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcv(String p_bcv)<a name="line.159"></a>
 <span class="sourceLineNo">160</span>  {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    (getImplData()).setFilter(p_filter);<a name="line.161"></a>
+<span class="sourceLineNo">161</span>    (getImplData()).setBcv(p_bcv);<a name="line.161"></a>
 <span class="sourceLineNo">162</span>    return this;<a name="line.162"></a>
 <span class="sourceLineNo">163</span>  }<a name="line.163"></a>
 <span class="sourceLineNo">164</span>  <a name="line.164"></a>
@@ -177,10 +177,10 @@
 <span class="sourceLineNo">169</span>    return this;<a name="line.169"></a>
 <span class="sourceLineNo">170</span>  }<a name="line.170"></a>
 <span class="sourceLineNo">171</span>  <a name="line.171"></a>
-<span class="sourceLineNo">172</span>  protected String bcv;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcv(String p_bcv)<a name="line.173"></a>
+<span class="sourceLineNo">172</span>  protected String filter;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFilter(String p_filter)<a name="line.173"></a>
 <span class="sourceLineNo">174</span>  {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    (getImplData()).setBcv(p_bcv);<a name="line.175"></a>
+<span class="sourceLineNo">175</span>    (getImplData()).setFilter(p_filter);<a name="line.175"></a>
 <span class="sourceLineNo">176</span>    return this;<a name="line.176"></a>
 <span class="sourceLineNo">177</span>  }<a name="line.177"></a>
 <span class="sourceLineNo">178</span>  <a name="line.178"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/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 9ce41cc..3761b57 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
@@ -34,9 +34,9 @@
 <span class="sourceLineNo">026</span>    @org.jamon.annotations.Argument(name = "regionServer", type = "HRegionServer")},<a name="line.26"></a>
 <span class="sourceLineNo">027</span>  optionalArguments = {<a name="line.27"></a>
 <span class="sourceLineNo">028</span>    @org.jamon.annotations.Argument(name = "format", type = "String"),<a name="line.28"></a>
-<span class="sourceLineNo">029</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<a name="line.29"></a>
+<span class="sourceLineNo">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 = "bcn", type = "String"),<a name="line.30"></a>
-<span class="sourceLineNo">031</span>    @org.jamon.annotations.Argument(name = "bcv", type = "String")})<a name="line.31"></a>
+<span class="sourceLineNo">031</span>    @org.jamon.annotations.Argument(name = "filter", type = "String")})<a name="line.31"></a>
 <span class="sourceLineNo">032</span>public class RSStatusTmpl<a name="line.32"></a>
 <span class="sourceLineNo">033</span>  extends org.jamon.AbstractTemplateProxy<a name="line.33"></a>
 <span class="sourceLineNo">034</span>{<a name="line.34"></a>
@@ -94,23 +94,23 @@
 <span class="sourceLineNo">086</span>      return m_format__IsNotDefault;<a name="line.86"></a>
 <span class="sourceLineNo">087</span>    }<a name="line.87"></a>
 <span class="sourceLineNo">088</span>    private boolean m_format__IsNotDefault;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    // 21, 1<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    public void setFilter(String filter)<a name="line.90"></a>
+<span class="sourceLineNo">089</span>    // 24, 1<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    public void setBcv(String bcv)<a name="line.90"></a>
 <span class="sourceLineNo">091</span>    {<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      // 21, 1<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      m_filter = filter;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>      m_filter__IsNotDefault = true;<a name="line.94"></a>
+<span class="sourceLineNo">092</span>      // 24, 1<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      m_bcv = bcv;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      m_bcv__IsNotDefault = true;<a name="line.94"></a>
 <span class="sourceLineNo">095</span>    }<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    public String getFilter()<a name="line.96"></a>
+<span class="sourceLineNo">096</span>    public String getBcv()<a name="line.96"></a>
 <span class="sourceLineNo">097</span>    {<a name="line.97"></a>
-<span class="sourceLineNo">098</span>      return m_filter;<a name="line.98"></a>
+<span class="sourceLineNo">098</span>      return m_bcv;<a name="line.98"></a>
 <span class="sourceLineNo">099</span>    }<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    private String m_filter;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    public boolean getFilter__IsNotDefault()<a name="line.101"></a>
+<span class="sourceLineNo">100</span>    private String m_bcv;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    public boolean getBcv__IsNotDefault()<a name="line.101"></a>
 <span class="sourceLineNo">102</span>    {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      return m_filter__IsNotDefault;<a name="line.103"></a>
+<span class="sourceLineNo">103</span>      return m_bcv__IsNotDefault;<a name="line.103"></a>
 <span class="sourceLineNo">104</span>    }<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    private boolean m_filter__IsNotDefault;<a name="line.105"></a>
+<span class="sourceLineNo">105</span>    private boolean m_bcv__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>
@@ -128,23 +128,23 @@
 <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_bcn__IsNotDefault;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    // 24, 1<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    public void setBcv(String bcv)<a name="line.124"></a>
+<span class="sourceLineNo">123</span>    // 21, 1<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    public void setFilter(String filter)<a name="line.124"></a>
 <span class="sourceLineNo">125</span>    {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      // 24, 1<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      m_bcv = bcv;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      m_bcv__IsNotDefault = true;<a name="line.128"></a>
+<span class="sourceLineNo">126</span>      // 21, 1<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      m_filter = filter;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      m_filter__IsNotDefault = true;<a name="line.128"></a>
 <span class="sourceLineNo">129</span>    }<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    public String getBcv()<a name="line.130"></a>
+<span class="sourceLineNo">130</span>    public String getFilter()<a name="line.130"></a>
 <span class="sourceLineNo">131</span>    {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      return m_bcv;<a name="line.132"></a>
+<span class="sourceLineNo">132</span>      return m_filter;<a name="line.132"></a>
 <span class="sourceLineNo">133</span>    }<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    private String m_bcv;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    public boolean getBcv__IsNotDefault()<a name="line.135"></a>
+<span class="sourceLineNo">134</span>    private String m_filter;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    public boolean getFilter__IsNotDefault()<a name="line.135"></a>
 <span class="sourceLineNo">136</span>    {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      return m_bcv__IsNotDefault;<a name="line.137"></a>
+<span class="sourceLineNo">137</span>      return m_filter__IsNotDefault;<a name="line.137"></a>
 <span class="sourceLineNo">138</span>    }<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    private boolean m_bcv__IsNotDefault;<a name="line.139"></a>
+<span class="sourceLineNo">139</span>    private boolean m_filter__IsNotDefault;<a name="line.139"></a>
 <span class="sourceLineNo">140</span>  }<a name="line.140"></a>
 <span class="sourceLineNo">141</span>  @Override<a name="line.141"></a>
 <span class="sourceLineNo">142</span>  protected org.jamon.AbstractTemplateProxy.ImplData makeImplData()<a name="line.142"></a>
@@ -163,10 +163,10 @@
 <span class="sourceLineNo">155</span>    return this;<a name="line.155"></a>
 <span class="sourceLineNo">156</span>  }<a name="line.156"></a>
 <span class="sourceLineNo">157</span>  <a name="line.157"></a>
-<span class="sourceLineNo">158</span>  protected String filter;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFilter(String p_filter)<a name="line.159"></a>
+<span class="sourceLineNo">158</span>  protected String bcv;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcv(String p_bcv)<a name="line.159"></a>
 <span class="sourceLineNo">160</span>  {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    (getImplData()).setFilter(p_filter);<a name="line.161"></a>
+<span class="sourceLineNo">161</span>    (getImplData()).setBcv(p_bcv);<a name="line.161"></a>
 <span class="sourceLineNo">162</span>    return this;<a name="line.162"></a>
 <span class="sourceLineNo">163</span>  }<a name="line.163"></a>
 <span class="sourceLineNo">164</span>  <a name="line.164"></a>
@@ -177,10 +177,10 @@
 <span class="sourceLineNo">169</span>    return this;<a name="line.169"></a>
 <span class="sourceLineNo">170</span>  }<a name="line.170"></a>
 <span class="sourceLineNo">171</span>  <a name="line.171"></a>
-<span class="sourceLineNo">172</span>  protected String bcv;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setBcv(String p_bcv)<a name="line.173"></a>
+<span class="sourceLineNo">172</span>  protected String filter;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  public final org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl setFilter(String p_filter)<a name="line.173"></a>
 <span class="sourceLineNo">174</span>  {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    (getImplData()).setBcv(p_bcv);<a name="line.175"></a>
+<span class="sourceLineNo">175</span>    (getImplData()).setFilter(p_filter);<a name="line.175"></a>
 <span class="sourceLineNo">176</span>    return this;<a name="line.176"></a>
 <span class="sourceLineNo">177</span>  }<a name="line.177"></a>
 <span class="sourceLineNo">178</span>  <a name="line.178"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/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 a37171e..52eded5 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
@@ -35,26 +35,26 @@
 <span class="sourceLineNo">027</span>{<a name="line.27"></a>
 <span class="sourceLineNo">028</span>  private final HRegionServer regionServer;<a name="line.28"></a>
 <span class="sourceLineNo">029</span>  private final String format;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>  private final String filter;<a name="line.30"></a>
+<span class="sourceLineNo">030</span>  private final String bcv;<a name="line.30"></a>
 <span class="sourceLineNo">031</span>  private final String bcn;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>  private final String bcv;<a name="line.32"></a>
+<span class="sourceLineNo">032</span>  private final String filter;<a name="line.32"></a>
 <span class="sourceLineNo">033</span>  protected static org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl.ImplData __jamon_setOptionalArguments(org.apache.hadoop.hbase.tmpl.regionserver.RSStatusTmpl.ImplData p_implData)<a name="line.33"></a>
 <span class="sourceLineNo">034</span>  {<a name="line.34"></a>
 <span class="sourceLineNo">035</span>    if(! p_implData.getFormat__IsNotDefault())<a name="line.35"></a>
 <span class="sourceLineNo">036</span>    {<a name="line.36"></a>
 <span class="sourceLineNo">037</span>      p_implData.setFormat("html");<a name="line.37"></a>
 <span class="sourceLineNo">038</span>    }<a name="line.38"></a>
-<span class="sourceLineNo">039</span>    if(! p_implData.getFilter__IsNotDefault())<a name="line.39"></a>
+<span class="sourceLineNo">039</span>    if(! p_implData.getBcv__IsNotDefault())<a name="line.39"></a>
 <span class="sourceLineNo">040</span>    {<a name="line.40"></a>
-<span class="sourceLineNo">041</span>      p_implData.setFilter("general");<a name="line.41"></a>
+<span class="sourceLineNo">041</span>      p_implData.setBcv("");<a name="line.41"></a>
 <span class="sourceLineNo">042</span>    }<a name="line.42"></a>
 <span class="sourceLineNo">043</span>    if(! p_implData.getBcn__IsNotDefault())<a name="line.43"></a>
 <span class="sourceLineNo">044</span>    {<a name="line.44"></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.getBcv__IsNotDefault())<a name="line.47"></a>
+<span class="sourceLineNo">047</span>    if(! p_implData.getFilter__IsNotDefault())<a name="line.47"></a>
 <span class="sourceLineNo">048</span>    {<a name="line.48"></a>
-<span class="sourceLineNo">049</span>      p_implData.setBcv("");<a name="line.49"></a>
+<span class="sourceLineNo">049</span>      p_implData.setFilter("general");<a name="line.49"></a>
 <span class="sourceLineNo">050</span>    }<a name="line.50"></a>
 <span class="sourceLineNo">051</span>    return p_implData;<a name="line.51"></a>
 <span class="sourceLineNo">052</span>  }<a name="line.52"></a>
@@ -63,9 +63,9 @@
 <span class="sourceLineNo">055</span>    super(p_templateManager, __jamon_setOptionalArguments(p_implData));<a name="line.55"></a>
 <span class="sourceLineNo">056</span>    regionServer = p_implData.getRegionServer();<a name="line.56"></a>
 <span class="sourceLineNo">057</span>    format = p_implData.getFormat();<a name="line.57"></a>
-<span class="sourceLineNo">058</span>    filter = p_implData.getFilter();<a name="line.58"></a>
+<span class="sourceLineNo">058</span>    bcv = p_implData.getBcv();<a name="line.58"></a>
 <span class="sourceLineNo">059</span>    bcn = p_implData.getBcn();<a name="line.59"></a>
-<span class="sourceLineNo">060</span>    bcv = p_implData.getBcv();<a name="line.60"></a>
+<span class="sourceLineNo">060</span>    filter = p_implData.getFilter();<a name="line.60"></a>
 <span class="sourceLineNo">061</span>  }<a name="line.61"></a>
 <span class="sourceLineNo">062</span>  <a name="line.62"></a>
 <span class="sourceLineNo">063</span>  @Override public void renderNoFlush(final java.io.Writer jamonWriter)<a name="line.63"></a>
@@ -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_1 = new org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl(this.getTemplateManager());<a name="line.88"></a>
-<span class="sourceLineNo">089</span>        __jamon__var_1.setFormat("json" );<a name="line.89"></a>
-<span class="sourceLineNo">090</span>        __jamon__var_1.setFilter(filter);<a name="line.90"></a>
+<span class="sourceLineNo">089</span>        __jamon__var_1.setFilter(filter);<a name="line.89"></a>
+<span class="sourceLineNo">090</span>        __jamon__var_1.setFormat("json" );<a name="line.90"></a>
 <span class="sourceLineNo">091</span>        __jamon__var_1.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>


[10/23] hbase-site git commit: Published site at 2cf8af5bf1d501156cbb3b421cf75c1051ead7d9.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html
index 745e703..1587e5e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.html
@@ -1361,609 +1361,610 @@
 <span class="sourceLineNo">1353</span>    /** The filesystem used to access data */<a name="line.1353"></a>
 <span class="sourceLineNo">1354</span>    protected HFileSystem hfs;<a name="line.1354"></a>
 <span class="sourceLineNo">1355</span><a name="line.1355"></a>
-<span class="sourceLineNo">1356</span>    /** The path (if any) where this data is coming from */<a name="line.1356"></a>
-<span class="sourceLineNo">1357</span>    protected Path path;<a name="line.1357"></a>
-<span class="sourceLineNo">1358</span><a name="line.1358"></a>
-<span class="sourceLineNo">1359</span>    private final Lock streamLock = new ReentrantLock();<a name="line.1359"></a>
+<span class="sourceLineNo">1356</span>    private final Lock streamLock = new ReentrantLock();<a name="line.1356"></a>
+<span class="sourceLineNo">1357</span><a name="line.1357"></a>
+<span class="sourceLineNo">1358</span>    /** The default buffer size for our buffered streams */<a name="line.1358"></a>
+<span class="sourceLineNo">1359</span>    public static final int DEFAULT_BUFFER_SIZE = 1 &lt;&lt; 20;<a name="line.1359"></a>
 <span class="sourceLineNo">1360</span><a name="line.1360"></a>
-<span class="sourceLineNo">1361</span>    /** The default buffer size for our buffered streams */<a name="line.1361"></a>
-<span class="sourceLineNo">1362</span>    public static final int DEFAULT_BUFFER_SIZE = 1 &lt;&lt; 20;<a name="line.1362"></a>
-<span class="sourceLineNo">1363</span><a name="line.1363"></a>
-<span class="sourceLineNo">1364</span>    protected HFileContext fileContext;<a name="line.1364"></a>
-<span class="sourceLineNo">1365</span><a name="line.1365"></a>
-<span class="sourceLineNo">1366</span>    public FSReaderImpl(FSDataInputStreamWrapper stream, long fileSize, HFileSystem hfs, Path path,<a name="line.1366"></a>
-<span class="sourceLineNo">1367</span>        HFileContext fileContext) throws IOException {<a name="line.1367"></a>
-<span class="sourceLineNo">1368</span>      this.fileSize = fileSize;<a name="line.1368"></a>
-<span class="sourceLineNo">1369</span>      this.hfs = hfs;<a name="line.1369"></a>
-<span class="sourceLineNo">1370</span>      this.path = path;<a name="line.1370"></a>
-<span class="sourceLineNo">1371</span>      this.fileContext = fileContext;<a name="line.1371"></a>
-<span class="sourceLineNo">1372</span>      this.hdrSize = headerSize(fileContext.isUseHBaseChecksum());<a name="line.1372"></a>
-<span class="sourceLineNo">1373</span><a name="line.1373"></a>
-<span class="sourceLineNo">1374</span>      this.streamWrapper = stream;<a name="line.1374"></a>
-<span class="sourceLineNo">1375</span>      // Older versions of HBase didn't support checksum.<a name="line.1375"></a>
-<span class="sourceLineNo">1376</span>      this.streamWrapper.prepareForBlockReader(!fileContext.isUseHBaseChecksum());<a name="line.1376"></a>
-<span class="sourceLineNo">1377</span>      defaultDecodingCtx = new HFileBlockDefaultDecodingContext(fileContext);<a name="line.1377"></a>
-<span class="sourceLineNo">1378</span>      encodedBlockDecodingCtx = defaultDecodingCtx;<a name="line.1378"></a>
-<span class="sourceLineNo">1379</span>    }<a name="line.1379"></a>
-<span class="sourceLineNo">1380</span><a name="line.1380"></a>
-<span class="sourceLineNo">1381</span>    /**<a name="line.1381"></a>
-<span class="sourceLineNo">1382</span>     * A constructor that reads files with the latest minor version.<a name="line.1382"></a>
-<span class="sourceLineNo">1383</span>     * This is used by unit tests only.<a name="line.1383"></a>
-<span class="sourceLineNo">1384</span>     */<a name="line.1384"></a>
-<span class="sourceLineNo">1385</span>    FSReaderImpl(FSDataInputStream istream, long fileSize, HFileContext fileContext)<a name="line.1385"></a>
-<span class="sourceLineNo">1386</span>    throws IOException {<a name="line.1386"></a>
-<span class="sourceLineNo">1387</span>      this(new FSDataInputStreamWrapper(istream), fileSize, null, null, fileContext);<a name="line.1387"></a>
-<span class="sourceLineNo">1388</span>    }<a name="line.1388"></a>
-<span class="sourceLineNo">1389</span><a name="line.1389"></a>
-<span class="sourceLineNo">1390</span>    public BlockIterator blockRange(final long startOffset, final long endOffset) {<a name="line.1390"></a>
-<span class="sourceLineNo">1391</span>      final FSReader owner = this; // handle for inner class<a name="line.1391"></a>
-<span class="sourceLineNo">1392</span>      return new BlockIterator() {<a name="line.1392"></a>
-<span class="sourceLineNo">1393</span>        private long offset = startOffset;<a name="line.1393"></a>
-<span class="sourceLineNo">1394</span><a name="line.1394"></a>
-<span class="sourceLineNo">1395</span>        @Override<a name="line.1395"></a>
-<span class="sourceLineNo">1396</span>        public HFileBlock nextBlock() throws IOException {<a name="line.1396"></a>
-<span class="sourceLineNo">1397</span>          if (offset &gt;= endOffset)<a name="line.1397"></a>
-<span class="sourceLineNo">1398</span>            return null;<a name="line.1398"></a>
-<span class="sourceLineNo">1399</span>          HFileBlock b = readBlockData(offset, -1, -1, false);<a name="line.1399"></a>
-<span class="sourceLineNo">1400</span>          offset += b.getOnDiskSizeWithHeader();<a name="line.1400"></a>
-<span class="sourceLineNo">1401</span>          return b.unpack(fileContext, owner);<a name="line.1401"></a>
-<span class="sourceLineNo">1402</span>        }<a name="line.1402"></a>
-<span class="sourceLineNo">1403</span><a name="line.1403"></a>
-<span class="sourceLineNo">1404</span>        @Override<a name="line.1404"></a>
-<span class="sourceLineNo">1405</span>        public HFileBlock nextBlockWithBlockType(BlockType blockType)<a name="line.1405"></a>
-<span class="sourceLineNo">1406</span>            throws IOException {<a name="line.1406"></a>
-<span class="sourceLineNo">1407</span>          HFileBlock blk = nextBlock();<a name="line.1407"></a>
-<span class="sourceLineNo">1408</span>          if (blk.getBlockType() != blockType) {<a name="line.1408"></a>
-<span class="sourceLineNo">1409</span>            throw new IOException("Expected block of type " + blockType<a name="line.1409"></a>
-<span class="sourceLineNo">1410</span>                + " but found " + blk.getBlockType());<a name="line.1410"></a>
-<span class="sourceLineNo">1411</span>          }<a name="line.1411"></a>
-<span class="sourceLineNo">1412</span>          return blk;<a name="line.1412"></a>
-<span class="sourceLineNo">1413</span>        }<a name="line.1413"></a>
-<span class="sourceLineNo">1414</span>      };<a name="line.1414"></a>
-<span class="sourceLineNo">1415</span>    }<a name="line.1415"></a>
-<span class="sourceLineNo">1416</span><a name="line.1416"></a>
-<span class="sourceLineNo">1417</span>    /**<a name="line.1417"></a>
-<span class="sourceLineNo">1418</span>     * Does a positional read or a seek and read into the given buffer. Returns<a name="line.1418"></a>
-<span class="sourceLineNo">1419</span>     * the on-disk size of the next block, or -1 if it could not be determined.<a name="line.1419"></a>
-<span class="sourceLineNo">1420</span>     *<a name="line.1420"></a>
-<span class="sourceLineNo">1421</span>     * @param dest destination buffer<a name="line.1421"></a>
-<span class="sourceLineNo">1422</span>     * @param destOffset offset in the destination buffer<a name="line.1422"></a>
-<span class="sourceLineNo">1423</span>     * @param size size of the block to be read<a name="line.1423"></a>
-<span class="sourceLineNo">1424</span>     * @param peekIntoNextBlock whether to read the next block's on-disk size<a name="line.1424"></a>
-<span class="sourceLineNo">1425</span>     * @param fileOffset position in the stream to read at<a name="line.1425"></a>
-<span class="sourceLineNo">1426</span>     * @param pread whether we should do a positional read<a name="line.1426"></a>
-<span class="sourceLineNo">1427</span>     * @param istream The input source of data<a name="line.1427"></a>
-<span class="sourceLineNo">1428</span>     * @return the on-disk size of the next block with header size included, or<a name="line.1428"></a>
-<span class="sourceLineNo">1429</span>     *         -1 if it could not be determined<a name="line.1429"></a>
-<span class="sourceLineNo">1430</span>     * @throws IOException<a name="line.1430"></a>
-<span class="sourceLineNo">1431</span>     */<a name="line.1431"></a>
-<span class="sourceLineNo">1432</span>    protected int readAtOffset(FSDataInputStream istream,<a name="line.1432"></a>
-<span class="sourceLineNo">1433</span>        byte[] dest, int destOffset, int size,<a name="line.1433"></a>
-<span class="sourceLineNo">1434</span>        boolean peekIntoNextBlock, long fileOffset, boolean pread)<a name="line.1434"></a>
-<span class="sourceLineNo">1435</span>        throws IOException {<a name="line.1435"></a>
-<span class="sourceLineNo">1436</span>      if (peekIntoNextBlock &amp;&amp;<a name="line.1436"></a>
-<span class="sourceLineNo">1437</span>          destOffset + size + hdrSize &gt; dest.length) {<a name="line.1437"></a>
-<span class="sourceLineNo">1438</span>        // We are asked to read the next block's header as well, but there is<a name="line.1438"></a>
-<span class="sourceLineNo">1439</span>        // not enough room in the array.<a name="line.1439"></a>
-<span class="sourceLineNo">1440</span>        throw new IOException("Attempted to read " + size + " bytes and " +<a name="line.1440"></a>
-<span class="sourceLineNo">1441</span>            hdrSize + " bytes of next header into a " + dest.length +<a name="line.1441"></a>
-<span class="sourceLineNo">1442</span>            "-byte array at offset " + destOffset);<a name="line.1442"></a>
-<span class="sourceLineNo">1443</span>      }<a name="line.1443"></a>
-<span class="sourceLineNo">1444</span><a name="line.1444"></a>
-<span class="sourceLineNo">1445</span>      if (!pread &amp;&amp; streamLock.tryLock()) {<a name="line.1445"></a>
-<span class="sourceLineNo">1446</span>        // Seek + read. Better for scanning.<a name="line.1446"></a>
-<span class="sourceLineNo">1447</span>        try {<a name="line.1447"></a>
-<span class="sourceLineNo">1448</span>          istream.seek(fileOffset);<a name="line.1448"></a>
-<span class="sourceLineNo">1449</span><a name="line.1449"></a>
-<span class="sourceLineNo">1450</span>          long realOffset = istream.getPos();<a name="line.1450"></a>
-<span class="sourceLineNo">1451</span>          if (realOffset != fileOffset) {<a name="line.1451"></a>
-<span class="sourceLineNo">1452</span>            throw new IOException("Tried to seek to " + fileOffset + " to "<a name="line.1452"></a>
-<span class="sourceLineNo">1453</span>                + "read " + size + " bytes, but pos=" + realOffset<a name="line.1453"></a>
-<span class="sourceLineNo">1454</span>                + " after seek");<a name="line.1454"></a>
-<span class="sourceLineNo">1455</span>          }<a name="line.1455"></a>
-<span class="sourceLineNo">1456</span><a name="line.1456"></a>
-<span class="sourceLineNo">1457</span>          if (!peekIntoNextBlock) {<a name="line.1457"></a>
-<span class="sourceLineNo">1458</span>            IOUtils.readFully(istream, dest, destOffset, size);<a name="line.1458"></a>
-<span class="sourceLineNo">1459</span>            return -1;<a name="line.1459"></a>
-<span class="sourceLineNo">1460</span>          }<a name="line.1460"></a>
-<span class="sourceLineNo">1461</span><a name="line.1461"></a>
-<span class="sourceLineNo">1462</span>          // Try to read the next block header.<a name="line.1462"></a>
-<span class="sourceLineNo">1463</span>          if (!readWithExtra(istream, dest, destOffset, size, hdrSize))<a name="line.1463"></a>
-<span class="sourceLineNo">1464</span>            return -1;<a name="line.1464"></a>
-<span class="sourceLineNo">1465</span>        } finally {<a name="line.1465"></a>
-<span class="sourceLineNo">1466</span>          streamLock.unlock();<a name="line.1466"></a>
-<span class="sourceLineNo">1467</span>        }<a name="line.1467"></a>
-<span class="sourceLineNo">1468</span>      } else {<a name="line.1468"></a>
-<span class="sourceLineNo">1469</span>        // Positional read. Better for random reads; or when the streamLock is already locked.<a name="line.1469"></a>
-<span class="sourceLineNo">1470</span>        int extraSize = peekIntoNextBlock ? hdrSize : 0;<a name="line.1470"></a>
-<span class="sourceLineNo">1471</span>        if (!positionalReadWithExtra(istream, fileOffset, dest, destOffset,<a name="line.1471"></a>
-<span class="sourceLineNo">1472</span>            size, extraSize)) {<a name="line.1472"></a>
-<span class="sourceLineNo">1473</span>          return -1;<a name="line.1473"></a>
-<span class="sourceLineNo">1474</span>        }<a name="line.1474"></a>
-<span class="sourceLineNo">1475</span>      }<a name="line.1475"></a>
-<span class="sourceLineNo">1476</span><a name="line.1476"></a>
-<span class="sourceLineNo">1477</span>      assert peekIntoNextBlock;<a name="line.1477"></a>
-<span class="sourceLineNo">1478</span>      return Bytes.toInt(dest, destOffset + size + BlockType.MAGIC_LENGTH) + hdrSize;<a name="line.1478"></a>
-<span class="sourceLineNo">1479</span>    }<a name="line.1479"></a>
-<span class="sourceLineNo">1480</span><a name="line.1480"></a>
-<span class="sourceLineNo">1481</span>    /**<a name="line.1481"></a>
-<span class="sourceLineNo">1482</span>     * Reads a version 2 block (version 1 blocks not supported and not expected). Tries to do as<a name="line.1482"></a>
-<span class="sourceLineNo">1483</span>     * little memory allocation as possible, using the provided on-disk size.<a name="line.1483"></a>
-<span class="sourceLineNo">1484</span>     *<a name="line.1484"></a>
-<span class="sourceLineNo">1485</span>     * @param offset the offset in the stream to read at<a name="line.1485"></a>
-<span class="sourceLineNo">1486</span>     * @param onDiskSizeWithHeaderL the on-disk size of the block, including<a name="line.1486"></a>
-<span class="sourceLineNo">1487</span>     *          the header, or -1 if unknown<a name="line.1487"></a>
-<span class="sourceLineNo">1488</span>     * @param uncompressedSize the uncompressed size of the the block. Always<a name="line.1488"></a>
-<span class="sourceLineNo">1489</span>     *          expected to be -1. This parameter is only used in version 1.<a name="line.1489"></a>
-<span class="sourceLineNo">1490</span>     * @param pread whether to use a positional read<a name="line.1490"></a>
-<span class="sourceLineNo">1491</span>     */<a name="line.1491"></a>
-<span class="sourceLineNo">1492</span>    @Override<a name="line.1492"></a>
-<span class="sourceLineNo">1493</span>    public HFileBlock readBlockData(long offset, long onDiskSizeWithHeaderL,<a name="line.1493"></a>
-<span class="sourceLineNo">1494</span>        int uncompressedSize, boolean pread)<a name="line.1494"></a>
-<span class="sourceLineNo">1495</span>    throws IOException {<a name="line.1495"></a>
-<span class="sourceLineNo">1496</span><a name="line.1496"></a>
-<span class="sourceLineNo">1497</span>      // get a copy of the current state of whether to validate<a name="line.1497"></a>
-<span class="sourceLineNo">1498</span>      // hbase checksums or not for this read call. This is not<a name="line.1498"></a>
-<span class="sourceLineNo">1499</span>      // thread-safe but the one constaint is that if we decide<a name="line.1499"></a>
-<span class="sourceLineNo">1500</span>      // to skip hbase checksum verification then we are<a name="line.1500"></a>
-<span class="sourceLineNo">1501</span>      // guaranteed to use hdfs checksum verification.<a name="line.1501"></a>
-<span class="sourceLineNo">1502</span>      boolean doVerificationThruHBaseChecksum = streamWrapper.shouldUseHBaseChecksum();<a name="line.1502"></a>
-<span class="sourceLineNo">1503</span>      FSDataInputStream is = streamWrapper.getStream(doVerificationThruHBaseChecksum);<a name="line.1503"></a>
-<span class="sourceLineNo">1504</span><a name="line.1504"></a>
-<span class="sourceLineNo">1505</span>      HFileBlock blk = readBlockDataInternal(is, offset,<a name="line.1505"></a>
-<span class="sourceLineNo">1506</span>                         onDiskSizeWithHeaderL,<a name="line.1506"></a>
-<span class="sourceLineNo">1507</span>                         uncompressedSize, pread,<a name="line.1507"></a>
-<span class="sourceLineNo">1508</span>                         doVerificationThruHBaseChecksum);<a name="line.1508"></a>
-<span class="sourceLineNo">1509</span>      if (blk == null) {<a name="line.1509"></a>
-<span class="sourceLineNo">1510</span>        HFile.LOG.warn("HBase checksum verification failed for file " +<a name="line.1510"></a>
-<span class="sourceLineNo">1511</span>                       path + " at offset " +<a name="line.1511"></a>
-<span class="sourceLineNo">1512</span>                       offset + " filesize " + fileSize +<a name="line.1512"></a>
-<span class="sourceLineNo">1513</span>                       ". Retrying read with HDFS checksums turned on...");<a name="line.1513"></a>
-<span class="sourceLineNo">1514</span><a name="line.1514"></a>
-<span class="sourceLineNo">1515</span>        if (!doVerificationThruHBaseChecksum) {<a name="line.1515"></a>
-<span class="sourceLineNo">1516</span>          String msg = "HBase checksum verification failed for file " +<a name="line.1516"></a>
-<span class="sourceLineNo">1517</span>                       path + " at offset " +<a name="line.1517"></a>
-<span class="sourceLineNo">1518</span>                       offset + " filesize " + fileSize +<a name="line.1518"></a>
-<span class="sourceLineNo">1519</span>                       " but this cannot happen because doVerify is " +<a name="line.1519"></a>
-<span class="sourceLineNo">1520</span>                       doVerificationThruHBaseChecksum;<a name="line.1520"></a>
-<span class="sourceLineNo">1521</span>          HFile.LOG.warn(msg);<a name="line.1521"></a>
-<span class="sourceLineNo">1522</span>          throw new IOException(msg); // cannot happen case here<a name="line.1522"></a>
-<span class="sourceLineNo">1523</span>        }<a name="line.1523"></a>
-<span class="sourceLineNo">1524</span>        HFile.checksumFailures.incrementAndGet(); // update metrics<a name="line.1524"></a>
-<span class="sourceLineNo">1525</span><a name="line.1525"></a>
-<span class="sourceLineNo">1526</span>        // If we have a checksum failure, we fall back into a mode where<a name="line.1526"></a>
-<span class="sourceLineNo">1527</span>        // the next few reads use HDFS level checksums. We aim to make the<a name="line.1527"></a>
-<span class="sourceLineNo">1528</span>        // next CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD reads avoid<a name="line.1528"></a>
-<span class="sourceLineNo">1529</span>        // hbase checksum verification, but since this value is set without<a name="line.1529"></a>
-<span class="sourceLineNo">1530</span>        // holding any locks, it can so happen that we might actually do<a name="line.1530"></a>
-<span class="sourceLineNo">1531</span>        // a few more than precisely this number.<a name="line.1531"></a>
-<span class="sourceLineNo">1532</span>        is = this.streamWrapper.fallbackToFsChecksum(CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD);<a name="line.1532"></a>
-<span class="sourceLineNo">1533</span>        doVerificationThruHBaseChecksum = false;<a name="line.1533"></a>
-<span class="sourceLineNo">1534</span>        blk = readBlockDataInternal(is, offset, onDiskSizeWithHeaderL,<a name="line.1534"></a>
-<span class="sourceLineNo">1535</span>                                    uncompressedSize, pread,<a name="line.1535"></a>
-<span class="sourceLineNo">1536</span>                                    doVerificationThruHBaseChecksum);<a name="line.1536"></a>
-<span class="sourceLineNo">1537</span>        if (blk != null) {<a name="line.1537"></a>
-<span class="sourceLineNo">1538</span>          HFile.LOG.warn("HDFS checksum verification suceeded for file " +<a name="line.1538"></a>
-<span class="sourceLineNo">1539</span>                         path + " at offset " +<a name="line.1539"></a>
-<span class="sourceLineNo">1540</span>                         offset + " filesize " + fileSize);<a name="line.1540"></a>
-<span class="sourceLineNo">1541</span>        }<a name="line.1541"></a>
-<span class="sourceLineNo">1542</span>      }<a name="line.1542"></a>
-<span class="sourceLineNo">1543</span>      if (blk == null &amp;&amp; !doVerificationThruHBaseChecksum) {<a name="line.1543"></a>
-<span class="sourceLineNo">1544</span>        String msg = "readBlockData failed, possibly due to " +<a name="line.1544"></a>
-<span class="sourceLineNo">1545</span>                     "checksum verification failed for file " + path +<a name="line.1545"></a>
-<span class="sourceLineNo">1546</span>                     " at offset " + offset + " filesize " + fileSize;<a name="line.1546"></a>
-<span class="sourceLineNo">1547</span>        HFile.LOG.warn(msg);<a name="line.1547"></a>
-<span class="sourceLineNo">1548</span>        throw new IOException(msg);<a name="line.1548"></a>
-<span class="sourceLineNo">1549</span>      }<a name="line.1549"></a>
-<span class="sourceLineNo">1550</span><a name="line.1550"></a>
-<span class="sourceLineNo">1551</span>      // If there is a checksum mismatch earlier, then retry with<a name="line.1551"></a>
-<span class="sourceLineNo">1552</span>      // HBase checksums switched off and use HDFS checksum verification.<a name="line.1552"></a>
-<span class="sourceLineNo">1553</span>      // This triggers HDFS to detect and fix corrupt replicas. The<a name="line.1553"></a>
-<span class="sourceLineNo">1554</span>      // next checksumOffCount read requests will use HDFS checksums.<a name="line.1554"></a>
-<span class="sourceLineNo">1555</span>      // The decrementing of this.checksumOffCount is not thread-safe,<a name="line.1555"></a>
-<span class="sourceLineNo">1556</span>      // but it is harmless because eventually checksumOffCount will be<a name="line.1556"></a>
-<span class="sourceLineNo">1557</span>      // a negative number.<a name="line.1557"></a>
-<span class="sourceLineNo">1558</span>      streamWrapper.checksumOk();<a name="line.1558"></a>
-<span class="sourceLineNo">1559</span>      return blk;<a name="line.1559"></a>
-<span class="sourceLineNo">1560</span>    }<a name="line.1560"></a>
-<span class="sourceLineNo">1561</span><a name="line.1561"></a>
-<span class="sourceLineNo">1562</span>    /**<a name="line.1562"></a>
-<span class="sourceLineNo">1563</span>     * Reads a version 2 block.<a name="line.1563"></a>
-<span class="sourceLineNo">1564</span>     *<a name="line.1564"></a>
-<span class="sourceLineNo">1565</span>     * @param offset the offset in the stream to read at<a name="line.1565"></a>
-<span class="sourceLineNo">1566</span>     * @param onDiskSizeWithHeaderL the on-disk size of the block, including<a name="line.1566"></a>
-<span class="sourceLineNo">1567</span>     *          the header, or -1 if unknown<a name="line.1567"></a>
-<span class="sourceLineNo">1568</span>     * @param uncompressedSize the uncompressed size of the the block. Always<a name="line.1568"></a>
-<span class="sourceLineNo">1569</span>     *          expected to be -1. This parameter is only used in version 1.<a name="line.1569"></a>
-<span class="sourceLineNo">1570</span>     * @param pread whether to use a positional read<a name="line.1570"></a>
-<span class="sourceLineNo">1571</span>     * @param verifyChecksum Whether to use HBase checksums.<a name="line.1571"></a>
-<span class="sourceLineNo">1572</span>     *        If HBase checksum is switched off, then use HDFS checksum.<a name="line.1572"></a>
-<span class="sourceLineNo">1573</span>     * @return the HFileBlock or null if there is a HBase checksum mismatch<a name="line.1573"></a>
-<span class="sourceLineNo">1574</span>     */<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span>    private HFileBlock readBlockDataInternal(FSDataInputStream is, long offset,<a name="line.1575"></a>
-<span class="sourceLineNo">1576</span>        long onDiskSizeWithHeaderL, int uncompressedSize, boolean pread,<a name="line.1576"></a>
-<span class="sourceLineNo">1577</span>        boolean verifyChecksum)<a name="line.1577"></a>
-<span class="sourceLineNo">1578</span>    throws IOException {<a name="line.1578"></a>
-<span class="sourceLineNo">1579</span>      if (offset &lt; 0) {<a name="line.1579"></a>
-<span class="sourceLineNo">1580</span>        throw new IOException("Invalid offset=" + offset + " trying to read "<a name="line.1580"></a>
-<span class="sourceLineNo">1581</span>            + "block (onDiskSize=" + onDiskSizeWithHeaderL<a name="line.1581"></a>
-<span class="sourceLineNo">1582</span>            + ", uncompressedSize=" + uncompressedSize + ")");<a name="line.1582"></a>
-<span class="sourceLineNo">1583</span>      }<a name="line.1583"></a>
-<span class="sourceLineNo">1584</span><a name="line.1584"></a>
-<span class="sourceLineNo">1585</span>      if (uncompressedSize != -1) {<a name="line.1585"></a>
-<span class="sourceLineNo">1586</span>        throw new IOException("Version 2 block reader API does not need " +<a name="line.1586"></a>
-<span class="sourceLineNo">1587</span>            "the uncompressed size parameter");<a name="line.1587"></a>
-<span class="sourceLineNo">1588</span>      }<a name="line.1588"></a>
-<span class="sourceLineNo">1589</span><a name="line.1589"></a>
-<span class="sourceLineNo">1590</span>      if ((onDiskSizeWithHeaderL &lt; hdrSize &amp;&amp; onDiskSizeWithHeaderL != -1)<a name="line.1590"></a>
-<span class="sourceLineNo">1591</span>          || onDiskSizeWithHeaderL &gt;= Integer.MAX_VALUE) {<a name="line.1591"></a>
-<span class="sourceLineNo">1592</span>        throw new IOException("Invalid onDisksize=" + onDiskSizeWithHeaderL<a name="line.1592"></a>
-<span class="sourceLineNo">1593</span>            + ": expected to be at least " + hdrSize<a name="line.1593"></a>
-<span class="sourceLineNo">1594</span>            + " and at most " + Integer.MAX_VALUE + ", or -1 (offset="<a name="line.1594"></a>
-<span class="sourceLineNo">1595</span>            + offset + ", uncompressedSize=" + uncompressedSize + ")");<a name="line.1595"></a>
-<span class="sourceLineNo">1596</span>      }<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span><a name="line.1597"></a>
-<span class="sourceLineNo">1598</span>      int onDiskSizeWithHeader = (int) onDiskSizeWithHeaderL;<a name="line.1598"></a>
-<span class="sourceLineNo">1599</span>      // See if we can avoid reading the header. This is desirable, because<a name="line.1599"></a>
-<span class="sourceLineNo">1600</span>      // we will not incur a backward seek operation if we have already<a name="line.1600"></a>
-<span class="sourceLineNo">1601</span>      // read this block's header as part of the previous read's look-ahead.<a name="line.1601"></a>
-<span class="sourceLineNo">1602</span>      // And we also want to skip reading the header again if it has already<a name="line.1602"></a>
-<span class="sourceLineNo">1603</span>      // been read.<a name="line.1603"></a>
-<span class="sourceLineNo">1604</span>      // TODO: How often does this optimization fire? Has to be same thread so the thread local<a name="line.1604"></a>
-<span class="sourceLineNo">1605</span>      // is pertinent and we have to be reading next block as in a big scan.<a name="line.1605"></a>
-<span class="sourceLineNo">1606</span>      PrefetchedHeader prefetchedHeader = prefetchedHeaderForThread.get();<a name="line.1606"></a>
-<span class="sourceLineNo">1607</span>      ByteBuffer headerBuf = prefetchedHeader.offset == offset? prefetchedHeader.buf: null;<a name="line.1607"></a>
-<span class="sourceLineNo">1608</span><a name="line.1608"></a>
-<span class="sourceLineNo">1609</span>      // Allocate enough space to fit the next block's header too.<a name="line.1609"></a>
-<span class="sourceLineNo">1610</span>      int nextBlockOnDiskSize = 0;<a name="line.1610"></a>
-<span class="sourceLineNo">1611</span>      byte[] onDiskBlock = null;<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span><a name="line.1612"></a>
-<span class="sourceLineNo">1613</span>      HFileBlock b = null;<a name="line.1613"></a>
-<span class="sourceLineNo">1614</span>      if (onDiskSizeWithHeader &gt; 0) {<a name="line.1614"></a>
-<span class="sourceLineNo">1615</span>        // We know the total on-disk size. Read the entire block into memory,<a name="line.1615"></a>
-<span class="sourceLineNo">1616</span>        // then parse the header. This code path is used when<a name="line.1616"></a>
-<span class="sourceLineNo">1617</span>        // doing a random read operation relying on the block index, as well as<a name="line.1617"></a>
-<span class="sourceLineNo">1618</span>        // when the client knows the on-disk size from peeking into the next<a name="line.1618"></a>
-<span class="sourceLineNo">1619</span>        // block's header (e.g. this block's header) when reading the previous<a name="line.1619"></a>
-<span class="sourceLineNo">1620</span>        // block. This is the faster and more preferable case.<a name="line.1620"></a>
-<span class="sourceLineNo">1621</span><a name="line.1621"></a>
-<span class="sourceLineNo">1622</span>        // Size that we have to skip in case we have already read the header.<a name="line.1622"></a>
-<span class="sourceLineNo">1623</span>        int preReadHeaderSize = headerBuf == null ? 0 : hdrSize;<a name="line.1623"></a>
-<span class="sourceLineNo">1624</span>        onDiskBlock = new byte[onDiskSizeWithHeader + hdrSize]; // room for this block plus the<a name="line.1624"></a>
-<span class="sourceLineNo">1625</span>                                                                // next block's header<a name="line.1625"></a>
-<span class="sourceLineNo">1626</span>        nextBlockOnDiskSize = readAtOffset(is, onDiskBlock,<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span>            preReadHeaderSize, onDiskSizeWithHeader - preReadHeaderSize,<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span>            true, offset + preReadHeaderSize, pread);<a name="line.1628"></a>
-<span class="sourceLineNo">1629</span>        if (headerBuf != null) {<a name="line.1629"></a>
-<span class="sourceLineNo">1630</span>          // the header has been read when reading the previous block, copy<a name="line.1630"></a>
-<span class="sourceLineNo">1631</span>          // to this block's header<a name="line.1631"></a>
-<span class="sourceLineNo">1632</span>          // headerBuf is HBB<a name="line.1632"></a>
-<span class="sourceLineNo">1633</span>          assert headerBuf.hasArray();<a name="line.1633"></a>
-<span class="sourceLineNo">1634</span>          System.arraycopy(headerBuf.array(),<a name="line.1634"></a>
-<span class="sourceLineNo">1635</span>              headerBuf.arrayOffset(), onDiskBlock, 0, hdrSize);<a name="line.1635"></a>
-<span class="sourceLineNo">1636</span>        } else {<a name="line.1636"></a>
-<span class="sourceLineNo">1637</span>          headerBuf = ByteBuffer.wrap(onDiskBlock, 0, hdrSize);<a name="line.1637"></a>
-<span class="sourceLineNo">1638</span>        }<a name="line.1638"></a>
-<span class="sourceLineNo">1639</span>        // We know the total on-disk size but not the uncompressed size. Parse the header.<a name="line.1639"></a>
-<span class="sourceLineNo">1640</span>        try {<a name="line.1640"></a>
-<span class="sourceLineNo">1641</span>          // TODO: FIX!!! Expensive parse just to get a length<a name="line.1641"></a>
-<span class="sourceLineNo">1642</span>          b = new HFileBlock(headerBuf, fileContext.isUseHBaseChecksum());<a name="line.1642"></a>
-<span class="sourceLineNo">1643</span>        } catch (IOException ex) {<a name="line.1643"></a>
-<span class="sourceLineNo">1644</span>          // Seen in load testing. Provide comprehensive debug info.<a name="line.1644"></a>
-<span class="sourceLineNo">1645</span>          throw new IOException("Failed to read compressed block at "<a name="line.1645"></a>
-<span class="sourceLineNo">1646</span>              + offset<a name="line.1646"></a>
-<span class="sourceLineNo">1647</span>              + ", onDiskSizeWithoutHeader="<a name="line.1647"></a>
-<span class="sourceLineNo">1648</span>              + onDiskSizeWithHeader<a name="line.1648"></a>
-<span class="sourceLineNo">1649</span>              + ", preReadHeaderSize="<a name="line.1649"></a>
-<span class="sourceLineNo">1650</span>              + hdrSize<a name="line.1650"></a>
-<span class="sourceLineNo">1651</span>              + ", header.length="<a name="line.1651"></a>
-<span class="sourceLineNo">1652</span>              + prefetchedHeader.header.length<a name="line.1652"></a>
-<span class="sourceLineNo">1653</span>              + ", header bytes: "<a name="line.1653"></a>
-<span class="sourceLineNo">1654</span>              + Bytes.toStringBinary(prefetchedHeader.header, 0,<a name="line.1654"></a>
-<span class="sourceLineNo">1655</span>                  hdrSize), ex);<a name="line.1655"></a>
-<span class="sourceLineNo">1656</span>        }<a name="line.1656"></a>
-<span class="sourceLineNo">1657</span>        // if the caller specifies a onDiskSizeWithHeader, validate it.<a name="line.1657"></a>
-<span class="sourceLineNo">1658</span>        int onDiskSizeWithoutHeader = onDiskSizeWithHeader - hdrSize;<a name="line.1658"></a>
-<span class="sourceLineNo">1659</span>        assert onDiskSizeWithoutHeader &gt;= 0;<a name="line.1659"></a>
-<span class="sourceLineNo">1660</span>        b.validateOnDiskSizeWithoutHeader(onDiskSizeWithoutHeader);<a name="line.1660"></a>
-<span class="sourceLineNo">1661</span>      } else {<a name="line.1661"></a>
-<span class="sourceLineNo">1662</span>        // Check headerBuf to see if we have read this block's header as part of<a name="line.1662"></a>
-<span class="sourceLineNo">1663</span>        // reading the previous block. This is an optimization of peeking into<a name="line.1663"></a>
-<span class="sourceLineNo">1664</span>        // the next block's header (e.g.this block's header) when reading the<a name="line.1664"></a>
-<span class="sourceLineNo">1665</span>        // previous block. This is the faster and more preferable case. If the<a name="line.1665"></a>
-<span class="sourceLineNo">1666</span>        // header is already there, don't read the header again.<a name="line.1666"></a>
-<span class="sourceLineNo">1667</span><a name="line.1667"></a>
-<span class="sourceLineNo">1668</span>        // Unfortunately, we still have to do a separate read operation to<a name="line.1668"></a>
-<span class="sourceLineNo">1669</span>        // read the header.<a name="line.1669"></a>
-<span class="sourceLineNo">1670</span>        if (headerBuf == null) {<a name="line.1670"></a>
-<span class="sourceLineNo">1671</span>          // From the header, determine the on-disk size of the given hfile<a name="line.1671"></a>
-<span class="sourceLineNo">1672</span>          // block, and read the remaining data, thereby incurring two read<a name="line.1672"></a>
-<span class="sourceLineNo">1673</span>          // operations. This might happen when we are doing the first read<a name="line.1673"></a>
-<span class="sourceLineNo">1674</span>          // in a series of reads or a random read, and we don't have access<a name="line.1674"></a>
-<span class="sourceLineNo">1675</span>          // to the block index. This is costly and should happen very rarely.<a name="line.1675"></a>
-<span class="sourceLineNo">1676</span>          headerBuf = ByteBuffer.allocate(hdrSize);<a name="line.1676"></a>
-<span class="sourceLineNo">1677</span>          // headerBuf is HBB<a name="line.1677"></a>
-<span class="sourceLineNo">1678</span>          readAtOffset(is, headerBuf.array(), headerBuf.arrayOffset(),<a name="line.1678"></a>
-<span class="sourceLineNo">1679</span>              hdrSize, false, offset, pread);<a name="line.1679"></a>
-<span class="sourceLineNo">1680</span>        }<a name="line.1680"></a>
-<span class="sourceLineNo">1681</span>        // TODO: FIX!!! Expensive parse just to get a length<a name="line.1681"></a>
-<span class="sourceLineNo">1682</span>        b = new HFileBlock(headerBuf, fileContext.isUseHBaseChecksum());<a name="line.1682"></a>
-<span class="sourceLineNo">1683</span>        onDiskBlock = new byte[b.getOnDiskSizeWithHeader() + hdrSize];<a name="line.1683"></a>
-<span class="sourceLineNo">1684</span>        // headerBuf is HBB<a name="line.1684"></a>
-<span class="sourceLineNo">1685</span>        System.arraycopy(headerBuf.array(), headerBuf.arrayOffset(), onDiskBlock, 0, hdrSize);<a name="line.1685"></a>
-<span class="sourceLineNo">1686</span>        nextBlockOnDiskSize =<a name="line.1686"></a>
-<span class="sourceLineNo">1687</span>          readAtOffset(is, onDiskBlock, hdrSize, b.getOnDiskSizeWithHeader()<a name="line.1687"></a>
-<span class="sourceLineNo">1688</span>              - hdrSize, true, offset + hdrSize, pread);<a name="line.1688"></a>
-<span class="sourceLineNo">1689</span>        onDiskSizeWithHeader = b.onDiskSizeWithoutHeader + hdrSize;<a name="line.1689"></a>
-<span class="sourceLineNo">1690</span>      }<a name="line.1690"></a>
-<span class="sourceLineNo">1691</span><a name="line.1691"></a>
-<span class="sourceLineNo">1692</span>      if (!fileContext.isCompressedOrEncrypted()) {<a name="line.1692"></a>
-<span class="sourceLineNo">1693</span>        b.assumeUncompressed();<a name="line.1693"></a>
-<span class="sourceLineNo">1694</span>      }<a name="line.1694"></a>
-<span class="sourceLineNo">1695</span><a name="line.1695"></a>
-<span class="sourceLineNo">1696</span>      if (verifyChecksum &amp;&amp; !validateBlockChecksum(b, onDiskBlock, hdrSize)) {<a name="line.1696"></a>
-<span class="sourceLineNo">1697</span>        return null;             // checksum mismatch<a name="line.1697"></a>
-<span class="sourceLineNo">1698</span>      }<a name="line.1698"></a>
-<span class="sourceLineNo">1699</span><a name="line.1699"></a>
-<span class="sourceLineNo">1700</span>      // The onDiskBlock will become the headerAndDataBuffer for this block.<a name="line.1700"></a>
-<span class="sourceLineNo">1701</span>      // If nextBlockOnDiskSizeWithHeader is not zero, the onDiskBlock already<a name="line.1701"></a>
-<span class="sourceLineNo">1702</span>      // contains the header of next block, so no need to set next<a name="line.1702"></a>
-<span class="sourceLineNo">1703</span>      // block's header in it.<a name="line.1703"></a>
-<span class="sourceLineNo">1704</span>      b = new HFileBlock(ByteBuffer.wrap(onDiskBlock, 0, onDiskSizeWithHeader),<a name="line.1704"></a>
-<span class="sourceLineNo">1705</span>        this.fileContext.isUseHBaseChecksum());<a name="line.1705"></a>
-<span class="sourceLineNo">1706</span><a name="line.1706"></a>
-<span class="sourceLineNo">1707</span>      b.nextBlockOnDiskSizeWithHeader = nextBlockOnDiskSize;<a name="line.1707"></a>
-<span class="sourceLineNo">1708</span><a name="line.1708"></a>
-<span class="sourceLineNo">1709</span>      // Set prefetched header<a name="line.1709"></a>
-<span class="sourceLineNo">1710</span>      if (b.hasNextBlockHeader()) {<a name="line.1710"></a>
-<span class="sourceLineNo">1711</span>        prefetchedHeader.offset = offset + b.getOnDiskSizeWithHeader();<a name="line.1711"></a>
-<span class="sourceLineNo">1712</span>        System.arraycopy(onDiskBlock, onDiskSizeWithHeader, prefetchedHeader.header, 0, hdrSize);<a name="line.1712"></a>
-<span class="sourceLineNo">1713</span>      }<a name="line.1713"></a>
-<span class="sourceLineNo">1714</span><a name="line.1714"></a>
-<span class="sourceLineNo">1715</span>      b.offset = offset;<a name="line.1715"></a>
-<span class="sourceLineNo">1716</span>      b.fileContext.setIncludesTags(this.fileContext.isIncludesTags());<a name="line.1716"></a>
-<span class="sourceLineNo">1717</span>      b.fileContext.setIncludesMvcc(this.fileContext.isIncludesMvcc());<a name="line.1717"></a>
-<span class="sourceLineNo">1718</span>      return b;<a name="line.1718"></a>
-<span class="sourceLineNo">1719</span>    }<a name="line.1719"></a>
-<span class="sourceLineNo">1720</span><a name="line.1720"></a>
-<span class="sourceLineNo">1721</span>    public void setIncludesMemstoreTS(boolean includesMemstoreTS) {<a name="line.1721"></a>
-<span class="sourceLineNo">1722</span>      this.fileContext.setIncludesMvcc(includesMemstoreTS);<a name="line.1722"></a>
-<span class="sourceLineNo">1723</span>    }<a name="line.1723"></a>
-<span class="sourceLineNo">1724</span><a name="line.1724"></a>
-<span class="sourceLineNo">1725</span>    public void setDataBlockEncoder(HFileDataBlockEncoder encoder) {<a name="line.1725"></a>
-<span class="sourceLineNo">1726</span>      encodedBlockDecodingCtx = encoder.newDataBlockDecodingContext(this.fileContext);<a name="line.1726"></a>
-<span class="sourceLineNo">1727</span>    }<a name="line.1727"></a>
-<span class="sourceLineNo">1728</span><a name="line.1728"></a>
-<span class="sourceLineNo">1729</span>    @Override<a name="line.1729"></a>
-<span class="sourceLineNo">1730</span>    public HFileBlockDecodingContext getBlockDecodingContext() {<a name="line.1730"></a>
-<span class="sourceLineNo">1731</span>      return this.encodedBlockDecodingCtx;<a name="line.1731"></a>
-<span class="sourceLineNo">1732</span>    }<a name="line.1732"></a>
-<span class="sourceLineNo">1733</span><a name="line.1733"></a>
-<span class="sourceLineNo">1734</span>    @Override<a name="line.1734"></a>
-<span class="sourceLineNo">1735</span>    public HFileBlockDecodingContext getDefaultBlockDecodingContext() {<a name="line.1735"></a>
-<span class="sourceLineNo">1736</span>      return this.defaultDecodingCtx;<a name="line.1736"></a>
-<span class="sourceLineNo">1737</span>    }<a name="line.1737"></a>
-<span class="sourceLineNo">1738</span><a name="line.1738"></a>
-<span class="sourceLineNo">1739</span>    /**<a name="line.1739"></a>
-<span class="sourceLineNo">1740</span>     * Generates the checksum for the header as well as the data and<a name="line.1740"></a>
-<span class="sourceLineNo">1741</span>     * then validates that it matches the value stored in the header.<a name="line.1741"></a>
-<span class="sourceLineNo">1742</span>     * If there is a checksum mismatch, then return false. Otherwise<a name="line.1742"></a>
-<span class="sourceLineNo">1743</span>     * return true.<a name="line.1743"></a>
-<span class="sourceLineNo">1744</span>     */<a name="line.1744"></a>
-<span class="sourceLineNo">1745</span>    protected boolean validateBlockChecksum(HFileBlock block,  byte[] data, int hdrSize)<a name="line.1745"></a>
-<span class="sourceLineNo">1746</span>        throws IOException {<a name="line.1746"></a>
-<span class="sourceLineNo">1747</span>      return ChecksumUtil.validateBlockChecksum(path, block, data, hdrSize);<a name="line.1747"></a>
-<span class="sourceLineNo">1748</span>    }<a name="line.1748"></a>
-<span class="sourceLineNo">1749</span><a name="line.1749"></a>
-<span class="sourceLineNo">1750</span>    @Override<a name="line.1750"></a>
-<span class="sourceLineNo">1751</span>    public void closeStreams() throws IOException {<a name="line.1751"></a>
-<span class="sourceLineNo">1752</span>      streamWrapper.close();<a name="line.1752"></a>
-<span class="sourceLineNo">1753</span>    }<a name="line.1753"></a>
-<span class="sourceLineNo">1754</span><a name="line.1754"></a>
-<span class="sourceLineNo">1755</span>    @Override<a name="line.1755"></a>
-<span class="sourceLineNo">1756</span>    public String toString() {<a name="line.1756"></a>
-<span class="sourceLineNo">1757</span>      return "hfs=" + hfs + ", path=" + path + ", fileContext=" + fileContext;<a name="line.1757"></a>
-<span class="sourceLineNo">1758</span>    }<a name="line.1758"></a>
-<span class="sourceLineNo">1759</span>  }<a name="line.1759"></a>
-<span class="sourceLineNo">1760</span><a name="line.1760"></a>
-<span class="sourceLineNo">1761</span>  @Override<a name="line.1761"></a>
-<span class="sourceLineNo">1762</span>  public int getSerializedLength() {<a name="line.1762"></a>
-<span class="sourceLineNo">1763</span>    if (buf != null) {<a name="line.1763"></a>
-<span class="sourceLineNo">1764</span>      // include extra bytes for the next header when it's available.<a name="line.1764"></a>
-<span class="sourceLineNo">1765</span>      int extraSpace = hasNextBlockHeader() ? headerSize() : 0;<a name="line.1765"></a>
-<span class="sourceLineNo">1766</span>      return this.buf.limit() + extraSpace + HFileBlock.EXTRA_SERIALIZATION_SPACE;<a name="line.1766"></a>
-<span class="sourceLineNo">1767</span>    }<a name="line.1767"></a>
-<span class="sourceLineNo">1768</span>    return 0;<a name="line.1768"></a>
-<span class="sourceLineNo">1769</span>  }<a name="line.1769"></a>
-<span class="sourceLineNo">1770</span><a name="line.1770"></a>
-<span class="sourceLineNo">1771</span>  @Override<a name="line.1771"></a>
-<span class="sourceLineNo">1772</span>  public void serialize(ByteBuffer destination) {<a name="line.1772"></a>
-<span class="sourceLineNo">1773</span>    this.buf.get(destination, 0, getSerializedLength()<a name="line.1773"></a>
-<span class="sourceLineNo">1774</span>        - EXTRA_SERIALIZATION_SPACE);<a name="line.1774"></a>
-<span class="sourceLineNo">1775</span>    serializeExtraInfo(destination);<a name="line.1775"></a>
-<span class="sourceLineNo">1776</span>  }<a name="line.1776"></a>
-<span class="sourceLineNo">1777</span><a name="line.1777"></a>
-<span class="sourceLineNo">1778</span>  public void serializeExtraInfo(ByteBuffer destination) {<a name="line.1778"></a>
-<span class="sourceLineNo">1779</span>    destination.put(this.fileContext.isUseHBaseChecksum() ? (byte) 1 : (byte) 0);<a name="line.1779"></a>
-<span class="sourceLineNo">1780</span>    destination.putLong(this.offset);<a name="line.1780"></a>
-<span class="sourceLineNo">1781</span>    destination.putInt(this.nextBlockOnDiskSizeWithHeader);<a name="line.1781"></a>
-<span class="sourceLineNo">1782</span>    destination.rewind();<a name="line.1782"></a>
-<span class="sourceLineNo">1783</span>  }<a name="line.1783"></a>
-<span class="sourceLineNo">1784</span><a name="line.1784"></a>
-<span class="sourceLineNo">1785</span>  @Override<a name="line.1785"></a>
-<span class="sourceLineNo">1786</span>  public CacheableDeserializer&lt;Cacheable&gt; getDeserializer() {<a name="line.1786"></a>
-<span class="sourceLineNo">1787</span>    return HFileBlock.blockDeserializer;<a name="line.1787"></a>
-<span class="sourceLineNo">1788</span>  }<a name="line.1788"></a>
-<span class="sourceLineNo">1789</span><a name="line.1789"></a>
-<span class="sourceLineNo">1790</span>  @Override<a name="line.1790"></a>
-<span class="sourceLineNo">1791</span>  public int hashCode() {<a name="line.1791"></a>
-<span class="sourceLineNo">1792</span>    int result = 1;<a name="line.1792"></a>
-<span class="sourceLineNo">1793</span>    result = result * 31 + blockType.hashCode();<a name="line.1793"></a>
-<span class="sourceLineNo">1794</span>    result = result * 31 + nextBlockOnDiskSizeWithHeader;<a name="line.1794"></a>
-<span class="sourceLineNo">1795</span>    result = result * 31 + (int) (offset ^ (offset &gt;&gt;&gt; 32));<a name="line.1795"></a>
-<span class="sourceLineNo">1796</span>    result = result * 31 + onDiskSizeWithoutHeader;<a name="line.1796"></a>
-<span class="sourceLineNo">1797</span>    result = result * 31 + (int) (prevBlockOffset ^ (prevBlockOffset &gt;&gt;&gt; 32));<a name="line.1797"></a>
-<span class="sourceLineNo">1798</span>    result = result * 31 + uncompressedSizeWithoutHeader;<a name="line.1798"></a>
-<span class="sourceLineNo">1799</span>    result = result * 31 + buf.hashCode();<a name="line.1799"></a>
-<span class="sourceLineNo">1800</span>    return result;<a name="line.1800"></a>
-<span class="sourceLineNo">1801</span>  }<a name="line.1801"></a>
-<span class="sourceLineNo">1802</span><a name="line.1802"></a>
-<span class="sourceLineNo">1803</span>  @Override<a name="line.1803"></a>
-<span class="sourceLineNo">1804</span>  public boolean equals(Object comparison) {<a name="line.1804"></a>
-<span class="sourceLineNo">1805</span>    if (this == comparison) {<a name="line.1805"></a>
-<span class="sourceLineNo">1806</span>      return true;<a name="line.1806"></a>
-<span class="sourceLineNo">1807</span>    }<a name="line.1807"></a>
-<span class="sourceLineNo">1808</span>    if (comparison == null) {<a name="line.1808"></a>
-<span class="sourceLineNo">1809</span>      return false;<a name="line.1809"></a>
-<span class="sourceLineNo">1810</span>    }<a name="line.1810"></a>
-<span class="sourceLineNo">1811</span>    if (comparison.getClass() != this.getClass()) {<a name="line.1811"></a>
-<span class="sourceLineNo">1812</span>      return false;<a name="line.1812"></a>
-<span class="sourceLineNo">1813</span>    }<a name="line.1813"></a>
-<span class="sourceLineNo">1814</span><a name="line.1814"></a>
-<span class="sourceLineNo">1815</span>    HFileBlock castedComparison = (HFileBlock) comparison;<a name="line.1815"></a>
-<span class="sourceLineNo">1816</span><a name="line.1816"></a>
-<span class="sourceLineNo">1817</span>    if (castedComparison.blockType != this.blockType) {<a name="line.1817"></a>
-<span class="sourceLineNo">1818</span>      return false;<a name="line.1818"></a>
-<span class="sourceLineNo">1819</span>    }<a name="line.1819"></a>
-<span class="sourceLineNo">1820</span>    if (castedComparison.nextBlockOnDiskSizeWithHeader != this.nextBlockOnDiskSizeWithHeader) {<a name="line.1820"></a>
-<span class="sourceLineNo">1821</span>      return false;<a name="line.1821"></a>
-<span class="sourceLineNo">1822</span>    }<a name="line.1822"></a>
-<span class="sourceLineNo">1823</span>    if (castedComparison.offset != this.offset) {<a name="line.1823"></a>
-<span class="sourceLineNo">1824</span>      return false;<a name="line.1824"></a>
-<span class="sourceLineNo">1825</span>    }<a name="line.1825"></a>
-<span class="sourceLineNo">1826</span>    if (castedComparison.onDiskSizeWithoutHeader != this.onDiskSizeWithoutHeader) {<a name="line.1826"></a>
-<span class="sourceLineNo">1827</span>      return false;<a name="line.1827"></a>
-<span class="sourceLineNo">1828</span>    }<a name="line.1828"></a>
-<span class="sourceLineNo">1829</span>    if (castedComparison.prevBlockOffset != this.prevBlockOffset) {<a name="line.1829"></a>
-<span class="sourceLineNo">1830</span>      return false;<a name="line.1830"></a>
-<span class="sourceLineNo">1831</span>    }<a name="line.1831"></a>
-<span class="sourceLineNo">1832</span>    if (castedComparison.uncompressedSizeWithoutHeader != this.uncompressedSizeWithoutHeader) {<a name="line.1832"></a>
-<span class="sourceLineNo">1833</span>      return false;<a name="line.1833"></a>
-<span class="sourceLineNo">1834</span>    }<a name="line.1834"></a>
-<span class="sourceLineNo">1835</span>    if (ByteBuff.compareTo(this.buf, 0, this.buf.limit(), castedComparison.buf, 0,<a name="line.1835"></a>
-<span class="sourceLineNo">1836</span>        castedComparison.buf.limit()) != 0) {<a name="line.1836"></a>
-<span class="sourceLineNo">1837</span>      return false;<a name="line.1837"></a>
-<span class="sourceLineNo">1838</span>    }<a name="line.1838"></a>
-<span class="sourceLineNo">1839</span>    return true;<a name="line.1839"></a>
-<span class="sourceLineNo">1840</span>  }<a name="line.1840"></a>
-<span class="sourceLineNo">1841</span><a name="line.1841"></a>
-<span class="sourceLineNo">1842</span>  public DataBlockEncoding getDataBlockEncoding() {<a name="line.1842"></a>
-<span class="sourceLineNo">1843</span>    if (blockType == BlockType.ENCODED_DATA) {<a name="line.1843"></a>
-<span class="sourceLineNo">1844</span>      return DataBlockEncoding.getEncodingById(getDataBlockEncodingId());<a name="line.1844"></a>
-<span class="sourceLineNo">1845</span>    }<a name="line.1845"></a>
-<span class="sourceLineNo">1846</span>    return DataBlockEncoding.NONE;<a name="line.1846"></a>
-<span class="sourceLineNo">1847</span>  }<a name="line.1847"></a>
-<span class="sourceLineNo">1848</span><a name="line.1848"></a>
-<span class="sourceLineNo">1849</span>  byte getChecksumType() {<a name="line.1849"></a>
-<span class="sourceLineNo">1850</span>    return this.fileContext.getChecksumType().getCode();<a name="line.1850"></a>
-<span class="sourceLineNo">1851</span>  }<a name="line.1851"></a>
-<span class="sourceLineNo">1852</span><a name="line.1852"></a>
-<span class="sourceLineNo">1853</span>  int getBytesPerChecksum() {<a name="line.1853"></a>
-<span class="sourceLineNo">1854</span>    return this.fileContext.getBytesPerChecksum();<a name="line.1854"></a>
-<span class="sourceLineNo">1855</span>  }<a name="line.1855"></a>
-<span class="sourceLineNo">1856</span><a name="line.1856"></a>
-<span class="sourceLineNo">1857</span>  /** @return the size of data on disk + header. Excludes checksum. */<a name="line.1857"></a>
-<span class="sourceLineNo">1858</span>  int getOnDiskDataSizeWithHeader() {<a name="line.1858"></a>
-<span class="sourceLineNo">1859</span>    return this.onDiskDataSizeWithHeader;<a name="line.1859"></a>
-<span class="sourceLineNo">1860</span>  }<a name="line.1860"></a>
-<span class="sourceLineNo">1861</span><a name="line.1861"></a>
-<span class="sourceLineNo">1862</span>  /**<a name="line.1862"></a>
-<span class="sourceLineNo">1863</span>   * Calcuate the number of bytes required to store all the checksums<a name="line.1863"></a>
-<span class="sourceLineNo">1864</span>   * for this block. Each checksum value is a 4 byte integer.<a name="line.1864"></a>
-<span class="sourceLineNo">1865</span>   */<a name="line.1865"></a>
-<span class="sourceLineNo">1866</span>  int totalChecksumBytes() {<a name="line.1866"></a>
-<span class="sourceLineNo">1867</span>    // If the hfile block has minorVersion 0, then there are no checksum<a name="line.1867"></a>
-<span class="sourceLineNo">1868</span>    // data to validate. Similarly, a zero value in this.bytesPerChecksum<a name="line.1868"></a>
-<span class="sourceLineNo">1869</span>    // indicates that cached blocks do not have checksum data because<a name="line.1869"></a>
-<span class="sourceLineNo">1870</span>    // checksums were already validated when the block was read from disk.<a name="line.1870"></a>
-<span class="sourceLineNo">1871</span>    if (!fileContext.isUseHBaseChecksum() || this.fileContext.getBytesPerChecksum() == 0) {<a name="line.1871"></a>
-<span class="sourceLineNo">1872</span>      return 0;<a name="line.1872"></a>
-<span class="sourceLineNo">1873</span>    }<a name="line.1873"></a>
-<span class="sourceLineNo">1874</span>    return (int) ChecksumUtil.numBytes(onDiskDataSizeWithHeader,<a name="line.1874"></a>
-<span class="sourceLineNo">1875</span>        this.fileContext.getBytesPerChecksum());<a name="line.1875"></a>
-<span class="sourceLineNo">1876</span>  }<a name="line.1876"></a>
-<span class="sourceLineNo">1877</span><a name="line.1877"></a>
-<span class="sourceLineNo">1878</span>  /**<a name="line.1878"></a>
-<span class="sourceLineNo">1879</span>   * Returns the size of this block header.<a name="line.1879"></a>
-<span class="sourceLineNo">1880</span>   */<a name="line.1880"></a>
-<span class="sourceLineNo">1881</span>  public int headerSize() {<a name="line.1881"></a>
-<span class="sourceLineNo">1882</span>    return headerSize(this.fileContext.isUseHBaseChecksum());<a name="line.1882"></a>
-<span class="sourceLineNo">1883</span>  }<a name="line.1883"></a>
-<span class="sourceLineNo">1884</span><a name="line.1884"></a>
-<span class="sourceLineNo">1885</span>  /**<a name="line.1885"></a>
-<span class="sourceLineNo">1886</span>   * Maps a minor version to the size of the header.<a name="line.1886"></a>
-<span class="sourceLineNo">1887</span>   */<a name="line.1887"></a>
-<span class="sourceLineNo">1888</span>  public static int headerSize(boolean usesHBaseChecksum) {<a name="line.1888"></a>
-<span class="sourceLineNo">1889</span>    if (usesHBaseChecksum) {<a name="line.1889"></a>
-<span class="sourceLineNo">1890</span>      return HConstants.HFILEBLOCK_HEADER_SIZE;<a name="line.1890"></a>
-<span class="sourceLineNo">1891</span>    }<a name="line.1891"></a>
-<span class="sourceLineNo">1892</span>    return HConstants.HFILEBLOCK_HEADER_SIZE_NO_CHECKSUM;<a name="line.1892"></a>
-<span class="sourceLineNo">1893</span>  }<a name="line.1893"></a>
-<span class="sourceLineNo">1894</span><a name="line.1894"></a>
-<span class="sourceLineNo">1895</span>  /**<a name="line.1895"></a>
-<span class="sourceLineNo">1896</span>   * Return the appropriate DUMMY_HEADER for the minor version<a name="line.1896"></a>
-<span class="sourceLineNo">1897</span>   */<a name="line.1897"></a>
-<span class="sourceLineNo">1898</span>  public byte[] getDummyHeaderForVersion() {<a name="line.1898"></a>
-<span class="sourceLineNo">1899</span>    return getDummyHeaderForVersion(this.fileContext.isUseHBaseChecksum());<a name="line.1899"></a>
-<span class="sourceLineNo">1900</span>  }<a name="line.1900"></a>
-<span class="sourceLineNo">1901</span><a name="line.1901"></a>
-<span class="sourceLineNo">1902</span>  /**<a name="line.1902"></a>
-<span class="sourceLineNo">1903</span>   * Return the appropriate DUMMY_HEADER for the minor version<a name="line.1903"></a>
-<span class="sourceLineNo">1904</span>   */<a name="line.1904"></a>
-<span class="sourceLineNo">1905</span>  static private byte[] getDummyHeaderForVersion(boolean usesHBaseChecksum) {<a name="line.1905"></a>
-<span class="sourceLineNo">1906</span>    if (usesHBaseChecksum) {<a name="line.1906"></a>
-<span class="sourceLineNo">1907</span>      return HConstants.HFILEBLOCK_DUMMY_HEADER;<a name="line.1907"></a>
-<span class="sourceLineNo">1908</span>    }<a name="line.1908"></a>
-<span class="sourceLineNo">1909</span>    return DUMMY_HEADER_NO_CHECKSUM;<a name="line.1909"></a>
-<span class="sourceLineNo">1910</span>  }<a name="line.1910"></a>
-<span class="sourceLineNo">1911</span><a name="line.1911"></a>
-<span class="sourceLineNo">1912</span>  /**<a name="line.1912"></a>
-<span class="sourceLineNo">1913</span>   * @return the HFileContext used to create this HFileBlock. Not necessary the<a name="line.1913"></a>
-<span class="sourceLineNo">1914</span>   * fileContext for the file from which this block's data was originally read.<a name="line.1914"></a>
-<span class="sourceLineNo">1915</span>   */<a name="line.1915"></a>
-<span class="sourceLineNo">1916</span>  public HFileContext getHFileContext() {<a name="line.1916"></a>
-<span class="sourceLineNo">1917</span>    return this.fileContext;<a name="line.1917"></a>
-<span class="sourceLineNo">1918</span>  }<a name="line.1918"></a>
-<span class="sourceLineNo">1919</span><a name="line.1919"></a>
-<span class="sourceLineNo">1920</span>  @Override<a name="line.1920"></a>
-<span class="sourceLineNo">1921</span>  public MemoryType getMemoryType() {<a name="line.1921"></a>
-<span class="sourceLineNo">1922</span>    return this.memType;<a name="line.1922"></a>
-<span class="sourceLineNo">1923</span>  }<a name="line.1923"></a>
-<span class="sourceLineNo">1924</span><a name="line.1924"></a>
-<span class="sourceLineNo">1925</span>  /**<a name="line.1925"></a>
-<span class="sourceLineNo">1926</span>   * @return true if this block is backed by a shared memory area(such as that of a BucketCache).<a name="line.1926"></a>
-<span class="sourceLineNo">1927</span>   */<a name="line.1927"></a>
-<span class="sourceLineNo">1928</span>  public boolean usesSharedMemory() {<a name="line.1928"></a>
-<span class="sourceLineNo">1929</span>    return this.memType == MemoryType.SHARED;<a name="line.1929"></a>
-<span class="sourceLineNo">1930</span>  }<a name="line.1930"></a>
-<span class="sourceLineNo">1931</span><a name="line.1931"></a>
-<span class="sourceLineNo">1932</span>  /**<a name="line.1932"></a>
-<span class="sourceLineNo">1933</span>   * Convert the contents of the block header into a human readable string.<a name="line.1933"></a>
-<span class="sourceLineNo">1934</span>   * This is mostly helpful for debugging. This assumes that the block<a name="line.1934"></a>
-<span class="sourceLineNo">1935</span>   * has minor version &gt; 0.<a name="line.1935"></a>
-<span class="sourceLineNo">1936</span>   */<a name="line.1936"></a>
-<span class="sourceLineNo">1937</span>  static String toStringHeader(ByteBuff buf) throws IOException {<a name="line.1937"></a>
-<span class="sourceLineNo">1938</span>    byte[] magicBuf = new byte[Math.min(buf.limit() - buf.position(), BlockType.MAGIC_LENGTH)];<a name="line.1938"></a>
-<span class="sourceLineNo">1939</span>    buf.get(magicBuf);<a name="line.1939"></a>
-<span class="sourceLineNo">1940</span>    BlockType bt = BlockType.parse(magicBuf, 0, BlockType.MAGIC_LENGTH);<a name="line.1940"></a>
-<span class="sourceLineNo">1941</span>    int compressedBlockSizeNoHeader = buf.getInt();<a name="line.1941"></a>
-<span class="sourceLineNo">1942</span>    int uncompressedBlockSizeNoHeader = buf.getInt();<a name="line.1942"></a>
-<span class="sourceLineNo">1943</span>    long prevBlockOffset = buf.getLong();<a name="line.1943"></a>
-<span class="sourceLineNo">1944</span>    byte cksumtype = buf.get();<a name="line.1944"></a>
-<span class="sourceLineNo">1945</span>    long bytesPerChecksum = buf.getInt();<a name="line.1945"></a>
-<span class="sourceLineNo">1946</span>    long onDiskDataSizeWithHeader = buf.getInt();<a name="line.1946"></a>
-<span class="sourceLineNo">1947</span>    return " Header dump: magic: " + Bytes.toString(magicBuf) +<a name="line.1947"></a>
-<span class="sourceLineNo">1948</span>                   " blockType " + bt +<a name="line.1948"></a>
-<span class="sourceLineNo">1949</span>                   " compressedBlockSizeNoHeader " +<a name="line.1949"></a>
-<span class="sourceLineNo">1950</span>                   compressedBlockSizeNoHeader +<a name="line.1950"></a>
-<span class="sourceLineNo">1951</span>                   " uncompressedBlockSizeNoHeader " +<a name="line.1951"></a>
-<span class="sourceLineNo">1952</span>                   uncompressedBlockSizeNoHeader +<a name="line.1952"></a>
-<span class="sourceLineNo">1953</span>                   " prevBlockOffset " + prevBlockOffset +<a name="line.1953"></a>
-<span class="sourceLineNo">1954</span>                   " checksumType " + ChecksumType.codeToType(cksumtype) +<a name="line.1954"></a>
-<span class="sourceLineNo">1955</span>                   " bytesPerChecksum " + bytesPerChecksum +<a name="line.1955"></a>
-<span class="sourceLineNo">1956</span>                   " onDiskDataSizeWithHeader " + onDiskDataSizeWithHeader;<a name="line.1956"></a>
-<span class="sourceLineNo">1957</span>  }<a name="line.1957"></a>
-<span class="sourceLineNo">1958</span>}<a name="line.1958"></a>
+<span class="sourceLineNo">1361</span>    protected HFileContext fileContext;<a name="line.1361"></a>
+<span class="sourceLineNo">1362</span>    // Cache the fileName<a name="line.1362"></a>
+<span class="sourceLineNo">1363</span>    protected String pathName;<a name="line.1363"></a>
+<span class="sourceLineNo">1364</span><a name="line.1364"></a>
+<span class="sourceLineNo">1365</span>    public FSReaderImpl(FSDataInputStreamWrapper stream, long fileSize, HFileSystem hfs, Path path,<a name="line.1365"></a>
+<span class="sourceLineNo">1366</span>        HFileContext fileContext) throws IOException {<a name="line.1366"></a>
+<span class="sourceLineNo">1367</span>      this.fileSize = fileSize;<a name="line.1367"></a>
+<span class="sourceLineNo">1368</span>      this.hfs = hfs;<a name="line.1368"></a>
+<span class="sourceLineNo">1369</span>      if (path != null) {<a name="line.1369"></a>
+<span class="sourceLineNo">1370</span>        this.pathName = path.toString();<a name="line.1370"></a>
+<span class="sourceLineNo">1371</span>      }<a name="line.1371"></a>
+<span class="sourceLineNo">1372</span>      this.fileContext = fileContext;<a name="line.1372"></a>
+<span class="sourceLineNo">1373</span>      this.hdrSize = headerSize(fileContext.isUseHBaseChecksum());<a name="line.1373"></a>
+<span class="sourceLineNo">1374</span><a name="line.1374"></a>
+<span class="sourceLineNo">1375</span>      this.streamWrapper = stream;<a name="line.1375"></a>
+<span class="sourceLineNo">1376</span>      // Older versions of HBase didn't support checksum.<a name="line.1376"></a>
+<span class="sourceLineNo">1377</span>      this.streamWrapper.prepareForBlockReader(!fileContext.isUseHBaseChecksum());<a name="line.1377"></a>
+<span class="sourceLineNo">1378</span>      defaultDecodingCtx = new HFileBlockDefaultDecodingContext(fileContext);<a name="line.1378"></a>
+<span class="sourceLineNo">1379</span>      encodedBlockDecodingCtx = defaultDecodingCtx;<a name="line.1379"></a>
+<span class="sourceLineNo">1380</span>    }<a name="line.1380"></a>
+<span class="sourceLineNo">1381</span><a name="line.1381"></a>
+<span class="sourceLineNo">1382</span>    /**<a name="line.1382"></a>
+<span class="sourceLineNo">1383</span>     * A constructor that reads files with the latest minor version.<a name="line.1383"></a>
+<span class="sourceLineNo">1384</span>     * This is used by unit tests only.<a name="line.1384"></a>
+<span class="sourceLineNo">1385</span>     */<a name="line.1385"></a>
+<span class="sourceLineNo">1386</span>    FSReaderImpl(FSDataInputStream istream, long fileSize, HFileContext fileContext)<a name="line.1386"></a>
+<span class="sourceLineNo">1387</span>    throws IOException {<a name="line.1387"></a>
+<span class="sourceLineNo">1388</span>      this(new FSDataInputStreamWrapper(istream), fileSize, null, null, fileContext);<a name="line.1388"></a>
+<span class="sourceLineNo">1389</span>    }<a name="line.1389"></a>
+<span class="sourceLineNo">1390</span><a name="line.1390"></a>
+<span class="sourceLineNo">1391</span>    public BlockIterator blockRange(final long startOffset, final long endOffset) {<a name="line.1391"></a>
+<span class="sourceLineNo">1392</span>      final FSReader owner = this; // handle for inner class<a name="line.1392"></a>
+<span class="sourceLineNo">1393</span>      return new BlockIterator() {<a name="line.1393"></a>
+<span class="sourceLineNo">1394</span>        private long offset = startOffset;<a name="line.1394"></a>
+<span class="sourceLineNo">1395</span><a name="line.1395"></a>
+<span class="sourceLineNo">1396</span>        @Override<a name="line.1396"></a>
+<span class="sourceLineNo">1397</span>        public HFileBlock nextBlock() throws IOException {<a name="line.1397"></a>
+<span class="sourceLineNo">1398</span>          if (offset &gt;= endOffset)<a name="line.1398"></a>
+<span class="sourceLineNo">1399</span>            return null;<a name="line.1399"></a>
+<span class="sourceLineNo">1400</span>          HFileBlock b = readBlockData(offset, -1, -1, false);<a name="line.1400"></a>
+<span class="sourceLineNo">1401</span>          offset += b.getOnDiskSizeWithHeader();<a name="line.1401"></a>
+<span class="sourceLineNo">1402</span>          return b.unpack(fileContext, owner);<a name="line.1402"></a>
+<span class="sourceLineNo">1403</span>        }<a name="line.1403"></a>
+<span class="sourceLineNo">1404</span><a name="line.1404"></a>
+<span class="sourceLineNo">1405</span>        @Override<a name="line.1405"></a>
+<span class="sourceLineNo">1406</span>        public HFileBlock nextBlockWithBlockType(BlockType blockType)<a name="line.1406"></a>
+<span class="sourceLineNo">1407</span>            throws IOException {<a name="line.1407"></a>
+<span class="sourceLineNo">1408</span>          HFileBlock blk = nextBlock();<a name="line.1408"></a>
+<span class="sourceLineNo">1409</span>          if (blk.getBlockType() != blockType) {<a name="line.1409"></a>
+<span class="sourceLineNo">1410</span>            throw new IOException("Expected block of type " + blockType<a name="line.1410"></a>
+<span class="sourceLineNo">1411</span>                + " but found " + blk.getBlockType());<a name="line.1411"></a>
+<span class="sourceLineNo">1412</span>          }<a name="line.1412"></a>
+<span class="sourceLineNo">1413</span>          return blk;<a name="line.1413"></a>
+<span class="sourceLineNo">1414</span>        }<a name="line.1414"></a>
+<span class="sourceLineNo">1415</span>      };<a name="line.1415"></a>
+<span class="sourceLineNo">1416</span>    }<a name="line.1416"></a>
+<span class="sourceLineNo">1417</span><a name="line.1417"></a>
+<span class="sourceLineNo">1418</span>    /**<a name="line.1418"></a>
+<span class="sourceLineNo">1419</span>     * Does a positional read or a seek and read into the given buffer. Returns<a name="line.1419"></a>
+<span class="sourceLineNo">1420</span>     * the on-disk size of the next block, or -1 if it could not be determined.<a name="line.1420"></a>
+<span class="sourceLineNo">1421</span>     *<a name="line.1421"></a>
+<span class="sourceLineNo">1422</span>     * @param dest destination buffer<a name="line.1422"></a>
+<span class="sourceLineNo">1423</span>     * @param destOffset offset in the destination buffer<a name="line.1423"></a>
+<span class="sourceLineNo">1424</span>     * @param size size of the block to be read<a name="line.1424"></a>
+<span class="sourceLineNo">1425</span>     * @param peekIntoNextBlock whether to read the next block's on-disk size<a name="line.1425"></a>
+<span class="sourceLineNo">1426</span>     * @param fileOffset position in the stream to read at<a name="line.1426"></a>
+<span class="sourceLineNo">1427</span>     * @param pread whether we should do a positional read<a name="line.1427"></a>
+<span class="sourceLineNo">1428</span>     * @param istream The input source of data<a name="line.1428"></a>
+<span class="sourceLineNo">1429</span>     * @return the on-disk size of the next block with header size included, or<a name="line.1429"></a>
+<span class="sourceLineNo">1430</span>     *         -1 if it could not be determined<a name="line.1430"></a>
+<span class="sourceLineNo">1431</span>     * @throws IOException<a name="line.1431"></a>
+<span class="sourceLineNo">1432</span>     */<a name="line.1432"></a>
+<span class="sourceLineNo">1433</span>    protected int readAtOffset(FSDataInputStream istream,<a name="line.1433"></a>
+<span class="sourceLineNo">1434</span>        byte[] dest, int destOffset, int size,<a name="line.1434"></a>
+<span class="sourceLineNo">1435</span>        boolean peekIntoNextBlock, long fileOffset, boolean pread)<a name="line.1435"></a>
+<span class="sourceLineNo">1436</span>        throws IOException {<a name="line.1436"></a>
+<span class="sourceLineNo">1437</span>      if (peekIntoNextBlock &amp;&amp;<a name="line.1437"></a>
+<span class="sourceLineNo">1438</span>          destOffset + size + hdrSize &gt; dest.length) {<a name="line.1438"></a>
+<span class="sourceLineNo">1439</span>        // We are asked to read the next block's header as well, but there is<a name="line.1439"></a>
+<span class="sourceLineNo">1440</span>        // not enough room in the array.<a name="line.1440"></a>
+<span class="sourceLineNo">1441</span>        throw new IOException("Attempted to read " + size + " bytes and " +<a name="line.1441"></a>
+<span class="sourceLineNo">1442</span>            hdrSize + " bytes of next header into a " + dest.length +<a name="line.1442"></a>
+<span class="sourceLineNo">1443</span>            "-byte array at offset " + destOffset);<a name="line.1443"></a>
+<span class="sourceLineNo">1444</span>      }<a name="line.1444"></a>
+<span class="sourceLineNo">1445</span><a name="line.1445"></a>
+<span class="sourceLineNo">1446</span>      if (!pread &amp;&amp; streamLock.tryLock()) {<a name="line.1446"></a>
+<span class="sourceLineNo">1447</span>        // Seek + read. Better for scanning.<a name="line.1447"></a>
+<span class="sourceLineNo">1448</span>        try {<a name="line.1448"></a>
+<span class="sourceLineNo">1449</span>          istream.seek(fileOffset);<a name="line.1449"></a>
+<span class="sourceLineNo">1450</span><a name="line.1450"></a>
+<span class="sourceLineNo">1451</span>          long realOffset = istream.getPos();<a name="line.1451"></a>
+<span class="sourceLineNo">1452</span>          if (realOffset != fileOffset) {<a name="line.1452"></a>
+<span class="sourceLineNo">1453</span>            throw new IOException("Tried to seek to " + fileOffset + " to "<a name="line.1453"></a>
+<span class="sourceLineNo">1454</span>                + "read " + size + " bytes, but pos=" + realOffset<a name="line.1454"></a>
+<span class="sourceLineNo">1455</span>                + " after seek");<a name="line.1455"></a>
+<span class="sourceLineNo">1456</span>          }<a name="line.1456"></a>
+<span class="sourceLineNo">1457</span><a name="line.1457"></a>
+<span class="sourceLineNo">1458</span>          if (!peekIntoNextBlock) {<a name="line.1458"></a>
+<span class="sourceLineNo">1459</span>            IOUtils.readFully(istream, dest, destOffset, size);<a name="line.1459"></a>
+<span class="sourceLineNo">1460</span>            return -1;<a name="line.1460"></a>
+<span class="sourceLineNo">1461</span>          }<a name="line.1461"></a>
+<span class="sourceLineNo">1462</span><a name="line.1462"></a>
+<span class="sourceLineNo">1463</span>          // Try to read the next block header.<a name="line.1463"></a>
+<span class="sourceLineNo">1464</span>          if (!readWithExtra(istream, dest, destOffset, size, hdrSize))<a name="line.1464"></a>
+<span class="sourceLineNo">1465</span>            return -1;<a name="line.1465"></a>
+<span class="sourceLineNo">1466</span>        } finally {<a name="line.1466"></a>
+<span class="sourceLineNo">1467</span>          streamLock.unlock();<a name="line.1467"></a>
+<span class="sourceLineNo">1468</span>        }<a name="line.1468"></a>
+<span class="sourceLineNo">1469</span>      } else {<a name="line.1469"></a>
+<span class="sourceLineNo">1470</span>        // Positional read. Better for random reads; or when the streamLock is already locked.<a name="line.1470"></a>
+<span class="sourceLineNo">1471</span>        int extraSize = peekIntoNextBlock ? hdrSize : 0;<a name="line.1471"></a>
+<span class="sourceLineNo">1472</span>        if (!positionalReadWithExtra(istream, fileOffset, dest, destOffset,<a name="line.1472"></a>
+<span class="sourceLineNo">1473</span>            size, extraSize)) {<a name="line.1473"></a>
+<span class="sourceLineNo">1474</span>          return -1;<a name="line.1474"></a>
+<span class="sourceLineNo">1475</span>        }<a name="line.1475"></a>
+<span class="sourceLineNo">1476</span>      }<a name="line.1476"></a>
+<span class="sourceLineNo">1477</span><a name="line.1477"></a>
+<span class="sourceLineNo">1478</span>      assert peekIntoNextBlock;<a name="line.1478"></a>
+<span class="sourceLineNo">1479</span>      return Bytes.toInt(dest, destOffset + size + BlockType.MAGIC_LENGTH) + hdrSize;<a name="line.1479"></a>
+<span class="sourceLineNo">1480</span>    }<a name="line.1480"></a>
+<span class="sourceLineNo">1481</span><a name="line.1481"></a>
+<span class="sourceLineNo">1482</span>    /**<a name="line.1482"></a>
+<span class="sourceLineNo">1483</span>     * Reads a version 2 block (version 1 blocks not supported and not expected). Tries to do as<a name="line.1483"></a>
+<span class="sourceLineNo">1484</span>     * little memory allocation as possible, using the provided on-disk size.<a name="line.1484"></a>
+<span class="sourceLineNo">1485</span>     *<a name="line.1485"></a>
+<span class="sourceLineNo">1486</span>     * @param offset the offset in the stream to read at<a name="line.1486"></a>
+<span class="sourceLineNo">1487</span>     * @param onDiskSizeWithHeaderL the on-disk size of the block, including<a name="line.1487"></a>
+<span class="sourceLineNo">1488</span>     *          the header, or -1 if unknown<a name="line.1488"></a>
+<span class="sourceLineNo">1489</span>     * @param uncompressedSize the uncompressed size of the the block. Always<a name="line.1489"></a>
+<span class="sourceLineNo">1490</span>     *          expected to be -1. This parameter is only used in version 1.<a name="line.1490"></a>
+<span class="sourceLineNo">1491</span>     * @param pread whether to use a positional read<a name="line.1491"></a>
+<span class="sourceLineNo">1492</span>     */<a name="line.1492"></a>
+<span class="sourceLineNo">1493</span>    @Override<a name="line.1493"></a>
+<span class="sourceLineNo">1494</span>    public HFileBlock readBlockData(long offset, long onDiskSizeWithHeaderL,<a name="line.1494"></a>
+<span class="sourceLineNo">1495</span>        int uncompressedSize, boolean pread)<a name="line.1495"></a>
+<span class="sourceLineNo">1496</span>    throws IOException {<a name="line.1496"></a>
+<span class="sourceLineNo">1497</span><a name="line.1497"></a>
+<span class="sourceLineNo">1498</span>      // get a copy of the current state of whether to validate<a name="line.1498"></a>
+<span class="sourceLineNo">1499</span>      // hbase checksums or not for this read call. This is not<a name="line.1499"></a>
+<span class="sourceLineNo">1500</span>      // thread-safe but the one constaint is that if we decide<a name="line.1500"></a>
+<span class="sourceLineNo">1501</span>      // to skip hbase checksum verification then we are<a name="line.1501"></a>
+<span class="sourceLineNo">1502</span>      // guaranteed to use hdfs checksum verification.<a name="line.1502"></a>
+<span class="sourceLineNo">1503</span>      boolean doVerificationThruHBaseChecksum = streamWrapper.shouldUseHBaseChecksum();<a name="line.1503"></a>
+<span class="sourceLineNo">1504</span>      FSDataInputStream is = streamWrapper.getStream(doVerificationThruHBaseChecksum);<a name="line.1504"></a>
+<span class="sourceLineNo">1505</span><a name="line.1505"></a>
+<span class="sourceLineNo">1506</span>      HFileBlock blk = readBlockDataInternal(is, offset,<a name="line.1506"></a>
+<span class="sourceLineNo">1507</span>                         onDiskSizeWithHeaderL,<a name="line.1507"></a>
+<span class="sourceLineNo">1508</span>                         uncompressedSize, pread,<a name="line.1508"></a>
+<span class="sourceLineNo">1509</span>                         doVerificationThruHBaseChecksum);<a name="line.1509"></a>
+<span class="sourceLineNo">1510</span>      if (blk == null) {<a name="line.1510"></a>
+<span class="sourceLineNo">1511</span>        HFile.LOG.warn("HBase checksum verification failed for file " +<a name="line.1511"></a>
+<span class="sourceLineNo">1512</span>                       pathName + " at offset " +<a name="line.1512"></a>
+<span class="sourceLineNo">1513</span>                       offset + " filesize " + fileSize +<a name="line.1513"></a>
+<span class="sourceLineNo">1514</span>                       ". Retrying read with HDFS checksums turned on...");<a name="line.1514"></a>
+<span class="sourceLineNo">1515</span><a name="line.1515"></a>
+<span class="sourceLineNo">1516</span>        if (!doVerificationThruHBaseChecksum) {<a name="line.1516"></a>
+<span class="sourceLineNo">1517</span>          String msg = "HBase checksum verification failed for file " +<a name="line.1517"></a>
+<span class="sourceLineNo">1518</span>                       pathName + " at offset " +<a name="line.1518"></a>
+<span class="sourceLineNo">1519</span>                       offset + " filesize " + fileSize +<a name="line.1519"></a>
+<span class="sourceLineNo">1520</span>                       " but this cannot happen because doVerify is " +<a name="line.1520"></a>
+<span class="sourceLineNo">1521</span>                       doVerificationThruHBaseChecksum;<a name="line.1521"></a>
+<span class="sourceLineNo">1522</span>          HFile.LOG.warn(msg);<a name="line.1522"></a>
+<span class="sourceLineNo">1523</span>          throw new IOException(msg); // cannot happen case here<a name="line.1523"></a>
+<span class="sourceLineNo">1524</span>        }<a name="line.1524"></a>
+<span class="sourceLineNo">1525</span>        HFile.checksumFailures.incrementAndGet(); // update metrics<a name="line.1525"></a>
+<span class="sourceLineNo">1526</span><a name="line.1526"></a>
+<span class="sourceLineNo">1527</span>        // If we have a checksum failure, we fall back into a mode where<a name="line.1527"></a>
+<span class="sourceLineNo">1528</span>        // the next few reads use HDFS level checksums. We aim to make the<a name="line.1528"></a>
+<span class="sourceLineNo">1529</span>        // next CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD reads avoid<a name="line.1529"></a>
+<span class="sourceLineNo">1530</span>        // hbase checksum verification, but since this value is set without<a name="line.1530"></a>
+<span class="sourceLineNo">1531</span>        // holding any locks, it can so happen that we might actually do<a name="line.1531"></a>
+<span class="sourceLineNo">1532</span>        // a few more than precisely this number.<a name="line.1532"></a>
+<span class="sourceLineNo">1533</span>        is = this.streamWrapper.fallbackToFsChecksum(CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD);<a name="line.1533"></a>
+<span class="sourceLineNo">1534</span>        doVerificationThruHBaseChecksum = false;<a name="line.1534"></a>
+<span class="sourceLineNo">1535</span>        blk = readBlockDataInternal(is, offset, onDiskSizeWithHeaderL,<a name="line.1535"></a>
+<span class="sourceLineNo">1536</span>                                    uncompressedSize, pread,<a name="line.1536"></a>
+<span class="sourceLineNo">1537</span>                                    doVerificationThruHBaseChecksum);<a name="line.1537"></a>
+<span class="sourceLineNo">1538</span>        if (blk != null) {<a name="line.1538"></a>
+<span class="sourceLineNo">1539</span>          HFile.LOG.warn("HDFS checksum verification suceeded for file " +<a name="line.1539"></a>
+<span class="sourceLineNo">1540</span>                         pathName + " at offset " +<a name="line.1540"></a>
+<span class="sourceLineNo">1541</span>                         offset + " filesize " + fileSize);<a name="line.1541"></a>
+<span class="sourceLineNo">1542</span>        }<a name="line.1542"></a>
+<span class="sourceLineNo">1543</span>      }<a name="line.1543"></a>
+<span class="sourceLineNo">1544</span>      if (blk == null &amp;&amp; !doVerificationThruHBaseChecksum) {<a name="line.1544"></a>
+<span class="sourceLineNo">1545</span>        String msg = "readBlockData failed, possibly due to " +<a name="line.1545"></a>
+<span class="sourceLineNo">1546</span>                     "checksum verification failed for file " + pathName +<a name="line.1546"></a>
+<span class="sourceLineNo">1547</span>                     " at offset " + offset + " filesize " + fileSize;<a name="line.1547"></a>
+<span class="sourceLineNo">1548</span>        HFile.LOG.warn(msg);<a name="line.1548"></a>
+<span class="sourceLineNo">1549</span>        throw new IOException(msg);<a name="line.1549"></a>
+<span class="sourceLineNo">1550</span>      }<a name="line.1550"></a>
+<span class="sourceLineNo">1551</span><a name="line.1551"></a>
+<span class="sourceLineNo">1552</span>      // If there is a checksum mismatch earlier, then retry with<a name="line.1552"></a>
+<span class="sourceLineNo">1553</span>      // HBase checksums switched off and use HDFS checksum verification.<a name="line.1553"></a>
+<span class="sourceLineNo">1554</span>      // This triggers HDFS to detect and fix corrupt replicas. The<a name="line.1554"></a>
+<span class="sourceLineNo">1555</span>      // next checksumOffCount read requests will use HDFS checksums.<a name="line.1555"></a>
+<span class="sourceLineNo">1556</span>      // The decrementing of this.checksumOffCount is not thread-safe,<a name="line.1556"></a>
+<span class="sourceLineNo">1557</span>      // but it is harmless because eventually checksumOffCount will be<a name="line.1557"></a>
+<span class="sourceLineNo">1558</span>      // a negative number.<a name="line.1558"></a>
+<span class="sourceLineNo">1559</span>      streamWrapper.checksumOk();<a name="line.1559"></a>
+<span class="sourceLineNo">1560</span>      return blk;<a name="line.1560"></a>
+<span class="sourceLineNo">1561</span>    }<a name="line.1561"></a>
+<span class="sourceLineNo">1562</span><a name="line.1562"></a>
+<span class="sourceLineNo">1563</span>    /**<a name="line.1563"></a>
+<span class="sourceLineNo">1564</span>     * Reads a version 2 block.<a name="line.1564"></a>
+<span class="sourceLineNo">1565</span>     *<a name="line.1565"></a>
+<span class="sourceLineNo">1566</span>     * @param offset the offset in the stream to read at<a name="line.1566"></a>
+<span class="sourceLineNo">1567</span>     * @param onDiskSizeWithHeaderL the on-disk size of the block, including<a name="line.1567"></a>
+<span class="sourceLineNo">1568</span>     *          the header, or -1 if unknown<a name="line.1568"></a>
+<span class="sourceLineNo">1569</span>     * @param uncompressedSize the uncompressed size of the the block. Always<a name="line.1569"></a>
+<span class="sourceLineNo">1570</span>     *          expected to be -1. This parameter is only used in version 1.<a name="line.1570"></a>
+<span class="sourceLineNo">1571</span>     * @param pread whether to use a positional read<a name="line.1571"></a>
+<span class="sourceLineNo">1572</span>     * @param verifyChecksum Whether to use HBase checksums.<a name="line.1572"></a>
+<span class="sourceLineNo">1573</span>     *        If HBase checksum is switched off, then use HDFS checksum.<a name="line.1573"></a>
+<span class="sourceLineNo">1574</span>     * @return the HFileBlock or null if there is a HBase checksum mismatch<a name="line.1574"></a>
+<span class="sourceLineNo">1575</span>     */<a name="line.1575"></a>
+<span class="sourceLineNo">1576</span>    private HFileBlock readBlockDataInternal(FSDataInputStream is, long offset,<a name="line.1576"></a>
+<span class="sourceLineNo">1577</span>        long onDiskSizeWithHeaderL, int uncompressedSize, boolean pread,<a name="line.1577"></a>
+<span class="sourceLineNo">1578</span>        boolean verifyChecksum)<a name="line.1578"></a>
+<span class="sourceLineNo">1579</span>    throws IOException {<a name="line.1579"></a>
+<span class="sourceLineNo">1580</span>      if (offset &lt; 0) {<a name="line.1580"></a>
+<span class="sourceLineNo">1581</span>        throw new IOException("Invalid offset=" + offset + " trying to read "<a name="line.1581"></a>
+<span class="sourceLineNo">1582</span>            + "block (onDiskSize=" + onDiskSizeWithHeaderL<a name="line.1582"></a>
+<span class="sourceLineNo">1583</span>            + ", uncompressedSize=" + uncompressedSize + ")");<a name="line.1583"></a>
+<span class="sourceLineNo">1584</span>      }<a name="line.1584"></a>
+<span class="sourceLineNo">1585</span><a name="line.1585"></a>
+<span class="sourceLineNo">1586</span>      if (uncompressedSize != -1) {<a name="line.1586"></a>
+<span class="sourceLineNo">1587</span>        throw new IOException("Version 2 block reader API does not need " +<a name="line.1587"></a>
+<span class="sourceLineNo">1588</span>            "the uncompressed size parameter");<a name="line.1588"></a>
+<span class="sourceLineNo">1589</span>      }<a name="line.1589"></a>
+<span class="sourceLineNo">1590</span><a name="line.1590"></a>
+<span class="sourceLineNo">1591</span>      if ((onDiskSizeWithHeaderL &lt; hdrSize &amp;&amp; onDiskSizeWithHeaderL != -1)<a name="line.1591"></a>
+<span class="sourceLineNo">1592</span>          || onDiskSizeWithHeaderL &gt;= Integer.MAX_VALUE) {<a name="line.1592"></a>
+<span class="sourceLineNo">1593</span>        throw new IOException("Invalid onDisksize=" + onDiskSizeWithHeaderL<a name="line.1593"></a>
+<span class="sourceLineNo">1594</span>            + ": expected to be at least " + hdrSize<a name="line.1594"></a>
+<span class="sourceLineNo">1595</span>            + " and at most " + Integer.MAX_VALUE + ", or -1 (offset="<a name="line.1595"></a>
+<span class="sourceLineNo">1596</span>            + offset + ", uncompressedSize=" + uncompressedSize + ")");<a name="line.1596"></a>
+<span class="sourceLineNo">1597</span>      }<a name="line.1597"></a>
+<span class="sourceLineNo">1598</span><a name="line.1598"></a>
+<span class="sourceLineNo">1599</span>      int onDiskSizeWithHeader = (int) onDiskSizeWithHeaderL;<a name="line.1599"></a>
+<span class="sourceLineNo">1600</span>      // See if we can avoid reading the header. This is desirable, because<a name="line.1600"></a>
+<span class="sourceLineNo">1601</span>      // we will not incur a backward seek op

<TRUNCATED>

[23/23] hbase-site git commit: Published site at 2cf8af5bf1d501156cbb3b421cf75c1051ead7d9.

Posted by mi...@apache.org.
Published site at 2cf8af5bf1d501156cbb3b421cf75c1051ead7d9.


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

Branch: refs/heads/asf-site
Commit: 32672884905fe491518476fbb68ed0237eac9d7e
Parents: 6a13df3
Author: jenkins <bu...@apache.org>
Authored: Thu Feb 4 15:29:16 2016 +0000
Committer: Misty Stanley-Jones <ms...@cloudera.com>
Committed: Thu Feb 4 09:25:44 2016 -0800

----------------------------------------------------------------------
 acid-semantics.html                             |     4 +-
 apache_hbase_reference_guide.pdf                |     4 +-
 apache_hbase_reference_guide.pdfmarks           |     4 +-
 book.html                                       |     2 +-
 bulk-loads.html                                 |     4 +-
 checkstyle-aggregate.html                       | 20932 ++++++++---------
 checkstyle.rss                                  |     4 +-
 coc.html                                        |     4 +-
 cygwin.html                                     |     4 +-
 dependencies.html                               |     4 +-
 dependency-convergence.html                     |     4 +-
 dependency-info.html                            |     4 +-
 dependency-management.html                      |     4 +-
 devapidocs/index-all.html                       |    10 +-
 .../hbase/classification/package-tree.html      |     8 +-
 .../hadoop/hbase/client/package-tree.html       |     4 +-
 .../hadoop/hbase/executor/package-tree.html     |     2 +-
 .../hadoop/hbase/filter/package-tree.html       |    10 +-
 .../hadoop/hbase/io/hfile/ChecksumUtil.html     |    26 +-
 .../hbase/io/hfile/HFileBlock.FSReaderImpl.html |    59 +-
 .../hadoop/hbase/io/hfile/HFileBlock.html       |    38 +-
 .../hbase/io/hfile/class-use/HFileBlock.html    |     2 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |     6 +-
 .../hadoop/hbase/mapreduce/package-tree.html    |     4 +-
 .../hbase/master/balancer/package-tree.html     |     2 +-
 .../hadoop/hbase/master/package-tree.html       |     2 +-
 .../hbase/master/procedure/package-tree.html    |     4 +-
 .../org/apache/hadoop/hbase/package-tree.html   |     8 +-
 .../hadoop/hbase/quotas/package-tree.html       |     6 +-
 .../hadoop/hbase/regionserver/package-tree.html |    22 +-
 .../hbase/security/access/package-tree.html     |     2 +-
 .../hadoop/hbase/security/package-tree.html     |     2 +-
 .../tmpl/master/MasterStatusTmpl.ImplData.html  |   270 +-
 .../hbase/tmpl/master/MasterStatusTmpl.html     |   108 +-
 .../hbase/tmpl/master/MasterStatusTmplImpl.html |    54 +-
 .../regionserver/RSStatusTmpl.ImplData.html     |    60 +-
 .../hbase/tmpl/regionserver/RSStatusTmpl.html   |    24 +-
 .../tmpl/regionserver/RSStatusTmplImpl.html     |    12 +-
 .../apache/hadoop/hbase/util/package-tree.html  |     6 +-
 .../apache/hadoop/hbase/wal/package-tree.html   |     2 +-
 .../hbase/zookeeper/ZooKeeperWatcher.html       |   167 +-
 .../hadoop/hbase/io/hfile/ChecksumUtil.html     |   330 +-
 .../io/hfile/HFileBlock.BlockIterator.html      |  1205 +-
 .../io/hfile/HFileBlock.BlockWritable.html      |  1205 +-
 .../hbase/io/hfile/HFileBlock.FSReader.html     |  1205 +-
 .../hbase/io/hfile/HFileBlock.FSReaderImpl.html |  1205 +-
 .../io/hfile/HFileBlock.PrefetchedHeader.html   |  1205 +-
 .../hbase/io/hfile/HFileBlock.Writer.State.html |  1205 +-
 .../hbase/io/hfile/HFileBlock.Writer.html       |  1205 +-
 .../hadoop/hbase/io/hfile/HFileBlock.html       |  1205 +-
 .../tmpl/master/MasterStatusTmpl.ImplData.html  |   270 +-
 .../tmpl/master/MasterStatusTmpl.Intf.html      |   270 +-
 .../hbase/tmpl/master/MasterStatusTmpl.html     |   270 +-
 .../hbase/tmpl/master/MasterStatusTmplImpl.html |    76 +-
 .../regionserver/RSStatusTmpl.ImplData.html     |    60 +-
 .../tmpl/regionserver/RSStatusTmpl.Intf.html    |    60 +-
 .../hbase/tmpl/regionserver/RSStatusTmpl.html   |    60 +-
 .../tmpl/regionserver/RSStatusTmplImpl.html     |    20 +-
 .../hbase/zookeeper/ZooKeeperWatcher.html       |  1446 +-
 distribution-management.html                    |     4 +-
 export_control.html                             |     4 +-
 hbase-annotations/checkstyle.html               |     6 +-
 hbase-annotations/dependencies.html             |     6 +-
 hbase-annotations/dependency-convergence.html   |     6 +-
 hbase-annotations/dependency-info.html          |     6 +-
 hbase-annotations/dependency-management.html    |     6 +-
 hbase-annotations/distribution-management.html  |     6 +-
 hbase-annotations/index.html                    |     6 +-
 hbase-annotations/integration.html              |     6 +-
 hbase-annotations/issue-tracking.html           |     6 +-
 hbase-annotations/license.html                  |     6 +-
 hbase-annotations/mail-lists.html               |     6 +-
 hbase-annotations/plugin-management.html        |     6 +-
 hbase-annotations/plugins.html                  |     6 +-
 hbase-annotations/project-info.html             |     6 +-
 hbase-annotations/project-reports.html          |     6 +-
 hbase-annotations/project-summary.html          |     6 +-
 hbase-annotations/source-repository.html        |     6 +-
 hbase-annotations/team-list.html                |     6 +-
 hbase-spark/checkstyle.html                     |     6 +-
 hbase-spark/dependencies.html                   |     6 +-
 hbase-spark/dependency-convergence.html         |     6 +-
 hbase-spark/dependency-info.html                |     6 +-
 hbase-spark/dependency-management.html          |     6 +-
 hbase-spark/distribution-management.html        |     6 +-
 hbase-spark/index.html                          |     6 +-
 hbase-spark/integration.html                    |     6 +-
 hbase-spark/issue-tracking.html                 |     6 +-
 hbase-spark/license.html                        |     6 +-
 hbase-spark/mail-lists.html                     |     6 +-
 hbase-spark/plugin-management.html              |     6 +-
 hbase-spark/plugins.html                        |     6 +-
 hbase-spark/project-info.html                   |     6 +-
 hbase-spark/project-reports.html                |     6 +-
 hbase-spark/project-summary.html                |     6 +-
 hbase-spark/source-repository.html              |     6 +-
 hbase-spark/team-list.html                      |     6 +-
 index.html                                      |     4 +-
 integration.html                                |     4 +-
 issue-tracking.html                             |     4 +-
 license.html                                    |     4 +-
 mail-lists.html                                 |     4 +-
 metrics.html                                    |     4 +-
 modules.html                                    |     4 +-
 old_news.html                                   |     4 +-
 plugin-management.html                          |     4 +-
 plugins.html                                    |     4 +-
 poweredbyhbase.html                             |     4 +-
 project-info.html                               |     4 +-
 project-reports.html                            |     4 +-
 project-summary.html                            |     4 +-
 pseudo-distributed.html                         |     4 +-
 replication.html                                |     4 +-
 resources.html                                  |     4 +-
 source-repository.html                          |     4 +-
 sponsors.html                                   |     4 +-
 supportingprojects.html                         |     4 +-
 team-list.html                                  |     4 +-
 .../io/hfile/TestChecksum.FSReaderImplTest.html |    24 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |     2 +-
 .../org/apache/hadoop/hbase/package-tree.html   |    12 +-
 .../hadoop/hbase/procedure2/package-tree.html   |     2 +-
 .../hadoop/hbase/regionserver/package-tree.html |     2 +-
 .../apache/hadoop/hbase/test/package-tree.html  |     2 +-
 .../hadoop/hbase/io/hfile/ChecksumUtil.html     |   330 +-
 .../hadoop/hbase/io/hfile/HFileBlock.html       |  1205 +-
 .../hbase/tmpl/common/TaskMonitorTmpl.html      |    60 +-
 .../hbase/tmpl/common/TaskMonitorTmplImpl.html  |    16 +-
 .../hbase/tmpl/master/MasterStatusTmpl.html     |   270 +-
 .../hbase/tmpl/master/MasterStatusTmplImpl.html |    76 +-
 .../hbase/tmpl/regionserver/RSStatusTmpl.html   |    60 +-
 .../tmpl/regionserver/RSStatusTmplImpl.html     |    20 +-
 .../hbase/zookeeper/ZooKeeperWatcher.html       |  1446 +-
 133 files changed, 19170 insertions(+), 19065 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/acid-semantics.html
----------------------------------------------------------------------
diff --git a/acid-semantics.html b/acid-semantics.html
index f259420..390d720 100644
--- a/acid-semantics.html
+++ b/acid-semantics.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20160203" />
+    <meta name="Date-Revision-yyyymmdd" content="20160204" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) ACID Properties
@@ -600,7 +600,7 @@ under the License. -->
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-04</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/apache_hbase_reference_guide.pdf
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index 194efe8..84a6f3e 100644
--- a/apache_hbase_reference_guide.pdf
+++ b/apache_hbase_reference_guide.pdf
@@ -5,8 +5,8 @@
 /Author (Apache HBase Team)
 /Creator (Asciidoctor PDF 1.5.0.alpha.6, based on Prawn 1.2.1)
 /Producer (Apache HBase Team)
-/CreationDate (D:20160203151627+00'00')
-/ModDate (D:20160203151627+00'00')
+/CreationDate (D:20160204152347+00'00')
+/ModDate (D:20160204152347+00'00')
 >>
 endobj
 2 0 obj

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/apache_hbase_reference_guide.pdfmarks
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdfmarks b/apache_hbase_reference_guide.pdfmarks
index fb7466d..ee18431 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:20160203151818)
-  /CreationDate (D:20160203151818)
+  /ModDate (D:20160204152540)
+  /CreationDate (D:20160204152540)
   /Creator (Asciidoctor PDF 1.5.0.alpha.6, based on Prawn 1.2.1)
   /Producer ()
   /DOCINFO pdfmark

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/book.html
----------------------------------------------------------------------
diff --git a/book.html b/book.html
index 67b3be5..466f4c4 100644
--- a/book.html
+++ b/book.html
@@ -33059,7 +33059,7 @@ The server will return cellblocks compressed using this same compressor as long
 <div id="footer">
 <div id="footer-text">
 Version 2.0.0-SNAPSHOT<br>
-Last updated 2016-02-03 14:50:15 UTC
+Last updated 2016-02-04 14:53:26 UTC
 </div>
 </div>
 </body>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/bulk-loads.html
----------------------------------------------------------------------
diff --git a/bulk-loads.html b/bulk-loads.html
index c4df056..e73273d 100644
--- a/bulk-loads.html
+++ b/bulk-loads.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20160203" />
+    <meta name="Date-Revision-yyyymmdd" content="20160204" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Bulk Loads in Apache HBase (TM)
@@ -305,7 +305,7 @@ under the License. -->
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-04</li>
             </p>
                 </div>
 


[12/23] hbase-site git commit: Published site at 2cf8af5bf1d501156cbb3b421cf75c1051ead7d9.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.Writer.State.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.Writer.State.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.Writer.State.html
index 745e703..1587e5e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.Writer.State.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.Writer.State.html
@@ -1361,609 +1361,610 @@
 <span class="sourceLineNo">1353</span>    /** The filesystem used to access data */<a name="line.1353"></a>
 <span class="sourceLineNo">1354</span>    protected HFileSystem hfs;<a name="line.1354"></a>
 <span class="sourceLineNo">1355</span><a name="line.1355"></a>
-<span class="sourceLineNo">1356</span>    /** The path (if any) where this data is coming from */<a name="line.1356"></a>
-<span class="sourceLineNo">1357</span>    protected Path path;<a name="line.1357"></a>
-<span class="sourceLineNo">1358</span><a name="line.1358"></a>
-<span class="sourceLineNo">1359</span>    private final Lock streamLock = new ReentrantLock();<a name="line.1359"></a>
+<span class="sourceLineNo">1356</span>    private final Lock streamLock = new ReentrantLock();<a name="line.1356"></a>
+<span class="sourceLineNo">1357</span><a name="line.1357"></a>
+<span class="sourceLineNo">1358</span>    /** The default buffer size for our buffered streams */<a name="line.1358"></a>
+<span class="sourceLineNo">1359</span>    public static final int DEFAULT_BUFFER_SIZE = 1 &lt;&lt; 20;<a name="line.1359"></a>
 <span class="sourceLineNo">1360</span><a name="line.1360"></a>
-<span class="sourceLineNo">1361</span>    /** The default buffer size for our buffered streams */<a name="line.1361"></a>
-<span class="sourceLineNo">1362</span>    public static final int DEFAULT_BUFFER_SIZE = 1 &lt;&lt; 20;<a name="line.1362"></a>
-<span class="sourceLineNo">1363</span><a name="line.1363"></a>
-<span class="sourceLineNo">1364</span>    protected HFileContext fileContext;<a name="line.1364"></a>
-<span class="sourceLineNo">1365</span><a name="line.1365"></a>
-<span class="sourceLineNo">1366</span>    public FSReaderImpl(FSDataInputStreamWrapper stream, long fileSize, HFileSystem hfs, Path path,<a name="line.1366"></a>
-<span class="sourceLineNo">1367</span>        HFileContext fileContext) throws IOException {<a name="line.1367"></a>
-<span class="sourceLineNo">1368</span>      this.fileSize = fileSize;<a name="line.1368"></a>
-<span class="sourceLineNo">1369</span>      this.hfs = hfs;<a name="line.1369"></a>
-<span class="sourceLineNo">1370</span>      this.path = path;<a name="line.1370"></a>
-<span class="sourceLineNo">1371</span>      this.fileContext = fileContext;<a name="line.1371"></a>
-<span class="sourceLineNo">1372</span>      this.hdrSize = headerSize(fileContext.isUseHBaseChecksum());<a name="line.1372"></a>
-<span class="sourceLineNo">1373</span><a name="line.1373"></a>
-<span class="sourceLineNo">1374</span>      this.streamWrapper = stream;<a name="line.1374"></a>
-<span class="sourceLineNo">1375</span>      // Older versions of HBase didn't support checksum.<a name="line.1375"></a>
-<span class="sourceLineNo">1376</span>      this.streamWrapper.prepareForBlockReader(!fileContext.isUseHBaseChecksum());<a name="line.1376"></a>
-<span class="sourceLineNo">1377</span>      defaultDecodingCtx = new HFileBlockDefaultDecodingContext(fileContext);<a name="line.1377"></a>
-<span class="sourceLineNo">1378</span>      encodedBlockDecodingCtx = defaultDecodingCtx;<a name="line.1378"></a>
-<span class="sourceLineNo">1379</span>    }<a name="line.1379"></a>
-<span class="sourceLineNo">1380</span><a name="line.1380"></a>
-<span class="sourceLineNo">1381</span>    /**<a name="line.1381"></a>
-<span class="sourceLineNo">1382</span>     * A constructor that reads files with the latest minor version.<a name="line.1382"></a>
-<span class="sourceLineNo">1383</span>     * This is used by unit tests only.<a name="line.1383"></a>
-<span class="sourceLineNo">1384</span>     */<a name="line.1384"></a>
-<span class="sourceLineNo">1385</span>    FSReaderImpl(FSDataInputStream istream, long fileSize, HFileContext fileContext)<a name="line.1385"></a>
-<span class="sourceLineNo">1386</span>    throws IOException {<a name="line.1386"></a>
-<span class="sourceLineNo">1387</span>      this(new FSDataInputStreamWrapper(istream), fileSize, null, null, fileContext);<a name="line.1387"></a>
-<span class="sourceLineNo">1388</span>    }<a name="line.1388"></a>
-<span class="sourceLineNo">1389</span><a name="line.1389"></a>
-<span class="sourceLineNo">1390</span>    public BlockIterator blockRange(final long startOffset, final long endOffset) {<a name="line.1390"></a>
-<span class="sourceLineNo">1391</span>      final FSReader owner = this; // handle for inner class<a name="line.1391"></a>
-<span class="sourceLineNo">1392</span>      return new BlockIterator() {<a name="line.1392"></a>
-<span class="sourceLineNo">1393</span>        private long offset = startOffset;<a name="line.1393"></a>
-<span class="sourceLineNo">1394</span><a name="line.1394"></a>
-<span class="sourceLineNo">1395</span>        @Override<a name="line.1395"></a>
-<span class="sourceLineNo">1396</span>        public HFileBlock nextBlock() throws IOException {<a name="line.1396"></a>
-<span class="sourceLineNo">1397</span>          if (offset &gt;= endOffset)<a name="line.1397"></a>
-<span class="sourceLineNo">1398</span>            return null;<a name="line.1398"></a>
-<span class="sourceLineNo">1399</span>          HFileBlock b = readBlockData(offset, -1, -1, false);<a name="line.1399"></a>
-<span class="sourceLineNo">1400</span>          offset += b.getOnDiskSizeWithHeader();<a name="line.1400"></a>
-<span class="sourceLineNo">1401</span>          return b.unpack(fileContext, owner);<a name="line.1401"></a>
-<span class="sourceLineNo">1402</span>        }<a name="line.1402"></a>
-<span class="sourceLineNo">1403</span><a name="line.1403"></a>
-<span class="sourceLineNo">1404</span>        @Override<a name="line.1404"></a>
-<span class="sourceLineNo">1405</span>        public HFileBlock nextBlockWithBlockType(BlockType blockType)<a name="line.1405"></a>
-<span class="sourceLineNo">1406</span>            throws IOException {<a name="line.1406"></a>
-<span class="sourceLineNo">1407</span>          HFileBlock blk = nextBlock();<a name="line.1407"></a>
-<span class="sourceLineNo">1408</span>          if (blk.getBlockType() != blockType) {<a name="line.1408"></a>
-<span class="sourceLineNo">1409</span>            throw new IOException("Expected block of type " + blockType<a name="line.1409"></a>
-<span class="sourceLineNo">1410</span>                + " but found " + blk.getBlockType());<a name="line.1410"></a>
-<span class="sourceLineNo">1411</span>          }<a name="line.1411"></a>
-<span class="sourceLineNo">1412</span>          return blk;<a name="line.1412"></a>
-<span class="sourceLineNo">1413</span>        }<a name="line.1413"></a>
-<span class="sourceLineNo">1414</span>      };<a name="line.1414"></a>
-<span class="sourceLineNo">1415</span>    }<a name="line.1415"></a>
-<span class="sourceLineNo">1416</span><a name="line.1416"></a>
-<span class="sourceLineNo">1417</span>    /**<a name="line.1417"></a>
-<span class="sourceLineNo">1418</span>     * Does a positional read or a seek and read into the given buffer. Returns<a name="line.1418"></a>
-<span class="sourceLineNo">1419</span>     * the on-disk size of the next block, or -1 if it could not be determined.<a name="line.1419"></a>
-<span class="sourceLineNo">1420</span>     *<a name="line.1420"></a>
-<span class="sourceLineNo">1421</span>     * @param dest destination buffer<a name="line.1421"></a>
-<span class="sourceLineNo">1422</span>     * @param destOffset offset in the destination buffer<a name="line.1422"></a>
-<span class="sourceLineNo">1423</span>     * @param size size of the block to be read<a name="line.1423"></a>
-<span class="sourceLineNo">1424</span>     * @param peekIntoNextBlock whether to read the next block's on-disk size<a name="line.1424"></a>
-<span class="sourceLineNo">1425</span>     * @param fileOffset position in the stream to read at<a name="line.1425"></a>
-<span class="sourceLineNo">1426</span>     * @param pread whether we should do a positional read<a name="line.1426"></a>
-<span class="sourceLineNo">1427</span>     * @param istream The input source of data<a name="line.1427"></a>
-<span class="sourceLineNo">1428</span>     * @return the on-disk size of the next block with header size included, or<a name="line.1428"></a>
-<span class="sourceLineNo">1429</span>     *         -1 if it could not be determined<a name="line.1429"></a>
-<span class="sourceLineNo">1430</span>     * @throws IOException<a name="line.1430"></a>
-<span class="sourceLineNo">1431</span>     */<a name="line.1431"></a>
-<span class="sourceLineNo">1432</span>    protected int readAtOffset(FSDataInputStream istream,<a name="line.1432"></a>
-<span class="sourceLineNo">1433</span>        byte[] dest, int destOffset, int size,<a name="line.1433"></a>
-<span class="sourceLineNo">1434</span>        boolean peekIntoNextBlock, long fileOffset, boolean pread)<a name="line.1434"></a>
-<span class="sourceLineNo">1435</span>        throws IOException {<a name="line.1435"></a>
-<span class="sourceLineNo">1436</span>      if (peekIntoNextBlock &amp;&amp;<a name="line.1436"></a>
-<span class="sourceLineNo">1437</span>          destOffset + size + hdrSize &gt; dest.length) {<a name="line.1437"></a>
-<span class="sourceLineNo">1438</span>        // We are asked to read the next block's header as well, but there is<a name="line.1438"></a>
-<span class="sourceLineNo">1439</span>        // not enough room in the array.<a name="line.1439"></a>
-<span class="sourceLineNo">1440</span>        throw new IOException("Attempted to read " + size + " bytes and " +<a name="line.1440"></a>
-<span class="sourceLineNo">1441</span>            hdrSize + " bytes of next header into a " + dest.length +<a name="line.1441"></a>
-<span class="sourceLineNo">1442</span>            "-byte array at offset " + destOffset);<a name="line.1442"></a>
-<span class="sourceLineNo">1443</span>      }<a name="line.1443"></a>
-<span class="sourceLineNo">1444</span><a name="line.1444"></a>
-<span class="sourceLineNo">1445</span>      if (!pread &amp;&amp; streamLock.tryLock()) {<a name="line.1445"></a>
-<span class="sourceLineNo">1446</span>        // Seek + read. Better for scanning.<a name="line.1446"></a>
-<span class="sourceLineNo">1447</span>        try {<a name="line.1447"></a>
-<span class="sourceLineNo">1448</span>          istream.seek(fileOffset);<a name="line.1448"></a>
-<span class="sourceLineNo">1449</span><a name="line.1449"></a>
-<span class="sourceLineNo">1450</span>          long realOffset = istream.getPos();<a name="line.1450"></a>
-<span class="sourceLineNo">1451</span>          if (realOffset != fileOffset) {<a name="line.1451"></a>
-<span class="sourceLineNo">1452</span>            throw new IOException("Tried to seek to " + fileOffset + " to "<a name="line.1452"></a>
-<span class="sourceLineNo">1453</span>                + "read " + size + " bytes, but pos=" + realOffset<a name="line.1453"></a>
-<span class="sourceLineNo">1454</span>                + " after seek");<a name="line.1454"></a>
-<span class="sourceLineNo">1455</span>          }<a name="line.1455"></a>
-<span class="sourceLineNo">1456</span><a name="line.1456"></a>
-<span class="sourceLineNo">1457</span>          if (!peekIntoNextBlock) {<a name="line.1457"></a>
-<span class="sourceLineNo">1458</span>            IOUtils.readFully(istream, dest, destOffset, size);<a name="line.1458"></a>
-<span class="sourceLineNo">1459</span>            return -1;<a name="line.1459"></a>
-<span class="sourceLineNo">1460</span>          }<a name="line.1460"></a>
-<span class="sourceLineNo">1461</span><a name="line.1461"></a>
-<span class="sourceLineNo">1462</span>          // Try to read the next block header.<a name="line.1462"></a>
-<span class="sourceLineNo">1463</span>          if (!readWithExtra(istream, dest, destOffset, size, hdrSize))<a name="line.1463"></a>
-<span class="sourceLineNo">1464</span>            return -1;<a name="line.1464"></a>
-<span class="sourceLineNo">1465</span>        } finally {<a name="line.1465"></a>
-<span class="sourceLineNo">1466</span>          streamLock.unlock();<a name="line.1466"></a>
-<span class="sourceLineNo">1467</span>        }<a name="line.1467"></a>
-<span class="sourceLineNo">1468</span>      } else {<a name="line.1468"></a>
-<span class="sourceLineNo">1469</span>        // Positional read. Better for random reads; or when the streamLock is already locked.<a name="line.1469"></a>
-<span class="sourceLineNo">1470</span>        int extraSize = peekIntoNextBlock ? hdrSize : 0;<a name="line.1470"></a>
-<span class="sourceLineNo">1471</span>        if (!positionalReadWithExtra(istream, fileOffset, dest, destOffset,<a name="line.1471"></a>
-<span class="sourceLineNo">1472</span>            size, extraSize)) {<a name="line.1472"></a>
-<span class="sourceLineNo">1473</span>          return -1;<a name="line.1473"></a>
-<span class="sourceLineNo">1474</span>        }<a name="line.1474"></a>
-<span class="sourceLineNo">1475</span>      }<a name="line.1475"></a>
-<span class="sourceLineNo">1476</span><a name="line.1476"></a>
-<span class="sourceLineNo">1477</span>      assert peekIntoNextBlock;<a name="line.1477"></a>
-<span class="sourceLineNo">1478</span>      return Bytes.toInt(dest, destOffset + size + BlockType.MAGIC_LENGTH) + hdrSize;<a name="line.1478"></a>
-<span class="sourceLineNo">1479</span>    }<a name="line.1479"></a>
-<span class="sourceLineNo">1480</span><a name="line.1480"></a>
-<span class="sourceLineNo">1481</span>    /**<a name="line.1481"></a>
-<span class="sourceLineNo">1482</span>     * Reads a version 2 block (version 1 blocks not supported and not expected). Tries to do as<a name="line.1482"></a>
-<span class="sourceLineNo">1483</span>     * little memory allocation as possible, using the provided on-disk size.<a name="line.1483"></a>
-<span class="sourceLineNo">1484</span>     *<a name="line.1484"></a>
-<span class="sourceLineNo">1485</span>     * @param offset the offset in the stream to read at<a name="line.1485"></a>
-<span class="sourceLineNo">1486</span>     * @param onDiskSizeWithHeaderL the on-disk size of the block, including<a name="line.1486"></a>
-<span class="sourceLineNo">1487</span>     *          the header, or -1 if unknown<a name="line.1487"></a>
-<span class="sourceLineNo">1488</span>     * @param uncompressedSize the uncompressed size of the the block. Always<a name="line.1488"></a>
-<span class="sourceLineNo">1489</span>     *          expected to be -1. This parameter is only used in version 1.<a name="line.1489"></a>
-<span class="sourceLineNo">1490</span>     * @param pread whether to use a positional read<a name="line.1490"></a>
-<span class="sourceLineNo">1491</span>     */<a name="line.1491"></a>
-<span class="sourceLineNo">1492</span>    @Override<a name="line.1492"></a>
-<span class="sourceLineNo">1493</span>    public HFileBlock readBlockData(long offset, long onDiskSizeWithHeaderL,<a name="line.1493"></a>
-<span class="sourceLineNo">1494</span>        int uncompressedSize, boolean pread)<a name="line.1494"></a>
-<span class="sourceLineNo">1495</span>    throws IOException {<a name="line.1495"></a>
-<span class="sourceLineNo">1496</span><a name="line.1496"></a>
-<span class="sourceLineNo">1497</span>      // get a copy of the current state of whether to validate<a name="line.1497"></a>
-<span class="sourceLineNo">1498</span>      // hbase checksums or not for this read call. This is not<a name="line.1498"></a>
-<span class="sourceLineNo">1499</span>      // thread-safe but the one constaint is that if we decide<a name="line.1499"></a>
-<span class="sourceLineNo">1500</span>      // to skip hbase checksum verification then we are<a name="line.1500"></a>
-<span class="sourceLineNo">1501</span>      // guaranteed to use hdfs checksum verification.<a name="line.1501"></a>
-<span class="sourceLineNo">1502</span>      boolean doVerificationThruHBaseChecksum = streamWrapper.shouldUseHBaseChecksum();<a name="line.1502"></a>
-<span class="sourceLineNo">1503</span>      FSDataInputStream is = streamWrapper.getStream(doVerificationThruHBaseChecksum);<a name="line.1503"></a>
-<span class="sourceLineNo">1504</span><a name="line.1504"></a>
-<span class="sourceLineNo">1505</span>      HFileBlock blk = readBlockDataInternal(is, offset,<a name="line.1505"></a>
-<span class="sourceLineNo">1506</span>                         onDiskSizeWithHeaderL,<a name="line.1506"></a>
-<span class="sourceLineNo">1507</span>                         uncompressedSize, pread,<a name="line.1507"></a>
-<span class="sourceLineNo">1508</span>                         doVerificationThruHBaseChecksum);<a name="line.1508"></a>
-<span class="sourceLineNo">1509</span>      if (blk == null) {<a name="line.1509"></a>
-<span class="sourceLineNo">1510</span>        HFile.LOG.warn("HBase checksum verification failed for file " +<a name="line.1510"></a>
-<span class="sourceLineNo">1511</span>                       path + " at offset " +<a name="line.1511"></a>
-<span class="sourceLineNo">1512</span>                       offset + " filesize " + fileSize +<a name="line.1512"></a>
-<span class="sourceLineNo">1513</span>                       ". Retrying read with HDFS checksums turned on...");<a name="line.1513"></a>
-<span class="sourceLineNo">1514</span><a name="line.1514"></a>
-<span class="sourceLineNo">1515</span>        if (!doVerificationThruHBaseChecksum) {<a name="line.1515"></a>
-<span class="sourceLineNo">1516</span>          String msg = "HBase checksum verification failed for file " +<a name="line.1516"></a>
-<span class="sourceLineNo">1517</span>                       path + " at offset " +<a name="line.1517"></a>
-<span class="sourceLineNo">1518</span>                       offset + " filesize " + fileSize +<a name="line.1518"></a>
-<span class="sourceLineNo">1519</span>                       " but this cannot happen because doVerify is " +<a name="line.1519"></a>
-<span class="sourceLineNo">1520</span>                       doVerificationThruHBaseChecksum;<a name="line.1520"></a>
-<span class="sourceLineNo">1521</span>          HFile.LOG.warn(msg);<a name="line.1521"></a>
-<span class="sourceLineNo">1522</span>          throw new IOException(msg); // cannot happen case here<a name="line.1522"></a>
-<span class="sourceLineNo">1523</span>        }<a name="line.1523"></a>
-<span class="sourceLineNo">1524</span>        HFile.checksumFailures.incrementAndGet(); // update metrics<a name="line.1524"></a>
-<span class="sourceLineNo">1525</span><a name="line.1525"></a>
-<span class="sourceLineNo">1526</span>        // If we have a checksum failure, we fall back into a mode where<a name="line.1526"></a>
-<span class="sourceLineNo">1527</span>        // the next few reads use HDFS level checksums. We aim to make the<a name="line.1527"></a>
-<span class="sourceLineNo">1528</span>        // next CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD reads avoid<a name="line.1528"></a>
-<span class="sourceLineNo">1529</span>        // hbase checksum verification, but since this value is set without<a name="line.1529"></a>
-<span class="sourceLineNo">1530</span>        // holding any locks, it can so happen that we might actually do<a name="line.1530"></a>
-<span class="sourceLineNo">1531</span>        // a few more than precisely this number.<a name="line.1531"></a>
-<span class="sourceLineNo">1532</span>        is = this.streamWrapper.fallbackToFsChecksum(CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD);<a name="line.1532"></a>
-<span class="sourceLineNo">1533</span>        doVerificationThruHBaseChecksum = false;<a name="line.1533"></a>
-<span class="sourceLineNo">1534</span>        blk = readBlockDataInternal(is, offset, onDiskSizeWithHeaderL,<a name="line.1534"></a>
-<span class="sourceLineNo">1535</span>                                    uncompressedSize, pread,<a name="line.1535"></a>
-<span class="sourceLineNo">1536</span>                                    doVerificationThruHBaseChecksum);<a name="line.1536"></a>
-<span class="sourceLineNo">1537</span>        if (blk != null) {<a name="line.1537"></a>
-<span class="sourceLineNo">1538</span>          HFile.LOG.warn("HDFS checksum verification suceeded for file " +<a name="line.1538"></a>
-<span class="sourceLineNo">1539</span>                         path + " at offset " +<a name="line.1539"></a>
-<span class="sourceLineNo">1540</span>                         offset + " filesize " + fileSize);<a name="line.1540"></a>
-<span class="sourceLineNo">1541</span>        }<a name="line.1541"></a>
-<span class="sourceLineNo">1542</span>      }<a name="line.1542"></a>
-<span class="sourceLineNo">1543</span>      if (blk == null &amp;&amp; !doVerificationThruHBaseChecksum) {<a name="line.1543"></a>
-<span class="sourceLineNo">1544</span>        String msg = "readBlockData failed, possibly due to " +<a name="line.1544"></a>
-<span class="sourceLineNo">1545</span>                     "checksum verification failed for file " + path +<a name="line.1545"></a>
-<span class="sourceLineNo">1546</span>                     " at offset " + offset + " filesize " + fileSize;<a name="line.1546"></a>
-<span class="sourceLineNo">1547</span>        HFile.LOG.warn(msg);<a name="line.1547"></a>
-<span class="sourceLineNo">1548</span>        throw new IOException(msg);<a name="line.1548"></a>
-<span class="sourceLineNo">1549</span>      }<a name="line.1549"></a>
-<span class="sourceLineNo">1550</span><a name="line.1550"></a>
-<span class="sourceLineNo">1551</span>      // If there is a checksum mismatch earlier, then retry with<a name="line.1551"></a>
-<span class="sourceLineNo">1552</span>      // HBase checksums switched off and use HDFS checksum verification.<a name="line.1552"></a>
-<span class="sourceLineNo">1553</span>      // This triggers HDFS to detect and fix corrupt replicas. The<a name="line.1553"></a>
-<span class="sourceLineNo">1554</span>      // next checksumOffCount read requests will use HDFS checksums.<a name="line.1554"></a>
-<span class="sourceLineNo">1555</span>      // The decrementing of this.checksumOffCount is not thread-safe,<a name="line.1555"></a>
-<span class="sourceLineNo">1556</span>      // but it is harmless because eventually checksumOffCount will be<a name="line.1556"></a>
-<span class="sourceLineNo">1557</span>      // a negative number.<a name="line.1557"></a>
-<span class="sourceLineNo">1558</span>      streamWrapper.checksumOk();<a name="line.1558"></a>
-<span class="sourceLineNo">1559</span>      return blk;<a name="line.1559"></a>
-<span class="sourceLineNo">1560</span>    }<a name="line.1560"></a>
-<span class="sourceLineNo">1561</span><a name="line.1561"></a>
-<span class="sourceLineNo">1562</span>    /**<a name="line.1562"></a>
-<span class="sourceLineNo">1563</span>     * Reads a version 2 block.<a name="line.1563"></a>
-<span class="sourceLineNo">1564</span>     *<a name="line.1564"></a>
-<span class="sourceLineNo">1565</span>     * @param offset the offset in the stream to read at<a name="line.1565"></a>
-<span class="sourceLineNo">1566</span>     * @param onDiskSizeWithHeaderL the on-disk size of the block, including<a name="line.1566"></a>
-<span class="sourceLineNo">1567</span>     *          the header, or -1 if unknown<a name="line.1567"></a>
-<span class="sourceLineNo">1568</span>     * @param uncompressedSize the uncompressed size of the the block. Always<a name="line.1568"></a>
-<span class="sourceLineNo">1569</span>     *          expected to be -1. This parameter is only used in version 1.<a name="line.1569"></a>
-<span class="sourceLineNo">1570</span>     * @param pread whether to use a positional read<a name="line.1570"></a>
-<span class="sourceLineNo">1571</span>     * @param verifyChecksum Whether to use HBase checksums.<a name="line.1571"></a>
-<span class="sourceLineNo">1572</span>     *        If HBase checksum is switched off, then use HDFS checksum.<a name="line.1572"></a>
-<span class="sourceLineNo">1573</span>     * @return the HFileBlock or null if there is a HBase checksum mismatch<a name="line.1573"></a>
-<span class="sourceLineNo">1574</span>     */<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span>    private HFileBlock readBlockDataInternal(FSDataInputStream is, long offset,<a name="line.1575"></a>
-<span class="sourceLineNo">1576</span>        long onDiskSizeWithHeaderL, int uncompressedSize, boolean pread,<a name="line.1576"></a>
-<span class="sourceLineNo">1577</span>        boolean verifyChecksum)<a name="line.1577"></a>
-<span class="sourceLineNo">1578</span>    throws IOException {<a name="line.1578"></a>
-<span class="sourceLineNo">1579</span>      if (offset &lt; 0) {<a name="line.1579"></a>
-<span class="sourceLineNo">1580</span>        throw new IOException("Invalid offset=" + offset + " trying to read "<a name="line.1580"></a>
-<span class="sourceLineNo">1581</span>            + "block (onDiskSize=" + onDiskSizeWithHeaderL<a name="line.1581"></a>
-<span class="sourceLineNo">1582</span>            + ", uncompressedSize=" + uncompressedSize + ")");<a name="line.1582"></a>
-<span class="sourceLineNo">1583</span>      }<a name="line.1583"></a>
-<span class="sourceLineNo">1584</span><a name="line.1584"></a>
-<span class="sourceLineNo">1585</span>      if (uncompressedSize != -1) {<a name="line.1585"></a>
-<span class="sourceLineNo">1586</span>        throw new IOException("Version 2 block reader API does not need " +<a name="line.1586"></a>
-<span class="sourceLineNo">1587</span>            "the uncompressed size parameter");<a name="line.1587"></a>
-<span class="sourceLineNo">1588</span>      }<a name="line.1588"></a>
-<span class="sourceLineNo">1589</span><a name="line.1589"></a>
-<span class="sourceLineNo">1590</span>      if ((onDiskSizeWithHeaderL &lt; hdrSize &amp;&amp; onDiskSizeWithHeaderL != -1)<a name="line.1590"></a>
-<span class="sourceLineNo">1591</span>          || onDiskSizeWithHeaderL &gt;= Integer.MAX_VALUE) {<a name="line.1591"></a>
-<span class="sourceLineNo">1592</span>        throw new IOException("Invalid onDisksize=" + onDiskSizeWithHeaderL<a name="line.1592"></a>
-<span class="sourceLineNo">1593</span>            + ": expected to be at least " + hdrSize<a name="line.1593"></a>
-<span class="sourceLineNo">1594</span>            + " and at most " + Integer.MAX_VALUE + ", or -1 (offset="<a name="line.1594"></a>
-<span class="sourceLineNo">1595</span>            + offset + ", uncompressedSize=" + uncompressedSize + ")");<a name="line.1595"></a>
-<span class="sourceLineNo">1596</span>      }<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span><a name="line.1597"></a>
-<span class="sourceLineNo">1598</span>      int onDiskSizeWithHeader = (int) onDiskSizeWithHeaderL;<a name="line.1598"></a>
-<span class="sourceLineNo">1599</span>      // See if we can avoid reading the header. This is desirable, because<a name="line.1599"></a>
-<span class="sourceLineNo">1600</span>      // we will not incur a backward seek operation if we have already<a name="line.1600"></a>
-<span class="sourceLineNo">1601</span>      // read this block's header as part of the previous read's look-ahead.<a name="line.1601"></a>
-<span class="sourceLineNo">1602</span>      // And we also want to skip reading the header again if it has already<a name="line.1602"></a>
-<span class="sourceLineNo">1603</span>      // been read.<a name="line.1603"></a>
-<span class="sourceLineNo">1604</span>      // TODO: How often does this optimization fire? Has to be same thread so the thread local<a name="line.1604"></a>
-<span class="sourceLineNo">1605</span>      // is pertinent and we have to be reading next block as in a big scan.<a name="line.1605"></a>
-<span class="sourceLineNo">1606</span>      PrefetchedHeader prefetchedHeader = prefetchedHeaderForThread.get();<a name="line.1606"></a>
-<span class="sourceLineNo">1607</span>      ByteBuffer headerBuf = prefetchedHeader.offset == offset? prefetchedHeader.buf: null;<a name="line.1607"></a>
-<span class="sourceLineNo">1608</span><a name="line.1608"></a>
-<span class="sourceLineNo">1609</span>      // Allocate enough space to fit the next block's header too.<a name="line.1609"></a>
-<span class="sourceLineNo">1610</span>      int nextBlockOnDiskSize = 0;<a name="line.1610"></a>
-<span class="sourceLineNo">1611</span>      byte[] onDiskBlock = null;<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span><a name="line.1612"></a>
-<span class="sourceLineNo">1613</span>      HFileBlock b = null;<a name="line.1613"></a>
-<span class="sourceLineNo">1614</span>      if (onDiskSizeWithHeader &gt; 0) {<a name="line.1614"></a>
-<span class="sourceLineNo">1615</span>        // We know the total on-disk size. Read the entire block into memory,<a name="line.1615"></a>
-<span class="sourceLineNo">1616</span>        // then parse the header. This code path is used when<a name="line.1616"></a>
-<span class="sourceLineNo">1617</span>        // doing a random read operation relying on the block index, as well as<a name="line.1617"></a>
-<span class="sourceLineNo">1618</span>        // when the client knows the on-disk size from peeking into the next<a name="line.1618"></a>
-<span class="sourceLineNo">1619</span>        // block's header (e.g. this block's header) when reading the previous<a name="line.1619"></a>
-<span class="sourceLineNo">1620</span>        // block. This is the faster and more preferable case.<a name="line.1620"></a>
-<span class="sourceLineNo">1621</span><a name="line.1621"></a>
-<span class="sourceLineNo">1622</span>        // Size that we have to skip in case we have already read the header.<a name="line.1622"></a>
-<span class="sourceLineNo">1623</span>        int preReadHeaderSize = headerBuf == null ? 0 : hdrSize;<a name="line.1623"></a>
-<span class="sourceLineNo">1624</span>        onDiskBlock = new byte[onDiskSizeWithHeader + hdrSize]; // room for this block plus the<a name="line.1624"></a>
-<span class="sourceLineNo">1625</span>                                                                // next block's header<a name="line.1625"></a>
-<span class="sourceLineNo">1626</span>        nextBlockOnDiskSize = readAtOffset(is, onDiskBlock,<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span>            preReadHeaderSize, onDiskSizeWithHeader - preReadHeaderSize,<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span>            true, offset + preReadHeaderSize, pread);<a name="line.1628"></a>
-<span class="sourceLineNo">1629</span>        if (headerBuf != null) {<a name="line.1629"></a>
-<span class="sourceLineNo">1630</span>          // the header has been read when reading the previous block, copy<a name="line.1630"></a>
-<span class="sourceLineNo">1631</span>          // to this block's header<a name="line.1631"></a>
-<span class="sourceLineNo">1632</span>          // headerBuf is HBB<a name="line.1632"></a>
-<span class="sourceLineNo">1633</span>          assert headerBuf.hasArray();<a name="line.1633"></a>
-<span class="sourceLineNo">1634</span>          System.arraycopy(headerBuf.array(),<a name="line.1634"></a>
-<span class="sourceLineNo">1635</span>              headerBuf.arrayOffset(), onDiskBlock, 0, hdrSize);<a name="line.1635"></a>
-<span class="sourceLineNo">1636</span>        } else {<a name="line.1636"></a>
-<span class="sourceLineNo">1637</span>          headerBuf = ByteBuffer.wrap(onDiskBlock, 0, hdrSize);<a name="line.1637"></a>
-<span class="sourceLineNo">1638</span>        }<a name="line.1638"></a>
-<span class="sourceLineNo">1639</span>        // We know the total on-disk size but not the uncompressed size. Parse the header.<a name="line.1639"></a>
-<span class="sourceLineNo">1640</span>        try {<a name="line.1640"></a>
-<span class="sourceLineNo">1641</span>          // TODO: FIX!!! Expensive parse just to get a length<a name="line.1641"></a>
-<span class="sourceLineNo">1642</span>          b = new HFileBlock(headerBuf, fileContext.isUseHBaseChecksum());<a name="line.1642"></a>
-<span class="sourceLineNo">1643</span>        } catch (IOException ex) {<a name="line.1643"></a>
-<span class="sourceLineNo">1644</span>          // Seen in load testing. Provide comprehensive debug info.<a name="line.1644"></a>
-<span class="sourceLineNo">1645</span>          throw new IOException("Failed to read compressed block at "<a name="line.1645"></a>
-<span class="sourceLineNo">1646</span>              + offset<a name="line.1646"></a>
-<span class="sourceLineNo">1647</span>              + ", onDiskSizeWithoutHeader="<a name="line.1647"></a>
-<span class="sourceLineNo">1648</span>              + onDiskSizeWithHeader<a name="line.1648"></a>
-<span class="sourceLineNo">1649</span>              + ", preReadHeaderSize="<a name="line.1649"></a>
-<span class="sourceLineNo">1650</span>              + hdrSize<a name="line.1650"></a>
-<span class="sourceLineNo">1651</span>              + ", header.length="<a name="line.1651"></a>
-<span class="sourceLineNo">1652</span>              + prefetchedHeader.header.length<a name="line.1652"></a>
-<span class="sourceLineNo">1653</span>              + ", header bytes: "<a name="line.1653"></a>
-<span class="sourceLineNo">1654</span>              + Bytes.toStringBinary(prefetchedHeader.header, 0,<a name="line.1654"></a>
-<span class="sourceLineNo">1655</span>                  hdrSize), ex);<a name="line.1655"></a>
-<span class="sourceLineNo">1656</span>        }<a name="line.1656"></a>
-<span class="sourceLineNo">1657</span>        // if the caller specifies a onDiskSizeWithHeader, validate it.<a name="line.1657"></a>
-<span class="sourceLineNo">1658</span>        int onDiskSizeWithoutHeader = onDiskSizeWithHeader - hdrSize;<a name="line.1658"></a>
-<span class="sourceLineNo">1659</span>        assert onDiskSizeWithoutHeader &gt;= 0;<a name="line.1659"></a>
-<span class="sourceLineNo">1660</span>        b.validateOnDiskSizeWithoutHeader(onDiskSizeWithoutHeader);<a name="line.1660"></a>
-<span class="sourceLineNo">1661</span>      } else {<a name="line.1661"></a>
-<span class="sourceLineNo">1662</span>        // Check headerBuf to see if we have read this block's header as part of<a name="line.1662"></a>
-<span class="sourceLineNo">1663</span>        // reading the previous block. This is an optimization of peeking into<a name="line.1663"></a>
-<span class="sourceLineNo">1664</span>        // the next block's header (e.g.this block's header) when reading the<a name="line.1664"></a>
-<span class="sourceLineNo">1665</span>        // previous block. This is the faster and more preferable case. If the<a name="line.1665"></a>
-<span class="sourceLineNo">1666</span>        // header is already there, don't read the header again.<a name="line.1666"></a>
-<span class="sourceLineNo">1667</span><a name="line.1667"></a>
-<span class="sourceLineNo">1668</span>        // Unfortunately, we still have to do a separate read operation to<a name="line.1668"></a>
-<span class="sourceLineNo">1669</span>        // read the header.<a name="line.1669"></a>
-<span class="sourceLineNo">1670</span>        if (headerBuf == null) {<a name="line.1670"></a>
-<span class="sourceLineNo">1671</span>          // From the header, determine the on-disk size of the given hfile<a name="line.1671"></a>
-<span class="sourceLineNo">1672</span>          // block, and read the remaining data, thereby incurring two read<a name="line.1672"></a>
-<span class="sourceLineNo">1673</span>          // operations. This might happen when we are doing the first read<a name="line.1673"></a>
-<span class="sourceLineNo">1674</span>          // in a series of reads or a random read, and we don't have access<a name="line.1674"></a>
-<span class="sourceLineNo">1675</span>          // to the block index. This is costly and should happen very rarely.<a name="line.1675"></a>
-<span class="sourceLineNo">1676</span>          headerBuf = ByteBuffer.allocate(hdrSize);<a name="line.1676"></a>
-<span class="sourceLineNo">1677</span>          // headerBuf is HBB<a name="line.1677"></a>
-<span class="sourceLineNo">1678</span>          readAtOffset(is, headerBuf.array(), headerBuf.arrayOffset(),<a name="line.1678"></a>
-<span class="sourceLineNo">1679</span>              hdrSize, false, offset, pread);<a name="line.1679"></a>
-<span class="sourceLineNo">1680</span>        }<a name="line.1680"></a>
-<span class="sourceLineNo">1681</span>        // TODO: FIX!!! Expensive parse just to get a length<a name="line.1681"></a>
-<span class="sourceLineNo">1682</span>        b = new HFileBlock(headerBuf, fileContext.isUseHBaseChecksum());<a name="line.1682"></a>
-<span class="sourceLineNo">1683</span>        onDiskBlock = new byte[b.getOnDiskSizeWithHeader() + hdrSize];<a name="line.1683"></a>
-<span class="sourceLineNo">1684</span>        // headerBuf is HBB<a name="line.1684"></a>
-<span class="sourceLineNo">1685</span>        System.arraycopy(headerBuf.array(), headerBuf.arrayOffset(), onDiskBlock, 0, hdrSize);<a name="line.1685"></a>
-<span class="sourceLineNo">1686</span>        nextBlockOnDiskSize =<a name="line.1686"></a>
-<span class="sourceLineNo">1687</span>          readAtOffset(is, onDiskBlock, hdrSize, b.getOnDiskSizeWithHeader()<a name="line.1687"></a>
-<span class="sourceLineNo">1688</span>              - hdrSize, true, offset + hdrSize, pread);<a name="line.1688"></a>
-<span class="sourceLineNo">1689</span>        onDiskSizeWithHeader = b.onDiskSizeWithoutHeader + hdrSize;<a name="line.1689"></a>
-<span class="sourceLineNo">1690</span>      }<a name="line.1690"></a>
-<span class="sourceLineNo">1691</span><a name="line.1691"></a>
-<span class="sourceLineNo">1692</span>      if (!fileContext.isCompressedOrEncrypted()) {<a name="line.1692"></a>
-<span class="sourceLineNo">1693</span>        b.assumeUncompressed();<a name="line.1693"></a>
-<span class="sourceLineNo">1694</span>      }<a name="line.1694"></a>
-<span class="sourceLineNo">1695</span><a name="line.1695"></a>
-<span class="sourceLineNo">1696</span>      if (verifyChecksum &amp;&amp; !validateBlockChecksum(b, onDiskBlock, hdrSize)) {<a name="line.1696"></a>
-<span class="sourceLineNo">1697</span>        return null;             // checksum mismatch<a name="line.1697"></a>
-<span class="sourceLineNo">1698</span>      }<a name="line.1698"></a>
-<span class="sourceLineNo">1699</span><a name="line.1699"></a>
-<span class="sourceLineNo">1700</span>      // The onDiskBlock will become the headerAndDataBuffer for this block.<a name="line.1700"></a>
-<span class="sourceLineNo">1701</span>      // If nextBlockOnDiskSizeWithHeader is not zero, the onDiskBlock already<a name="line.1701"></a>
-<span class="sourceLineNo">1702</span>      // contains the header of next block, so no need to set next<a name="line.1702"></a>
-<span class="sourceLineNo">1703</span>      // block's header in it.<a name="line.1703"></a>
-<span class="sourceLineNo">1704</span>      b = new HFileBlock(ByteBuffer.wrap(onDiskBlock, 0, onDiskSizeWithHeader),<a name="line.1704"></a>
-<span class="sourceLineNo">1705</span>        this.fileContext.isUseHBaseChecksum());<a name="line.1705"></a>
-<span class="sourceLineNo">1706</span><a name="line.1706"></a>
-<span class="sourceLineNo">1707</span>      b.nextBlockOnDiskSizeWithHeader = nextBlockOnDiskSize;<a name="line.1707"></a>
-<span class="sourceLineNo">1708</span><a name="line.1708"></a>
-<span class="sourceLineNo">1709</span>      // Set prefetched header<a name="line.1709"></a>
-<span class="sourceLineNo">1710</span>      if (b.hasNextBlockHeader()) {<a name="line.1710"></a>
-<span class="sourceLineNo">1711</span>        prefetchedHeader.offset = offset + b.getOnDiskSizeWithHeader();<a name="line.1711"></a>
-<span class="sourceLineNo">1712</span>        System.arraycopy(onDiskBlock, onDiskSizeWithHeader, prefetchedHeader.header, 0, hdrSize);<a name="line.1712"></a>
-<span class="sourceLineNo">1713</span>      }<a name="line.1713"></a>
-<span class="sourceLineNo">1714</span><a name="line.1714"></a>
-<span class="sourceLineNo">1715</span>      b.offset = offset;<a name="line.1715"></a>
-<span class="sourceLineNo">1716</span>      b.fileContext.setIncludesTags(this.fileContext.isIncludesTags());<a name="line.1716"></a>
-<span class="sourceLineNo">1717</span>      b.fileContext.setIncludesMvcc(this.fileContext.isIncludesMvcc());<a name="line.1717"></a>
-<span class="sourceLineNo">1718</span>      return b;<a name="line.1718"></a>
-<span class="sourceLineNo">1719</span>    }<a name="line.1719"></a>
-<span class="sourceLineNo">1720</span><a name="line.1720"></a>
-<span class="sourceLineNo">1721</span>    public void setIncludesMemstoreTS(boolean includesMemstoreTS) {<a name="line.1721"></a>
-<span class="sourceLineNo">1722</span>      this.fileContext.setIncludesMvcc(includesMemstoreTS);<a name="line.1722"></a>
-<span class="sourceLineNo">1723</span>    }<a name="line.1723"></a>
-<span class="sourceLineNo">1724</span><a name="line.1724"></a>
-<span class="sourceLineNo">1725</span>    public void setDataBlockEncoder(HFileDataBlockEncoder encoder) {<a name="line.1725"></a>
-<span class="sourceLineNo">1726</span>      encodedBlockDecodingCtx = encoder.newDataBlockDecodingContext(this.fileContext);<a name="line.1726"></a>
-<span class="sourceLineNo">1727</span>    }<a name="line.1727"></a>
-<span class="sourceLineNo">1728</span><a name="line.1728"></a>
-<span class="sourceLineNo">1729</span>    @Override<a name="line.1729"></a>
-<span class="sourceLineNo">1730</span>    public HFileBlockDecodingContext getBlockDecodingContext() {<a name="line.1730"></a>
-<span class="sourceLineNo">1731</span>      return this.encodedBlockDecodingCtx;<a name="line.1731"></a>
-<span class="sourceLineNo">1732</span>    }<a name="line.1732"></a>
-<span class="sourceLineNo">1733</span><a name="line.1733"></a>
-<span class="sourceLineNo">1734</span>    @Override<a name="line.1734"></a>
-<span class="sourceLineNo">1735</span>    public HFileBlockDecodingContext getDefaultBlockDecodingContext() {<a name="line.1735"></a>
-<span class="sourceLineNo">1736</span>      return this.defaultDecodingCtx;<a name="line.1736"></a>
-<span class="sourceLineNo">1737</span>    }<a name="line.1737"></a>
-<span class="sourceLineNo">1738</span><a name="line.1738"></a>
-<span class="sourceLineNo">1739</span>    /**<a name="line.1739"></a>
-<span class="sourceLineNo">1740</span>     * Generates the checksum for the header as well as the data and<a name="line.1740"></a>
-<span class="sourceLineNo">1741</span>     * then validates that it matches the value stored in the header.<a name="line.1741"></a>
-<span class="sourceLineNo">1742</span>     * If there is a checksum mismatch, then return false. Otherwise<a name="line.1742"></a>
-<span class="sourceLineNo">1743</span>     * return true.<a name="line.1743"></a>
-<span class="sourceLineNo">1744</span>     */<a name="line.1744"></a>
-<span class="sourceLineNo">1745</span>    protected boolean validateBlockChecksum(HFileBlock block,  byte[] data, int hdrSize)<a name="line.1745"></a>
-<span class="sourceLineNo">1746</span>        throws IOException {<a name="line.1746"></a>
-<span class="sourceLineNo">1747</span>      return ChecksumUtil.validateBlockChecksum(path, block, data, hdrSize);<a name="line.1747"></a>
-<span class="sourceLineNo">1748</span>    }<a name="line.1748"></a>
-<span class="sourceLineNo">1749</span><a name="line.1749"></a>
-<span class="sourceLineNo">1750</span>    @Override<a name="line.1750"></a>
-<span class="sourceLineNo">1751</span>    public void closeStreams() throws IOException {<a name="line.1751"></a>
-<span class="sourceLineNo">1752</span>      streamWrapper.close();<a name="line.1752"></a>
-<span class="sourceLineNo">1753</span>    }<a name="line.1753"></a>
-<span class="sourceLineNo">1754</span><a name="line.1754"></a>
-<span class="sourceLineNo">1755</span>    @Override<a name="line.1755"></a>
-<span class="sourceLineNo">1756</span>    public String toString() {<a name="line.1756"></a>
-<span class="sourceLineNo">1757</span>      return "hfs=" + hfs + ", path=" + path + ", fileContext=" + fileContext;<a name="line.1757"></a>
-<span class="sourceLineNo">1758</span>    }<a name="line.1758"></a>
-<span class="sourceLineNo">1759</span>  }<a name="line.1759"></a>
-<span class="sourceLineNo">1760</span><a name="line.1760"></a>
-<span class="sourceLineNo">1761</span>  @Override<a name="line.1761"></a>
-<span class="sourceLineNo">1762</span>  public int getSerializedLength() {<a name="line.1762"></a>
-<span class="sourceLineNo">1763</span>    if (buf != null) {<a name="line.1763"></a>
-<span class="sourceLineNo">1764</span>      // include extra bytes for the next header when it's available.<a name="line.1764"></a>
-<span class="sourceLineNo">1765</span>      int extraSpace = hasNextBlockHeader() ? headerSize() : 0;<a name="line.1765"></a>
-<span class="sourceLineNo">1766</span>      return this.buf.limit() + extraSpace + HFileBlock.EXTRA_SERIALIZATION_SPACE;<a name="line.1766"></a>
-<span class="sourceLineNo">1767</span>    }<a name="line.1767"></a>
-<span class="sourceLineNo">1768</span>    return 0;<a name="line.1768"></a>
-<span class="sourceLineNo">1769</span>  }<a name="line.1769"></a>
-<span class="sourceLineNo">1770</span><a name="line.1770"></a>
-<span class="sourceLineNo">1771</span>  @Override<a name="line.1771"></a>
-<span class="sourceLineNo">1772</span>  public void serialize(ByteBuffer destination) {<a name="line.1772"></a>
-<span class="sourceLineNo">1773</span>    this.buf.get(destination, 0, getSerializedLength()<a name="line.1773"></a>
-<span class="sourceLineNo">1774</span>        - EXTRA_SERIALIZATION_SPACE);<a name="line.1774"></a>
-<span class="sourceLineNo">1775</span>    serializeExtraInfo(destination);<a name="line.1775"></a>
-<span class="sourceLineNo">1776</span>  }<a name="line.1776"></a>
-<span class="sourceLineNo">1777</span><a name="line.1777"></a>
-<span class="sourceLineNo">1778</span>  public void serializeExtraInfo(ByteBuffer destination) {<a name="line.1778"></a>
-<span class="sourceLineNo">1779</span>    destination.put(this.fileContext.isUseHBaseChecksum() ? (byte) 1 : (byte) 0);<a name="line.1779"></a>
-<span class="sourceLineNo">1780</span>    destination.putLong(this.offset);<a name="line.1780"></a>
-<span class="sourceLineNo">1781</span>    destination.putInt(this.nextBlockOnDiskSizeWithHeader);<a name="line.1781"></a>
-<span class="sourceLineNo">1782</span>    destination.rewind();<a name="line.1782"></a>
-<span class="sourceLineNo">1783</span>  }<a name="line.1783"></a>
-<span class="sourceLineNo">1784</span><a name="line.1784"></a>
-<span class="sourceLineNo">1785</span>  @Override<a name="line.1785"></a>
-<span class="sourceLineNo">1786</span>  public CacheableDeserializer&lt;Cacheable&gt; getDeserializer() {<a name="line.1786"></a>
-<span class="sourceLineNo">1787</span>    return HFileBlock.blockDeserializer;<a name="line.1787"></a>
-<span class="sourceLineNo">1788</span>  }<a name="line.1788"></a>
-<span class="sourceLineNo">1789</span><a name="line.1789"></a>
-<span class="sourceLineNo">1790</span>  @Override<a name="line.1790"></a>
-<span class="sourceLineNo">1791</span>  public int hashCode() {<a name="line.1791"></a>
-<span class="sourceLineNo">1792</span>    int result = 1;<a name="line.1792"></a>
-<span class="sourceLineNo">1793</span>    result = result * 31 + blockType.hashCode();<a name="line.1793"></a>
-<span class="sourceLineNo">1794</span>    result = result * 31 + nextBlockOnDiskSizeWithHeader;<a name="line.1794"></a>
-<span class="sourceLineNo">1795</span>    result = result * 31 + (int) (offset ^ (offset &gt;&gt;&gt; 32));<a name="line.1795"></a>
-<span class="sourceLineNo">1796</span>    result = result * 31 + onDiskSizeWithoutHeader;<a name="line.1796"></a>
-<span class="sourceLineNo">1797</span>    result = result * 31 + (int) (prevBlockOffset ^ (prevBlockOffset &gt;&gt;&gt; 32));<a name="line.1797"></a>
-<span class="sourceLineNo">1798</span>    result = result * 31 + uncompressedSizeWithoutHeader;<a name="line.1798"></a>
-<span class="sourceLineNo">1799</span>    result = result * 31 + buf.hashCode();<a name="line.1799"></a>
-<span class="sourceLineNo">1800</span>    return result;<a name="line.1800"></a>
-<span class="sourceLineNo">1801</span>  }<a name="line.1801"></a>
-<span class="sourceLineNo">1802</span><a name="line.1802"></a>
-<span class="sourceLineNo">1803</span>  @Override<a name="line.1803"></a>
-<span class="sourceLineNo">1804</span>  public boolean equals(Object comparison) {<a name="line.1804"></a>
-<span class="sourceLineNo">1805</span>    if (this == comparison) {<a name="line.1805"></a>
-<span class="sourceLineNo">1806</span>      return true;<a name="line.1806"></a>
-<span class="sourceLineNo">1807</span>    }<a name="line.1807"></a>
-<span class="sourceLineNo">1808</span>    if (comparison == null) {<a name="line.1808"></a>
-<span class="sourceLineNo">1809</span>      return false;<a name="line.1809"></a>
-<span class="sourceLineNo">1810</span>    }<a name="line.1810"></a>
-<span class="sourceLineNo">1811</span>    if (comparison.getClass() != this.getClass()) {<a name="line.1811"></a>
-<span class="sourceLineNo">1812</span>      return false;<a name="line.1812"></a>
-<span class="sourceLineNo">1813</span>    }<a name="line.1813"></a>
-<span class="sourceLineNo">1814</span><a name="line.1814"></a>
-<span class="sourceLineNo">1815</span>    HFileBlock castedComparison = (HFileBlock) comparison;<a name="line.1815"></a>
-<span class="sourceLineNo">1816</span><a name="line.1816"></a>
-<span class="sourceLineNo">1817</span>    if (castedComparison.blockType != this.blockType) {<a name="line.1817"></a>
-<span class="sourceLineNo">1818</span>      return false;<a name="line.1818"></a>
-<span class="sourceLineNo">1819</span>    }<a name="line.1819"></a>
-<span class="sourceLineNo">1820</span>    if (castedComparison.nextBlockOnDiskSizeWithHeader != this.nextBlockOnDiskSizeWithHeader) {<a name="line.1820"></a>
-<span class="sourceLineNo">1821</span>      return false;<a name="line.1821"></a>
-<span class="sourceLineNo">1822</span>    }<a name="line.1822"></a>
-<span class="sourceLineNo">1823</span>    if (castedComparison.offset != this.offset) {<a name="line.1823"></a>
-<span class="sourceLineNo">1824</span>      return false;<a name="line.1824"></a>
-<span class="sourceLineNo">1825</span>    }<a name="line.1825"></a>
-<span class="sourceLineNo">1826</span>    if (castedComparison.onDiskSizeWithoutHeader != this.onDiskSizeWithoutHeader) {<a name="line.1826"></a>
-<span class="sourceLineNo">1827</span>      return false;<a name="line.1827"></a>
-<span class="sourceLineNo">1828</span>    }<a name="line.1828"></a>
-<span class="sourceLineNo">1829</span>    if (castedComparison.prevBlockOffset != this.prevBlockOffset) {<a name="line.1829"></a>
-<span class="sourceLineNo">1830</span>      return false;<a name="line.1830"></a>
-<span class="sourceLineNo">1831</span>    }<a name="line.1831"></a>
-<span class="sourceLineNo">1832</span>    if (castedComparison.uncompressedSizeWithoutHeader != this.uncompressedSizeWithoutHeader) {<a name="line.1832"></a>
-<span class="sourceLineNo">1833</span>      return false;<a name="line.1833"></a>
-<span class="sourceLineNo">1834</span>    }<a name="line.1834"></a>
-<span class="sourceLineNo">1835</span>    if (ByteBuff.compareTo(this.buf, 0, this.buf.limit(), castedComparison.buf, 0,<a name="line.1835"></a>
-<span class="sourceLineNo">1836</span>        castedComparison.buf.limit()) != 0) {<a name="line.1836"></a>
-<span class="sourceLineNo">1837</span>      return false;<a name="line.1837"></a>
-<span class="sourceLineNo">1838</span>    }<a name="line.1838"></a>
-<span class="sourceLineNo">1839</span>    return true;<a name="line.1839"></a>
-<span class="sourceLineNo">1840</span>  }<a name="line.1840"></a>
-<span class="sourceLineNo">1841</span><a name="line.1841"></a>
-<span class="sourceLineNo">1842</span>  public DataBlockEncoding getDataBlockEncoding() {<a name="line.1842"></a>
-<span class="sourceLineNo">1843</span>    if (blockType == BlockType.ENCODED_DATA) {<a name="line.1843"></a>
-<span class="sourceLineNo">1844</span>      return DataBlockEncoding.getEncodingById(getDataBlockEncodingId());<a name="line.1844"></a>
-<span class="sourceLineNo">1845</span>    }<a name="line.1845"></a>
-<span class="sourceLineNo">1846</span>    return DataBlockEncoding.NONE;<a name="line.1846"></a>
-<span class="sourceLineNo">1847</span>  }<a name="line.1847"></a>
-<span class="sourceLineNo">1848</span><a name="line.1848"></a>
-<span class="sourceLineNo">1849</span>  byte getChecksumType() {<a name="line.1849"></a>
-<span class="sourceLineNo">1850</span>    return this.fileContext.getChecksumType().getCode();<a name="line.1850"></a>
-<span class="sourceLineNo">1851</span>  }<a name="line.1851"></a>
-<span class="sourceLineNo">1852</span><a name="line.1852"></a>
-<span class="sourceLineNo">1853</span>  int getBytesPerChecksum() {<a name="line.1853"></a>
-<span class="sourceLineNo">1854</span>    return this.fileContext.getBytesPerChecksum();<a name="line.1854"></a>
-<span class="sourceLineNo">1855</span>  }<a name="line.1855"></a>
-<span class="sourceLineNo">1856</span><a name="line.1856"></a>
-<span class="sourceLineNo">1857</span>  /** @return the size of data on disk + header. Excludes checksum. */<a name="line.1857"></a>
-<span class="sourceLineNo">1858</span>  int getOnDiskDataSizeWithHeader() {<a name="line.1858"></a>
-<span class="sourceLineNo">1859</span>    return this.onDiskDataSizeWithHeader;<a name="line.1859"></a>
-<span class="sourceLineNo">1860</span>  }<a name="line.1860"></a>
-<span class="sourceLineNo">1861</span><a name="line.1861"></a>
-<span class="sourceLineNo">1862</span>  /**<a name="line.1862"></a>
-<span class="sourceLineNo">1863</span>   * Calcuate the number of bytes required to store all the checksums<a name="line.1863"></a>
-<span class="sourceLineNo">1864</span>   * for this block. Each checksum value is a 4 byte integer.<a name="line.1864"></a>
-<span class="sourceLineNo">1865</span>   */<a name="line.1865"></a>
-<span class="sourceLineNo">1866</span>  int totalChecksumBytes() {<a name="line.1866"></a>
-<span class="sourceLineNo">1867</span>    // If the hfile block has minorVersion 0, then there are no checksum<a name="line.1867"></a>
-<span class="sourceLineNo">1868</span>    // data to validate. Similarly, a zero value in this.bytesPerChecksum<a name="line.1868"></a>
-<span class="sourceLineNo">1869</span>    // indicates that cached blocks do not have checksum data because<a name="line.1869"></a>
-<span class="sourceLineNo">1870</span>    // checksums were already validated when the block was read from disk.<a name="line.1870"></a>
-<span class="sourceLineNo">1871</span>    if (!fileContext.isUseHBaseChecksum() || this.fileContext.getBytesPerChecksum() == 0) {<a name="line.1871"></a>
-<span class="sourceLineNo">1872</span>      return 0;<a name="line.1872"></a>
-<span class="sourceLineNo">1873</span>    }<a name="line.1873"></a>
-<span class="sourceLineNo">1874</span>    return (int) ChecksumUtil.numBytes(onDiskDataSizeWithHeader,<a name="line.1874"></a>
-<span class="sourceLineNo">1875</span>        this.fileContext.getBytesPerChecksum());<a name="line.1875"></a>
-<span class="sourceLineNo">1876</span>  }<a name="line.1876"></a>
-<span class="sourceLineNo">1877</span><a name="line.1877"></a>
-<span class="sourceLineNo">1878</span>  /**<a name="line.1878"></a>
-<span class="sourceLineNo">1879</span>   * Returns the size of this block header.<a name="line.1879"></a>
-<span class="sourceLineNo">1880</span>   */<a name="line.1880"></a>
-<span class="sourceLineNo">1881</span>  public int headerSize() {<a name="line.1881"></a>
-<span class="sourceLineNo">1882</span>    return headerSize(this.fileContext.isUseHBaseChecksum());<a name="line.1882"></a>
-<span class="sourceLineNo">1883</span>  }<a name="line.1883"></a>
-<span class="sourceLineNo">1884</span><a name="line.1884"></a>
-<span class="sourceLineNo">1885</span>  /**<a name="line.1885"></a>
-<span class="sourceLineNo">1886</span>   * Maps a minor version to the size of the header.<a name="line.1886"></a>
-<span class="sourceLineNo">1887</span>   */<a name="line.1887"></a>
-<span class="sourceLineNo">1888</span>  public static int headerSize(boolean usesHBaseChecksum) {<a name="line.1888"></a>
-<span class="sourceLineNo">1889</span>    if (usesHBaseChecksum) {<a name="line.1889"></a>
-<span class="sourceLineNo">1890</span>      return HConstants.HFILEBLOCK_HEADER_SIZE;<a name="line.1890"></a>
-<span class="sourceLineNo">1891</span>    }<a name="line.1891"></a>
-<span class="sourceLineNo">1892</span>    return HConstants.HFILEBLOCK_HEADER_SIZE_NO_CHECKSUM;<a name="line.1892"></a>
-<span class="sourceLineNo">1893</span>  }<a name="line.1893"></a>
-<span class="sourceLineNo">1894</span><a name="line.1894"></a>
-<span class="sourceLineNo">1895</span>  /**<a name="line.1895"></a>
-<span class="sourceLineNo">1896</span>   * Return the appropriate DUMMY_HEADER for the minor version<a name="line.1896"></a>
-<span class="sourceLineNo">1897</span>   */<a name="line.1897"></a>
-<span class="sourceLineNo">1898</span>  public byte[] getDummyHeaderForVersion() {<a name="line.1898"></a>
-<span class="sourceLineNo">1899</span>    return getDummyHeaderForVersion(this.fileContext.isUseHBaseChecksum());<a name="line.1899"></a>
-<span class="sourceLineNo">1900</span>  }<a name="line.1900"></a>
-<span class="sourceLineNo">1901</span><a name="line.1901"></a>
-<span class="sourceLineNo">1902</span>  /**<a name="line.1902"></a>
-<span class="sourceLineNo">1903</span>   * Return the appropriate DUMMY_HEADER for the minor version<a name="line.1903"></a>
-<span class="sourceLineNo">1904</span>   */<a name="line.1904"></a>
-<span class="sourceLineNo">1905</span>  static private byte[] getDummyHeaderForVersion(boolean usesHBaseChecksum) {<a name="line.1905"></a>
-<span class="sourceLineNo">1906</span>    if (usesHBaseChecksum) {<a name="line.1906"></a>
-<span class="sourceLineNo">1907</span>      return HConstants.HFILEBLOCK_DUMMY_HEADER;<a name="line.1907"></a>
-<span class="sourceLineNo">1908</span>    }<a name="line.1908"></a>
-<span class="sourceLineNo">1909</span>    return DUMMY_HEADER_NO_CHECKSUM;<a name="line.1909"></a>
-<span class="sourceLineNo">1910</span>  }<a name="line.1910"></a>
-<span class="sourceLineNo">1911</span><a name="line.1911"></a>
-<span class="sourceLineNo">1912</span>  /**<a name="line.1912"></a>
-<span class="sourceLineNo">1913</span>   * @return the HFileContext used to create this HFileBlock. Not necessary the<a name="line.1913"></a>
-<span class="sourceLineNo">1914</span>   * fileContext for the file from which this block's data was originally read.<a name="line.1914"></a>
-<span class="sourceLineNo">1915</span>   */<a name="line.1915"></a>
-<span class="sourceLineNo">1916</span>  public HFileContext getHFileContext() {<a name="line.1916"></a>
-<span class="sourceLineNo">1917</span>    return this.fileContext;<a name="line.1917"></a>
-<span class="sourceLineNo">1918</span>  }<a name="line.1918"></a>
-<span class="sourceLineNo">1919</span><a name="line.1919"></a>
-<span class="sourceLineNo">1920</span>  @Override<a name="line.1920"></a>
-<span class="sourceLineNo">1921</span>  public MemoryType getMemoryType() {<a name="line.1921"></a>
-<span class="sourceLineNo">1922</span>    return this.memType;<a name="line.1922"></a>
-<span class="sourceLineNo">1923</span>  }<a name="line.1923"></a>
-<span class="sourceLineNo">1924</span><a name="line.1924"></a>
-<span class="sourceLineNo">1925</span>  /**<a name="line.1925"></a>
-<span class="sourceLineNo">1926</span>   * @return true if this block is backed by a shared memory area(such as that of a BucketCache).<a name="line.1926"></a>
-<span class="sourceLineNo">1927</span>   */<a name="line.1927"></a>
-<span class="sourceLineNo">1928</span>  public boolean usesSharedMemory() {<a name="line.1928"></a>
-<span class="sourceLineNo">1929</span>    return this.memType == MemoryType.SHARED;<a name="line.1929"></a>
-<span class="sourceLineNo">1930</span>  }<a name="line.1930"></a>
-<span class="sourceLineNo">1931</span><a name="line.1931"></a>
-<span class="sourceLineNo">1932</span>  /**<a name="line.1932"></a>
-<span class="sourceLineNo">1933</span>   * Convert the contents of the block header into a human readable string.<a name="line.1933"></a>
-<span class="sourceLineNo">1934</span>   * This is mostly helpful for debugging. This assumes that the block<a name="line.1934"></a>
-<span class="sourceLineNo">1935</span>   * has minor version &gt; 0.<a name="line.1935"></a>
-<span class="sourceLineNo">1936</span>   */<a name="line.1936"></a>
-<span class="sourceLineNo">1937</span>  static String toStringHeader(ByteBuff buf) throws IOException {<a name="line.1937"></a>
-<span class="sourceLineNo">1938</span>    byte[] magicBuf = new byte[Math.min(buf.limit() - buf.position(), BlockType.MAGIC_LENGTH)];<a name="line.1938"></a>
-<span class="sourceLineNo">1939</span>    buf.get(magicBuf);<a name="line.1939"></a>
-<span class="sourceLineNo">1940</span>    BlockType bt = BlockType.parse(magicBuf, 0, BlockType.MAGIC_LENGTH);<a name="line.1940"></a>
-<span class="sourceLineNo">1941</span>    int compressedBlockSizeNoHeader = buf.getInt();<a name="line.1941"></a>
-<span class="sourceLineNo">1942</span>    int uncompressedBlockSizeNoHeader = buf.getInt();<a name="line.1942"></a>
-<span class="sourceLineNo">1943</span>    long prevBlockOffset = buf.getLong();<a name="line.1943"></a>
-<span class="sourceLineNo">1944</span>    byte cksumtype = buf.get();<a name="line.1944"></a>
-<span class="sourceLineNo">1945</span>    long bytesPerChecksum = buf.getInt();<a name="line.1945"></a>
-<span class="sourceLineNo">1946</span>    long onDiskDataSizeWithHeader = buf.getInt();<a name="line.1946"></a>
-<span class="sourceLineNo">1947</span>    return " Header dump: magic: " + Bytes.toString(magicBuf) +<a name="line.1947"></a>
-<span class="sourceLineNo">1948</span>                   " blockType " + bt +<a name="line.1948"></a>
-<span class="sourceLineNo">1949</span>                   " compressedBlockSizeNoHeader " +<a name="line.1949"></a>
-<span class="sourceLineNo">1950</span>                   compressedBlockSizeNoHeader +<a name="line.1950"></a>
-<span class="sourceLineNo">1951</span>                   " uncompressedBlockSizeNoHeader " +<a name="line.1951"></a>
-<span class="sourceLineNo">1952</span>                   uncompressedBlockSizeNoHeader +<a name="line.1952"></a>
-<span class="sourceLineNo">1953</span>                   " prevBlockOffset " + prevBlockOffset +<a name="line.1953"></a>
-<span class="sourceLineNo">1954</span>                   " checksumType " + ChecksumType.codeToType(cksumtype) +<a name="line.1954"></a>
-<span class="sourceLineNo">1955</span>                   " bytesPerChecksum " + bytesPerChecksum +<a name="line.1955"></a>
-<span class="sourceLineNo">1956</span>                   " onDiskDataSizeWithHeader " + onDiskDataSizeWithHeader;<a name="line.1956"></a>
-<span class="sourceLineNo">1957</span>  }<a name="line.1957"></a>
-<span class="sourceLineNo">1958</span>}<a name="line.1958"></a>
+<span class="sourceLineNo">1361</span>    protected HFileContext fileContext;<a name="line.1361"></a>
+<span class="sourceLineNo">1362</span>    // Cache the fileName<a name="line.1362"></a>
+<span class="sourceLineNo">1363</span>    protected String pathName;<a name="line.1363"></a>
+<span class="sourceLineNo">1364</span><a name="line.1364"></a>
+<span class="sourceLineNo">1365</span>    public FSReaderImpl(FSDataInputStreamWrapper stream, long fileSize, HFileSystem hfs, Path path,<a name="line.1365"></a>
+<span class="sourceLineNo">1366</span>        HFileContext fileContext) throws IOException {<a name="line.1366"></a>
+<span class="sourceLineNo">1367</span>      this.fileSize = fileSize;<a name="line.1367"></a>
+<span class="sourceLineNo">1368</span>      this.hfs = hfs;<a name="line.1368"></a>
+<span class="sourceLineNo">1369</span>      if (path != null) {<a name="line.1369"></a>
+<span class="sourceLineNo">1370</span>        this.pathName = path.toString();<a name="line.1370"></a>
+<span class="sourceLineNo">1371</span>      }<a name="line.1371"></a>
+<span class="sourceLineNo">1372</span>      this.fileContext = fileContext;<a name="line.1372"></a>
+<span class="sourceLineNo">1373</span>      this.hdrSize = headerSize(fileContext.isUseHBaseChecksum());<a name="line.1373"></a>
+<span class="sourceLineNo">1374</span><a name="line.1374"></a>
+<span class="sourceLineNo">1375</span>      this.streamWrapper = stream;<a name="line.1375"></a>
+<span class="sourceLineNo">1376</span>      // Older versions of HBase didn't support checksum.<a name="line.1376"></a>
+<span class="sourceLineNo">1377</span>      this.streamWrapper.prepareForBlockReader(!fileContext.isUseHBaseChecksum());<a name="line.1377"></a>
+<span class="sourceLineNo">1378</span>      defaultDecodingCtx = new HFileBlockDefaultDecodingContext(fileContext);<a name="line.1378"></a>
+<span class="sourceLineNo">1379</span>      encodedBlockDecodingCtx = defaultDecodingCtx;<a name="line.1379"></a>
+<span class="sourceLineNo">1380</span>    }<a name="line.1380"></a>
+<span class="sourceLineNo">1381</span><a name="line.1381"></a>
+<span class="sourceLineNo">1382</span>    /**<a name="line.1382"></a>
+<span class="sourceLineNo">1383</span>     * A constructor that reads files with the latest minor version.<a name="line.1383"></a>
+<span class="sourceLineNo">1384</span>     * This is used by unit tests only.<a name="line.1384"></a>
+<span class="sourceLineNo">1385</span>     */<a name="line.1385"></a>
+<span class="sourceLineNo">1386</span>    FSReaderImpl(FSDataInputStream istream, long fileSize, HFileContext fileContext)<a name="line.1386"></a>
+<span class="sourceLineNo">1387</span>    throws IOException {<a name="line.1387"></a>
+<span class="sourceLineNo">1388</span>      this(new FSDataInputStreamWrapper(istream), fileSize, null, null, fileContext);<a name="line.1388"></a>
+<span class="sourceLineNo">1389</span>    }<a name="line.1389"></a>
+<span class="sourceLineNo">1390</span><a name="line.1390"></a>
+<span class="sourceLineNo">1391</span>    public BlockIterator blockRange(final long startOffset, final long endOffset) {<a name="line.1391"></a>
+<span class="sourceLineNo">1392</span>      final FSReader owner = this; // handle for inner class<a name="line.1392"></a>
+<span class="sourceLineNo">1393</span>      return new BlockIterator() {<a name="line.1393"></a>
+<span class="sourceLineNo">1394</span>        private long offset = startOffset;<a name="line.1394"></a>
+<span class="sourceLineNo">1395</span><a name="line.1395"></a>
+<span class="sourceLineNo">1396</span>        @Override<a name="line.1396"></a>
+<span class="sourceLineNo">1397</span>        public HFileBlock nextBlock() throws IOException {<a name="line.1397"></a>
+<span class="sourceLineNo">1398</span>          if (offset &gt;= endOffset)<a name="line.1398"></a>
+<span class="sourceLineNo">1399</span>            return null;<a name="line.1399"></a>
+<span class="sourceLineNo">1400</span>          HFileBlock b = readBlockData(offset, -1, -1, false);<a name="line.1400"></a>
+<span class="sourceLineNo">1401</span>          offset += b.getOnDiskSizeWithHeader();<a name="line.1401"></a>
+<span class="sourceLineNo">1402</span>          return b.unpack(fileContext, owner);<a name="line.1402"></a>
+<span class="sourceLineNo">1403</span>        }<a name="line.1403"></a>
+<span class="sourceLineNo">1404</span><a name="line.1404"></a>
+<span class="sourceLineNo">1405</span>        @Override<a name="line.1405"></a>
+<span class="sourceLineNo">1406</span>        public HFileBlock nextBlockWithBlockType(BlockType blockType)<a name="line.1406"></a>
+<span class="sourceLineNo">1407</span>            throws IOException {<a name="line.1407"></a>
+<span class="sourceLineNo">1408</span>          HFileBlock blk = nextBlock();<a name="line.1408"></a>
+<span class="sourceLineNo">1409</span>          if (blk.getBlockType() != blockType) {<a name="line.1409"></a>
+<span class="sourceLineNo">1410</span>            throw new IOException("Expected block of type " + blockType<a name="line.1410"></a>
+<span class="sourceLineNo">1411</span>                + " but found " + blk.getBlockType());<a name="line.1411"></a>
+<span class="sourceLineNo">1412</span>          }<a name="line.1412"></a>
+<span class="sourceLineNo">1413</span>          return blk;<a name="line.1413"></a>
+<span class="sourceLineNo">1414</span>        }<a name="line.1414"></a>
+<span class="sourceLineNo">1415</span>      };<a name="line.1415"></a>
+<span class="sourceLineNo">1416</span>    }<a name="line.1416"></a>
+<span class="sourceLineNo">1417</span><a name="line.1417"></a>
+<span class="sourceLineNo">1418</span>    /**<a name="line.1418"></a>
+<span class="sourceLineNo">1419</span>     * Does a positional read or a seek and read into the given buffer. Returns<a name="line.1419"></a>
+<span class="sourceLineNo">1420</span>     * the on-disk size of the next block, or -1 if it could not be determined.<a name="line.1420"></a>
+<span class="sourceLineNo">1421</span>     *<a name="line.1421"></a>
+<span class="sourceLineNo">1422</span>     * @param dest destination buffer<a name="line.1422"></a>
+<span class="sourceLineNo">1423</span>     * @param destOffset offset in the destination buffer<a name="line.1423"></a>
+<span class="sourceLineNo">1424</span>     * @param size size of the block to be read<a name="line.1424"></a>
+<span class="sourceLineNo">1425</span>     * @param peekIntoNextBlock whether to read the next block's on-disk size<a name="line.1425"></a>
+<span class="sourceLineNo">1426</span>     * @param fileOffset position in the stream to read at<a name="line.1426"></a>
+<span class="sourceLineNo">1427</span>     * @param pread whether we should do a positional read<a name="line.1427"></a>
+<span class="sourceLineNo">1428</span>     * @param istream The input source of data<a name="line.1428"></a>
+<span class="sourceLineNo">1429</span>     * @return the on-disk size of the next block with header size included, or<a name="line.1429"></a>
+<span class="sourceLineNo">1430</span>     *         -1 if it could not be determined<a name="line.1430"></a>
+<span class="sourceLineNo">1431</span>     * @throws IOException<a name="line.1431"></a>
+<span class="sourceLineNo">1432</span>     */<a name="line.1432"></a>
+<span class="sourceLineNo">1433</span>    protected int readAtOffset(FSDataInputStream istream,<a name="line.1433"></a>
+<span class="sourceLineNo">1434</span>        byte[] dest, int destOffset, int size,<a name="line.1434"></a>
+<span class="sourceLineNo">1435</span>        boolean peekIntoNextBlock, long fileOffset, boolean pread)<a name="line.1435"></a>
+<span class="sourceLineNo">1436</span>        throws IOException {<a name="line.1436"></a>
+<span class="sourceLineNo">1437</span>      if (peekIntoNextBlock &amp;&amp;<a name="line.1437"></a>
+<span class="sourceLineNo">1438</span>          destOffset + size + hdrSize &gt; dest.length) {<a name="line.1438"></a>
+<span class="sourceLineNo">1439</span>        // We are asked to read the next block's header as well, but there is<a name="line.1439"></a>
+<span class="sourceLineNo">1440</span>        // not enough room in the array.<a name="line.1440"></a>
+<span class="sourceLineNo">1441</span>        throw new IOException("Attempted to read " + size + " bytes and " +<a name="line.1441"></a>
+<span class="sourceLineNo">1442</span>            hdrSize + " bytes of next header into a " + dest.length +<a name="line.1442"></a>
+<span class="sourceLineNo">1443</span>            "-byte array at offset " + destOffset);<a name="line.1443"></a>
+<span class="sourceLineNo">1444</span>      }<a name="line.1444"></a>
+<span class="sourceLineNo">1445</span><a name="line.1445"></a>
+<span class="sourceLineNo">1446</span>      if (!pread &amp;&amp; streamLock.tryLock()) {<a name="line.1446"></a>
+<span class="sourceLineNo">1447</span>        // Seek + read. Better for scanning.<a name="line.1447"></a>
+<span class="sourceLineNo">1448</span>        try {<a name="line.1448"></a>
+<span class="sourceLineNo">1449</span>          istream.seek(fileOffset);<a name="line.1449"></a>
+<span class="sourceLineNo">1450</span><a name="line.1450"></a>
+<span class="sourceLineNo">1451</span>          long realOffset = istream.getPos();<a name="line.1451"></a>
+<span class="sourceLineNo">1452</span>          if (realOffset != fileOffset) {<a name="line.1452"></a>
+<span class="sourceLineNo">1453</span>            throw new IOException("Tried to seek to " + fileOffset + " to "<a name="line.1453"></a>
+<span class="sourceLineNo">1454</span>                + "read " + size + " bytes, but pos=" + realOffset<a name="line.1454"></a>
+<span class="sourceLineNo">1455</span>                + " after seek");<a name="line.1455"></a>
+<span class="sourceLineNo">1456</span>          }<a name="line.1456"></a>
+<span class="sourceLineNo">1457</span><a name="line.1457"></a>
+<span class="sourceLineNo">1458</span>          if (!peekIntoNextBlock) {<a name="line.1458"></a>
+<span class="sourceLineNo">1459</span>            IOUtils.readFully(istream, dest, destOffset, size);<a name="line.1459"></a>
+<span class="sourceLineNo">1460</span>            return -1;<a name="line.1460"></a>
+<span class="sourceLineNo">1461</span>          }<a name="line.1461"></a>
+<span class="sourceLineNo">1462</span><a name="line.1462"></a>
+<span class="sourceLineNo">1463</span>          // Try to read the next block header.<a name="line.1463"></a>
+<span class="sourceLineNo">1464</span>          if (!readWithExtra(istream, dest, destOffset, size, hdrSize))<a name="line.1464"></a>
+<span class="sourceLineNo">1465</span>            return -1;<a name="line.1465"></a>
+<span class="sourceLineNo">1466</span>        } finally {<a name="line.1466"></a>
+<span class="sourceLineNo">1467</span>          streamLock.unlock();<a name="line.1467"></a>
+<span class="sourceLineNo">1468</span>        }<a name="line.1468"></a>
+<span class="sourceLineNo">1469</span>      } else {<a name="line.1469"></a>
+<span class="sourceLineNo">1470</span>        // Positional read. Better for random reads; or when the streamLock is already locked.<a name="line.1470"></a>
+<span class="sourceLineNo">1471</span>        int extraSize = peekIntoNextBlock ? hdrSize : 0;<a name="line.1471"></a>
+<span class="sourceLineNo">1472</span>        if (!positionalReadWithExtra(istream, fileOffset, dest, destOffset,<a name="line.1472"></a>
+<span class="sourceLineNo">1473</span>            size, extraSize)) {<a name="line.1473"></a>
+<span class="sourceLineNo">1474</span>          return -1;<a name="line.1474"></a>
+<span class="sourceLineNo">1475</span>        }<a name="line.1475"></a>
+<span class="sourceLineNo">1476</span>      }<a name="line.1476"></a>
+<span class="sourceLineNo">1477</span><a name="line.1477"></a>
+<span class="sourceLineNo">1478</span>      assert peekIntoNextBlock;<a name="line.1478"></a>
+<span class="sourceLineNo">1479</span>      return Bytes.toInt(dest, destOffset + size + BlockType.MAGIC_LENGTH) + hdrSize;<a name="line.1479"></a>
+<span class="sourceLineNo">1480</span>    }<a name="line.1480"></a>
+<span class="sourceLineNo">1481</span><a name="line.1481"></a>
+<span class="sourceLineNo">1482</span>    /**<a name="line.1482"></a>
+<span class="sourceLineNo">1483</span>     * Reads a version 2 block (version 1 blocks not supported and not expected). Tries to do as<a name="line.1483"></a>
+<span class="sourceLineNo">1484</span>     * little memory allocation as possible, using the provided on-disk size.<a name="line.1484"></a>
+<span class="sourceLineNo">1485</span>     *<a name="line.1485"></a>
+<span class="sourceLineNo">1486</span>     * @param offset the offset in the stream to read at<a name="line.1486"></a>
+<span class="sourceLineNo">1487</span>     * @param onDiskSizeWithHeaderL the on-disk size of the block, including<a name="line.1487"></a>
+<span class="sourceLineNo">1488</span>     *          the header, or -1 if unknown<a name="line.1488"></a>
+<span class="sourceLineNo">1489</span>     * @param uncompressedSize the uncompressed size of the the block. Always<a name="line.1489"></a>
+<span class="sourceLineNo">1490</span>     *          expected to be -1. This parameter is only used in version 1.<a name="line.1490"></a>
+<span class="sourceLineNo">1491</span>     * @param pread whether to use a positional read<a name="line.1491"></a>
+<span class="sourceLineNo">1492</span>     */<a name="line.1492"></a>
+<span class="sourceLineNo">1493</span>    @Override<a name="line.1493"></a>
+<span class="sourceLineNo">1494</span>    public HFileBlock readBlockData(long offset, long onDiskSizeWithHeaderL,<a name="line.1494"></a>
+<span class="sourceLineNo">1495</span>        int uncompressedSize, boolean pread)<a name="line.1495"></a>
+<span class="sourceLineNo">1496</span>    throws IOException {<a name="line.1496"></a>
+<span class="sourceLineNo">1497</span><a name="line.1497"></a>
+<span class="sourceLineNo">1498</span>      // get a copy of the current state of whether to validate<a name="line.1498"></a>
+<span class="sourceLineNo">1499</span>      // hbase checksums or not for this read call. This is not<a name="line.1499"></a>
+<span class="sourceLineNo">1500</span>      // thread-safe but the one constaint is that if we decide<a name="line.1500"></a>
+<span class="sourceLineNo">1501</span>      // to skip hbase checksum verification then we are<a name="line.1501"></a>
+<span class="sourceLineNo">1502</span>      // guaranteed to use hdfs checksum verification.<a name="line.1502"></a>
+<span class="sourceLineNo">1503</span>      boolean doVerificationThruHBaseChecksum = streamWrapper.shouldUseHBaseChecksum();<a name="line.1503"></a>
+<span class="sourceLineNo">1504</span>      FSDataInputStream is = streamWrapper.getStream(doVerificationThruHBaseChecksum);<a name="line.1504"></a>
+<span class="sourceLineNo">1505</span><a name="line.1505"></a>
+<span class="sourceLineNo">1506</span>      HFileBlock blk = readBlockDataInternal(is, offset,<a name="line.1506"></a>
+<span class="sourceLineNo">1507</span>                         onDiskSizeWithHeaderL,<a name="line.1507"></a>
+<span class="sourceLineNo">1508</span>                         uncompressedSize, pread,<a name="line.1508"></a>
+<span class="sourceLineNo">1509</span>                         doVerificationThruHBaseChecksum);<a name="line.1509"></a>
+<span class="sourceLineNo">1510</span>      if (blk == null) {<a name="line.1510"></a>
+<span class="sourceLineNo">1511</span>        HFile.LOG.warn("HBase checksum verification failed for file " +<a name="line.1511"></a>
+<span class="sourceLineNo">1512</span>                       pathName + " at offset " +<a name="line.1512"></a>
+<span class="sourceLineNo">1513</span>                       offset + " filesize " + fileSize +<a name="line.1513"></a>
+<span class="sourceLineNo">1514</span>                       ". Retrying read with HDFS checksums turned on...");<a name="line.1514"></a>
+<span class="sourceLineNo">1515</span><a name="line.1515"></a>
+<span class="sourceLineNo">1516</span>        if (!doVerificationThruHBaseChecksum) {<a name="line.1516"></a>
+<span class="sourceLineNo">1517</span>          String msg = "HBase checksum verification failed for file " +<a name="line.1517"></a>
+<span class="sourceLineNo">1518</span>                       pathName + " at offset " +<a name="line.1518"></a>
+<span class="sourceLineNo">1519</span>                       offset + " filesize " + fileSize +<a name="line.1519"></a>
+<span class="sourceLineNo">1520</span>                       " but this cannot happen because doVerify is " +<a name="line.1520"></a>
+<span class="sourceLineNo">1521</span>                       doVerificationThruHBaseChecksum;<a name="line.1521"></a>
+<span class="sourceLineNo">1522</span>          HFile.LOG.warn(msg);<a name="line.1522"></a>
+<span class="sourceLineNo">1523</span>          throw new IOException(msg); // cannot happen case here<a name="line.1523"></a>
+<span class="sourceLineNo">1524</span>        }<a name="line.1524"></a>
+<span class="sourceLineNo">1525</span>        HFile.checksumFailures.incrementAndGet(); // update metrics<a name="line.1525"></a>
+<span class="sourceLineNo">1526</span><a name="line.1526"></a>
+<span class="sourceLineNo">1527</span>        // If we have a checksum failure, we fall back into a mode where<a name="line.1527"></a>
+<span class="sourceLineNo">1528</span>        // the next few reads use HDFS level checksums. We aim to make the<a name="line.1528"></a>
+<span class="sourceLineNo">1529</span>        // next CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD reads avoid<a name="line.1529"></a>
+<span class="sourceLineNo">1530</span>        // hbase checksum verification, but since this value is set without<a name="line.1530"></a>
+<span class="sourceLineNo">1531</span>        // holding any locks, it can so happen that we might actually do<a name="line.1531"></a>
+<span class="sourceLineNo">1532</span>        // a few more than precisely this number.<a name="line.1532"></a>
+<span class="sourceLineNo">1533</span>        is = this.streamWrapper.fallbackToFsChecksum(CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD);<a name="line.1533"></a>
+<span class="sourceLineNo">1534</span>        doVerificationThruHBaseChecksum = false;<a name="line.1534"></a>
+<span class="sourceLineNo">1535</span>        blk = readBlockDataInternal(is, offset, onDiskSizeWithHeaderL,<a name="line.1535"></a>
+<span class="sourceLineNo">1536</span>                                    uncompressedSize, pread,<a name="line.1536"></a>
+<span class="sourceLineNo">1537</span>                                    doVerificationThruHBaseChecksum);<a name="line.1537"></a>
+<span class="sourceLineNo">1538</span>        if (blk != null) {<a name="line.1538"></a>
+<span class="sourceLineNo">1539</span>          HFile.LOG.warn("HDFS checksum verification suceeded for file " +<a name="line.1539"></a>
+<span class="sourceLineNo">1540</span>                         pathName + " at offset " +<a name="line.1540"></a>
+<span class="sourceLineNo">1541</span>                         offset + " filesize " + fileSize);<a name="line.1541"></a>
+<span class="sourceLineNo">1542</span>        }<a name="line.1542"></a>
+<span class="sourceLineNo">1543</span>      }<a name="line.1543"></a>
+<span class="sourceLineNo">1544</span>      if (blk == null &amp;&amp; !doVerificationThruHBaseChecksum) {<a name="line.1544"></a>
+<span class="sourceLineNo">1545</span>        String msg = "readBlockData failed, possibly due to " +<a name="line.1545"></a>
+<span class="sourceLineNo">1546</span>                     "checksum verification failed for file " + pathName +<a name="line.1546"></a>
+<span class="sourceLineNo">1547</span>                     " at offset " + offset + " filesize " + fileSize;<a name="line.1547"></a>
+<span class="sourceLineNo">1548</span>        HFile.LOG.warn(msg);<a name="line.1548"></a>
+<span class="sourceLineNo">1549</span>        throw new IOException(msg);<a name="line.1549"></a>
+<span class="sourceLineNo">1550</span>      }<a name="line.1550"></a>
+<span class="sourceLineNo">1551</span><a name="line.1551"></a>
+<span class="sourceLineNo">1552</span>      // If there is a checksum mismatch earlier, then retry with<a name="line.1552"></a>
+<span class="sourceLineNo">1553</span>      // HBase checksums switched off and use HDFS checksum verification.<a name="line.1553"></a>
+<span class="sourceLineNo">1554</span>      // This triggers HDFS to detect and fix corrupt replicas. The<a name="line.1554"></a>
+<span class="sourceLineNo">1555</span>      // next checksumOffCount read requests will use HDFS checksums.<a name="line.1555"></a>
+<span class="sourceLineNo">1556</span>      // The decrementing of this.checksumOffCount is not thread-safe,<a name="line.1556"></a>
+<span class="sourceLineNo">1557</span>      // but it is harmless because eventually checksumOffCount will be<a name="line.1557"></a>
+<span class="sourceLineNo">1558</span>      // a negative number.<a name="line.1558"></a>
+<span class="sourceLineNo">1559</span>      streamWrapper.checksumOk();<a name="line.1559"></a>
+<span class="sourceLineNo">1560</span>      return blk;<a name="line.1560"></a>
+<span class="sourceLineNo">1561</span>    }<a name="line.1561"></a>
+<span class="sourceLineNo">1562</span><a name="line.1562"></a>
+<span class="sourceLineNo">1563</span>    /**<a name="line.1563"></a>
+<span class="sourceLineNo">1564</span>     * Reads a version 2 block.<a name="line.1564"></a>
+<span class="sourceLineNo">1565</span>     *<a name="line.1565"></a>
+<span class="sourceLineNo">1566</span>     * @param offset the offset in the stream to read at<a name="line.1566"></a>
+<span class="sourceLineNo">1567</span>     * @param onDiskSizeWithHeaderL the on-disk size of the block, including<a name="line.1567"></a>
+<span class="sourceLineNo">1568</span>     *          the header, or -1 if unknown<a name="line.1568"></a>
+<span class="sourceLineNo">1569</span>     * @param uncompressedSize the uncompressed size of the the block. Always<a name="line.1569"></a>
+<span class="sourceLineNo">1570</span>     *          expected to be -1. This parameter is only used in version 1.<a name="line.1570"></a>
+<span class="sourceLineNo">1571</span>     * @param pread whether to use a positional read<a name="line.1571"></a>
+<span class="sourceLineNo">1572</span>     * @param verifyChecksum Whether to use HBase checksums.<a name="line.1572"></a>
+<span class="sourceLineNo">1573</span>     *        If HBase checksum is switched off, then use HDFS checksum.<a name="line.1573"></a>
+<span class="sourceLineNo">1574</span>     * @return the HFileBlock or null if there is a HBase checksum mismatch<a name="line.1574"></a>
+<span class="sourceLineNo">1575</span>     */<a name="line.1575"></a>
+<span class="sourceLineNo">1576</span>    private HFileBlock readBlockDataInternal(FSDataInputStream is, long offset,<a name="line.1576"></a>
+<span class="sourceLineNo">1577</span>        long onDiskSizeWithHeaderL, int uncompressedSize, boolean pread,<a name="line.1577"></a>
+<span class="sourceLineNo">1578</span>        boolean verifyChecksum)<a name="line.1578"></a>
+<span class="sourceLineNo">1579</span>    throws IOException {<a name="line.1579"></a>
+<span class="sourceLineNo">1580</span>      if (offset &lt; 0) {<a name="line.1580"></a>
+<span class="sourceLineNo">1581</span>        throw new IOException("Invalid offset=" + offset + " trying to read "<a name="line.1581"></a>
+<span class="sourceLineNo">1582</span>            + "block (onDiskSize=" + onDiskSizeWithHeaderL<a name="line.1582"></a>
+<span class="sourceLineNo">1583</span>            + ", uncompressedSize=" + uncompressedSize + ")");<a name="line.1583"></a>
+<span class="sourceLineNo">1584</span>      }<a name="line.1584"></a>
+<span class="sourceLineNo">1585</span><a name="line.1585"></a>
+<span class="sourceLineNo">1586</span>      if (uncompressedSize != -1) {<a name="line.1586"></a>
+<span class="sourceLineNo">1587</span>        throw new IOException("Version 2 block reader API does not need " +<a name="line.1587"></a>
+<span class="sourceLineNo">1588</span>            "the uncompressed size parameter");<a name="line.1588"></a>
+<span class="sourceLineNo">1589</span>      }<a name="line.1589"></a>
+<span class="sourceLineNo">1590</span><a name="line.1590"></a>
+<span class="sourceLineNo">1591</span>      if ((onDiskSizeWithHeaderL &lt; hdrSize &amp;&amp; onDiskSizeWithHeaderL != -1)<a name="line.1591"></a>
+<span class="sourceLineNo">1592</span>          || onDiskSizeWithHeaderL &gt;= Integer.MAX_VALUE) {<a name="line.1592"></a>
+<span class="sourceLineNo">1593</span>        throw new IOException("Invalid onDisksize=" + onDiskSizeWithHeaderL<a name="line.1593"></a>
+<span class="sourceLineNo">1594</span>            + ": expected to be at least " + hdrSize<a name="line.1594"></a>
+<span class="sourceLineNo">1595</span>            + " and at most " + Integer.MAX_VALUE + ", or -1 (offset="<a name="line.1595"></a>
+<span class="sourceLineNo">1596</span>            + offset + ", uncompressedSize=" + uncompressedSize + ")");<a name="line.1596"></a>
+<span class="sourceLineNo">1597</span>      }<a name="line.1597"></a>
+<span class="sourceLineNo">1598</span><a name="line.1598"></a>
+<span class="sourceLineNo">1599</span>      int onDiskSizeWithHeader = (int) onDiskSizeWithHeaderL;<a name="line.1599"></a>
+<span class="sourceLineNo">1600</span>      // See if we can avoid reading the header. This is desirable, because<a name="line.1600"></a>
+<span class="sourc

<TRUNCATED>

[13/23] hbase-site git commit: Published site at 2cf8af5bf1d501156cbb3b421cf75c1051ead7d9.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32672884/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.PrefetchedHeader.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.PrefetchedHeader.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.PrefetchedHeader.html
index 745e703..1587e5e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.PrefetchedHeader.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileBlock.PrefetchedHeader.html
@@ -1361,609 +1361,610 @@
 <span class="sourceLineNo">1353</span>    /** The filesystem used to access data */<a name="line.1353"></a>
 <span class="sourceLineNo">1354</span>    protected HFileSystem hfs;<a name="line.1354"></a>
 <span class="sourceLineNo">1355</span><a name="line.1355"></a>
-<span class="sourceLineNo">1356</span>    /** The path (if any) where this data is coming from */<a name="line.1356"></a>
-<span class="sourceLineNo">1357</span>    protected Path path;<a name="line.1357"></a>
-<span class="sourceLineNo">1358</span><a name="line.1358"></a>
-<span class="sourceLineNo">1359</span>    private final Lock streamLock = new ReentrantLock();<a name="line.1359"></a>
+<span class="sourceLineNo">1356</span>    private final Lock streamLock = new ReentrantLock();<a name="line.1356"></a>
+<span class="sourceLineNo">1357</span><a name="line.1357"></a>
+<span class="sourceLineNo">1358</span>    /** The default buffer size for our buffered streams */<a name="line.1358"></a>
+<span class="sourceLineNo">1359</span>    public static final int DEFAULT_BUFFER_SIZE = 1 &lt;&lt; 20;<a name="line.1359"></a>
 <span class="sourceLineNo">1360</span><a name="line.1360"></a>
-<span class="sourceLineNo">1361</span>    /** The default buffer size for our buffered streams */<a name="line.1361"></a>
-<span class="sourceLineNo">1362</span>    public static final int DEFAULT_BUFFER_SIZE = 1 &lt;&lt; 20;<a name="line.1362"></a>
-<span class="sourceLineNo">1363</span><a name="line.1363"></a>
-<span class="sourceLineNo">1364</span>    protected HFileContext fileContext;<a name="line.1364"></a>
-<span class="sourceLineNo">1365</span><a name="line.1365"></a>
-<span class="sourceLineNo">1366</span>    public FSReaderImpl(FSDataInputStreamWrapper stream, long fileSize, HFileSystem hfs, Path path,<a name="line.1366"></a>
-<span class="sourceLineNo">1367</span>        HFileContext fileContext) throws IOException {<a name="line.1367"></a>
-<span class="sourceLineNo">1368</span>      this.fileSize = fileSize;<a name="line.1368"></a>
-<span class="sourceLineNo">1369</span>      this.hfs = hfs;<a name="line.1369"></a>
-<span class="sourceLineNo">1370</span>      this.path = path;<a name="line.1370"></a>
-<span class="sourceLineNo">1371</span>      this.fileContext = fileContext;<a name="line.1371"></a>
-<span class="sourceLineNo">1372</span>      this.hdrSize = headerSize(fileContext.isUseHBaseChecksum());<a name="line.1372"></a>
-<span class="sourceLineNo">1373</span><a name="line.1373"></a>
-<span class="sourceLineNo">1374</span>      this.streamWrapper = stream;<a name="line.1374"></a>
-<span class="sourceLineNo">1375</span>      // Older versions of HBase didn't support checksum.<a name="line.1375"></a>
-<span class="sourceLineNo">1376</span>      this.streamWrapper.prepareForBlockReader(!fileContext.isUseHBaseChecksum());<a name="line.1376"></a>
-<span class="sourceLineNo">1377</span>      defaultDecodingCtx = new HFileBlockDefaultDecodingContext(fileContext);<a name="line.1377"></a>
-<span class="sourceLineNo">1378</span>      encodedBlockDecodingCtx = defaultDecodingCtx;<a name="line.1378"></a>
-<span class="sourceLineNo">1379</span>    }<a name="line.1379"></a>
-<span class="sourceLineNo">1380</span><a name="line.1380"></a>
-<span class="sourceLineNo">1381</span>    /**<a name="line.1381"></a>
-<span class="sourceLineNo">1382</span>     * A constructor that reads files with the latest minor version.<a name="line.1382"></a>
-<span class="sourceLineNo">1383</span>     * This is used by unit tests only.<a name="line.1383"></a>
-<span class="sourceLineNo">1384</span>     */<a name="line.1384"></a>
-<span class="sourceLineNo">1385</span>    FSReaderImpl(FSDataInputStream istream, long fileSize, HFileContext fileContext)<a name="line.1385"></a>
-<span class="sourceLineNo">1386</span>    throws IOException {<a name="line.1386"></a>
-<span class="sourceLineNo">1387</span>      this(new FSDataInputStreamWrapper(istream), fileSize, null, null, fileContext);<a name="line.1387"></a>
-<span class="sourceLineNo">1388</span>    }<a name="line.1388"></a>
-<span class="sourceLineNo">1389</span><a name="line.1389"></a>
-<span class="sourceLineNo">1390</span>    public BlockIterator blockRange(final long startOffset, final long endOffset) {<a name="line.1390"></a>
-<span class="sourceLineNo">1391</span>      final FSReader owner = this; // handle for inner class<a name="line.1391"></a>
-<span class="sourceLineNo">1392</span>      return new BlockIterator() {<a name="line.1392"></a>
-<span class="sourceLineNo">1393</span>        private long offset = startOffset;<a name="line.1393"></a>
-<span class="sourceLineNo">1394</span><a name="line.1394"></a>
-<span class="sourceLineNo">1395</span>        @Override<a name="line.1395"></a>
-<span class="sourceLineNo">1396</span>        public HFileBlock nextBlock() throws IOException {<a name="line.1396"></a>
-<span class="sourceLineNo">1397</span>          if (offset &gt;= endOffset)<a name="line.1397"></a>
-<span class="sourceLineNo">1398</span>            return null;<a name="line.1398"></a>
-<span class="sourceLineNo">1399</span>          HFileBlock b = readBlockData(offset, -1, -1, false);<a name="line.1399"></a>
-<span class="sourceLineNo">1400</span>          offset += b.getOnDiskSizeWithHeader();<a name="line.1400"></a>
-<span class="sourceLineNo">1401</span>          return b.unpack(fileContext, owner);<a name="line.1401"></a>
-<span class="sourceLineNo">1402</span>        }<a name="line.1402"></a>
-<span class="sourceLineNo">1403</span><a name="line.1403"></a>
-<span class="sourceLineNo">1404</span>        @Override<a name="line.1404"></a>
-<span class="sourceLineNo">1405</span>        public HFileBlock nextBlockWithBlockType(BlockType blockType)<a name="line.1405"></a>
-<span class="sourceLineNo">1406</span>            throws IOException {<a name="line.1406"></a>
-<span class="sourceLineNo">1407</span>          HFileBlock blk = nextBlock();<a name="line.1407"></a>
-<span class="sourceLineNo">1408</span>          if (blk.getBlockType() != blockType) {<a name="line.1408"></a>
-<span class="sourceLineNo">1409</span>            throw new IOException("Expected block of type " + blockType<a name="line.1409"></a>
-<span class="sourceLineNo">1410</span>                + " but found " + blk.getBlockType());<a name="line.1410"></a>
-<span class="sourceLineNo">1411</span>          }<a name="line.1411"></a>
-<span class="sourceLineNo">1412</span>          return blk;<a name="line.1412"></a>
-<span class="sourceLineNo">1413</span>        }<a name="line.1413"></a>
-<span class="sourceLineNo">1414</span>      };<a name="line.1414"></a>
-<span class="sourceLineNo">1415</span>    }<a name="line.1415"></a>
-<span class="sourceLineNo">1416</span><a name="line.1416"></a>
-<span class="sourceLineNo">1417</span>    /**<a name="line.1417"></a>
-<span class="sourceLineNo">1418</span>     * Does a positional read or a seek and read into the given buffer. Returns<a name="line.1418"></a>
-<span class="sourceLineNo">1419</span>     * the on-disk size of the next block, or -1 if it could not be determined.<a name="line.1419"></a>
-<span class="sourceLineNo">1420</span>     *<a name="line.1420"></a>
-<span class="sourceLineNo">1421</span>     * @param dest destination buffer<a name="line.1421"></a>
-<span class="sourceLineNo">1422</span>     * @param destOffset offset in the destination buffer<a name="line.1422"></a>
-<span class="sourceLineNo">1423</span>     * @param size size of the block to be read<a name="line.1423"></a>
-<span class="sourceLineNo">1424</span>     * @param peekIntoNextBlock whether to read the next block's on-disk size<a name="line.1424"></a>
-<span class="sourceLineNo">1425</span>     * @param fileOffset position in the stream to read at<a name="line.1425"></a>
-<span class="sourceLineNo">1426</span>     * @param pread whether we should do a positional read<a name="line.1426"></a>
-<span class="sourceLineNo">1427</span>     * @param istream The input source of data<a name="line.1427"></a>
-<span class="sourceLineNo">1428</span>     * @return the on-disk size of the next block with header size included, or<a name="line.1428"></a>
-<span class="sourceLineNo">1429</span>     *         -1 if it could not be determined<a name="line.1429"></a>
-<span class="sourceLineNo">1430</span>     * @throws IOException<a name="line.1430"></a>
-<span class="sourceLineNo">1431</span>     */<a name="line.1431"></a>
-<span class="sourceLineNo">1432</span>    protected int readAtOffset(FSDataInputStream istream,<a name="line.1432"></a>
-<span class="sourceLineNo">1433</span>        byte[] dest, int destOffset, int size,<a name="line.1433"></a>
-<span class="sourceLineNo">1434</span>        boolean peekIntoNextBlock, long fileOffset, boolean pread)<a name="line.1434"></a>
-<span class="sourceLineNo">1435</span>        throws IOException {<a name="line.1435"></a>
-<span class="sourceLineNo">1436</span>      if (peekIntoNextBlock &amp;&amp;<a name="line.1436"></a>
-<span class="sourceLineNo">1437</span>          destOffset + size + hdrSize &gt; dest.length) {<a name="line.1437"></a>
-<span class="sourceLineNo">1438</span>        // We are asked to read the next block's header as well, but there is<a name="line.1438"></a>
-<span class="sourceLineNo">1439</span>        // not enough room in the array.<a name="line.1439"></a>
-<span class="sourceLineNo">1440</span>        throw new IOException("Attempted to read " + size + " bytes and " +<a name="line.1440"></a>
-<span class="sourceLineNo">1441</span>            hdrSize + " bytes of next header into a " + dest.length +<a name="line.1441"></a>
-<span class="sourceLineNo">1442</span>            "-byte array at offset " + destOffset);<a name="line.1442"></a>
-<span class="sourceLineNo">1443</span>      }<a name="line.1443"></a>
-<span class="sourceLineNo">1444</span><a name="line.1444"></a>
-<span class="sourceLineNo">1445</span>      if (!pread &amp;&amp; streamLock.tryLock()) {<a name="line.1445"></a>
-<span class="sourceLineNo">1446</span>        // Seek + read. Better for scanning.<a name="line.1446"></a>
-<span class="sourceLineNo">1447</span>        try {<a name="line.1447"></a>
-<span class="sourceLineNo">1448</span>          istream.seek(fileOffset);<a name="line.1448"></a>
-<span class="sourceLineNo">1449</span><a name="line.1449"></a>
-<span class="sourceLineNo">1450</span>          long realOffset = istream.getPos();<a name="line.1450"></a>
-<span class="sourceLineNo">1451</span>          if (realOffset != fileOffset) {<a name="line.1451"></a>
-<span class="sourceLineNo">1452</span>            throw new IOException("Tried to seek to " + fileOffset + " to "<a name="line.1452"></a>
-<span class="sourceLineNo">1453</span>                + "read " + size + " bytes, but pos=" + realOffset<a name="line.1453"></a>
-<span class="sourceLineNo">1454</span>                + " after seek");<a name="line.1454"></a>
-<span class="sourceLineNo">1455</span>          }<a name="line.1455"></a>
-<span class="sourceLineNo">1456</span><a name="line.1456"></a>
-<span class="sourceLineNo">1457</span>          if (!peekIntoNextBlock) {<a name="line.1457"></a>
-<span class="sourceLineNo">1458</span>            IOUtils.readFully(istream, dest, destOffset, size);<a name="line.1458"></a>
-<span class="sourceLineNo">1459</span>            return -1;<a name="line.1459"></a>
-<span class="sourceLineNo">1460</span>          }<a name="line.1460"></a>
-<span class="sourceLineNo">1461</span><a name="line.1461"></a>
-<span class="sourceLineNo">1462</span>          // Try to read the next block header.<a name="line.1462"></a>
-<span class="sourceLineNo">1463</span>          if (!readWithExtra(istream, dest, destOffset, size, hdrSize))<a name="line.1463"></a>
-<span class="sourceLineNo">1464</span>            return -1;<a name="line.1464"></a>
-<span class="sourceLineNo">1465</span>        } finally {<a name="line.1465"></a>
-<span class="sourceLineNo">1466</span>          streamLock.unlock();<a name="line.1466"></a>
-<span class="sourceLineNo">1467</span>        }<a name="line.1467"></a>
-<span class="sourceLineNo">1468</span>      } else {<a name="line.1468"></a>
-<span class="sourceLineNo">1469</span>        // Positional read. Better for random reads; or when the streamLock is already locked.<a name="line.1469"></a>
-<span class="sourceLineNo">1470</span>        int extraSize = peekIntoNextBlock ? hdrSize : 0;<a name="line.1470"></a>
-<span class="sourceLineNo">1471</span>        if (!positionalReadWithExtra(istream, fileOffset, dest, destOffset,<a name="line.1471"></a>
-<span class="sourceLineNo">1472</span>            size, extraSize)) {<a name="line.1472"></a>
-<span class="sourceLineNo">1473</span>          return -1;<a name="line.1473"></a>
-<span class="sourceLineNo">1474</span>        }<a name="line.1474"></a>
-<span class="sourceLineNo">1475</span>      }<a name="line.1475"></a>
-<span class="sourceLineNo">1476</span><a name="line.1476"></a>
-<span class="sourceLineNo">1477</span>      assert peekIntoNextBlock;<a name="line.1477"></a>
-<span class="sourceLineNo">1478</span>      return Bytes.toInt(dest, destOffset + size + BlockType.MAGIC_LENGTH) + hdrSize;<a name="line.1478"></a>
-<span class="sourceLineNo">1479</span>    }<a name="line.1479"></a>
-<span class="sourceLineNo">1480</span><a name="line.1480"></a>
-<span class="sourceLineNo">1481</span>    /**<a name="line.1481"></a>
-<span class="sourceLineNo">1482</span>     * Reads a version 2 block (version 1 blocks not supported and not expected). Tries to do as<a name="line.1482"></a>
-<span class="sourceLineNo">1483</span>     * little memory allocation as possible, using the provided on-disk size.<a name="line.1483"></a>
-<span class="sourceLineNo">1484</span>     *<a name="line.1484"></a>
-<span class="sourceLineNo">1485</span>     * @param offset the offset in the stream to read at<a name="line.1485"></a>
-<span class="sourceLineNo">1486</span>     * @param onDiskSizeWithHeaderL the on-disk size of the block, including<a name="line.1486"></a>
-<span class="sourceLineNo">1487</span>     *          the header, or -1 if unknown<a name="line.1487"></a>
-<span class="sourceLineNo">1488</span>     * @param uncompressedSize the uncompressed size of the the block. Always<a name="line.1488"></a>
-<span class="sourceLineNo">1489</span>     *          expected to be -1. This parameter is only used in version 1.<a name="line.1489"></a>
-<span class="sourceLineNo">1490</span>     * @param pread whether to use a positional read<a name="line.1490"></a>
-<span class="sourceLineNo">1491</span>     */<a name="line.1491"></a>
-<span class="sourceLineNo">1492</span>    @Override<a name="line.1492"></a>
-<span class="sourceLineNo">1493</span>    public HFileBlock readBlockData(long offset, long onDiskSizeWithHeaderL,<a name="line.1493"></a>
-<span class="sourceLineNo">1494</span>        int uncompressedSize, boolean pread)<a name="line.1494"></a>
-<span class="sourceLineNo">1495</span>    throws IOException {<a name="line.1495"></a>
-<span class="sourceLineNo">1496</span><a name="line.1496"></a>
-<span class="sourceLineNo">1497</span>      // get a copy of the current state of whether to validate<a name="line.1497"></a>
-<span class="sourceLineNo">1498</span>      // hbase checksums or not for this read call. This is not<a name="line.1498"></a>
-<span class="sourceLineNo">1499</span>      // thread-safe but the one constaint is that if we decide<a name="line.1499"></a>
-<span class="sourceLineNo">1500</span>      // to skip hbase checksum verification then we are<a name="line.1500"></a>
-<span class="sourceLineNo">1501</span>      // guaranteed to use hdfs checksum verification.<a name="line.1501"></a>
-<span class="sourceLineNo">1502</span>      boolean doVerificationThruHBaseChecksum = streamWrapper.shouldUseHBaseChecksum();<a name="line.1502"></a>
-<span class="sourceLineNo">1503</span>      FSDataInputStream is = streamWrapper.getStream(doVerificationThruHBaseChecksum);<a name="line.1503"></a>
-<span class="sourceLineNo">1504</span><a name="line.1504"></a>
-<span class="sourceLineNo">1505</span>      HFileBlock blk = readBlockDataInternal(is, offset,<a name="line.1505"></a>
-<span class="sourceLineNo">1506</span>                         onDiskSizeWithHeaderL,<a name="line.1506"></a>
-<span class="sourceLineNo">1507</span>                         uncompressedSize, pread,<a name="line.1507"></a>
-<span class="sourceLineNo">1508</span>                         doVerificationThruHBaseChecksum);<a name="line.1508"></a>
-<span class="sourceLineNo">1509</span>      if (blk == null) {<a name="line.1509"></a>
-<span class="sourceLineNo">1510</span>        HFile.LOG.warn("HBase checksum verification failed for file " +<a name="line.1510"></a>
-<span class="sourceLineNo">1511</span>                       path + " at offset " +<a name="line.1511"></a>
-<span class="sourceLineNo">1512</span>                       offset + " filesize " + fileSize +<a name="line.1512"></a>
-<span class="sourceLineNo">1513</span>                       ". Retrying read with HDFS checksums turned on...");<a name="line.1513"></a>
-<span class="sourceLineNo">1514</span><a name="line.1514"></a>
-<span class="sourceLineNo">1515</span>        if (!doVerificationThruHBaseChecksum) {<a name="line.1515"></a>
-<span class="sourceLineNo">1516</span>          String msg = "HBase checksum verification failed for file " +<a name="line.1516"></a>
-<span class="sourceLineNo">1517</span>                       path + " at offset " +<a name="line.1517"></a>
-<span class="sourceLineNo">1518</span>                       offset + " filesize " + fileSize +<a name="line.1518"></a>
-<span class="sourceLineNo">1519</span>                       " but this cannot happen because doVerify is " +<a name="line.1519"></a>
-<span class="sourceLineNo">1520</span>                       doVerificationThruHBaseChecksum;<a name="line.1520"></a>
-<span class="sourceLineNo">1521</span>          HFile.LOG.warn(msg);<a name="line.1521"></a>
-<span class="sourceLineNo">1522</span>          throw new IOException(msg); // cannot happen case here<a name="line.1522"></a>
-<span class="sourceLineNo">1523</span>        }<a name="line.1523"></a>
-<span class="sourceLineNo">1524</span>        HFile.checksumFailures.incrementAndGet(); // update metrics<a name="line.1524"></a>
-<span class="sourceLineNo">1525</span><a name="line.1525"></a>
-<span class="sourceLineNo">1526</span>        // If we have a checksum failure, we fall back into a mode where<a name="line.1526"></a>
-<span class="sourceLineNo">1527</span>        // the next few reads use HDFS level checksums. We aim to make the<a name="line.1527"></a>
-<span class="sourceLineNo">1528</span>        // next CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD reads avoid<a name="line.1528"></a>
-<span class="sourceLineNo">1529</span>        // hbase checksum verification, but since this value is set without<a name="line.1529"></a>
-<span class="sourceLineNo">1530</span>        // holding any locks, it can so happen that we might actually do<a name="line.1530"></a>
-<span class="sourceLineNo">1531</span>        // a few more than precisely this number.<a name="line.1531"></a>
-<span class="sourceLineNo">1532</span>        is = this.streamWrapper.fallbackToFsChecksum(CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD);<a name="line.1532"></a>
-<span class="sourceLineNo">1533</span>        doVerificationThruHBaseChecksum = false;<a name="line.1533"></a>
-<span class="sourceLineNo">1534</span>        blk = readBlockDataInternal(is, offset, onDiskSizeWithHeaderL,<a name="line.1534"></a>
-<span class="sourceLineNo">1535</span>                                    uncompressedSize, pread,<a name="line.1535"></a>
-<span class="sourceLineNo">1536</span>                                    doVerificationThruHBaseChecksum);<a name="line.1536"></a>
-<span class="sourceLineNo">1537</span>        if (blk != null) {<a name="line.1537"></a>
-<span class="sourceLineNo">1538</span>          HFile.LOG.warn("HDFS checksum verification suceeded for file " +<a name="line.1538"></a>
-<span class="sourceLineNo">1539</span>                         path + " at offset " +<a name="line.1539"></a>
-<span class="sourceLineNo">1540</span>                         offset + " filesize " + fileSize);<a name="line.1540"></a>
-<span class="sourceLineNo">1541</span>        }<a name="line.1541"></a>
-<span class="sourceLineNo">1542</span>      }<a name="line.1542"></a>
-<span class="sourceLineNo">1543</span>      if (blk == null &amp;&amp; !doVerificationThruHBaseChecksum) {<a name="line.1543"></a>
-<span class="sourceLineNo">1544</span>        String msg = "readBlockData failed, possibly due to " +<a name="line.1544"></a>
-<span class="sourceLineNo">1545</span>                     "checksum verification failed for file " + path +<a name="line.1545"></a>
-<span class="sourceLineNo">1546</span>                     " at offset " + offset + " filesize " + fileSize;<a name="line.1546"></a>
-<span class="sourceLineNo">1547</span>        HFile.LOG.warn(msg);<a name="line.1547"></a>
-<span class="sourceLineNo">1548</span>        throw new IOException(msg);<a name="line.1548"></a>
-<span class="sourceLineNo">1549</span>      }<a name="line.1549"></a>
-<span class="sourceLineNo">1550</span><a name="line.1550"></a>
-<span class="sourceLineNo">1551</span>      // If there is a checksum mismatch earlier, then retry with<a name="line.1551"></a>
-<span class="sourceLineNo">1552</span>      // HBase checksums switched off and use HDFS checksum verification.<a name="line.1552"></a>
-<span class="sourceLineNo">1553</span>      // This triggers HDFS to detect and fix corrupt replicas. The<a name="line.1553"></a>
-<span class="sourceLineNo">1554</span>      // next checksumOffCount read requests will use HDFS checksums.<a name="line.1554"></a>
-<span class="sourceLineNo">1555</span>      // The decrementing of this.checksumOffCount is not thread-safe,<a name="line.1555"></a>
-<span class="sourceLineNo">1556</span>      // but it is harmless because eventually checksumOffCount will be<a name="line.1556"></a>
-<span class="sourceLineNo">1557</span>      // a negative number.<a name="line.1557"></a>
-<span class="sourceLineNo">1558</span>      streamWrapper.checksumOk();<a name="line.1558"></a>
-<span class="sourceLineNo">1559</span>      return blk;<a name="line.1559"></a>
-<span class="sourceLineNo">1560</span>    }<a name="line.1560"></a>
-<span class="sourceLineNo">1561</span><a name="line.1561"></a>
-<span class="sourceLineNo">1562</span>    /**<a name="line.1562"></a>
-<span class="sourceLineNo">1563</span>     * Reads a version 2 block.<a name="line.1563"></a>
-<span class="sourceLineNo">1564</span>     *<a name="line.1564"></a>
-<span class="sourceLineNo">1565</span>     * @param offset the offset in the stream to read at<a name="line.1565"></a>
-<span class="sourceLineNo">1566</span>     * @param onDiskSizeWithHeaderL the on-disk size of the block, including<a name="line.1566"></a>
-<span class="sourceLineNo">1567</span>     *          the header, or -1 if unknown<a name="line.1567"></a>
-<span class="sourceLineNo">1568</span>     * @param uncompressedSize the uncompressed size of the the block. Always<a name="line.1568"></a>
-<span class="sourceLineNo">1569</span>     *          expected to be -1. This parameter is only used in version 1.<a name="line.1569"></a>
-<span class="sourceLineNo">1570</span>     * @param pread whether to use a positional read<a name="line.1570"></a>
-<span class="sourceLineNo">1571</span>     * @param verifyChecksum Whether to use HBase checksums.<a name="line.1571"></a>
-<span class="sourceLineNo">1572</span>     *        If HBase checksum is switched off, then use HDFS checksum.<a name="line.1572"></a>
-<span class="sourceLineNo">1573</span>     * @return the HFileBlock or null if there is a HBase checksum mismatch<a name="line.1573"></a>
-<span class="sourceLineNo">1574</span>     */<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span>    private HFileBlock readBlockDataInternal(FSDataInputStream is, long offset,<a name="line.1575"></a>
-<span class="sourceLineNo">1576</span>        long onDiskSizeWithHeaderL, int uncompressedSize, boolean pread,<a name="line.1576"></a>
-<span class="sourceLineNo">1577</span>        boolean verifyChecksum)<a name="line.1577"></a>
-<span class="sourceLineNo">1578</span>    throws IOException {<a name="line.1578"></a>
-<span class="sourceLineNo">1579</span>      if (offset &lt; 0) {<a name="line.1579"></a>
-<span class="sourceLineNo">1580</span>        throw new IOException("Invalid offset=" + offset + " trying to read "<a name="line.1580"></a>
-<span class="sourceLineNo">1581</span>            + "block (onDiskSize=" + onDiskSizeWithHeaderL<a name="line.1581"></a>
-<span class="sourceLineNo">1582</span>            + ", uncompressedSize=" + uncompressedSize + ")");<a name="line.1582"></a>
-<span class="sourceLineNo">1583</span>      }<a name="line.1583"></a>
-<span class="sourceLineNo">1584</span><a name="line.1584"></a>
-<span class="sourceLineNo">1585</span>      if (uncompressedSize != -1) {<a name="line.1585"></a>
-<span class="sourceLineNo">1586</span>        throw new IOException("Version 2 block reader API does not need " +<a name="line.1586"></a>
-<span class="sourceLineNo">1587</span>            "the uncompressed size parameter");<a name="line.1587"></a>
-<span class="sourceLineNo">1588</span>      }<a name="line.1588"></a>
-<span class="sourceLineNo">1589</span><a name="line.1589"></a>
-<span class="sourceLineNo">1590</span>      if ((onDiskSizeWithHeaderL &lt; hdrSize &amp;&amp; onDiskSizeWithHeaderL != -1)<a name="line.1590"></a>
-<span class="sourceLineNo">1591</span>          || onDiskSizeWithHeaderL &gt;= Integer.MAX_VALUE) {<a name="line.1591"></a>
-<span class="sourceLineNo">1592</span>        throw new IOException("Invalid onDisksize=" + onDiskSizeWithHeaderL<a name="line.1592"></a>
-<span class="sourceLineNo">1593</span>            + ": expected to be at least " + hdrSize<a name="line.1593"></a>
-<span class="sourceLineNo">1594</span>            + " and at most " + Integer.MAX_VALUE + ", or -1 (offset="<a name="line.1594"></a>
-<span class="sourceLineNo">1595</span>            + offset + ", uncompressedSize=" + uncompressedSize + ")");<a name="line.1595"></a>
-<span class="sourceLineNo">1596</span>      }<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span><a name="line.1597"></a>
-<span class="sourceLineNo">1598</span>      int onDiskSizeWithHeader = (int) onDiskSizeWithHeaderL;<a name="line.1598"></a>
-<span class="sourceLineNo">1599</span>      // See if we can avoid reading the header. This is desirable, because<a name="line.1599"></a>
-<span class="sourceLineNo">1600</span>      // we will not incur a backward seek operation if we have already<a name="line.1600"></a>
-<span class="sourceLineNo">1601</span>      // read this block's header as part of the previous read's look-ahead.<a name="line.1601"></a>
-<span class="sourceLineNo">1602</span>      // And we also want to skip reading the header again if it has already<a name="line.1602"></a>
-<span class="sourceLineNo">1603</span>      // been read.<a name="line.1603"></a>
-<span class="sourceLineNo">1604</span>      // TODO: How often does this optimization fire? Has to be same thread so the thread local<a name="line.1604"></a>
-<span class="sourceLineNo">1605</span>      // is pertinent and we have to be reading next block as in a big scan.<a name="line.1605"></a>
-<span class="sourceLineNo">1606</span>      PrefetchedHeader prefetchedHeader = prefetchedHeaderForThread.get();<a name="line.1606"></a>
-<span class="sourceLineNo">1607</span>      ByteBuffer headerBuf = prefetchedHeader.offset == offset? prefetchedHeader.buf: null;<a name="line.1607"></a>
-<span class="sourceLineNo">1608</span><a name="line.1608"></a>
-<span class="sourceLineNo">1609</span>      // Allocate enough space to fit the next block's header too.<a name="line.1609"></a>
-<span class="sourceLineNo">1610</span>      int nextBlockOnDiskSize = 0;<a name="line.1610"></a>
-<span class="sourceLineNo">1611</span>      byte[] onDiskBlock = null;<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span><a name="line.1612"></a>
-<span class="sourceLineNo">1613</span>      HFileBlock b = null;<a name="line.1613"></a>
-<span class="sourceLineNo">1614</span>      if (onDiskSizeWithHeader &gt; 0) {<a name="line.1614"></a>
-<span class="sourceLineNo">1615</span>        // We know the total on-disk size. Read the entire block into memory,<a name="line.1615"></a>
-<span class="sourceLineNo">1616</span>        // then parse the header. This code path is used when<a name="line.1616"></a>
-<span class="sourceLineNo">1617</span>        // doing a random read operation relying on the block index, as well as<a name="line.1617"></a>
-<span class="sourceLineNo">1618</span>        // when the client knows the on-disk size from peeking into the next<a name="line.1618"></a>
-<span class="sourceLineNo">1619</span>        // block's header (e.g. this block's header) when reading the previous<a name="line.1619"></a>
-<span class="sourceLineNo">1620</span>        // block. This is the faster and more preferable case.<a name="line.1620"></a>
-<span class="sourceLineNo">1621</span><a name="line.1621"></a>
-<span class="sourceLineNo">1622</span>        // Size that we have to skip in case we have already read the header.<a name="line.1622"></a>
-<span class="sourceLineNo">1623</span>        int preReadHeaderSize = headerBuf == null ? 0 : hdrSize;<a name="line.1623"></a>
-<span class="sourceLineNo">1624</span>        onDiskBlock = new byte[onDiskSizeWithHeader + hdrSize]; // room for this block plus the<a name="line.1624"></a>
-<span class="sourceLineNo">1625</span>                                                                // next block's header<a name="line.1625"></a>
-<span class="sourceLineNo">1626</span>        nextBlockOnDiskSize = readAtOffset(is, onDiskBlock,<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span>            preReadHeaderSize, onDiskSizeWithHeader - preReadHeaderSize,<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span>            true, offset + preReadHeaderSize, pread);<a name="line.1628"></a>
-<span class="sourceLineNo">1629</span>        if (headerBuf != null) {<a name="line.1629"></a>
-<span class="sourceLineNo">1630</span>          // the header has been read when reading the previous block, copy<a name="line.1630"></a>
-<span class="sourceLineNo">1631</span>          // to this block's header<a name="line.1631"></a>
-<span class="sourceLineNo">1632</span>          // headerBuf is HBB<a name="line.1632"></a>
-<span class="sourceLineNo">1633</span>          assert headerBuf.hasArray();<a name="line.1633"></a>
-<span class="sourceLineNo">1634</span>          System.arraycopy(headerBuf.array(),<a name="line.1634"></a>
-<span class="sourceLineNo">1635</span>              headerBuf.arrayOffset(), onDiskBlock, 0, hdrSize);<a name="line.1635"></a>
-<span class="sourceLineNo">1636</span>        } else {<a name="line.1636"></a>
-<span class="sourceLineNo">1637</span>          headerBuf = ByteBuffer.wrap(onDiskBlock, 0, hdrSize);<a name="line.1637"></a>
-<span class="sourceLineNo">1638</span>        }<a name="line.1638"></a>
-<span class="sourceLineNo">1639</span>        // We know the total on-disk size but not the uncompressed size. Parse the header.<a name="line.1639"></a>
-<span class="sourceLineNo">1640</span>        try {<a name="line.1640"></a>
-<span class="sourceLineNo">1641</span>          // TODO: FIX!!! Expensive parse just to get a length<a name="line.1641"></a>
-<span class="sourceLineNo">1642</span>          b = new HFileBlock(headerBuf, fileContext.isUseHBaseChecksum());<a name="line.1642"></a>
-<span class="sourceLineNo">1643</span>        } catch (IOException ex) {<a name="line.1643"></a>
-<span class="sourceLineNo">1644</span>          // Seen in load testing. Provide comprehensive debug info.<a name="line.1644"></a>
-<span class="sourceLineNo">1645</span>          throw new IOException("Failed to read compressed block at "<a name="line.1645"></a>
-<span class="sourceLineNo">1646</span>              + offset<a name="line.1646"></a>
-<span class="sourceLineNo">1647</span>              + ", onDiskSizeWithoutHeader="<a name="line.1647"></a>
-<span class="sourceLineNo">1648</span>              + onDiskSizeWithHeader<a name="line.1648"></a>
-<span class="sourceLineNo">1649</span>              + ", preReadHeaderSize="<a name="line.1649"></a>
-<span class="sourceLineNo">1650</span>              + hdrSize<a name="line.1650"></a>
-<span class="sourceLineNo">1651</span>              + ", header.length="<a name="line.1651"></a>
-<span class="sourceLineNo">1652</span>              + prefetchedHeader.header.length<a name="line.1652"></a>
-<span class="sourceLineNo">1653</span>              + ", header bytes: "<a name="line.1653"></a>
-<span class="sourceLineNo">1654</span>              + Bytes.toStringBinary(prefetchedHeader.header, 0,<a name="line.1654"></a>
-<span class="sourceLineNo">1655</span>                  hdrSize), ex);<a name="line.1655"></a>
-<span class="sourceLineNo">1656</span>        }<a name="line.1656"></a>
-<span class="sourceLineNo">1657</span>        // if the caller specifies a onDiskSizeWithHeader, validate it.<a name="line.1657"></a>
-<span class="sourceLineNo">1658</span>        int onDiskSizeWithoutHeader = onDiskSizeWithHeader - hdrSize;<a name="line.1658"></a>
-<span class="sourceLineNo">1659</span>        assert onDiskSizeWithoutHeader &gt;= 0;<a name="line.1659"></a>
-<span class="sourceLineNo">1660</span>        b.validateOnDiskSizeWithoutHeader(onDiskSizeWithoutHeader);<a name="line.1660"></a>
-<span class="sourceLineNo">1661</span>      } else {<a name="line.1661"></a>
-<span class="sourceLineNo">1662</span>        // Check headerBuf to see if we have read this block's header as part of<a name="line.1662"></a>
-<span class="sourceLineNo">1663</span>        // reading the previous block. This is an optimization of peeking into<a name="line.1663"></a>
-<span class="sourceLineNo">1664</span>        // the next block's header (e.g.this block's header) when reading the<a name="line.1664"></a>
-<span class="sourceLineNo">1665</span>        // previous block. This is the faster and more preferable case. If the<a name="line.1665"></a>
-<span class="sourceLineNo">1666</span>        // header is already there, don't read the header again.<a name="line.1666"></a>
-<span class="sourceLineNo">1667</span><a name="line.1667"></a>
-<span class="sourceLineNo">1668</span>        // Unfortunately, we still have to do a separate read operation to<a name="line.1668"></a>
-<span class="sourceLineNo">1669</span>        // read the header.<a name="line.1669"></a>
-<span class="sourceLineNo">1670</span>        if (headerBuf == null) {<a name="line.1670"></a>
-<span class="sourceLineNo">1671</span>          // From the header, determine the on-disk size of the given hfile<a name="line.1671"></a>
-<span class="sourceLineNo">1672</span>          // block, and read the remaining data, thereby incurring two read<a name="line.1672"></a>
-<span class="sourceLineNo">1673</span>          // operations. This might happen when we are doing the first read<a name="line.1673"></a>
-<span class="sourceLineNo">1674</span>          // in a series of reads or a random read, and we don't have access<a name="line.1674"></a>
-<span class="sourceLineNo">1675</span>          // to the block index. This is costly and should happen very rarely.<a name="line.1675"></a>
-<span class="sourceLineNo">1676</span>          headerBuf = ByteBuffer.allocate(hdrSize);<a name="line.1676"></a>
-<span class="sourceLineNo">1677</span>          // headerBuf is HBB<a name="line.1677"></a>
-<span class="sourceLineNo">1678</span>          readAtOffset(is, headerBuf.array(), headerBuf.arrayOffset(),<a name="line.1678"></a>
-<span class="sourceLineNo">1679</span>              hdrSize, false, offset, pread);<a name="line.1679"></a>
-<span class="sourceLineNo">1680</span>        }<a name="line.1680"></a>
-<span class="sourceLineNo">1681</span>        // TODO: FIX!!! Expensive parse just to get a length<a name="line.1681"></a>
-<span class="sourceLineNo">1682</span>        b = new HFileBlock(headerBuf, fileContext.isUseHBaseChecksum());<a name="line.1682"></a>
-<span class="sourceLineNo">1683</span>        onDiskBlock = new byte[b.getOnDiskSizeWithHeader() + hdrSize];<a name="line.1683"></a>
-<span class="sourceLineNo">1684</span>        // headerBuf is HBB<a name="line.1684"></a>
-<span class="sourceLineNo">1685</span>        System.arraycopy(headerBuf.array(), headerBuf.arrayOffset(), onDiskBlock, 0, hdrSize);<a name="line.1685"></a>
-<span class="sourceLineNo">1686</span>        nextBlockOnDiskSize =<a name="line.1686"></a>
-<span class="sourceLineNo">1687</span>          readAtOffset(is, onDiskBlock, hdrSize, b.getOnDiskSizeWithHeader()<a name="line.1687"></a>
-<span class="sourceLineNo">1688</span>              - hdrSize, true, offset + hdrSize, pread);<a name="line.1688"></a>
-<span class="sourceLineNo">1689</span>        onDiskSizeWithHeader = b.onDiskSizeWithoutHeader + hdrSize;<a name="line.1689"></a>
-<span class="sourceLineNo">1690</span>      }<a name="line.1690"></a>
-<span class="sourceLineNo">1691</span><a name="line.1691"></a>
-<span class="sourceLineNo">1692</span>      if (!fileContext.isCompressedOrEncrypted()) {<a name="line.1692"></a>
-<span class="sourceLineNo">1693</span>        b.assumeUncompressed();<a name="line.1693"></a>
-<span class="sourceLineNo">1694</span>      }<a name="line.1694"></a>
-<span class="sourceLineNo">1695</span><a name="line.1695"></a>
-<span class="sourceLineNo">1696</span>      if (verifyChecksum &amp;&amp; !validateBlockChecksum(b, onDiskBlock, hdrSize)) {<a name="line.1696"></a>
-<span class="sourceLineNo">1697</span>        return null;             // checksum mismatch<a name="line.1697"></a>
-<span class="sourceLineNo">1698</span>      }<a name="line.1698"></a>
-<span class="sourceLineNo">1699</span><a name="line.1699"></a>
-<span class="sourceLineNo">1700</span>      // The onDiskBlock will become the headerAndDataBuffer for this block.<a name="line.1700"></a>
-<span class="sourceLineNo">1701</span>      // If nextBlockOnDiskSizeWithHeader is not zero, the onDiskBlock already<a name="line.1701"></a>
-<span class="sourceLineNo">1702</span>      // contains the header of next block, so no need to set next<a name="line.1702"></a>
-<span class="sourceLineNo">1703</span>      // block's header in it.<a name="line.1703"></a>
-<span class="sourceLineNo">1704</span>      b = new HFileBlock(ByteBuffer.wrap(onDiskBlock, 0, onDiskSizeWithHeader),<a name="line.1704"></a>
-<span class="sourceLineNo">1705</span>        this.fileContext.isUseHBaseChecksum());<a name="line.1705"></a>
-<span class="sourceLineNo">1706</span><a name="line.1706"></a>
-<span class="sourceLineNo">1707</span>      b.nextBlockOnDiskSizeWithHeader = nextBlockOnDiskSize;<a name="line.1707"></a>
-<span class="sourceLineNo">1708</span><a name="line.1708"></a>
-<span class="sourceLineNo">1709</span>      // Set prefetched header<a name="line.1709"></a>
-<span class="sourceLineNo">1710</span>      if (b.hasNextBlockHeader()) {<a name="line.1710"></a>
-<span class="sourceLineNo">1711</span>        prefetchedHeader.offset = offset + b.getOnDiskSizeWithHeader();<a name="line.1711"></a>
-<span class="sourceLineNo">1712</span>        System.arraycopy(onDiskBlock, onDiskSizeWithHeader, prefetchedHeader.header, 0, hdrSize);<a name="line.1712"></a>
-<span class="sourceLineNo">1713</span>      }<a name="line.1713"></a>
-<span class="sourceLineNo">1714</span><a name="line.1714"></a>
-<span class="sourceLineNo">1715</span>      b.offset = offset;<a name="line.1715"></a>
-<span class="sourceLineNo">1716</span>      b.fileContext.setIncludesTags(this.fileContext.isIncludesTags());<a name="line.1716"></a>
-<span class="sourceLineNo">1717</span>      b.fileContext.setIncludesMvcc(this.fileContext.isIncludesMvcc());<a name="line.1717"></a>
-<span class="sourceLineNo">1718</span>      return b;<a name="line.1718"></a>
-<span class="sourceLineNo">1719</span>    }<a name="line.1719"></a>
-<span class="sourceLineNo">1720</span><a name="line.1720"></a>
-<span class="sourceLineNo">1721</span>    public void setIncludesMemstoreTS(boolean includesMemstoreTS) {<a name="line.1721"></a>
-<span class="sourceLineNo">1722</span>      this.fileContext.setIncludesMvcc(includesMemstoreTS);<a name="line.1722"></a>
-<span class="sourceLineNo">1723</span>    }<a name="line.1723"></a>
-<span class="sourceLineNo">1724</span><a name="line.1724"></a>
-<span class="sourceLineNo">1725</span>    public void setDataBlockEncoder(HFileDataBlockEncoder encoder) {<a name="line.1725"></a>
-<span class="sourceLineNo">1726</span>      encodedBlockDecodingCtx = encoder.newDataBlockDecodingContext(this.fileContext);<a name="line.1726"></a>
-<span class="sourceLineNo">1727</span>    }<a name="line.1727"></a>
-<span class="sourceLineNo">1728</span><a name="line.1728"></a>
-<span class="sourceLineNo">1729</span>    @Override<a name="line.1729"></a>
-<span class="sourceLineNo">1730</span>    public HFileBlockDecodingContext getBlockDecodingContext() {<a name="line.1730"></a>
-<span class="sourceLineNo">1731</span>      return this.encodedBlockDecodingCtx;<a name="line.1731"></a>
-<span class="sourceLineNo">1732</span>    }<a name="line.1732"></a>
-<span class="sourceLineNo">1733</span><a name="line.1733"></a>
-<span class="sourceLineNo">1734</span>    @Override<a name="line.1734"></a>
-<span class="sourceLineNo">1735</span>    public HFileBlockDecodingContext getDefaultBlockDecodingContext() {<a name="line.1735"></a>
-<span class="sourceLineNo">1736</span>      return this.defaultDecodingCtx;<a name="line.1736"></a>
-<span class="sourceLineNo">1737</span>    }<a name="line.1737"></a>
-<span class="sourceLineNo">1738</span><a name="line.1738"></a>
-<span class="sourceLineNo">1739</span>    /**<a name="line.1739"></a>
-<span class="sourceLineNo">1740</span>     * Generates the checksum for the header as well as the data and<a name="line.1740"></a>
-<span class="sourceLineNo">1741</span>     * then validates that it matches the value stored in the header.<a name="line.1741"></a>
-<span class="sourceLineNo">1742</span>     * If there is a checksum mismatch, then return false. Otherwise<a name="line.1742"></a>
-<span class="sourceLineNo">1743</span>     * return true.<a name="line.1743"></a>
-<span class="sourceLineNo">1744</span>     */<a name="line.1744"></a>
-<span class="sourceLineNo">1745</span>    protected boolean validateBlockChecksum(HFileBlock block,  byte[] data, int hdrSize)<a name="line.1745"></a>
-<span class="sourceLineNo">1746</span>        throws IOException {<a name="line.1746"></a>
-<span class="sourceLineNo">1747</span>      return ChecksumUtil.validateBlockChecksum(path, block, data, hdrSize);<a name="line.1747"></a>
-<span class="sourceLineNo">1748</span>    }<a name="line.1748"></a>
-<span class="sourceLineNo">1749</span><a name="line.1749"></a>
-<span class="sourceLineNo">1750</span>    @Override<a name="line.1750"></a>
-<span class="sourceLineNo">1751</span>    public void closeStreams() throws IOException {<a name="line.1751"></a>
-<span class="sourceLineNo">1752</span>      streamWrapper.close();<a name="line.1752"></a>
-<span class="sourceLineNo">1753</span>    }<a name="line.1753"></a>
-<span class="sourceLineNo">1754</span><a name="line.1754"></a>
-<span class="sourceLineNo">1755</span>    @Override<a name="line.1755"></a>
-<span class="sourceLineNo">1756</span>    public String toString() {<a name="line.1756"></a>
-<span class="sourceLineNo">1757</span>      return "hfs=" + hfs + ", path=" + path + ", fileContext=" + fileContext;<a name="line.1757"></a>
-<span class="sourceLineNo">1758</span>    }<a name="line.1758"></a>
-<span class="sourceLineNo">1759</span>  }<a name="line.1759"></a>
-<span class="sourceLineNo">1760</span><a name="line.1760"></a>
-<span class="sourceLineNo">1761</span>  @Override<a name="line.1761"></a>
-<span class="sourceLineNo">1762</span>  public int getSerializedLength() {<a name="line.1762"></a>
-<span class="sourceLineNo">1763</span>    if (buf != null) {<a name="line.1763"></a>
-<span class="sourceLineNo">1764</span>      // include extra bytes for the next header when it's available.<a name="line.1764"></a>
-<span class="sourceLineNo">1765</span>      int extraSpace = hasNextBlockHeader() ? headerSize() : 0;<a name="line.1765"></a>
-<span class="sourceLineNo">1766</span>      return this.buf.limit() + extraSpace + HFileBlock.EXTRA_SERIALIZATION_SPACE;<a name="line.1766"></a>
-<span class="sourceLineNo">1767</span>    }<a name="line.1767"></a>
-<span class="sourceLineNo">1768</span>    return 0;<a name="line.1768"></a>
-<span class="sourceLineNo">1769</span>  }<a name="line.1769"></a>
-<span class="sourceLineNo">1770</span><a name="line.1770"></a>
-<span class="sourceLineNo">1771</span>  @Override<a name="line.1771"></a>
-<span class="sourceLineNo">1772</span>  public void serialize(ByteBuffer destination) {<a name="line.1772"></a>
-<span class="sourceLineNo">1773</span>    this.buf.get(destination, 0, getSerializedLength()<a name="line.1773"></a>
-<span class="sourceLineNo">1774</span>        - EXTRA_SERIALIZATION_SPACE);<a name="line.1774"></a>
-<span class="sourceLineNo">1775</span>    serializeExtraInfo(destination);<a name="line.1775"></a>
-<span class="sourceLineNo">1776</span>  }<a name="line.1776"></a>
-<span class="sourceLineNo">1777</span><a name="line.1777"></a>
-<span class="sourceLineNo">1778</span>  public void serializeExtraInfo(ByteBuffer destination) {<a name="line.1778"></a>
-<span class="sourceLineNo">1779</span>    destination.put(this.fileContext.isUseHBaseChecksum() ? (byte) 1 : (byte) 0);<a name="line.1779"></a>
-<span class="sourceLineNo">1780</span>    destination.putLong(this.offset);<a name="line.1780"></a>
-<span class="sourceLineNo">1781</span>    destination.putInt(this.nextBlockOnDiskSizeWithHeader);<a name="line.1781"></a>
-<span class="sourceLineNo">1782</span>    destination.rewind();<a name="line.1782"></a>
-<span class="sourceLineNo">1783</span>  }<a name="line.1783"></a>
-<span class="sourceLineNo">1784</span><a name="line.1784"></a>
-<span class="sourceLineNo">1785</span>  @Override<a name="line.1785"></a>
-<span class="sourceLineNo">1786</span>  public CacheableDeserializer&lt;Cacheable&gt; getDeserializer() {<a name="line.1786"></a>
-<span class="sourceLineNo">1787</span>    return HFileBlock.blockDeserializer;<a name="line.1787"></a>
-<span class="sourceLineNo">1788</span>  }<a name="line.1788"></a>
-<span class="sourceLineNo">1789</span><a name="line.1789"></a>
-<span class="sourceLineNo">1790</span>  @Override<a name="line.1790"></a>
-<span class="sourceLineNo">1791</span>  public int hashCode() {<a name="line.1791"></a>
-<span class="sourceLineNo">1792</span>    int result = 1;<a name="line.1792"></a>
-<span class="sourceLineNo">1793</span>    result = result * 31 + blockType.hashCode();<a name="line.1793"></a>
-<span class="sourceLineNo">1794</span>    result = result * 31 + nextBlockOnDiskSizeWithHeader;<a name="line.1794"></a>
-<span class="sourceLineNo">1795</span>    result = result * 31 + (int) (offset ^ (offset &gt;&gt;&gt; 32));<a name="line.1795"></a>
-<span class="sourceLineNo">1796</span>    result = result * 31 + onDiskSizeWithoutHeader;<a name="line.1796"></a>
-<span class="sourceLineNo">1797</span>    result = result * 31 + (int) (prevBlockOffset ^ (prevBlockOffset &gt;&gt;&gt; 32));<a name="line.1797"></a>
-<span class="sourceLineNo">1798</span>    result = result * 31 + uncompressedSizeWithoutHeader;<a name="line.1798"></a>
-<span class="sourceLineNo">1799</span>    result = result * 31 + buf.hashCode();<a name="line.1799"></a>
-<span class="sourceLineNo">1800</span>    return result;<a name="line.1800"></a>
-<span class="sourceLineNo">1801</span>  }<a name="line.1801"></a>
-<span class="sourceLineNo">1802</span><a name="line.1802"></a>
-<span class="sourceLineNo">1803</span>  @Override<a name="line.1803"></a>
-<span class="sourceLineNo">1804</span>  public boolean equals(Object comparison) {<a name="line.1804"></a>
-<span class="sourceLineNo">1805</span>    if (this == comparison) {<a name="line.1805"></a>
-<span class="sourceLineNo">1806</span>      return true;<a name="line.1806"></a>
-<span class="sourceLineNo">1807</span>    }<a name="line.1807"></a>
-<span class="sourceLineNo">1808</span>    if (comparison == null) {<a name="line.1808"></a>
-<span class="sourceLineNo">1809</span>      return false;<a name="line.1809"></a>
-<span class="sourceLineNo">1810</span>    }<a name="line.1810"></a>
-<span class="sourceLineNo">1811</span>    if (comparison.getClass() != this.getClass()) {<a name="line.1811"></a>
-<span class="sourceLineNo">1812</span>      return false;<a name="line.1812"></a>
-<span class="sourceLineNo">1813</span>    }<a name="line.1813"></a>
-<span class="sourceLineNo">1814</span><a name="line.1814"></a>
-<span class="sourceLineNo">1815</span>    HFileBlock castedComparison = (HFileBlock) comparison;<a name="line.1815"></a>
-<span class="sourceLineNo">1816</span><a name="line.1816"></a>
-<span class="sourceLineNo">1817</span>    if (castedComparison.blockType != this.blockType) {<a name="line.1817"></a>
-<span class="sourceLineNo">1818</span>      return false;<a name="line.1818"></a>
-<span class="sourceLineNo">1819</span>    }<a name="line.1819"></a>
-<span class="sourceLineNo">1820</span>    if (castedComparison.nextBlockOnDiskSizeWithHeader != this.nextBlockOnDiskSizeWithHeader) {<a name="line.1820"></a>
-<span class="sourceLineNo">1821</span>      return false;<a name="line.1821"></a>
-<span class="sourceLineNo">1822</span>    }<a name="line.1822"></a>
-<span class="sourceLineNo">1823</span>    if (castedComparison.offset != this.offset) {<a name="line.1823"></a>
-<span class="sourceLineNo">1824</span>      return false;<a name="line.1824"></a>
-<span class="sourceLineNo">1825</span>    }<a name="line.1825"></a>
-<span class="sourceLineNo">1826</span>    if (castedComparison.onDiskSizeWithoutHeader != this.onDiskSizeWithoutHeader) {<a name="line.1826"></a>
-<span class="sourceLineNo">1827</span>      return false;<a name="line.1827"></a>
-<span class="sourceLineNo">1828</span>    }<a name="line.1828"></a>
-<span class="sourceLineNo">1829</span>    if (castedComparison.prevBlockOffset != this.prevBlockOffset) {<a name="line.1829"></a>
-<span class="sourceLineNo">1830</span>      return false;<a name="line.1830"></a>
-<span class="sourceLineNo">1831</span>    }<a name="line.1831"></a>
-<span class="sourceLineNo">1832</span>    if (castedComparison.uncompressedSizeWithoutHeader != this.uncompressedSizeWithoutHeader) {<a name="line.1832"></a>
-<span class="sourceLineNo">1833</span>      return false;<a name="line.1833"></a>
-<span class="sourceLineNo">1834</span>    }<a name="line.1834"></a>
-<span class="sourceLineNo">1835</span>    if (ByteBuff.compareTo(this.buf, 0, this.buf.limit(), castedComparison.buf, 0,<a name="line.1835"></a>
-<span class="sourceLineNo">1836</span>        castedComparison.buf.limit()) != 0) {<a name="line.1836"></a>
-<span class="sourceLineNo">1837</span>      return false;<a name="line.1837"></a>
-<span class="sourceLineNo">1838</span>    }<a name="line.1838"></a>
-<span class="sourceLineNo">1839</span>    return true;<a name="line.1839"></a>
-<span class="sourceLineNo">1840</span>  }<a name="line.1840"></a>
-<span class="sourceLineNo">1841</span><a name="line.1841"></a>
-<span class="sourceLineNo">1842</span>  public DataBlockEncoding getDataBlockEncoding() {<a name="line.1842"></a>
-<span class="sourceLineNo">1843</span>    if (blockType == BlockType.ENCODED_DATA) {<a name="line.1843"></a>
-<span class="sourceLineNo">1844</span>      return DataBlockEncoding.getEncodingById(getDataBlockEncodingId());<a name="line.1844"></a>
-<span class="sourceLineNo">1845</span>    }<a name="line.1845"></a>
-<span class="sourceLineNo">1846</span>    return DataBlockEncoding.NONE;<a name="line.1846"></a>
-<span class="sourceLineNo">1847</span>  }<a name="line.1847"></a>
-<span class="sourceLineNo">1848</span><a name="line.1848"></a>
-<span class="sourceLineNo">1849</span>  byte getChecksumType() {<a name="line.1849"></a>
-<span class="sourceLineNo">1850</span>    return this.fileContext.getChecksumType().getCode();<a name="line.1850"></a>
-<span class="sourceLineNo">1851</span>  }<a name="line.1851"></a>
-<span class="sourceLineNo">1852</span><a name="line.1852"></a>
-<span class="sourceLineNo">1853</span>  int getBytesPerChecksum() {<a name="line.1853"></a>
-<span class="sourceLineNo">1854</span>    return this.fileContext.getBytesPerChecksum();<a name="line.1854"></a>
-<span class="sourceLineNo">1855</span>  }<a name="line.1855"></a>
-<span class="sourceLineNo">1856</span><a name="line.1856"></a>
-<span class="sourceLineNo">1857</span>  /** @return the size of data on disk + header. Excludes checksum. */<a name="line.1857"></a>
-<span class="sourceLineNo">1858</span>  int getOnDiskDataSizeWithHeader() {<a name="line.1858"></a>
-<span class="sourceLineNo">1859</span>    return this.onDiskDataSizeWithHeader;<a name="line.1859"></a>
-<span class="sourceLineNo">1860</span>  }<a name="line.1860"></a>
-<span class="sourceLineNo">1861</span><a name="line.1861"></a>
-<span class="sourceLineNo">1862</span>  /**<a name="line.1862"></a>
-<span class="sourceLineNo">1863</span>   * Calcuate the number of bytes required to store all the checksums<a name="line.1863"></a>
-<span class="sourceLineNo">1864</span>   * for this block. Each checksum value is a 4 byte integer.<a name="line.1864"></a>
-<span class="sourceLineNo">1865</span>   */<a name="line.1865"></a>
-<span class="sourceLineNo">1866</span>  int totalChecksumBytes() {<a name="line.1866"></a>
-<span class="sourceLineNo">1867</span>    // If the hfile block has minorVersion 0, then there are no checksum<a name="line.1867"></a>
-<span class="sourceLineNo">1868</span>    // data to validate. Similarly, a zero value in this.bytesPerChecksum<a name="line.1868"></a>
-<span class="sourceLineNo">1869</span>    // indicates that cached blocks do not have checksum data because<a name="line.1869"></a>
-<span class="sourceLineNo">1870</span>    // checksums were already validated when the block was read from disk.<a name="line.1870"></a>
-<span class="sourceLineNo">1871</span>    if (!fileContext.isUseHBaseChecksum() || this.fileContext.getBytesPerChecksum() == 0) {<a name="line.1871"></a>
-<span class="sourceLineNo">1872</span>      return 0;<a name="line.1872"></a>
-<span class="sourceLineNo">1873</span>    }<a name="line.1873"></a>
-<span class="sourceLineNo">1874</span>    return (int) ChecksumUtil.numBytes(onDiskDataSizeWithHeader,<a name="line.1874"></a>
-<span class="sourceLineNo">1875</span>        this.fileContext.getBytesPerChecksum());<a name="line.1875"></a>
-<span class="sourceLineNo">1876</span>  }<a name="line.1876"></a>
-<span class="sourceLineNo">1877</span><a name="line.1877"></a>
-<span class="sourceLineNo">1878</span>  /**<a name="line.1878"></a>
-<span class="sourceLineNo">1879</span>   * Returns the size of this block header.<a name="line.1879"></a>
-<span class="sourceLineNo">1880</span>   */<a name="line.1880"></a>
-<span class="sourceLineNo">1881</span>  public int headerSize() {<a name="line.1881"></a>
-<span class="sourceLineNo">1882</span>    return headerSize(this.fileContext.isUseHBaseChecksum());<a name="line.1882"></a>
-<span class="sourceLineNo">1883</span>  }<a name="line.1883"></a>
-<span class="sourceLineNo">1884</span><a name="line.1884"></a>
-<span class="sourceLineNo">1885</span>  /**<a name="line.1885"></a>
-<span class="sourceLineNo">1886</span>   * Maps a minor version to the size of the header.<a name="line.1886"></a>
-<span class="sourceLineNo">1887</span>   */<a name="line.1887"></a>
-<span class="sourceLineNo">1888</span>  public static int headerSize(boolean usesHBaseChecksum) {<a name="line.1888"></a>
-<span class="sourceLineNo">1889</span>    if (usesHBaseChecksum) {<a name="line.1889"></a>
-<span class="sourceLineNo">1890</span>      return HConstants.HFILEBLOCK_HEADER_SIZE;<a name="line.1890"></a>
-<span class="sourceLineNo">1891</span>    }<a name="line.1891"></a>
-<span class="sourceLineNo">1892</span>    return HConstants.HFILEBLOCK_HEADER_SIZE_NO_CHECKSUM;<a name="line.1892"></a>
-<span class="sourceLineNo">1893</span>  }<a name="line.1893"></a>
-<span class="sourceLineNo">1894</span><a name="line.1894"></a>
-<span class="sourceLineNo">1895</span>  /**<a name="line.1895"></a>
-<span class="sourceLineNo">1896</span>   * Return the appropriate DUMMY_HEADER for the minor version<a name="line.1896"></a>
-<span class="sourceLineNo">1897</span>   */<a name="line.1897"></a>
-<span class="sourceLineNo">1898</span>  public byte[] getDummyHeaderForVersion() {<a name="line.1898"></a>
-<span class="sourceLineNo">1899</span>    return getDummyHeaderForVersion(this.fileContext.isUseHBaseChecksum());<a name="line.1899"></a>
-<span class="sourceLineNo">1900</span>  }<a name="line.1900"></a>
-<span class="sourceLineNo">1901</span><a name="line.1901"></a>
-<span class="sourceLineNo">1902</span>  /**<a name="line.1902"></a>
-<span class="sourceLineNo">1903</span>   * Return the appropriate DUMMY_HEADER for the minor version<a name="line.1903"></a>
-<span class="sourceLineNo">1904</span>   */<a name="line.1904"></a>
-<span class="sourceLineNo">1905</span>  static private byte[] getDummyHeaderForVersion(boolean usesHBaseChecksum) {<a name="line.1905"></a>
-<span class="sourceLineNo">1906</span>    if (usesHBaseChecksum) {<a name="line.1906"></a>
-<span class="sourceLineNo">1907</span>      return HConstants.HFILEBLOCK_DUMMY_HEADER;<a name="line.1907"></a>
-<span class="sourceLineNo">1908</span>    }<a name="line.1908"></a>
-<span class="sourceLineNo">1909</span>    return DUMMY_HEADER_NO_CHECKSUM;<a name="line.1909"></a>
-<span class="sourceLineNo">1910</span>  }<a name="line.1910"></a>
-<span class="sourceLineNo">1911</span><a name="line.1911"></a>
-<span class="sourceLineNo">1912</span>  /**<a name="line.1912"></a>
-<span class="sourceLineNo">1913</span>   * @return the HFileContext used to create this HFileBlock. Not necessary the<a name="line.1913"></a>
-<span class="sourceLineNo">1914</span>   * fileContext for the file from which this block's data was originally read.<a name="line.1914"></a>
-<span class="sourceLineNo">1915</span>   */<a name="line.1915"></a>
-<span class="sourceLineNo">1916</span>  public HFileContext getHFileContext() {<a name="line.1916"></a>
-<span class="sourceLineNo">1917</span>    return this.fileContext;<a name="line.1917"></a>
-<span class="sourceLineNo">1918</span>  }<a name="line.1918"></a>
-<span class="sourceLineNo">1919</span><a name="line.1919"></a>
-<span class="sourceLineNo">1920</span>  @Override<a name="line.1920"></a>
-<span class="sourceLineNo">1921</span>  public MemoryType getMemoryType() {<a name="line.1921"></a>
-<span class="sourceLineNo">1922</span>    return this.memType;<a name="line.1922"></a>
-<span class="sourceLineNo">1923</span>  }<a name="line.1923"></a>
-<span class="sourceLineNo">1924</span><a name="line.1924"></a>
-<span class="sourceLineNo">1925</span>  /**<a name="line.1925"></a>
-<span class="sourceLineNo">1926</span>   * @return true if this block is backed by a shared memory area(such as that of a BucketCache).<a name="line.1926"></a>
-<span class="sourceLineNo">1927</span>   */<a name="line.1927"></a>
-<span class="sourceLineNo">1928</span>  public boolean usesSharedMemory() {<a name="line.1928"></a>
-<span class="sourceLineNo">1929</span>    return this.memType == MemoryType.SHARED;<a name="line.1929"></a>
-<span class="sourceLineNo">1930</span>  }<a name="line.1930"></a>
-<span class="sourceLineNo">1931</span><a name="line.1931"></a>
-<span class="sourceLineNo">1932</span>  /**<a name="line.1932"></a>
-<span class="sourceLineNo">1933</span>   * Convert the contents of the block header into a human readable string.<a name="line.1933"></a>
-<span class="sourceLineNo">1934</span>   * This is mostly helpful for debugging. This assumes that the block<a name="line.1934"></a>
-<span class="sourceLineNo">1935</span>   * has minor version &gt; 0.<a name="line.1935"></a>
-<span class="sourceLineNo">1936</span>   */<a name="line.1936"></a>
-<span class="sourceLineNo">1937</span>  static String toStringHeader(ByteBuff buf) throws IOException {<a name="line.1937"></a>
-<span class="sourceLineNo">1938</span>    byte[] magicBuf = new byte[Math.min(buf.limit() - buf.position(), BlockType.MAGIC_LENGTH)];<a name="line.1938"></a>
-<span class="sourceLineNo">1939</span>    buf.get(magicBuf);<a name="line.1939"></a>
-<span class="sourceLineNo">1940</span>    BlockType bt = BlockType.parse(magicBuf, 0, BlockType.MAGIC_LENGTH);<a name="line.1940"></a>
-<span class="sourceLineNo">1941</span>    int compressedBlockSizeNoHeader = buf.getInt();<a name="line.1941"></a>
-<span class="sourceLineNo">1942</span>    int uncompressedBlockSizeNoHeader = buf.getInt();<a name="line.1942"></a>
-<span class="sourceLineNo">1943</span>    long prevBlockOffset = buf.getLong();<a name="line.1943"></a>
-<span class="sourceLineNo">1944</span>    byte cksumtype = buf.get();<a name="line.1944"></a>
-<span class="sourceLineNo">1945</span>    long bytesPerChecksum = buf.getInt();<a name="line.1945"></a>
-<span class="sourceLineNo">1946</span>    long onDiskDataSizeWithHeader = buf.getInt();<a name="line.1946"></a>
-<span class="sourceLineNo">1947</span>    return " Header dump: magic: " + Bytes.toString(magicBuf) +<a name="line.1947"></a>
-<span class="sourceLineNo">1948</span>                   " blockType " + bt +<a name="line.1948"></a>
-<span class="sourceLineNo">1949</span>                   " compressedBlockSizeNoHeader " +<a name="line.1949"></a>
-<span class="sourceLineNo">1950</span>                   compressedBlockSizeNoHeader +<a name="line.1950"></a>
-<span class="sourceLineNo">1951</span>                   " uncompressedBlockSizeNoHeader " +<a name="line.1951"></a>
-<span class="sourceLineNo">1952</span>                   uncompressedBlockSizeNoHeader +<a name="line.1952"></a>
-<span class="sourceLineNo">1953</span>                   " prevBlockOffset " + prevBlockOffset +<a name="line.1953"></a>
-<span class="sourceLineNo">1954</span>                   " checksumType " + ChecksumType.codeToType(cksumtype) +<a name="line.1954"></a>
-<span class="sourceLineNo">1955</span>                   " bytesPerChecksum " + bytesPerChecksum +<a name="line.1955"></a>
-<span class="sourceLineNo">1956</span>                   " onDiskDataSizeWithHeader " + onDiskDataSizeWithHeader;<a name="line.1956"></a>
-<span class="sourceLineNo">1957</span>  }<a name="line.1957"></a>
-<span class="sourceLineNo">1958</span>}<a name="line.1958"></a>
+<span class="sourceLineNo">1361</span>    protected HFileContext fileContext;<a name="line.1361"></a>
+<span class="sourceLineNo">1362</span>    // Cache the fileName<a name="line.1362"></a>
+<span class="sourceLineNo">1363</span>    protected String pathName;<a name="line.1363"></a>
+<span class="sourceLineNo">1364</span><a name="line.1364"></a>
+<span class="sourceLineNo">1365</span>    public FSReaderImpl(FSDataInputStreamWrapper stream, long fileSize, HFileSystem hfs, Path path,<a name="line.1365"></a>
+<span class="sourceLineNo">1366</span>        HFileContext fileContext) throws IOException {<a name="line.1366"></a>
+<span class="sourceLineNo">1367</span>      this.fileSize = fileSize;<a name="line.1367"></a>
+<span class="sourceLineNo">1368</span>      this.hfs = hfs;<a name="line.1368"></a>
+<span class="sourceLineNo">1369</span>      if (path != null) {<a name="line.1369"></a>
+<span class="sourceLineNo">1370</span>        this.pathName = path.toString();<a name="line.1370"></a>
+<span class="sourceLineNo">1371</span>      }<a name="line.1371"></a>
+<span class="sourceLineNo">1372</span>      this.fileContext = fileContext;<a name="line.1372"></a>
+<span class="sourceLineNo">1373</span>      this.hdrSize = headerSize(fileContext.isUseHBaseChecksum());<a name="line.1373"></a>
+<span class="sourceLineNo">1374</span><a name="line.1374"></a>
+<span class="sourceLineNo">1375</span>      this.streamWrapper = stream;<a name="line.1375"></a>
+<span class="sourceLineNo">1376</span>      // Older versions of HBase didn't support checksum.<a name="line.1376"></a>
+<span class="sourceLineNo">1377</span>      this.streamWrapper.prepareForBlockReader(!fileContext.isUseHBaseChecksum());<a name="line.1377"></a>
+<span class="sourceLineNo">1378</span>      defaultDecodingCtx = new HFileBlockDefaultDecodingContext(fileContext);<a name="line.1378"></a>
+<span class="sourceLineNo">1379</span>      encodedBlockDecodingCtx = defaultDecodingCtx;<a name="line.1379"></a>
+<span class="sourceLineNo">1380</span>    }<a name="line.1380"></a>
+<span class="sourceLineNo">1381</span><a name="line.1381"></a>
+<span class="sourceLineNo">1382</span>    /**<a name="line.1382"></a>
+<span class="sourceLineNo">1383</span>     * A constructor that reads files with the latest minor version.<a name="line.1383"></a>
+<span class="sourceLineNo">1384</span>     * This is used by unit tests only.<a name="line.1384"></a>
+<span class="sourceLineNo">1385</span>     */<a name="line.1385"></a>
+<span class="sourceLineNo">1386</span>    FSReaderImpl(FSDataInputStream istream, long fileSize, HFileContext fileContext)<a name="line.1386"></a>
+<span class="sourceLineNo">1387</span>    throws IOException {<a name="line.1387"></a>
+<span class="sourceLineNo">1388</span>      this(new FSDataInputStreamWrapper(istream), fileSize, null, null, fileContext);<a name="line.1388"></a>
+<span class="sourceLineNo">1389</span>    }<a name="line.1389"></a>
+<span class="sourceLineNo">1390</span><a name="line.1390"></a>
+<span class="sourceLineNo">1391</span>    public BlockIterator blockRange(final long startOffset, final long endOffset) {<a name="line.1391"></a>
+<span class="sourceLineNo">1392</span>      final FSReader owner = this; // handle for inner class<a name="line.1392"></a>
+<span class="sourceLineNo">1393</span>      return new BlockIterator() {<a name="line.1393"></a>
+<span class="sourceLineNo">1394</span>        private long offset = startOffset;<a name="line.1394"></a>
+<span class="sourceLineNo">1395</span><a name="line.1395"></a>
+<span class="sourceLineNo">1396</span>        @Override<a name="line.1396"></a>
+<span class="sourceLineNo">1397</span>        public HFileBlock nextBlock() throws IOException {<a name="line.1397"></a>
+<span class="sourceLineNo">1398</span>          if (offset &gt;= endOffset)<a name="line.1398"></a>
+<span class="sourceLineNo">1399</span>            return null;<a name="line.1399"></a>
+<span class="sourceLineNo">1400</span>          HFileBlock b = readBlockData(offset, -1, -1, false);<a name="line.1400"></a>
+<span class="sourceLineNo">1401</span>          offset += b.getOnDiskSizeWithHeader();<a name="line.1401"></a>
+<span class="sourceLineNo">1402</span>          return b.unpack(fileContext, owner);<a name="line.1402"></a>
+<span class="sourceLineNo">1403</span>        }<a name="line.1403"></a>
+<span class="sourceLineNo">1404</span><a name="line.1404"></a>
+<span class="sourceLineNo">1405</span>        @Override<a name="line.1405"></a>
+<span class="sourceLineNo">1406</span>        public HFileBlock nextBlockWithBlockType(BlockType blockType)<a name="line.1406"></a>
+<span class="sourceLineNo">1407</span>            throws IOException {<a name="line.1407"></a>
+<span class="sourceLineNo">1408</span>          HFileBlock blk = nextBlock();<a name="line.1408"></a>
+<span class="sourceLineNo">1409</span>          if (blk.getBlockType() != blockType) {<a name="line.1409"></a>
+<span class="sourceLineNo">1410</span>            throw new IOException("Expected block of type " + blockType<a name="line.1410"></a>
+<span class="sourceLineNo">1411</span>                + " but found " + blk.getBlockType());<a name="line.1411"></a>
+<span class="sourceLineNo">1412</span>          }<a name="line.1412"></a>
+<span class="sourceLineNo">1413</span>          return blk;<a name="line.1413"></a>
+<span class="sourceLineNo">1414</span>        }<a name="line.1414"></a>
+<span class="sourceLineNo">1415</span>      };<a name="line.1415"></a>
+<span class="sourceLineNo">1416</span>    }<a name="line.1416"></a>
+<span class="sourceLineNo">1417</span><a name="line.1417"></a>
+<span class="sourceLineNo">1418</span>    /**<a name="line.1418"></a>
+<span class="sourceLineNo">1419</span>     * Does a positional read or a seek and read into the given buffer. Returns<a name="line.1419"></a>
+<span class="sourceLineNo">1420</span>     * the on-disk size of the next block, or -1 if it could not be determined.<a name="line.1420"></a>
+<span class="sourceLineNo">1421</span>     *<a name="line.1421"></a>
+<span class="sourceLineNo">1422</span>     * @param dest destination buffer<a name="line.1422"></a>
+<span class="sourceLineNo">1423</span>     * @param destOffset offset in the destination buffer<a name="line.1423"></a>
+<span class="sourceLineNo">1424</span>     * @param size size of the block to be read<a name="line.1424"></a>
+<span class="sourceLineNo">1425</span>     * @param peekIntoNextBlock whether to read the next block's on-disk size<a name="line.1425"></a>
+<span class="sourceLineNo">1426</span>     * @param fileOffset position in the stream to read at<a name="line.1426"></a>
+<span class="sourceLineNo">1427</span>     * @param pread whether we should do a positional read<a name="line.1427"></a>
+<span class="sourceLineNo">1428</span>     * @param istream The input source of data<a name="line.1428"></a>
+<span class="sourceLineNo">1429</span>     * @return the on-disk size of the next block with header size included, or<a name="line.1429"></a>
+<span class="sourceLineNo">1430</span>     *         -1 if it could not be determined<a name="line.1430"></a>
+<span class="sourceLineNo">1431</span>     * @throws IOException<a name="line.1431"></a>
+<span class="sourceLineNo">1432</span>     */<a name="line.1432"></a>
+<span class="sourceLineNo">1433</span>    protected int readAtOffset(FSDataInputStream istream,<a name="line.1433"></a>
+<span class="sourceLineNo">1434</span>        byte[] dest, int destOffset, int size,<a name="line.1434"></a>
+<span class="sourceLineNo">1435</span>        boolean peekIntoNextBlock, long fileOffset, boolean pread)<a name="line.1435"></a>
+<span class="sourceLineNo">1436</span>        throws IOException {<a name="line.1436"></a>
+<span class="sourceLineNo">1437</span>      if (peekIntoNextBlock &amp;&amp;<a name="line.1437"></a>
+<span class="sourceLineNo">1438</span>          destOffset + size + hdrSize &gt; dest.length) {<a name="line.1438"></a>
+<span class="sourceLineNo">1439</span>        // We are asked to read the next block's header as well, but there is<a name="line.1439"></a>
+<span class="sourceLineNo">1440</span>        // not enough room in the array.<a name="line.1440"></a>
+<span class="sourceLineNo">1441</span>        throw new IOException("Attempted to read " + size + " bytes and " +<a name="line.1441"></a>
+<span class="sourceLineNo">1442</span>            hdrSize + " bytes of next header into a " + dest.length +<a name="line.1442"></a>
+<span class="sourceLineNo">1443</span>            "-byte array at offset " + destOffset);<a name="line.1443"></a>
+<span class="sourceLineNo">1444</span>      }<a name="line.1444"></a>
+<span class="sourceLineNo">1445</span><a name="line.1445"></a>
+<span class="sourceLineNo">1446</span>      if (!pread &amp;&amp; streamLock.tryLock()) {<a name="line.1446"></a>
+<span class="sourceLineNo">1447</span>        // Seek + read. Better for scanning.<a name="line.1447"></a>
+<span class="sourceLineNo">1448</span>        try {<a name="line.1448"></a>
+<span class="sourceLineNo">1449</span>          istream.seek(fileOffset);<a name="line.1449"></a>
+<span class="sourceLineNo">1450</span><a name="line.1450"></a>
+<span class="sourceLineNo">1451</span>          long realOffset = istream.getPos();<a name="line.1451"></a>
+<span class="sourceLineNo">1452</span>          if (realOffset != fileOffset) {<a name="line.1452"></a>
+<span class="sourceLineNo">1453</span>            throw new IOException("Tried to seek to " + fileOffset + " to "<a name="line.1453"></a>
+<span class="sourceLineNo">1454</span>                + "read " + size + " bytes, but pos=" + realOffset<a name="line.1454"></a>
+<span class="sourceLineNo">1455</span>                + " after seek");<a name="line.1455"></a>
+<span class="sourceLineNo">1456</span>          }<a name="line.1456"></a>
+<span class="sourceLineNo">1457</span><a name="line.1457"></a>
+<span class="sourceLineNo">1458</span>          if (!peekIntoNextBlock) {<a name="line.1458"></a>
+<span class="sourceLineNo">1459</span>            IOUtils.readFully(istream, dest, destOffset, size);<a name="line.1459"></a>
+<span class="sourceLineNo">1460</span>            return -1;<a name="line.1460"></a>
+<span class="sourceLineNo">1461</span>          }<a name="line.1461"></a>
+<span class="sourceLineNo">1462</span><a name="line.1462"></a>
+<span class="sourceLineNo">1463</span>          // Try to read the next block header.<a name="line.1463"></a>
+<span class="sourceLineNo">1464</span>          if (!readWithExtra(istream, dest, destOffset, size, hdrSize))<a name="line.1464"></a>
+<span class="sourceLineNo">1465</span>            return -1;<a name="line.1465"></a>
+<span class="sourceLineNo">1466</span>        } finally {<a name="line.1466"></a>
+<span class="sourceLineNo">1467</span>          streamLock.unlock();<a name="line.1467"></a>
+<span class="sourceLineNo">1468</span>        }<a name="line.1468"></a>
+<span class="sourceLineNo">1469</span>      } else {<a name="line.1469"></a>
+<span class="sourceLineNo">1470</span>        // Positional read. Better for random reads; or when the streamLock is already locked.<a name="line.1470"></a>
+<span class="sourceLineNo">1471</span>        int extraSize = peekIntoNextBlock ? hdrSize : 0;<a name="line.1471"></a>
+<span class="sourceLineNo">1472</span>        if (!positionalReadWithExtra(istream, fileOffset, dest, destOffset,<a name="line.1472"></a>
+<span class="sourceLineNo">1473</span>            size, extraSize)) {<a name="line.1473"></a>
+<span class="sourceLineNo">1474</span>          return -1;<a name="line.1474"></a>
+<span class="sourceLineNo">1475</span>        }<a name="line.1475"></a>
+<span class="sourceLineNo">1476</span>      }<a name="line.1476"></a>
+<span class="sourceLineNo">1477</span><a name="line.1477"></a>
+<span class="sourceLineNo">1478</span>      assert peekIntoNextBlock;<a name="line.1478"></a>
+<span class="sourceLineNo">1479</span>      return Bytes.toInt(dest, destOffset + size + BlockType.MAGIC_LENGTH) + hdrSize;<a name="line.1479"></a>
+<span class="sourceLineNo">1480</span>    }<a name="line.1480"></a>
+<span class="sourceLineNo">1481</span><a name="line.1481"></a>
+<span class="sourceLineNo">1482</span>    /**<a name="line.1482"></a>
+<span class="sourceLineNo">1483</span>     * Reads a version 2 block (version 1 blocks not supported and not expected). Tries to do as<a name="line.1483"></a>
+<span class="sourceLineNo">1484</span>     * little memory allocation as possible, using the provided on-disk size.<a name="line.1484"></a>
+<span class="sourceLineNo">1485</span>     *<a name="line.1485"></a>
+<span class="sourceLineNo">1486</span>     * @param offset the offset in the stream to read at<a name="line.1486"></a>
+<span class="sourceLineNo">1487</span>     * @param onDiskSizeWithHeaderL the on-disk size of the block, including<a name="line.1487"></a>
+<span class="sourceLineNo">1488</span>     *          the header, or -1 if unknown<a name="line.1488"></a>
+<span class="sourceLineNo">1489</span>     * @param uncompressedSize the uncompressed size of the the block. Always<a name="line.1489"></a>
+<span class="sourceLineNo">1490</span>     *          expected to be -1. This parameter is only used in version 1.<a name="line.1490"></a>
+<span class="sourceLineNo">1491</span>     * @param pread whether to use a positional read<a name="line.1491"></a>
+<span class="sourceLineNo">1492</span>     */<a name="line.1492"></a>
+<span class="sourceLineNo">1493</span>    @Override<a name="line.1493"></a>
+<span class="sourceLineNo">1494</span>    public HFileBlock readBlockData(long offset, long onDiskSizeWithHeaderL,<a name="line.1494"></a>
+<span class="sourceLineNo">1495</span>        int uncompressedSize, boolean pread)<a name="line.1495"></a>
+<span class="sourceLineNo">1496</span>    throws IOException {<a name="line.1496"></a>
+<span class="sourceLineNo">1497</span><a name="line.1497"></a>
+<span class="sourceLineNo">1498</span>      // get a copy of the current state of whether to validate<a name="line.1498"></a>
+<span class="sourceLineNo">1499</span>      // hbase checksums or not for this read call. This is not<a name="line.1499"></a>
+<span class="sourceLineNo">1500</span>      // thread-safe but the one constaint is that if we decide<a name="line.1500"></a>
+<span class="sourceLineNo">1501</span>      // to skip hbase checksum verification then we are<a name="line.1501"></a>
+<span class="sourceLineNo">1502</span>      // guaranteed to use hdfs checksum verification.<a name="line.1502"></a>
+<span class="sourceLineNo">1503</span>      boolean doVerificationThruHBaseChecksum = streamWrapper.shouldUseHBaseChecksum();<a name="line.1503"></a>
+<span class="sourceLineNo">1504</span>      FSDataInputStream is = streamWrapper.getStream(doVerificationThruHBaseChecksum);<a name="line.1504"></a>
+<span class="sourceLineNo">1505</span><a name="line.1505"></a>
+<span class="sourceLineNo">1506</span>      HFileBlock blk = readBlockDataInternal(is, offset,<a name="line.1506"></a>
+<span class="sourceLineNo">1507</span>                         onDiskSizeWithHeaderL,<a name="line.1507"></a>
+<span class="sourceLineNo">1508</span>                         uncompressedSize, pread,<a name="line.1508"></a>
+<span class="sourceLineNo">1509</span>                         doVerificationThruHBaseChecksum);<a name="line.1509"></a>
+<span class="sourceLineNo">1510</span>      if (blk == null) {<a name="line.1510"></a>
+<span class="sourceLineNo">1511</span>        HFile.LOG.warn("HBase checksum verification failed for file " +<a name="line.1511"></a>
+<span class="sourceLineNo">1512</span>                       pathName + " at offset " +<a name="line.1512"></a>
+<span class="sourceLineNo">1513</span>                       offset + " filesize " + fileSize +<a name="line.1513"></a>
+<span class="sourceLineNo">1514</span>                       ". Retrying read with HDFS checksums turned on...");<a name="line.1514"></a>
+<span class="sourceLineNo">1515</span><a name="line.1515"></a>
+<span class="sourceLineNo">1516</span>        if (!doVerificationThruHBaseChecksum) {<a name="line.1516"></a>
+<span class="sourceLineNo">1517</span>          String msg = "HBase checksum verification failed for file " +<a name="line.1517"></a>
+<span class="sourceLineNo">1518</span>                       pathName + " at offset " +<a name="line.1518"></a>
+<span class="sourceLineNo">1519</span>                       offset + " filesize " + fileSize +<a name="line.1519"></a>
+<span class="sourceLineNo">1520</span>                       " but this cannot happen because doVerify is " +<a name="line.1520"></a>
+<span class="sourceLineNo">1521</span>                       doVerificationThruHBaseChecksum;<a name="line.1521"></a>
+<span class="sourceLineNo">1522</span>          HFile.LOG.warn(msg);<a name="line.1522"></a>
+<span class="sourceLineNo">1523</span>          throw new IOException(msg); // cannot happen case here<a name="line.1523"></a>
+<span class="sourceLineNo">1524</span>        }<a name="line.1524"></a>
+<span class="sourceLineNo">1525</span>        HFile.checksumFailures.incrementAndGet(); // update metrics<a name="line.1525"></a>
+<span class="sourceLineNo">1526</span><a name="line.1526"></a>
+<span class="sourceLineNo">1527</span>        // If we have a checksum failure, we fall back into a mode where<a name="line.1527"></a>
+<span class="sourceLineNo">1528</span>        // the next few reads use HDFS level checksums. We aim to make the<a name="line.1528"></a>
+<span class="sourceLineNo">1529</span>        // next CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD reads avoid<a name="line.1529"></a>
+<span class="sourceLineNo">1530</span>        // hbase checksum verification, but since this value is set without<a name="line.1530"></a>
+<span class="sourceLineNo">1531</span>        // holding any locks, it can so happen that we might actually do<a name="line.1531"></a>
+<span class="sourceLineNo">1532</span>        // a few more than precisely this number.<a name="line.1532"></a>
+<span class="sourceLineNo">1533</span>        is = this.streamWrapper.fallbackToFsChecksum(CHECKSUM_VERIFICATION_NUM_IO_THRESHOLD);<a name="line.1533"></a>
+<span class="sourceLineNo">1534</span>        doVerificationThruHBaseChecksum = false;<a name="line.1534"></a>
+<span class="sourceLineNo">1535</span>        blk = readBlockDataInternal(is, offset, onDiskSizeWithHeaderL,<a name="line.1535"></a>
+<span class="sourceLineNo">1536</span>                                    uncompressedSize, pread,<a name="line.1536"></a>
+<span class="sourceLineNo">1537</span>                                    doVerificationThruHBaseChecksum);<a name="line.1537"></a>
+<span class="sourceLineNo">1538</span>        if (blk != null) {<a name="line.1538"></a>
+<span class="sourceLineNo">1539</span>          HFile.LOG.warn("HDFS checksum verification suceeded for file " +<a name="line.1539"></a>
+<span class="sourceLineNo">1540</span>                         pathName + " at offset " +<a name="line.1540"></a>
+<span class="sourceLineNo">1541</span>                         offset + " filesize " + fileSize);<a name="line.1541"></a>
+<span class="sourceLineNo">1542</span>        }<a name="line.1542"></a>
+<span class="sourceLineNo">1543</span>      }<a name="line.1543"></a>
+<span class="sourceLineNo">1544</span>      if (blk == null &amp;&amp; !doVerificationThruHBaseChecksum) {<a name="line.1544"></a>
+<span class="sourceLineNo">1545</span>        String msg = "readBlockData failed, possibly due to " +<a name="line.1545"></a>
+<span class="sourceLineNo">1546</span>                     "checksum verification failed for file " + pathName +<a name="line.1546"></a>
+<span class="sourceLineNo">1547</span>                     " at offset " + offset + " filesize " + fileSize;<a name="line.1547"></a>
+<span class="sourceLineNo">1548</span>        HFile.LOG.warn(msg);<a name="line.1548"></a>
+<span class="sourceLineNo">1549</span>        throw new IOException(msg);<a name="line.1549"></a>
+<span class="sourceLineNo">1550</span>      }<a name="line.1550"></a>
+<span class="sourceLineNo">1551</span><a name="line.1551"></a>
+<span class="sourceLineNo">1552</span>      // If there is a checksum mismatch earlier, then retry with<a name="line.1552"></a>
+<span class="sourceLineNo">1553</span>      // HBase checksums switched off and use HDFS checksum verification.<a name="line.1553"></a>
+<span class="sourceLineNo">1554</span>      // This triggers HDFS to detect and fix corrupt replicas. The<a name="line.1554"></a>
+<span class="sourceLineNo">1555</span>      // next checksumOffCount read requests will use HDFS checksums.<a name="line.1555"></a>
+<span class="sourceLineNo">1556</span>      // The decrementing of this.checksumOffCount is not thread-safe,<a name="line.1556"></a>
+<span class="sourceLineNo">1557</span>      // but it is harmless because eventually checksumOffCount will be<a name="line.1557"></a>
+<span class="sourceLineNo">1558</span>      // a negative number.<a name="line.1558"></a>
+<span class="sourceLineNo">1559</span>      streamWrapper.checksumOk();<a name="line.1559"></a>
+<span class="sourceLineNo">1560</span>      return blk;<a name="line.1560"></a>
+<span class="sourceLineNo">1561</span>    }<a name="line.1561"></a>
+<span class="sourceLineNo">1562</span><a name="line.1562"></a>
+<span class="sourceLineNo">1563</span>    /**<a name="line.1563"></a>
+<span class="sourceLineNo">1564</span>     * Reads a version 2 block.<a name="line.1564"></a>
+<span class="sourceLineNo">1565</span>     *<a name="line.1565"></a>
+<span class="sourceLineNo">1566</span>     * @param offset the offset in the stream to read at<a name="line.1566"></a>
+<span class="sourceLineNo">1567</span>     * @param onDiskSizeWithHeaderL the on-disk size of the block, including<a name="line.1567"></a>
+<span class="sourceLineNo">1568</span>     *          the header, or -1 if unknown<a name="line.1568"></a>
+<span class="sourceLineNo">1569</span>     * @param uncompressedSize the uncompressed size of the the block. Always<a name="line.1569"></a>
+<span class="sourceLineNo">1570</span>     *          expected to be -1. This parameter is only used in version 1.<a name="line.1570"></a>
+<span class="sourceLineNo">1571</span>     * @param pread whether to use a positional read<a name="line.1571"></a>
+<span class="sourceLineNo">1572</span>     * @param verifyChecksum Whether to use HBase checksums.<a name="line.1572"></a>
+<span class="sourceLineNo">1573</span>     *        If HBase checksum is switched off, then use HDFS checksum.<a name="line.1573"></a>
+<span class="sourceLineNo">1574</span>     * @return the HFileBlock or null if there is a HBase checksum mismatch<a name="line.1574"></a>
+<span class="sourceLineNo">1575</span>     */<a name="line.1575"></a>
+<span class="sourceLineNo">1576</span>    private HFileBlock readBlockDataInternal(FSDataInputStream is, long offset,<a name="line.1576"></a>
+<span class="sourceLineNo">1577</span>        long onDiskSizeWithHeaderL, int uncompressedSize, boolean pread,<a name="line.1577"></a>
+<span class="sourceLineNo">1578</span>        boolean verifyChecksum)<a name="line.1578"></a>
+<span class="sourceLineNo">1579</span>    throws IOException {<a name="line.1579"></a>
+<span class="sourceLineNo">1580</span>      if (offset &lt; 0) {<a name="line.1580"></a>
+<span class="sourceLineNo">1581</span>        throw new IOException("Invalid offset=" + offset + " trying to read "<a name="line.1581"></a>
+<span class="sourceLineNo">1582</span>            + "block (onDiskSize=" + onDiskSizeWithHeaderL<a name="line.1582"></a>
+<span class="sourceLineNo">1583</span>            + ", uncompressedSize=" + uncompressedSize + ")");<a name="line.1583"></a>
+<span class="sourceLineNo">1584</span>      }<a name="line.1584"></a>
+<span class="sourceLineNo">1585</span><a name="line.1585"></a>
+<span class="sourceLineNo">1586</span>      if (uncompressedSize != -1) {<a name="line.1586"></a>
+<span class="sourceLineNo">1587</span>        throw new IOException("Version 2 block reader API does not need " +<a name="line.1587"></a>
+<span class="sourceLineNo">1588</span>            "the uncompressed size parameter");<a name="line.1588"></a>
+<span class="sourceLineNo">1589</span>      }<a name="line.1589"></a>
+<span class="sourceLineNo">1590</span><a name="line.1590"></a>
+<span class="sourceLineNo">1591</span>      if ((onDiskSizeWithHeaderL &lt; hdrSize &amp;&amp; onDiskSizeWithHeaderL != -1)<a name="line.1591"></a>
+<span class="sourceLineNo">1592</span>          || onDiskSizeWithHeaderL &gt;= Integer.MAX_VALUE) {<a name="line.1592"></a>
+<span class="sourceLineNo">1593</span>        throw new IOException("Invalid onDisksize=" + onDiskSizeWithHeaderL<a name="line.1593"></a>
+<span class="sourceLineNo">1594</span>            + ": expected to be at least " + hdrSize<a name="line.1594"></a>
+<span class="sourceLineNo">1595</span>            + " and at most " + Integer.MAX_VALUE + ", or -1 (offset="<a name="line.1595"></a>
+<span class="sourceLineNo">1596</span>            + offset + ", uncompressedSize=" + uncompressedSize + ")");<a name="line.1596"></a>
+<span class="sourceLineNo">1597</span>      }<a name="line.1597"></a>
+<span class="sourceLineNo">1598</span><a name="line.1598"></a>
+<span class="sourceLineNo">1599</span>      int onDiskSizeWithHeader = (int) onDiskSizeWithHeaderL;<a name="line.1599"></a>
+<span class="sourceLineNo">1600</span>      // See if we can avoid reading the header. This is desirable, because<a name="line.1600"></a>

<TRUNCATED>