You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by gi...@apache.org on 2025/03/20 14:48:21 UTC

(hbase-site) branch asf-site updated: Published site at f8c1a671758298f26b93872037994d5c07fdecab.

This is an automated email from the ASF dual-hosted git repository.

git-site-role pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/hbase-site.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new a870c046ed2 Published site at f8c1a671758298f26b93872037994d5c07fdecab.
a870c046ed2 is described below

commit a870c046ed2c312fac228a58e65c90aa931283a7
Author: jenkins <bu...@apache.org>
AuthorDate: Thu Mar 20 14:48:00 2025 +0000

    Published site at f8c1a671758298f26b93872037994d5c07fdecab.
---
 acid-semantics.html                                |    2 +-
 apache_hbase_reference_guide.pdf                   |    4 +-
 apidocs/index-all.html                             |   32 +-
 apidocs/member-search-index.js                     |    2 +-
 .../hbase/regionserver/StoreFileScanner.html       | 1320 ++++++++++----------
 book.html                                          |    2 +-
 bulk-loads.html                                    |    2 +-
 checkstyle-aggregate.html                          |   10 +-
 checkstyle.rss                                     |  446 +++----
 coc.html                                           |    2 +-
 dependencies.html                                  |    2 +-
 dependency-convergence.html                        |    2 +-
 dependency-info.html                               |    2 +-
 dependency-management.html                         |    2 +-
 devapidocs/index-all.html                          |   15 +-
 devapidocs/member-search-index.js                  |    2 +-
 .../org/apache/hadoop/hbase/class-use/Cell.html    |   51 +-
 .../hadoop/hbase/class-use/ExtendedCell.html       |   74 +-
 .../hbase/regionserver/StoreFileScanner.html       |  136 +-
 .../hbase/regionserver/class-use/HRegion.html      |   14 +-
 .../handler/RegionReplicaFlushHandler.html         |   25 +-
 .../hbase/regionserver/StoreFileScanner.html       | 1320 ++++++++++----------
 .../handler/RegionReplicaFlushHandler.html         |  230 ++--
 downloads.html                                     |    2 +-
 export_control.html                                |    2 +-
 index.html                                         |    2 +-
 issue-management.html                              |    2 +-
 licenses.html                                      |    2 +-
 mailing-lists.html                                 |    2 +-
 metrics.html                                       |    2 +-
 old_news.html                                      |    2 +-
 plugin-management.html                             |    2 +-
 plugins.html                                       |    2 +-
 poweredbyhbase.html                                |    2 +-
 project-info.html                                  |    2 +-
 project-reports.html                               |    2 +-
 pseudo-distributed.html                            |    2 +-
 replication.html                                   |    2 +-
 resources.html                                     |    2 +-
 scm.html                                           |    2 +-
 sponsors.html                                      |    2 +-
 summary.html                                       |    2 +-
 supportingprojects.html                            |    2 +-
 team.html                                          |    2 +-
 testapidocs/index-all.html                         |   92 +-
 testapidocs/member-search-index.js                 |    2 +-
 testdevapidocs/index-all.html                      |   70 +-
 testdevapidocs/member-search-index.js              |    2 +-
 48 files changed, 1976 insertions(+), 1929 deletions(-)

diff --git a/acid-semantics.html b/acid-semantics.html
index 8cb79c789df..6609feb6e3c 100644
--- a/acid-semantics.html
+++ b/acid-semantics.html
@@ -469,7 +469,7 @@
         All other marks mentioned may be trademarks or registered trademarks of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-19
+        Last Published: 2025-03-20
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index c1c0b6c079e..d819be9cb78 100644
--- a/apache_hbase_reference_guide.pdf
+++ b/apache_hbase_reference_guide.pdf
@@ -5,8 +5,8 @@
 /Author (Apache HBase Team)
 /Creator (Asciidoctor PDF 2.0.6, based on Prawn 2.4.0)
 /Producer (Apache HBase Team)
-/ModDate (D:20250319143001+00'00')
-/CreationDate (D:20250319144517+00'00')
+/ModDate (D:20250320143042+00'00')
+/CreationDate (D:20250320144450+00'00')
 >>
 endobj
 2 0 obj
diff --git a/apidocs/index-all.html b/apidocs/index-all.html
index 092713a564b..8e08f52f61c 100644
--- a/apidocs/index-all.html
+++ b/apidocs/index-all.html
@@ -1488,9 +1488,9 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt>affixShutdownHook(Thread, int) - Static method in class org.apache.hadoop.hbase.util.ShutdownHookManager</dt>
 <dd>&nbsp;</dd>
-<dt>afterDecodingKeyValue(DataInputStream, ByteBuffer, HFileBlockDefaultDecodingContext) - Method in class org.apache.hadoop.hbase.io.encoding.PrefixKeyDeltaEncoder</dt>
+<dt>afterDecodingKeyValue(DataInputStream, ByteBuffer, HFileBlockDefaultDecodingContext) - Method in class org.apache.hadoop.hbase.io.encoding.DiffKeyDeltaEncoder</dt>
 <dd>&nbsp;</dd>
-<dt>afterEncodingKeyValue(ExtendedCell, DataOutputStream, HFileBlockDefaultEncodingContext) - Method in class org.apache.hadoop.hbase.io.encoding.PrefixKeyDeltaEncoder</dt>
+<dt>afterEncodingKeyValue(ExtendedCell, DataOutputStream, HFileBlockDefaultEncodingContext) - Method in class org.apache.hadoop.hbase.io.encoding.DiffKeyDeltaEncoder</dt>
 <dd>
 <div class="block">Returns unencoded size added</div>
 </dd>
@@ -5118,7 +5118,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt>call(O) - Method in class org.apache.hadoop.hbase.coprocessor.CoprocessorHost.ObserverOperationWithResult</dt>
 <dd>&nbsp;</dd>
-<dt>call(AbstractRpcBasedConnectionRegistry.Callable&lt;T&gt;, Predicate&lt;T&gt;, String) - Method in class org.apache.hadoop.hbase.client.MasterRegistry</dt>
+<dt>call(AbstractRpcBasedConnectionRegistry.Callable&lt;T&gt;, Predicate&lt;T&gt;, String) - Method in class org.apache.hadoop.hbase.client.RpcConnectionRegistry</dt>
 <dd>&nbsp;</dd>
 <dt>call(HBaseRpcController, AdminProtos.AdminService.Interface) - Method in interface org.apache.hadoop.hbase.client.AsyncAdminRequestRetryingCaller.Callable</dt>
 <dd>&nbsp;</dd>
@@ -7172,7 +7172,7 @@ loadScripts(document, 'script');</script>
 </dd>
 <dt>close() - Method in class org.apache.hadoop.hbase.chaos.ChaosAgent</dt>
 <dd>&nbsp;</dd>
-<dt>close() - Method in class org.apache.hadoop.hbase.client.MasterRegistry</dt>
+<dt>close() - Method in class org.apache.hadoop.hbase.client.RpcConnectionRegistry</dt>
 <dd>&nbsp;</dd>
 <dt>close() - Method in interface org.apache.hadoop.hbase.client.Admin</dt>
 <dd>&nbsp;</dd>
@@ -8547,11 +8547,11 @@ loadScripts(document, 'script');</script>
 <dd>
 <div class="block">Compares the family and qualifier part of the cell</div>
 </dd>
-<dt>compareCommonFamilyPrefix(Cell, Cell, int) - Static method in class org.apache.hadoop.hbase.io.encoding.PrefixKeyDeltaEncoder</dt>
+<dt>compareCommonFamilyPrefix(Cell, Cell, int) - Static method in class org.apache.hadoop.hbase.io.encoding.DiffKeyDeltaEncoder</dt>
 <dd>&nbsp;</dd>
-<dt>compareCommonQualifierPrefix(Cell, Cell, int) - Static method in class org.apache.hadoop.hbase.io.encoding.PrefixKeyDeltaEncoder</dt>
+<dt>compareCommonQualifierPrefix(Cell, Cell, int) - Static method in class org.apache.hadoop.hbase.io.encoding.DiffKeyDeltaEncoder</dt>
 <dd>&nbsp;</dd>
-<dt>compareCommonRowPrefix(Cell, Cell, int) - Static method in class org.apache.hadoop.hbase.io.encoding.PrefixKeyDeltaEncoder</dt>
+<dt>compareCommonRowPrefix(Cell, Cell, int) - Static method in class org.apache.hadoop.hbase.io.encoding.DiffKeyDeltaEncoder</dt>
 <dd>
 <div class="block">common prefixes</div>
 </dd>
@@ -13034,7 +13034,7 @@ loadScripts(document, 'script');</script>
 <dd>
 <div class="block">Decode an <code>int8</code> value.</div>
 </dd>
-<dt>decodeKeyValues(DataInputStream, HFileBlockDecodingContext) - Method in class org.apache.hadoop.hbase.io.encoding.PrefixKeyDeltaEncoder</dt>
+<dt>decodeKeyValues(DataInputStream, HFileBlockDecodingContext) - Method in class org.apache.hadoop.hbase.io.encoding.DiffKeyDeltaEncoder</dt>
 <dd>&nbsp;</dd>
 <dt>decodeKeyValues(DataInputStream, HFileBlockDecodingContext) - Method in interface org.apache.hadoop.hbase.io.encoding.DataBlockEncoder</dt>
 <dd>
@@ -15876,7 +15876,7 @@ loadScripts(document, 'script');</script>
 <dd>
 <div class="block">Separator used to demarcate the encodedName in a region name in the new format.</div>
 </dd>
-<dt>encode(ExtendedCell, HFileBlockEncodingContext, DataOutputStream) - Method in class org.apache.hadoop.hbase.io.encoding.PrefixKeyDeltaEncoder</dt>
+<dt>encode(ExtendedCell, HFileBlockEncodingContext, DataOutputStream) - Method in class org.apache.hadoop.hbase.io.encoding.DiffKeyDeltaEncoder</dt>
 <dd>&nbsp;</dd>
 <dt>encode(ExtendedCell, HFileBlockEncodingContext, DataOutputStream) - Method in interface org.apache.hadoop.hbase.io.encoding.DataBlockEncoder</dt>
 <dd>
@@ -16290,7 +16290,7 @@ loadScripts(document, 'script');</script>
 </dd>
 <dt>END_TIME_KEY - Static variable in class org.apache.hadoop.hbase.mapreduce.WALInputFormat</dt>
 <dd>&nbsp;</dd>
-<dt>endBlockEncoding(HFileBlockEncodingContext, DataOutputStream, byte[]) - Method in class org.apache.hadoop.hbase.io.encoding.PrefixKeyDeltaEncoder</dt>
+<dt>endBlockEncoding(HFileBlockEncodingContext, DataOutputStream, byte[]) - Method in class org.apache.hadoop.hbase.io.encoding.DiffKeyDeltaEncoder</dt>
 <dd>&nbsp;</dd>
 <dt>endBlockEncoding(HFileBlockEncodingContext, DataOutputStream, byte[]) - Method in interface org.apache.hadoop.hbase.io.encoding.DataBlockEncoder</dt>
 <dd>
@@ -16401,7 +16401,7 @@ loadScripts(document, 'script');</script>
 <div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
 <div class="block">Make sure that at least the specified number of region servers are running</div>
 </dd>
-<dt>ensureSpace(ByteBuffer, int) - Static method in class org.apache.hadoop.hbase.io.encoding.PrefixKeyDeltaEncoder</dt>
+<dt>ensureSpace(ByteBuffer, int) - Static method in class org.apache.hadoop.hbase.io.encoding.DiffKeyDeltaEncoder</dt>
 <dd>
 <div class="block">Asserts that there is at least the given amount of unfilled space remaining in the given
  buffer.</div>
@@ -19982,7 +19982,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt>getActiveLogFiles() - Static method in class org.apache.hadoop.hbase.logging.Log4jUtils</dt>
 <dd>&nbsp;</dd>
-<dt>getActiveMaster() - Method in class org.apache.hadoop.hbase.client.MasterRegistry</dt>
+<dt>getActiveMaster() - Method in class org.apache.hadoop.hbase.client.RpcConnectionRegistry</dt>
 <dd>&nbsp;</dd>
 <dt>getActiveMaster() - Method in interface org.apache.hadoop.hbase.client.ConnectionRegistry</dt>
 <dd>
@@ -21780,7 +21780,7 @@ loadScripts(document, 'script');</script>
 <dd>
 <div class="block">Returns the cluster definition</div>
 </dd>
-<dt>getClusterId() - Method in class org.apache.hadoop.hbase.client.MasterRegistry</dt>
+<dt>getClusterId() - Method in class org.apache.hadoop.hbase.client.RpcConnectionRegistry</dt>
 <dd>&nbsp;</dd>
 <dt>getClusterId() - Method in interface org.apache.hadoop.hbase.client.Connection</dt>
 <dd>
@@ -26952,7 +26952,7 @@ loadScripts(document, 'script');</script>
 </dd>
 <dt>getMetaRegionLocationCache() - Method in class org.apache.hadoop.hbase.HBaseServerBase</dt>
 <dd>&nbsp;</dd>
-<dt>getMetaRegionLocations() - Method in class org.apache.hadoop.hbase.client.MasterRegistry</dt>
+<dt>getMetaRegionLocations() - Method in class org.apache.hadoop.hbase.client.RpcConnectionRegistry</dt>
 <dd>&nbsp;</dd>
 <dt>getMetaRegionLocations() - Method in interface org.apache.hadoop.hbase.client.ConnectionRegistry</dt>
 <dd>
@@ -37431,7 +37431,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt>HEDGED_READS_DESC - Static variable in interface org.apache.hadoop.hbase.regionserver.MetricsRegionServerSource</dt>
 <dd>&nbsp;</dd>
-<dt>HEDGED_REQS_FANOUT_DEFAULT - Static variable in class org.apache.hadoop.hbase.client.MasterRegistry</dt>
+<dt>HEDGED_REQS_FANOUT_DEFAULT - Static variable in class org.apache.hadoop.hbase.client.RpcConnectionRegistry</dt>
 <dd>
 <div class="block">Default value for the fan out of hedged requests.</div>
 </dd>
@@ -67287,7 +67287,7 @@ service.</div>
 &nbsp;</dd>
 <dt>START_TIME_KEY - Static variable in class org.apache.hadoop.hbase.mapreduce.WALInputFormat</dt>
 <dd>&nbsp;</dd>
-<dt>startBlockEncoding(HFileBlockEncodingContext, DataOutputStream) - Method in class org.apache.hadoop.hbase.io.encoding.PrefixKeyDeltaEncoder</dt>
+<dt>startBlockEncoding(HFileBlockEncodingContext, DataOutputStream) - Method in class org.apache.hadoop.hbase.io.encoding.DiffKeyDeltaEncoder</dt>
 <dd>&nbsp;</dd>
 <dt>startBlockEncoding(HFileBlockEncodingContext, DataOutputStream) - Method in class org.apache.hadoop.hbase.io.encoding.CopyKeyDataBlockEncoder</dt>
 <dd>&nbsp;</dd>
diff --git a/apidocs/member-search-index.js b/apidocs/member-search-index.js
index 58cad68ca44..7b74cd0ba56 100644
--- a/apidocs/member-search-index.js
+++ b/apidocs/member-search-index.js
@@ -1 +1 @@
-memberSearchIndex = [{"p":"org.apache.hadoop.hbase.filter","c":"ParseConstants","l":"A"},{"p":"org.apache.hadoop.hbase.master","c":"RegionState.State","l":"ABNORMALLY_CLOSED"},{"p":"org.apache.hadoop.hbase.coprocessor","c":"CoprocessorHost","l":"ABORT_ON_ERROR_KEY"},{"p":"org.apache.hadoop.hdfs","c":"DummyDFSOutputStream","l":"abort()"},{"p":"org.apache.hadoop.hbase","c":"Abortable","l":"abort(String)","u":"abort(java.lang.String)"},{"p":"org.apache.hadoop.hbase","c":"Abortable","l":"abo [...]
\ No newline at end of file
+memberSearchIndex = [{"p":"org.apache.hadoop.hbase.filter","c":"ParseConstants","l":"A"},{"p":"org.apache.hadoop.hbase.master","c":"RegionState.State","l":"ABNORMALLY_CLOSED"},{"p":"org.apache.hadoop.hbase.coprocessor","c":"CoprocessorHost","l":"ABORT_ON_ERROR_KEY"},{"p":"org.apache.hadoop.hdfs","c":"DummyDFSOutputStream","l":"abort()"},{"p":"org.apache.hadoop.hbase","c":"Abortable","l":"abort(String)","u":"abort(java.lang.String)"},{"p":"org.apache.hadoop.hbase","c":"Abortable","l":"abo [...]
\ No newline at end of file
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html b/apidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html
index 5799fb1f77f..0aba0333b44 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html
@@ -76,672 +76,676 @@
 <span class="source-line-no">063</span><span id="line-63">  // if have encountered the next row. Only used for reversed scan</span>
 <span class="source-line-no">064</span><span id="line-64">  private boolean stopSkippingKVsIfNextRow = false;</span>
 <span class="source-line-no">065</span><span id="line-65">  // A Cell that represents the row before the most previously seeked to row in seekToPreviousRow</span>
-<span class="source-line-no">066</span><span id="line-66">  private Cell previousRow = null;</span>
-<span class="source-line-no">067</span><span id="line-67">  // Whether the underlying HFile is using a data block encoding that has lower cost for seeking to</span>
-<span class="source-line-no">068</span><span id="line-68">  // a row from the beginning of a block (i.e. RIV1). If the data block encoding has a high cost for</span>
-<span class="source-line-no">069</span><span id="line-69">  // seeks, then we can use a modified reverse scanning algorithm to reduce seeks from the beginning</span>
-<span class="source-line-no">070</span><span id="line-70">  // of the block</span>
-<span class="source-line-no">071</span><span id="line-71">  private final boolean isFastSeekingEncoding;</span>
-<span class="source-line-no">072</span><span id="line-72"></span>
-<span class="source-line-no">073</span><span id="line-73">  private static LongAdder seekCount;</span>
-<span class="source-line-no">074</span><span id="line-74"></span>
-<span class="source-line-no">075</span><span id="line-75">  private final boolean canOptimizeForNonNullColumn;</span>
-<span class="source-line-no">076</span><span id="line-76"></span>
-<span class="source-line-no">077</span><span id="line-77">  private final long readPt;</span>
-<span class="source-line-no">078</span><span id="line-78"></span>
-<span class="source-line-no">079</span><span id="line-79">  // Order of this scanner relative to other scanners when duplicate key-value is found.</span>
-<span class="source-line-no">080</span><span id="line-80">  // Higher values means scanner has newer data.</span>
-<span class="source-line-no">081</span><span id="line-81">  private final long scannerOrder;</span>
-<span class="source-line-no">082</span><span id="line-82"></span>
-<span class="source-line-no">083</span><span id="line-83">  /**</span>
-<span class="source-line-no">084</span><span id="line-84">   * Implements a {@link KeyValueScanner} on top of the specified {@link HFileScanner}</span>
-<span class="source-line-no">085</span><span id="line-85">   * @param useMVCC                     If true, scanner will filter out updates with MVCC larger</span>
-<span class="source-line-no">086</span><span id="line-86">   *                                    than {@code readPt}.</span>
-<span class="source-line-no">087</span><span id="line-87">   * @param readPt                      MVCC value to use to filter out the updates newer than this</span>
-<span class="source-line-no">088</span><span id="line-88">   *                                    scanner.</span>
-<span class="source-line-no">089</span><span id="line-89">   * @param hasMVCC                     Set to true if underlying store file reader has MVCC info.</span>
-<span class="source-line-no">090</span><span id="line-90">   * @param scannerOrder                Order of the scanner relative to other scanners. See</span>
-<span class="source-line-no">091</span><span id="line-91">   *                                    {@link KeyValueScanner#getScannerOrder()}.</span>
-<span class="source-line-no">092</span><span id="line-92">   * @param canOptimizeForNonNullColumn {@code true} if we can make sure there is no null column,</span>
-<span class="source-line-no">093</span><span id="line-93">   *                                    otherwise {@code false}. This is a hint for optimization.</span>
-<span class="source-line-no">094</span><span id="line-94">   * @param isFastSeekingEncoding       {@code true} if the data block encoding can seek quickly</span>
-<span class="source-line-no">095</span><span id="line-95">   *                                    from the beginning of a block (i.e. RIV1), otherwise</span>
-<span class="source-line-no">096</span><span id="line-96">   *                                    {@code false}. This is a hint for optimization.</span>
-<span class="source-line-no">097</span><span id="line-97">   */</span>
-<span class="source-line-no">098</span><span id="line-98">  public StoreFileScanner(StoreFileReader reader, HFileScanner hfs, boolean useMVCC,</span>
-<span class="source-line-no">099</span><span id="line-99">    boolean hasMVCC, long readPt, long scannerOrder, boolean canOptimizeForNonNullColumn,</span>
-<span class="source-line-no">100</span><span id="line-100">    boolean isFastSeekingEncoding) {</span>
-<span class="source-line-no">101</span><span id="line-101">    this.readPt = readPt;</span>
-<span class="source-line-no">102</span><span id="line-102">    this.reader = reader;</span>
-<span class="source-line-no">103</span><span id="line-103">    this.hfs = hfs;</span>
-<span class="source-line-no">104</span><span id="line-104">    this.enforceMVCC = useMVCC;</span>
-<span class="source-line-no">105</span><span id="line-105">    this.hasMVCCInfo = hasMVCC;</span>
-<span class="source-line-no">106</span><span id="line-106">    this.scannerOrder = scannerOrder;</span>
-<span class="source-line-no">107</span><span id="line-107">    this.canOptimizeForNonNullColumn = canOptimizeForNonNullColumn;</span>
-<span class="source-line-no">108</span><span id="line-108">    this.isFastSeekingEncoding = isFastSeekingEncoding;</span>
-<span class="source-line-no">109</span><span id="line-109">    this.reader.incrementRefCount();</span>
-<span class="source-line-no">110</span><span id="line-110">  }</span>
-<span class="source-line-no">111</span><span id="line-111"></span>
-<span class="source-line-no">112</span><span id="line-112">  /**</span>
-<span class="source-line-no">113</span><span id="line-113">   * Return an array of scanners corresponding to the given set of store files.</span>
-<span class="source-line-no">114</span><span id="line-114">   */</span>
-<span class="source-line-no">115</span><span id="line-115">  public static List&lt;StoreFileScanner&gt; getScannersForStoreFiles(Collection&lt;HStoreFile&gt; files,</span>
-<span class="source-line-no">116</span><span id="line-116">    boolean cacheBlocks, boolean usePread, boolean isCompaction, boolean useDropBehind, long readPt)</span>
-<span class="source-line-no">117</span><span id="line-117">    throws IOException {</span>
-<span class="source-line-no">118</span><span id="line-118">    return getScannersForStoreFiles(files, cacheBlocks, usePread, isCompaction, useDropBehind, null,</span>
-<span class="source-line-no">119</span><span id="line-119">      readPt);</span>
-<span class="source-line-no">120</span><span id="line-120">  }</span>
-<span class="source-line-no">121</span><span id="line-121"></span>
-<span class="source-line-no">122</span><span id="line-122">  /**</span>
-<span class="source-line-no">123</span><span id="line-123">   * Return an array of scanners corresponding to the given set of store files, And set the</span>
-<span class="source-line-no">124</span><span id="line-124">   * ScanQueryMatcher for each store file scanner for further optimization</span>
-<span class="source-line-no">125</span><span id="line-125">   */</span>
-<span class="source-line-no">126</span><span id="line-126">  public static List&lt;StoreFileScanner&gt; getScannersForStoreFiles(Collection&lt;HStoreFile&gt; files,</span>
-<span class="source-line-no">127</span><span id="line-127">    boolean cacheBlocks, boolean usePread, boolean isCompaction, boolean canUseDrop,</span>
-<span class="source-line-no">128</span><span id="line-128">    ScanQueryMatcher matcher, long readPt) throws IOException {</span>
-<span class="source-line-no">129</span><span id="line-129">    if (files.isEmpty()) {</span>
-<span class="source-line-no">130</span><span id="line-130">      return Collections.emptyList();</span>
-<span class="source-line-no">131</span><span id="line-131">    }</span>
-<span class="source-line-no">132</span><span id="line-132">    List&lt;StoreFileScanner&gt; scanners = new ArrayList&lt;&gt;(files.size());</span>
-<span class="source-line-no">133</span><span id="line-133">    boolean canOptimizeForNonNullColumn = matcher != null ? !matcher.hasNullColumnInQuery() : false;</span>
-<span class="source-line-no">134</span><span id="line-134">    PriorityQueue&lt;HStoreFile&gt; sortedFiles =</span>
-<span class="source-line-no">135</span><span id="line-135">      new PriorityQueue&lt;&gt;(files.size(), StoreFileComparators.SEQ_ID);</span>
-<span class="source-line-no">136</span><span id="line-136">    for (HStoreFile file : files) {</span>
-<span class="source-line-no">137</span><span id="line-137">      // The sort function needs metadata so we need to open reader first before sorting the list.</span>
-<span class="source-line-no">138</span><span id="line-138">      file.initReader();</span>
-<span class="source-line-no">139</span><span id="line-139">      sortedFiles.add(file);</span>
-<span class="source-line-no">140</span><span id="line-140">    }</span>
-<span class="source-line-no">141</span><span id="line-141">    boolean succ = false;</span>
-<span class="source-line-no">142</span><span id="line-142">    try {</span>
-<span class="source-line-no">143</span><span id="line-143">      for (int i = 0, n = files.size(); i &lt; n; i++) {</span>
-<span class="source-line-no">144</span><span id="line-144">        HStoreFile sf = sortedFiles.remove();</span>
-<span class="source-line-no">145</span><span id="line-145">        StoreFileScanner scanner;</span>
-<span class="source-line-no">146</span><span id="line-146">        if (usePread) {</span>
-<span class="source-line-no">147</span><span id="line-147">          scanner = sf.getPreadScanner(cacheBlocks, readPt, i, canOptimizeForNonNullColumn);</span>
-<span class="source-line-no">148</span><span id="line-148">        } else {</span>
-<span class="source-line-no">149</span><span id="line-149">          scanner = sf.getStreamScanner(canUseDrop, cacheBlocks, isCompaction, readPt, i,</span>
-<span class="source-line-no">150</span><span id="line-150">            canOptimizeForNonNullColumn);</span>
-<span class="source-line-no">151</span><span id="line-151">        }</span>
-<span class="source-line-no">152</span><span id="line-152">        scanners.add(scanner);</span>
-<span class="source-line-no">153</span><span id="line-153">      }</span>
-<span class="source-line-no">154</span><span id="line-154">      succ = true;</span>
-<span class="source-line-no">155</span><span id="line-155">    } finally {</span>
-<span class="source-line-no">156</span><span id="line-156">      if (!succ) {</span>
-<span class="source-line-no">157</span><span id="line-157">        for (StoreFileScanner scanner : scanners) {</span>
-<span class="source-line-no">158</span><span id="line-158">          scanner.close();</span>
-<span class="source-line-no">159</span><span id="line-159">        }</span>
-<span class="source-line-no">160</span><span id="line-160">      }</span>
-<span class="source-line-no">161</span><span id="line-161">    }</span>
-<span class="source-line-no">162</span><span id="line-162">    return scanners;</span>
-<span class="source-line-no">163</span><span id="line-163">  }</span>
-<span class="source-line-no">164</span><span id="line-164"></span>
-<span class="source-line-no">165</span><span id="line-165">  /**</span>
-<span class="source-line-no">166</span><span id="line-166">   * Get scanners for compaction. We will create a separated reader for each store file to avoid</span>
-<span class="source-line-no">167</span><span id="line-167">   * contention with normal read request.</span>
-<span class="source-line-no">168</span><span id="line-168">   */</span>
-<span class="source-line-no">169</span><span id="line-169">  public static List&lt;StoreFileScanner&gt; getScannersForCompaction(Collection&lt;HStoreFile&gt; files,</span>
-<span class="source-line-no">170</span><span id="line-170">    boolean canUseDropBehind, long readPt) throws IOException {</span>
-<span class="source-line-no">171</span><span id="line-171">    List&lt;StoreFileScanner&gt; scanners = new ArrayList&lt;&gt;(files.size());</span>
-<span class="source-line-no">172</span><span id="line-172">    List&lt;HStoreFile&gt; sortedFiles = new ArrayList&lt;&gt;(files);</span>
-<span class="source-line-no">173</span><span id="line-173">    Collections.sort(sortedFiles, StoreFileComparators.SEQ_ID);</span>
-<span class="source-line-no">174</span><span id="line-174">    boolean succ = false;</span>
-<span class="source-line-no">175</span><span id="line-175">    try {</span>
-<span class="source-line-no">176</span><span id="line-176">      for (int i = 0, n = sortedFiles.size(); i &lt; n; i++) {</span>
-<span class="source-line-no">177</span><span id="line-177">        scanners.add(</span>
-<span class="source-line-no">178</span><span id="line-178">          sortedFiles.get(i).getStreamScanner(canUseDropBehind, false, true, readPt, i, false));</span>
-<span class="source-line-no">179</span><span id="line-179">      }</span>
-<span class="source-line-no">180</span><span id="line-180">      succ = true;</span>
-<span class="source-line-no">181</span><span id="line-181">    } finally {</span>
-<span class="source-line-no">182</span><span id="line-182">      if (!succ) {</span>
-<span class="source-line-no">183</span><span id="line-183">        for (StoreFileScanner scanner : scanners) {</span>
-<span class="source-line-no">184</span><span id="line-184">          scanner.close();</span>
-<span class="source-line-no">185</span><span id="line-185">        }</span>
-<span class="source-line-no">186</span><span id="line-186">      }</span>
-<span class="source-line-no">187</span><span id="line-187">    }</span>
-<span class="source-line-no">188</span><span id="line-188">    return scanners;</span>
-<span class="source-line-no">189</span><span id="line-189">  }</span>
-<span class="source-line-no">190</span><span id="line-190"></span>
-<span class="source-line-no">191</span><span id="line-191">  @Override</span>
-<span class="source-line-no">192</span><span id="line-192">  public String toString() {</span>
-<span class="source-line-no">193</span><span id="line-193">    return "StoreFileScanner[" + hfs.toString() + ", cur=" + cur + "]";</span>
-<span class="source-line-no">194</span><span id="line-194">  }</span>
-<span class="source-line-no">195</span><span id="line-195"></span>
-<span class="source-line-no">196</span><span id="line-196">  @Override</span>
-<span class="source-line-no">197</span><span id="line-197">  public ExtendedCell peek() {</span>
-<span class="source-line-no">198</span><span id="line-198">    return cur;</span>
-<span class="source-line-no">199</span><span id="line-199">  }</span>
-<span class="source-line-no">200</span><span id="line-200"></span>
-<span class="source-line-no">201</span><span id="line-201">  @Override</span>
-<span class="source-line-no">202</span><span id="line-202">  public ExtendedCell next() throws IOException {</span>
-<span class="source-line-no">203</span><span id="line-203">    ExtendedCell retKey = cur;</span>
-<span class="source-line-no">204</span><span id="line-204"></span>
-<span class="source-line-no">205</span><span id="line-205">    try {</span>
-<span class="source-line-no">206</span><span id="line-206">      // only seek if we aren't at the end. cur == null implies 'end'.</span>
-<span class="source-line-no">207</span><span id="line-207">      if (cur != null) {</span>
-<span class="source-line-no">208</span><span id="line-208">        hfs.next();</span>
-<span class="source-line-no">209</span><span id="line-209">        setCurrentCell(hfs.getCell());</span>
-<span class="source-line-no">210</span><span id="line-210">        if (hasMVCCInfo || this.reader.isBulkLoaded()) {</span>
-<span class="source-line-no">211</span><span id="line-211">          skipKVsNewerThanReadpoint();</span>
-<span class="source-line-no">212</span><span id="line-212">        }</span>
-<span class="source-line-no">213</span><span id="line-213">      }</span>
-<span class="source-line-no">214</span><span id="line-214">    } catch (FileNotFoundException e) {</span>
-<span class="source-line-no">215</span><span id="line-215">      throw e;</span>
-<span class="source-line-no">216</span><span id="line-216">    } catch (IOException e) {</span>
-<span class="source-line-no">217</span><span id="line-217">      throw new IOException("Could not iterate " + this, e);</span>
-<span class="source-line-no">218</span><span id="line-218">    }</span>
-<span class="source-line-no">219</span><span id="line-219">    return retKey;</span>
-<span class="source-line-no">220</span><span id="line-220">  }</span>
-<span class="source-line-no">221</span><span id="line-221"></span>
-<span class="source-line-no">222</span><span id="line-222">  @Override</span>
-<span class="source-line-no">223</span><span id="line-223">  public boolean seek(ExtendedCell key) throws IOException {</span>
-<span class="source-line-no">224</span><span id="line-224">    if (seekCount != null) seekCount.increment();</span>
-<span class="source-line-no">225</span><span id="line-225"></span>
-<span class="source-line-no">226</span><span id="line-226">    try {</span>
-<span class="source-line-no">227</span><span id="line-227">      try {</span>
-<span class="source-line-no">228</span><span id="line-228">        if (!seekAtOrAfter(hfs, key)) {</span>
-<span class="source-line-no">229</span><span id="line-229">          this.cur = null;</span>
-<span class="source-line-no">230</span><span id="line-230">          return false;</span>
-<span class="source-line-no">231</span><span id="line-231">        }</span>
-<span class="source-line-no">232</span><span id="line-232"></span>
-<span class="source-line-no">233</span><span id="line-233">        setCurrentCell(hfs.getCell());</span>
-<span class="source-line-no">234</span><span id="line-234"></span>
-<span class="source-line-no">235</span><span id="line-235">        if (!hasMVCCInfo &amp;&amp; this.reader.isBulkLoaded()) {</span>
-<span class="source-line-no">236</span><span id="line-236">          return skipKVsNewerThanReadpoint();</span>
-<span class="source-line-no">237</span><span id="line-237">        } else {</span>
-<span class="source-line-no">238</span><span id="line-238">          return !hasMVCCInfo ? true : skipKVsNewerThanReadpoint();</span>
-<span class="source-line-no">239</span><span id="line-239">        }</span>
-<span class="source-line-no">240</span><span id="line-240">      } finally {</span>
-<span class="source-line-no">241</span><span id="line-241">        realSeekDone = true;</span>
-<span class="source-line-no">242</span><span id="line-242">        previousRow = null;</span>
-<span class="source-line-no">243</span><span id="line-243">      }</span>
-<span class="source-line-no">244</span><span id="line-244">    } catch (FileNotFoundException e) {</span>
-<span class="source-line-no">245</span><span id="line-245">      throw e;</span>
-<span class="source-line-no">246</span><span id="line-246">    } catch (IOException ioe) {</span>
-<span class="source-line-no">247</span><span id="line-247">      throw new IOException("Could not seek " + this + " to key " + key, ioe);</span>
-<span class="source-line-no">248</span><span id="line-248">    }</span>
-<span class="source-line-no">249</span><span id="line-249">  }</span>
-<span class="source-line-no">250</span><span id="line-250"></span>
-<span class="source-line-no">251</span><span id="line-251">  @Override</span>
-<span class="source-line-no">252</span><span id="line-252">  public boolean reseek(ExtendedCell key) throws IOException {</span>
-<span class="source-line-no">253</span><span id="line-253">    if (seekCount != null) seekCount.increment();</span>
-<span class="source-line-no">254</span><span id="line-254"></span>
-<span class="source-line-no">255</span><span id="line-255">    try {</span>
-<span class="source-line-no">256</span><span id="line-256">      try {</span>
-<span class="source-line-no">257</span><span id="line-257">        if (!reseekAtOrAfter(hfs, key)) {</span>
-<span class="source-line-no">258</span><span id="line-258">          this.cur = null;</span>
-<span class="source-line-no">259</span><span id="line-259">          return false;</span>
-<span class="source-line-no">260</span><span id="line-260">        }</span>
-<span class="source-line-no">261</span><span id="line-261">        setCurrentCell(hfs.getCell());</span>
-<span class="source-line-no">262</span><span id="line-262"></span>
-<span class="source-line-no">263</span><span id="line-263">        if (!hasMVCCInfo &amp;&amp; this.reader.isBulkLoaded()) {</span>
-<span class="source-line-no">264</span><span id="line-264">          return skipKVsNewerThanReadpoint();</span>
-<span class="source-line-no">265</span><span id="line-265">        } else {</span>
-<span class="source-line-no">266</span><span id="line-266">          return !hasMVCCInfo ? true : skipKVsNewerThanReadpoint();</span>
-<span class="source-line-no">267</span><span id="line-267">        }</span>
-<span class="source-line-no">268</span><span id="line-268">      } finally {</span>
-<span class="source-line-no">269</span><span id="line-269">        realSeekDone = true;</span>
-<span class="source-line-no">270</span><span id="line-270">        previousRow = null;</span>
-<span class="source-line-no">271</span><span id="line-271">      }</span>
-<span class="source-line-no">272</span><span id="line-272">    } catch (FileNotFoundException e) {</span>
-<span class="source-line-no">273</span><span id="line-273">      throw e;</span>
-<span class="source-line-no">274</span><span id="line-274">    } catch (IOException ioe) {</span>
-<span class="source-line-no">275</span><span id="line-275">      throw new IOException("Could not reseek " + this + " to key " + key, ioe);</span>
-<span class="source-line-no">276</span><span id="line-276">    }</span>
-<span class="source-line-no">277</span><span id="line-277">  }</span>
-<span class="source-line-no">278</span><span id="line-278"></span>
-<span class="source-line-no">279</span><span id="line-279">  protected void setCurrentCell(ExtendedCell newVal) throws IOException {</span>
-<span class="source-line-no">280</span><span id="line-280">    this.cur = newVal;</span>
-<span class="source-line-no">281</span><span id="line-281">    if (this.cur != null &amp;&amp; this.reader.isBulkLoaded() &amp;&amp; !this.reader.isSkipResetSeqId()) {</span>
-<span class="source-line-no">282</span><span id="line-282">      PrivateCellUtil.setSequenceId(cur, this.reader.getSequenceID());</span>
-<span class="source-line-no">283</span><span id="line-283">    }</span>
-<span class="source-line-no">284</span><span id="line-284">  }</span>
-<span class="source-line-no">285</span><span id="line-285"></span>
-<span class="source-line-no">286</span><span id="line-286">  protected boolean skipKVsNewerThanReadpoint() throws IOException {</span>
-<span class="source-line-no">287</span><span id="line-287">    // We want to ignore all key-values that are newer than our current</span>
-<span class="source-line-no">288</span><span id="line-288">    // readPoint</span>
-<span class="source-line-no">289</span><span id="line-289">    Cell startKV = cur;</span>
-<span class="source-line-no">290</span><span id="line-290">    while (enforceMVCC &amp;&amp; cur != null &amp;&amp; (cur.getSequenceId() &gt; readPt)) {</span>
-<span class="source-line-no">291</span><span id="line-291">      boolean hasNext = hfs.next();</span>
-<span class="source-line-no">292</span><span id="line-292">      setCurrentCell(hfs.getCell());</span>
-<span class="source-line-no">293</span><span id="line-293">      if (</span>
-<span class="source-line-no">294</span><span id="line-294">        hasNext &amp;&amp; this.stopSkippingKVsIfNextRow &amp;&amp; getComparator().compareRows(cur, startKV) &gt; 0</span>
-<span class="source-line-no">295</span><span id="line-295">      ) {</span>
-<span class="source-line-no">296</span><span id="line-296">        return false;</span>
-<span class="source-line-no">297</span><span id="line-297">      }</span>
-<span class="source-line-no">298</span><span id="line-298">    }</span>
-<span class="source-line-no">299</span><span id="line-299"></span>
-<span class="source-line-no">300</span><span id="line-300">    if (cur == null) {</span>
-<span class="source-line-no">301</span><span id="line-301">      return false;</span>
-<span class="source-line-no">302</span><span id="line-302">    }</span>
-<span class="source-line-no">303</span><span id="line-303"></span>
-<span class="source-line-no">304</span><span id="line-304">    return true;</span>
-<span class="source-line-no">305</span><span id="line-305">  }</span>
+<span class="source-line-no">066</span><span id="line-66">  // Note: Oftentimes this will contain an instance of a KeyOnly implementation of the Cell as it's</span>
+<span class="source-line-no">067</span><span id="line-67">  // not returned to callers and only used as a hint for seeking (so we can save on</span>
+<span class="source-line-no">068</span><span id="line-68">  // memory/allocations)</span>
+<span class="source-line-no">069</span><span id="line-69">  private ExtendedCell previousRow = null;</span>
+<span class="source-line-no">070</span><span id="line-70">  // Whether the underlying HFile is using a data block encoding that has lower cost for seeking to</span>
+<span class="source-line-no">071</span><span id="line-71">  // a row from the beginning of a block (i.e. RIV1). If the data block encoding has a high cost for</span>
+<span class="source-line-no">072</span><span id="line-72">  // seeks, then we can use a modified reverse scanning algorithm to reduce seeks from the beginning</span>
+<span class="source-line-no">073</span><span id="line-73">  // of the block</span>
+<span class="source-line-no">074</span><span id="line-74">  private final boolean isFastSeekingEncoding;</span>
+<span class="source-line-no">075</span><span id="line-75"></span>
+<span class="source-line-no">076</span><span id="line-76">  private static LongAdder seekCount;</span>
+<span class="source-line-no">077</span><span id="line-77"></span>
+<span class="source-line-no">078</span><span id="line-78">  private final boolean canOptimizeForNonNullColumn;</span>
+<span class="source-line-no">079</span><span id="line-79"></span>
+<span class="source-line-no">080</span><span id="line-80">  private final long readPt;</span>
+<span class="source-line-no">081</span><span id="line-81"></span>
+<span class="source-line-no">082</span><span id="line-82">  // Order of this scanner relative to other scanners when duplicate key-value is found.</span>
+<span class="source-line-no">083</span><span id="line-83">  // Higher values means scanner has newer data.</span>
+<span class="source-line-no">084</span><span id="line-84">  private final long scannerOrder;</span>
+<span class="source-line-no">085</span><span id="line-85"></span>
+<span class="source-line-no">086</span><span id="line-86">  /**</span>
+<span class="source-line-no">087</span><span id="line-87">   * Implements a {@link KeyValueScanner} on top of the specified {@link HFileScanner}</span>
+<span class="source-line-no">088</span><span id="line-88">   * @param useMVCC                     If true, scanner will filter out updates with MVCC larger</span>
+<span class="source-line-no">089</span><span id="line-89">   *                                    than {@code readPt}.</span>
+<span class="source-line-no">090</span><span id="line-90">   * @param readPt                      MVCC value to use to filter out the updates newer than this</span>
+<span class="source-line-no">091</span><span id="line-91">   *                                    scanner.</span>
+<span class="source-line-no">092</span><span id="line-92">   * @param hasMVCC                     Set to true if underlying store file reader has MVCC info.</span>
+<span class="source-line-no">093</span><span id="line-93">   * @param scannerOrder                Order of the scanner relative to other scanners. See</span>
+<span class="source-line-no">094</span><span id="line-94">   *                                    {@link KeyValueScanner#getScannerOrder()}.</span>
+<span class="source-line-no">095</span><span id="line-95">   * @param canOptimizeForNonNullColumn {@code true} if we can make sure there is no null column,</span>
+<span class="source-line-no">096</span><span id="line-96">   *                                    otherwise {@code false}. This is a hint for optimization.</span>
+<span class="source-line-no">097</span><span id="line-97">   * @param isFastSeekingEncoding       {@code true} if the data block encoding can seek quickly</span>
+<span class="source-line-no">098</span><span id="line-98">   *                                    from the beginning of a block (i.e. RIV1), otherwise</span>
+<span class="source-line-no">099</span><span id="line-99">   *                                    {@code false}. This is a hint for optimization.</span>
+<span class="source-line-no">100</span><span id="line-100">   */</span>
+<span class="source-line-no">101</span><span id="line-101">  public StoreFileScanner(StoreFileReader reader, HFileScanner hfs, boolean useMVCC,</span>
+<span class="source-line-no">102</span><span id="line-102">    boolean hasMVCC, long readPt, long scannerOrder, boolean canOptimizeForNonNullColumn,</span>
+<span class="source-line-no">103</span><span id="line-103">    boolean isFastSeekingEncoding) {</span>
+<span class="source-line-no">104</span><span id="line-104">    this.readPt = readPt;</span>
+<span class="source-line-no">105</span><span id="line-105">    this.reader = reader;</span>
+<span class="source-line-no">106</span><span id="line-106">    this.hfs = hfs;</span>
+<span class="source-line-no">107</span><span id="line-107">    this.enforceMVCC = useMVCC;</span>
+<span class="source-line-no">108</span><span id="line-108">    this.hasMVCCInfo = hasMVCC;</span>
+<span class="source-line-no">109</span><span id="line-109">    this.scannerOrder = scannerOrder;</span>
+<span class="source-line-no">110</span><span id="line-110">    this.canOptimizeForNonNullColumn = canOptimizeForNonNullColumn;</span>
+<span class="source-line-no">111</span><span id="line-111">    this.isFastSeekingEncoding = isFastSeekingEncoding;</span>
+<span class="source-line-no">112</span><span id="line-112">    this.reader.incrementRefCount();</span>
+<span class="source-line-no">113</span><span id="line-113">  }</span>
+<span class="source-line-no">114</span><span id="line-114"></span>
+<span class="source-line-no">115</span><span id="line-115">  /**</span>
+<span class="source-line-no">116</span><span id="line-116">   * Return an array of scanners corresponding to the given set of store files.</span>
+<span class="source-line-no">117</span><span id="line-117">   */</span>
+<span class="source-line-no">118</span><span id="line-118">  public static List&lt;StoreFileScanner&gt; getScannersForStoreFiles(Collection&lt;HStoreFile&gt; files,</span>
+<span class="source-line-no">119</span><span id="line-119">    boolean cacheBlocks, boolean usePread, boolean isCompaction, boolean useDropBehind, long readPt)</span>
+<span class="source-line-no">120</span><span id="line-120">    throws IOException {</span>
+<span class="source-line-no">121</span><span id="line-121">    return getScannersForStoreFiles(files, cacheBlocks, usePread, isCompaction, useDropBehind, null,</span>
+<span class="source-line-no">122</span><span id="line-122">      readPt);</span>
+<span class="source-line-no">123</span><span id="line-123">  }</span>
+<span class="source-line-no">124</span><span id="line-124"></span>
+<span class="source-line-no">125</span><span id="line-125">  /**</span>
+<span class="source-line-no">126</span><span id="line-126">   * Return an array of scanners corresponding to the given set of store files, And set the</span>
+<span class="source-line-no">127</span><span id="line-127">   * ScanQueryMatcher for each store file scanner for further optimization</span>
+<span class="source-line-no">128</span><span id="line-128">   */</span>
+<span class="source-line-no">129</span><span id="line-129">  public static List&lt;StoreFileScanner&gt; getScannersForStoreFiles(Collection&lt;HStoreFile&gt; files,</span>
+<span class="source-line-no">130</span><span id="line-130">    boolean cacheBlocks, boolean usePread, boolean isCompaction, boolean canUseDrop,</span>
+<span class="source-line-no">131</span><span id="line-131">    ScanQueryMatcher matcher, long readPt) throws IOException {</span>
+<span class="source-line-no">132</span><span id="line-132">    if (files.isEmpty()) {</span>
+<span class="source-line-no">133</span><span id="line-133">      return Collections.emptyList();</span>
+<span class="source-line-no">134</span><span id="line-134">    }</span>
+<span class="source-line-no">135</span><span id="line-135">    List&lt;StoreFileScanner&gt; scanners = new ArrayList&lt;&gt;(files.size());</span>
+<span class="source-line-no">136</span><span id="line-136">    boolean canOptimizeForNonNullColumn = matcher != null ? !matcher.hasNullColumnInQuery() : false;</span>
+<span class="source-line-no">137</span><span id="line-137">    PriorityQueue&lt;HStoreFile&gt; sortedFiles =</span>
+<span class="source-line-no">138</span><span id="line-138">      new PriorityQueue&lt;&gt;(files.size(), StoreFileComparators.SEQ_ID);</span>
+<span class="source-line-no">139</span><span id="line-139">    for (HStoreFile file : files) {</span>
+<span class="source-line-no">140</span><span id="line-140">      // The sort function needs metadata so we need to open reader first before sorting the list.</span>
+<span class="source-line-no">141</span><span id="line-141">      file.initReader();</span>
+<span class="source-line-no">142</span><span id="line-142">      sortedFiles.add(file);</span>
+<span class="source-line-no">143</span><span id="line-143">    }</span>
+<span class="source-line-no">144</span><span id="line-144">    boolean succ = false;</span>
+<span class="source-line-no">145</span><span id="line-145">    try {</span>
+<span class="source-line-no">146</span><span id="line-146">      for (int i = 0, n = files.size(); i &lt; n; i++) {</span>
+<span class="source-line-no">147</span><span id="line-147">        HStoreFile sf = sortedFiles.remove();</span>
+<span class="source-line-no">148</span><span id="line-148">        StoreFileScanner scanner;</span>
+<span class="source-line-no">149</span><span id="line-149">        if (usePread) {</span>
+<span class="source-line-no">150</span><span id="line-150">          scanner = sf.getPreadScanner(cacheBlocks, readPt, i, canOptimizeForNonNullColumn);</span>
+<span class="source-line-no">151</span><span id="line-151">        } else {</span>
+<span class="source-line-no">152</span><span id="line-152">          scanner = sf.getStreamScanner(canUseDrop, cacheBlocks, isCompaction, readPt, i,</span>
+<span class="source-line-no">153</span><span id="line-153">            canOptimizeForNonNullColumn);</span>
+<span class="source-line-no">154</span><span id="line-154">        }</span>
+<span class="source-line-no">155</span><span id="line-155">        scanners.add(scanner);</span>
+<span class="source-line-no">156</span><span id="line-156">      }</span>
+<span class="source-line-no">157</span><span id="line-157">      succ = true;</span>
+<span class="source-line-no">158</span><span id="line-158">    } finally {</span>
+<span class="source-line-no">159</span><span id="line-159">      if (!succ) {</span>
+<span class="source-line-no">160</span><span id="line-160">        for (StoreFileScanner scanner : scanners) {</span>
+<span class="source-line-no">161</span><span id="line-161">          scanner.close();</span>
+<span class="source-line-no">162</span><span id="line-162">        }</span>
+<span class="source-line-no">163</span><span id="line-163">      }</span>
+<span class="source-line-no">164</span><span id="line-164">    }</span>
+<span class="source-line-no">165</span><span id="line-165">    return scanners;</span>
+<span class="source-line-no">166</span><span id="line-166">  }</span>
+<span class="source-line-no">167</span><span id="line-167"></span>
+<span class="source-line-no">168</span><span id="line-168">  /**</span>
+<span class="source-line-no">169</span><span id="line-169">   * Get scanners for compaction. We will create a separated reader for each store file to avoid</span>
+<span class="source-line-no">170</span><span id="line-170">   * contention with normal read request.</span>
+<span class="source-line-no">171</span><span id="line-171">   */</span>
+<span class="source-line-no">172</span><span id="line-172">  public static List&lt;StoreFileScanner&gt; getScannersForCompaction(Collection&lt;HStoreFile&gt; files,</span>
+<span class="source-line-no">173</span><span id="line-173">    boolean canUseDropBehind, long readPt) throws IOException {</span>
+<span class="source-line-no">174</span><span id="line-174">    List&lt;StoreFileScanner&gt; scanners = new ArrayList&lt;&gt;(files.size());</span>
+<span class="source-line-no">175</span><span id="line-175">    List&lt;HStoreFile&gt; sortedFiles = new ArrayList&lt;&gt;(files);</span>
+<span class="source-line-no">176</span><span id="line-176">    Collections.sort(sortedFiles, StoreFileComparators.SEQ_ID);</span>
+<span class="source-line-no">177</span><span id="line-177">    boolean succ = false;</span>
+<span class="source-line-no">178</span><span id="line-178">    try {</span>
+<span class="source-line-no">179</span><span id="line-179">      for (int i = 0, n = sortedFiles.size(); i &lt; n; i++) {</span>
+<span class="source-line-no">180</span><span id="line-180">        scanners.add(</span>
+<span class="source-line-no">181</span><span id="line-181">          sortedFiles.get(i).getStreamScanner(canUseDropBehind, false, true, readPt, i, false));</span>
+<span class="source-line-no">182</span><span id="line-182">      }</span>
+<span class="source-line-no">183</span><span id="line-183">      succ = true;</span>
+<span class="source-line-no">184</span><span id="line-184">    } finally {</span>
+<span class="source-line-no">185</span><span id="line-185">      if (!succ) {</span>
+<span class="source-line-no">186</span><span id="line-186">        for (StoreFileScanner scanner : scanners) {</span>
+<span class="source-line-no">187</span><span id="line-187">          scanner.close();</span>
+<span class="source-line-no">188</span><span id="line-188">        }</span>
+<span class="source-line-no">189</span><span id="line-189">      }</span>
+<span class="source-line-no">190</span><span id="line-190">    }</span>
+<span class="source-line-no">191</span><span id="line-191">    return scanners;</span>
+<span class="source-line-no">192</span><span id="line-192">  }</span>
+<span class="source-line-no">193</span><span id="line-193"></span>
+<span class="source-line-no">194</span><span id="line-194">  @Override</span>
+<span class="source-line-no">195</span><span id="line-195">  public String toString() {</span>
+<span class="source-line-no">196</span><span id="line-196">    return "StoreFileScanner[" + hfs.toString() + ", cur=" + cur + "]";</span>
+<span class="source-line-no">197</span><span id="line-197">  }</span>
+<span class="source-line-no">198</span><span id="line-198"></span>
+<span class="source-line-no">199</span><span id="line-199">  @Override</span>
+<span class="source-line-no">200</span><span id="line-200">  public ExtendedCell peek() {</span>
+<span class="source-line-no">201</span><span id="line-201">    return cur;</span>
+<span class="source-line-no">202</span><span id="line-202">  }</span>
+<span class="source-line-no">203</span><span id="line-203"></span>
+<span class="source-line-no">204</span><span id="line-204">  @Override</span>
+<span class="source-line-no">205</span><span id="line-205">  public ExtendedCell next() throws IOException {</span>
+<span class="source-line-no">206</span><span id="line-206">    ExtendedCell retKey = cur;</span>
+<span class="source-line-no">207</span><span id="line-207"></span>
+<span class="source-line-no">208</span><span id="line-208">    try {</span>
+<span class="source-line-no">209</span><span id="line-209">      // only seek if we aren't at the end. cur == null implies 'end'.</span>
+<span class="source-line-no">210</span><span id="line-210">      if (cur != null) {</span>
+<span class="source-line-no">211</span><span id="line-211">        hfs.next();</span>
+<span class="source-line-no">212</span><span id="line-212">        setCurrentCell(hfs.getCell());</span>
+<span class="source-line-no">213</span><span id="line-213">        if (hasMVCCInfo || this.reader.isBulkLoaded()) {</span>
+<span class="source-line-no">214</span><span id="line-214">          skipKVsNewerThanReadpoint();</span>
+<span class="source-line-no">215</span><span id="line-215">        }</span>
+<span class="source-line-no">216</span><span id="line-216">      }</span>
+<span class="source-line-no">217</span><span id="line-217">    } catch (FileNotFoundException e) {</span>
+<span class="source-line-no">218</span><span id="line-218">      throw e;</span>
+<span class="source-line-no">219</span><span id="line-219">    } catch (IOException e) {</span>
+<span class="source-line-no">220</span><span id="line-220">      throw new IOException("Could not iterate " + this, e);</span>
+<span class="source-line-no">221</span><span id="line-221">    }</span>
+<span class="source-line-no">222</span><span id="line-222">    return retKey;</span>
+<span class="source-line-no">223</span><span id="line-223">  }</span>
+<span class="source-line-no">224</span><span id="line-224"></span>
+<span class="source-line-no">225</span><span id="line-225">  @Override</span>
+<span class="source-line-no">226</span><span id="line-226">  public boolean seek(ExtendedCell key) throws IOException {</span>
+<span class="source-line-no">227</span><span id="line-227">    if (seekCount != null) seekCount.increment();</span>
+<span class="source-line-no">228</span><span id="line-228"></span>
+<span class="source-line-no">229</span><span id="line-229">    try {</span>
+<span class="source-line-no">230</span><span id="line-230">      try {</span>
+<span class="source-line-no">231</span><span id="line-231">        if (!seekAtOrAfter(hfs, key)) {</span>
+<span class="source-line-no">232</span><span id="line-232">          this.cur = null;</span>
+<span class="source-line-no">233</span><span id="line-233">          return false;</span>
+<span class="source-line-no">234</span><span id="line-234">        }</span>
+<span class="source-line-no">235</span><span id="line-235"></span>
+<span class="source-line-no">236</span><span id="line-236">        setCurrentCell(hfs.getCell());</span>
+<span class="source-line-no">237</span><span id="line-237"></span>
+<span class="source-line-no">238</span><span id="line-238">        if (!hasMVCCInfo &amp;&amp; this.reader.isBulkLoaded()) {</span>
+<span class="source-line-no">239</span><span id="line-239">          return skipKVsNewerThanReadpoint();</span>
+<span class="source-line-no">240</span><span id="line-240">        } else {</span>
+<span class="source-line-no">241</span><span id="line-241">          return !hasMVCCInfo ? true : skipKVsNewerThanReadpoint();</span>
+<span class="source-line-no">242</span><span id="line-242">        }</span>
+<span class="source-line-no">243</span><span id="line-243">      } finally {</span>
+<span class="source-line-no">244</span><span id="line-244">        realSeekDone = true;</span>
+<span class="source-line-no">245</span><span id="line-245">        previousRow = null;</span>
+<span class="source-line-no">246</span><span id="line-246">      }</span>
+<span class="source-line-no">247</span><span id="line-247">    } catch (FileNotFoundException e) {</span>
+<span class="source-line-no">248</span><span id="line-248">      throw e;</span>
+<span class="source-line-no">249</span><span id="line-249">    } catch (IOException ioe) {</span>
+<span class="source-line-no">250</span><span id="line-250">      throw new IOException("Could not seek " + this + " to key " + key, ioe);</span>
+<span class="source-line-no">251</span><span id="line-251">    }</span>
+<span class="source-line-no">252</span><span id="line-252">  }</span>
+<span class="source-line-no">253</span><span id="line-253"></span>
+<span class="source-line-no">254</span><span id="line-254">  @Override</span>
+<span class="source-line-no">255</span><span id="line-255">  public boolean reseek(ExtendedCell key) throws IOException {</span>
+<span class="source-line-no">256</span><span id="line-256">    if (seekCount != null) seekCount.increment();</span>
+<span class="source-line-no">257</span><span id="line-257"></span>
+<span class="source-line-no">258</span><span id="line-258">    try {</span>
+<span class="source-line-no">259</span><span id="line-259">      try {</span>
+<span class="source-line-no">260</span><span id="line-260">        if (!reseekAtOrAfter(hfs, key)) {</span>
+<span class="source-line-no">261</span><span id="line-261">          this.cur = null;</span>
+<span class="source-line-no">262</span><span id="line-262">          return false;</span>
+<span class="source-line-no">263</span><span id="line-263">        }</span>
+<span class="source-line-no">264</span><span id="line-264">        setCurrentCell(hfs.getCell());</span>
+<span class="source-line-no">265</span><span id="line-265"></span>
+<span class="source-line-no">266</span><span id="line-266">        if (!hasMVCCInfo &amp;&amp; this.reader.isBulkLoaded()) {</span>
+<span class="source-line-no">267</span><span id="line-267">          return skipKVsNewerThanReadpoint();</span>
+<span class="source-line-no">268</span><span id="line-268">        } else {</span>
+<span class="source-line-no">269</span><span id="line-269">          return !hasMVCCInfo ? true : skipKVsNewerThanReadpoint();</span>
+<span class="source-line-no">270</span><span id="line-270">        }</span>
+<span class="source-line-no">271</span><span id="line-271">      } finally {</span>
+<span class="source-line-no">272</span><span id="line-272">        realSeekDone = true;</span>
+<span class="source-line-no">273</span><span id="line-273">        previousRow = null;</span>
+<span class="source-line-no">274</span><span id="line-274">      }</span>
+<span class="source-line-no">275</span><span id="line-275">    } catch (FileNotFoundException e) {</span>
+<span class="source-line-no">276</span><span id="line-276">      throw e;</span>
+<span class="source-line-no">277</span><span id="line-277">    } catch (IOException ioe) {</span>
+<span class="source-line-no">278</span><span id="line-278">      throw new IOException("Could not reseek " + this + " to key " + key, ioe);</span>
+<span class="source-line-no">279</span><span id="line-279">    }</span>
+<span class="source-line-no">280</span><span id="line-280">  }</span>
+<span class="source-line-no">281</span><span id="line-281"></span>
+<span class="source-line-no">282</span><span id="line-282">  protected void setCurrentCell(ExtendedCell newVal) throws IOException {</span>
+<span class="source-line-no">283</span><span id="line-283">    this.cur = newVal;</span>
+<span class="source-line-no">284</span><span id="line-284">    if (this.cur != null &amp;&amp; this.reader.isBulkLoaded() &amp;&amp; !this.reader.isSkipResetSeqId()) {</span>
+<span class="source-line-no">285</span><span id="line-285">      PrivateCellUtil.setSequenceId(cur, this.reader.getSequenceID());</span>
+<span class="source-line-no">286</span><span id="line-286">    }</span>
+<span class="source-line-no">287</span><span id="line-287">  }</span>
+<span class="source-line-no">288</span><span id="line-288"></span>
+<span class="source-line-no">289</span><span id="line-289">  protected boolean skipKVsNewerThanReadpoint() throws IOException {</span>
+<span class="source-line-no">290</span><span id="line-290">    // We want to ignore all key-values that are newer than our current</span>
+<span class="source-line-no">291</span><span id="line-291">    // readPoint</span>
+<span class="source-line-no">292</span><span id="line-292">    Cell startKV = cur;</span>
+<span class="source-line-no">293</span><span id="line-293">    while (enforceMVCC &amp;&amp; cur != null &amp;&amp; (cur.getSequenceId() &gt; readPt)) {</span>
+<span class="source-line-no">294</span><span id="line-294">      boolean hasNext = hfs.next();</span>
+<span class="source-line-no">295</span><span id="line-295">      setCurrentCell(hfs.getCell());</span>
+<span class="source-line-no">296</span><span id="line-296">      if (</span>
+<span class="source-line-no">297</span><span id="line-297">        hasNext &amp;&amp; this.stopSkippingKVsIfNextRow &amp;&amp; getComparator().compareRows(cur, startKV) &gt; 0</span>
+<span class="source-line-no">298</span><span id="line-298">      ) {</span>
+<span class="source-line-no">299</span><span id="line-299">        return false;</span>
+<span class="source-line-no">300</span><span id="line-300">      }</span>
+<span class="source-line-no">301</span><span id="line-301">    }</span>
+<span class="source-line-no">302</span><span id="line-302"></span>
+<span class="source-line-no">303</span><span id="line-303">    if (cur == null) {</span>
+<span class="source-line-no">304</span><span id="line-304">      return false;</span>
+<span class="source-line-no">305</span><span id="line-305">    }</span>
 <span class="source-line-no">306</span><span id="line-306"></span>
-<span class="source-line-no">307</span><span id="line-307">  @Override</span>
-<span class="source-line-no">308</span><span id="line-308">  public void close() {</span>
-<span class="source-line-no">309</span><span id="line-309">    if (closed) return;</span>
-<span class="source-line-no">310</span><span id="line-310">    cur = null;</span>
-<span class="source-line-no">311</span><span id="line-311">    this.hfs.close();</span>
-<span class="source-line-no">312</span><span id="line-312">    if (this.reader != null) {</span>
-<span class="source-line-no">313</span><span id="line-313">      this.reader.readCompleted();</span>
-<span class="source-line-no">314</span><span id="line-314">    }</span>
-<span class="source-line-no">315</span><span id="line-315">    closed = true;</span>
-<span class="source-line-no">316</span><span id="line-316">  }</span>
-<span class="source-line-no">317</span><span id="line-317"></span>
-<span class="source-line-no">318</span><span id="line-318">  /** Returns false if not found or if k is after the end. */</span>
-<span class="source-line-no">319</span><span id="line-319">  public static boolean seekAtOrAfter(HFileScanner s, ExtendedCell k) throws IOException {</span>
-<span class="source-line-no">320</span><span id="line-320">    int result = s.seekTo(k);</span>
-<span class="source-line-no">321</span><span id="line-321">    if (result &lt; 0) {</span>
-<span class="source-line-no">322</span><span id="line-322">      if (result == HConstants.INDEX_KEY_MAGIC) {</span>
-<span class="source-line-no">323</span><span id="line-323">        // using faked key</span>
-<span class="source-line-no">324</span><span id="line-324">        return true;</span>
-<span class="source-line-no">325</span><span id="line-325">      }</span>
-<span class="source-line-no">326</span><span id="line-326">      // Passed KV is smaller than first KV in file, work from start of file</span>
-<span class="source-line-no">327</span><span id="line-327">      return s.seekTo();</span>
-<span class="source-line-no">328</span><span id="line-328">    } else if (result &gt; 0) {</span>
-<span class="source-line-no">329</span><span id="line-329">      // Passed KV is larger than current KV in file, if there is a next</span>
-<span class="source-line-no">330</span><span id="line-330">      // it is the "after", if not then this scanner is done.</span>
-<span class="source-line-no">331</span><span id="line-331">      return s.next();</span>
-<span class="source-line-no">332</span><span id="line-332">    }</span>
-<span class="source-line-no">333</span><span id="line-333">    // Seeked to the exact key</span>
-<span class="source-line-no">334</span><span id="line-334">    return true;</span>
-<span class="source-line-no">335</span><span id="line-335">  }</span>
-<span class="source-line-no">336</span><span id="line-336"></span>
-<span class="source-line-no">337</span><span id="line-337">  static boolean reseekAtOrAfter(HFileScanner s, ExtendedCell k) throws IOException {</span>
-<span class="source-line-no">338</span><span id="line-338">    // This function is similar to seekAtOrAfter function</span>
-<span class="source-line-no">339</span><span id="line-339">    int result = s.reseekTo(k);</span>
-<span class="source-line-no">340</span><span id="line-340">    if (result &lt;= 0) {</span>
-<span class="source-line-no">341</span><span id="line-341">      if (result == HConstants.INDEX_KEY_MAGIC) {</span>
-<span class="source-line-no">342</span><span id="line-342">        // using faked key</span>
-<span class="source-line-no">343</span><span id="line-343">        return true;</span>
-<span class="source-line-no">344</span><span id="line-344">      }</span>
-<span class="source-line-no">345</span><span id="line-345">      // If up to now scanner is not seeked yet, this means passed KV is smaller</span>
-<span class="source-line-no">346</span><span id="line-346">      // than first KV in file, and it is the first time we seek on this file.</span>
-<span class="source-line-no">347</span><span id="line-347">      // So we also need to work from the start of file.</span>
-<span class="source-line-no">348</span><span id="line-348">      if (!s.isSeeked()) {</span>
-<span class="source-line-no">349</span><span id="line-349">        return s.seekTo();</span>
-<span class="source-line-no">350</span><span id="line-350">      }</span>
-<span class="source-line-no">351</span><span id="line-351">      return true;</span>
-<span class="source-line-no">352</span><span id="line-352">    }</span>
-<span class="source-line-no">353</span><span id="line-353">    // passed KV is larger than current KV in file, if there is a next</span>
-<span class="source-line-no">354</span><span id="line-354">    // it is after, if not then this scanner is done.</span>
-<span class="source-line-no">355</span><span id="line-355">    return s.next();</span>
-<span class="source-line-no">356</span><span id="line-356">  }</span>
-<span class="source-line-no">357</span><span id="line-357"></span>
-<span class="source-line-no">358</span><span id="line-358">  /**</span>
-<span class="source-line-no">359</span><span id="line-359">   * @see KeyValueScanner#getScannerOrder()</span>
-<span class="source-line-no">360</span><span id="line-360">   */</span>
-<span class="source-line-no">361</span><span id="line-361">  @Override</span>
-<span class="source-line-no">362</span><span id="line-362">  public long getScannerOrder() {</span>
-<span class="source-line-no">363</span><span id="line-363">    return scannerOrder;</span>
-<span class="source-line-no">364</span><span id="line-364">  }</span>
-<span class="source-line-no">365</span><span id="line-365"></span>
-<span class="source-line-no">366</span><span id="line-366">  /**</span>
-<span class="source-line-no">367</span><span id="line-367">   * Pretend we have done a seek but don't do it yet, if possible. The hope is that we find</span>
-<span class="source-line-no">368</span><span id="line-368">   * requested columns in more recent files and won't have to seek in older files. Creates a fake</span>
-<span class="source-line-no">369</span><span id="line-369">   * key/value with the given row/column and the highest (most recent) possible timestamp we might</span>
-<span class="source-line-no">370</span><span id="line-370">   * get from this file. When users of such "lazy scanner" need to know the next KV precisely (e.g.</span>
-<span class="source-line-no">371</span><span id="line-371">   * when this scanner is at the top of the heap), they run {@link #enforceSeek()}.</span>
-<span class="source-line-no">372</span><span id="line-372">   * &lt;p&gt;</span>
-<span class="source-line-no">373</span><span id="line-373">   * Note that this function does guarantee that the current KV of this scanner will be advanced to</span>
-<span class="source-line-no">374</span><span id="line-374">   * at least the given KV. Because of this, it does have to do a real seek in cases when the seek</span>
-<span class="source-line-no">375</span><span id="line-375">   * timestamp is older than the highest timestamp of the file, e.g. when we are trying to seek to</span>
-<span class="source-line-no">376</span><span id="line-376">   * the next row/column and use OLDEST_TIMESTAMP in the seek key.</span>
-<span class="source-line-no">377</span><span id="line-377">   */</span>
-<span class="source-line-no">378</span><span id="line-378">  @Override</span>
-<span class="source-line-no">379</span><span id="line-379">  public boolean requestSeek(ExtendedCell kv, boolean forward, boolean useBloom)</span>
-<span class="source-line-no">380</span><span id="line-380">    throws IOException {</span>
-<span class="source-line-no">381</span><span id="line-381">    if (kv.getFamilyLength() == 0) {</span>
-<span class="source-line-no">382</span><span id="line-382">      useBloom = false;</span>
-<span class="source-line-no">383</span><span id="line-383">    }</span>
-<span class="source-line-no">384</span><span id="line-384"></span>
-<span class="source-line-no">385</span><span id="line-385">    boolean haveToSeek = true;</span>
-<span class="source-line-no">386</span><span id="line-386">    if (useBloom) {</span>
-<span class="source-line-no">387</span><span id="line-387">      // check ROWCOL Bloom filter first.</span>
-<span class="source-line-no">388</span><span id="line-388">      if (reader.getBloomFilterType() == BloomType.ROWCOL) {</span>
-<span class="source-line-no">389</span><span id="line-389">        haveToSeek = reader.passesGeneralRowColBloomFilter(kv);</span>
-<span class="source-line-no">390</span><span id="line-390">      } else if (</span>
-<span class="source-line-no">391</span><span id="line-391">        canOptimizeForNonNullColumn</span>
-<span class="source-line-no">392</span><span id="line-392">          &amp;&amp; ((PrivateCellUtil.isDeleteFamily(kv) || PrivateCellUtil.isDeleteFamilyVersion(kv)))</span>
-<span class="source-line-no">393</span><span id="line-393">      ) {</span>
-<span class="source-line-no">394</span><span id="line-394">        // if there is no such delete family kv in the store file,</span>
-<span class="source-line-no">395</span><span id="line-395">        // then no need to seek.</span>
-<span class="source-line-no">396</span><span id="line-396">        haveToSeek = reader.passesDeleteFamilyBloomFilter(kv.getRowArray(), kv.getRowOffset(),</span>
-<span class="source-line-no">397</span><span id="line-397">          kv.getRowLength());</span>
-<span class="source-line-no">398</span><span id="line-398">      }</span>
-<span class="source-line-no">399</span><span id="line-399">    }</span>
-<span class="source-line-no">400</span><span id="line-400"></span>
-<span class="source-line-no">401</span><span id="line-401">    delayedReseek = forward;</span>
-<span class="source-line-no">402</span><span id="line-402">    delayedSeekKV = kv;</span>
+<span class="source-line-no">307</span><span id="line-307">    return true;</span>
+<span class="source-line-no">308</span><span id="line-308">  }</span>
+<span class="source-line-no">309</span><span id="line-309"></span>
+<span class="source-line-no">310</span><span id="line-310">  @Override</span>
+<span class="source-line-no">311</span><span id="line-311">  public void close() {</span>
+<span class="source-line-no">312</span><span id="line-312">    if (closed) return;</span>
+<span class="source-line-no">313</span><span id="line-313">    cur = null;</span>
+<span class="source-line-no">314</span><span id="line-314">    this.hfs.close();</span>
+<span class="source-line-no">315</span><span id="line-315">    if (this.reader != null) {</span>
+<span class="source-line-no">316</span><span id="line-316">      this.reader.readCompleted();</span>
+<span class="source-line-no">317</span><span id="line-317">    }</span>
+<span class="source-line-no">318</span><span id="line-318">    closed = true;</span>
+<span class="source-line-no">319</span><span id="line-319">  }</span>
+<span class="source-line-no">320</span><span id="line-320"></span>
+<span class="source-line-no">321</span><span id="line-321">  /** Returns false if not found or if k is after the end. */</span>
+<span class="source-line-no">322</span><span id="line-322">  public static boolean seekAtOrAfter(HFileScanner s, ExtendedCell k) throws IOException {</span>
+<span class="source-line-no">323</span><span id="line-323">    int result = s.seekTo(k);</span>
+<span class="source-line-no">324</span><span id="line-324">    if (result &lt; 0) {</span>
+<span class="source-line-no">325</span><span id="line-325">      if (result == HConstants.INDEX_KEY_MAGIC) {</span>
+<span class="source-line-no">326</span><span id="line-326">        // using faked key</span>
+<span class="source-line-no">327</span><span id="line-327">        return true;</span>
+<span class="source-line-no">328</span><span id="line-328">      }</span>
+<span class="source-line-no">329</span><span id="line-329">      // Passed KV is smaller than first KV in file, work from start of file</span>
+<span class="source-line-no">330</span><span id="line-330">      return s.seekTo();</span>
+<span class="source-line-no">331</span><span id="line-331">    } else if (result &gt; 0) {</span>
+<span class="source-line-no">332</span><span id="line-332">      // Passed KV is larger than current KV in file, if there is a next</span>
+<span class="source-line-no">333</span><span id="line-333">      // it is the "after", if not then this scanner is done.</span>
+<span class="source-line-no">334</span><span id="line-334">      return s.next();</span>
+<span class="source-line-no">335</span><span id="line-335">    }</span>
+<span class="source-line-no">336</span><span id="line-336">    // Seeked to the exact key</span>
+<span class="source-line-no">337</span><span id="line-337">    return true;</span>
+<span class="source-line-no">338</span><span id="line-338">  }</span>
+<span class="source-line-no">339</span><span id="line-339"></span>
+<span class="source-line-no">340</span><span id="line-340">  static boolean reseekAtOrAfter(HFileScanner s, ExtendedCell k) throws IOException {</span>
+<span class="source-line-no">341</span><span id="line-341">    // This function is similar to seekAtOrAfter function</span>
+<span class="source-line-no">342</span><span id="line-342">    int result = s.reseekTo(k);</span>
+<span class="source-line-no">343</span><span id="line-343">    if (result &lt;= 0) {</span>
+<span class="source-line-no">344</span><span id="line-344">      if (result == HConstants.INDEX_KEY_MAGIC) {</span>
+<span class="source-line-no">345</span><span id="line-345">        // using faked key</span>
+<span class="source-line-no">346</span><span id="line-346">        return true;</span>
+<span class="source-line-no">347</span><span id="line-347">      }</span>
+<span class="source-line-no">348</span><span id="line-348">      // If up to now scanner is not seeked yet, this means passed KV is smaller</span>
+<span class="source-line-no">349</span><span id="line-349">      // than first KV in file, and it is the first time we seek on this file.</span>
+<span class="source-line-no">350</span><span id="line-350">      // So we also need to work from the start of file.</span>
+<span class="source-line-no">351</span><span id="line-351">      if (!s.isSeeked()) {</span>
+<span class="source-line-no">352</span><span id="line-352">        return s.seekTo();</span>
+<span class="source-line-no">353</span><span id="line-353">      }</span>
+<span class="source-line-no">354</span><span id="line-354">      return true;</span>
+<span class="source-line-no">355</span><span id="line-355">    }</span>
+<span class="source-line-no">356</span><span id="line-356">    // passed KV is larger than current KV in file, if there is a next</span>
+<span class="source-line-no">357</span><span id="line-357">    // it is after, if not then this scanner is done.</span>
+<span class="source-line-no">358</span><span id="line-358">    return s.next();</span>
+<span class="source-line-no">359</span><span id="line-359">  }</span>
+<span class="source-line-no">360</span><span id="line-360"></span>
+<span class="source-line-no">361</span><span id="line-361">  /**</span>
+<span class="source-line-no">362</span><span id="line-362">   * @see KeyValueScanner#getScannerOrder()</span>
+<span class="source-line-no">363</span><span id="line-363">   */</span>
+<span class="source-line-no">364</span><span id="line-364">  @Override</span>
+<span class="source-line-no">365</span><span id="line-365">  public long getScannerOrder() {</span>
+<span class="source-line-no">366</span><span id="line-366">    return scannerOrder;</span>
+<span class="source-line-no">367</span><span id="line-367">  }</span>
+<span class="source-line-no">368</span><span id="line-368"></span>
+<span class="source-line-no">369</span><span id="line-369">  /**</span>
+<span class="source-line-no">370</span><span id="line-370">   * Pretend we have done a seek but don't do it yet, if possible. The hope is that we find</span>
+<span class="source-line-no">371</span><span id="line-371">   * requested columns in more recent files and won't have to seek in older files. Creates a fake</span>
+<span class="source-line-no">372</span><span id="line-372">   * key/value with the given row/column and the highest (most recent) possible timestamp we might</span>
+<span class="source-line-no">373</span><span id="line-373">   * get from this file. When users of such "lazy scanner" need to know the next KV precisely (e.g.</span>
+<span class="source-line-no">374</span><span id="line-374">   * when this scanner is at the top of the heap), they run {@link #enforceSeek()}.</span>
+<span class="source-line-no">375</span><span id="line-375">   * &lt;p&gt;</span>
+<span class="source-line-no">376</span><span id="line-376">   * Note that this function does guarantee that the current KV of this scanner will be advanced to</span>
+<span class="source-line-no">377</span><span id="line-377">   * at least the given KV. Because of this, it does have to do a real seek in cases when the seek</span>
+<span class="source-line-no">378</span><span id="line-378">   * timestamp is older than the highest timestamp of the file, e.g. when we are trying to seek to</span>
+<span class="source-line-no">379</span><span id="line-379">   * the next row/column and use OLDEST_TIMESTAMP in the seek key.</span>
+<span class="source-line-no">380</span><span id="line-380">   */</span>
+<span class="source-line-no">381</span><span id="line-381">  @Override</span>
+<span class="source-line-no">382</span><span id="line-382">  public boolean requestSeek(ExtendedCell kv, boolean forward, boolean useBloom)</span>
+<span class="source-line-no">383</span><span id="line-383">    throws IOException {</span>
+<span class="source-line-no">384</span><span id="line-384">    if (kv.getFamilyLength() == 0) {</span>
+<span class="source-line-no">385</span><span id="line-385">      useBloom = false;</span>
+<span class="source-line-no">386</span><span id="line-386">    }</span>
+<span class="source-line-no">387</span><span id="line-387"></span>
+<span class="source-line-no">388</span><span id="line-388">    boolean haveToSeek = true;</span>
+<span class="source-line-no">389</span><span id="line-389">    if (useBloom) {</span>
+<span class="source-line-no">390</span><span id="line-390">      // check ROWCOL Bloom filter first.</span>
+<span class="source-line-no">391</span><span id="line-391">      if (reader.getBloomFilterType() == BloomType.ROWCOL) {</span>
+<span class="source-line-no">392</span><span id="line-392">        haveToSeek = reader.passesGeneralRowColBloomFilter(kv);</span>
+<span class="source-line-no">393</span><span id="line-393">      } else if (</span>
+<span class="source-line-no">394</span><span id="line-394">        canOptimizeForNonNullColumn</span>
+<span class="source-line-no">395</span><span id="line-395">          &amp;&amp; ((PrivateCellUtil.isDeleteFamily(kv) || PrivateCellUtil.isDeleteFamilyVersion(kv)))</span>
+<span class="source-line-no">396</span><span id="line-396">      ) {</span>
+<span class="source-line-no">397</span><span id="line-397">        // if there is no such delete family kv in the store file,</span>
+<span class="source-line-no">398</span><span id="line-398">        // then no need to seek.</span>
+<span class="source-line-no">399</span><span id="line-399">        haveToSeek = reader.passesDeleteFamilyBloomFilter(kv.getRowArray(), kv.getRowOffset(),</span>
+<span class="source-line-no">400</span><span id="line-400">          kv.getRowLength());</span>
+<span class="source-line-no">401</span><span id="line-401">      }</span>
+<span class="source-line-no">402</span><span id="line-402">    }</span>
 <span class="source-line-no">403</span><span id="line-403"></span>
-<span class="source-line-no">404</span><span id="line-404">    if (haveToSeek) {</span>
-<span class="source-line-no">405</span><span id="line-405">      // This row/column might be in this store file (or we did not use the</span>
-<span class="source-line-no">406</span><span id="line-406">      // Bloom filter), so we still need to seek.</span>
-<span class="source-line-no">407</span><span id="line-407">      realSeekDone = false;</span>
-<span class="source-line-no">408</span><span id="line-408">      long maxTimestampInFile = reader.getMaxTimestamp();</span>
-<span class="source-line-no">409</span><span id="line-409">      long seekTimestamp = kv.getTimestamp();</span>
-<span class="source-line-no">410</span><span id="line-410">      if (seekTimestamp &gt; maxTimestampInFile) {</span>
-<span class="source-line-no">411</span><span id="line-411">        // Create a fake key that is not greater than the real next key.</span>
-<span class="source-line-no">412</span><span id="line-412">        // (Lower timestamps correspond to higher KVs.)</span>
-<span class="source-line-no">413</span><span id="line-413">        // To understand this better, consider that we are asked to seek to</span>
-<span class="source-line-no">414</span><span id="line-414">        // a higher timestamp than the max timestamp in this file. We know that</span>
-<span class="source-line-no">415</span><span id="line-415">        // the next point when we have to consider this file again is when we</span>
-<span class="source-line-no">416</span><span id="line-416">        // pass the max timestamp of this file (with the same row/column).</span>
-<span class="source-line-no">417</span><span id="line-417">        setCurrentCell(PrivateCellUtil.createFirstOnRowColTS(kv, maxTimestampInFile));</span>
-<span class="source-line-no">418</span><span id="line-418">      } else {</span>
-<span class="source-line-no">419</span><span id="line-419">        // This will be the case e.g. when we need to seek to the next</span>
-<span class="source-line-no">420</span><span id="line-420">        // row/column, and we don't know exactly what they are, so we set the</span>
-<span class="source-line-no">421</span><span id="line-421">        // seek key's timestamp to OLDEST_TIMESTAMP to skip the rest of this</span>
-<span class="source-line-no">422</span><span id="line-422">        // row/column.</span>
-<span class="source-line-no">423</span><span id="line-423">        enforceSeek();</span>
-<span class="source-line-no">424</span><span id="line-424">      }</span>
-<span class="source-line-no">425</span><span id="line-425">      return cur != null;</span>
-<span class="source-line-no">426</span><span id="line-426">    }</span>
-<span class="source-line-no">427</span><span id="line-427"></span>
-<span class="source-line-no">428</span><span id="line-428">    // Multi-column Bloom filter optimization.</span>
-<span class="source-line-no">429</span><span id="line-429">    // Create a fake key/value, so that this scanner only bubbles up to the top</span>
-<span class="source-line-no">430</span><span id="line-430">    // of the KeyValueHeap in StoreScanner after we scanned this row/column in</span>
-<span class="source-line-no">431</span><span id="line-431">    // all other store files. The query matcher will then just skip this fake</span>
-<span class="source-line-no">432</span><span id="line-432">    // key/value and the store scanner will progress to the next column. This</span>
-<span class="source-line-no">433</span><span id="line-433">    // is obviously not a "real real" seek, but unlike the fake KV earlier in</span>
-<span class="source-line-no">434</span><span id="line-434">    // this method, we want this to be propagated to ScanQueryMatcher.</span>
-<span class="source-line-no">435</span><span id="line-435">    setCurrentCell(PrivateCellUtil.createLastOnRowCol(kv));</span>
-<span class="source-line-no">436</span><span id="line-436"></span>
-<span class="source-line-no">437</span><span id="line-437">    realSeekDone = true;</span>
-<span class="source-line-no">438</span><span id="line-438">    return true;</span>
-<span class="source-line-no">439</span><span id="line-439">  }</span>
-<span class="source-line-no">440</span><span id="line-440"></span>
-<span class="source-line-no">441</span><span id="line-441">  StoreFileReader getReader() {</span>
-<span class="source-line-no">442</span><span id="line-442">    return reader;</span>
-<span class="source-line-no">443</span><span id="line-443">  }</span>
-<span class="source-line-no">444</span><span id="line-444"></span>
-<span class="source-line-no">445</span><span id="line-445">  CellComparator getComparator() {</span>
-<span class="source-line-no">446</span><span id="line-446">    return reader.getComparator();</span>
-<span class="source-line-no">447</span><span id="line-447">  }</span>
-<span class="source-line-no">448</span><span id="line-448"></span>
-<span class="source-line-no">449</span><span id="line-449">  @Override</span>
-<span class="source-line-no">450</span><span id="line-450">  public boolean realSeekDone() {</span>
-<span class="source-line-no">451</span><span id="line-451">    return realSeekDone;</span>
-<span class="source-line-no">452</span><span id="line-452">  }</span>
-<span class="source-line-no">453</span><span id="line-453"></span>
-<span class="source-line-no">454</span><span id="line-454">  @Override</span>
-<span class="source-line-no">455</span><span id="line-455">  public void enforceSeek() throws IOException {</span>
-<span class="source-line-no">456</span><span id="line-456">    if (realSeekDone) return;</span>
-<span class="source-line-no">457</span><span id="line-457"></span>
-<span class="source-line-no">458</span><span id="line-458">    if (delayedReseek) {</span>
-<span class="source-line-no">459</span><span id="line-459">      reseek(delayedSeekKV);</span>
-<span class="source-line-no">460</span><span id="line-460">    } else {</span>
-<span class="source-line-no">461</span><span id="line-461">      seek(delayedSeekKV);</span>
-<span class="source-line-no">462</span><span id="line-462">    }</span>
-<span class="source-line-no">463</span><span id="line-463">  }</span>
-<span class="source-line-no">464</span><span id="line-464"></span>
-<span class="source-line-no">465</span><span id="line-465">  @Override</span>
-<span class="source-line-no">466</span><span id="line-466">  public boolean isFileScanner() {</span>
-<span class="source-line-no">467</span><span id="line-467">    return true;</span>
-<span class="source-line-no">468</span><span id="line-468">  }</span>
-<span class="source-line-no">469</span><span id="line-469"></span>
-<span class="source-line-no">470</span><span id="line-470">  @Override</span>
-<span class="source-line-no">471</span><span id="line-471">  public void recordBlockSize(IntConsumer blockSizeConsumer) {</span>
-<span class="source-line-no">472</span><span id="line-472">    hfs.recordBlockSize(blockSizeConsumer);</span>
-<span class="source-line-no">473</span><span id="line-473">  }</span>
-<span class="source-line-no">474</span><span id="line-474"></span>
-<span class="source-line-no">475</span><span id="line-475">  @Override</span>
-<span class="source-line-no">476</span><span id="line-476">  public Path getFilePath() {</span>
-<span class="source-line-no">477</span><span id="line-477">    return reader.getHFileReader().getPath();</span>
-<span class="source-line-no">478</span><span id="line-478">  }</span>
-<span class="source-line-no">479</span><span id="line-479"></span>
-<span class="source-line-no">480</span><span id="line-480">  // Test methods</span>
-<span class="source-line-no">481</span><span id="line-481">  static final long getSeekCount() {</span>
-<span class="source-line-no">482</span><span id="line-482">    return seekCount.sum();</span>
-<span class="source-line-no">483</span><span id="line-483">  }</span>
-<span class="source-line-no">484</span><span id="line-484"></span>
-<span class="source-line-no">485</span><span id="line-485">  static final void instrument() {</span>
-<span class="source-line-no">486</span><span id="line-486">    seekCount = new LongAdder();</span>
-<span class="source-line-no">487</span><span id="line-487">  }</span>
-<span class="source-line-no">488</span><span id="line-488"></span>
-<span class="source-line-no">489</span><span id="line-489">  @Override</span>
-<span class="source-line-no">490</span><span id="line-490">  public boolean shouldUseScanner(Scan scan, HStore store, long oldestUnexpiredTS) {</span>
-<span class="source-line-no">491</span><span id="line-491">    // if the file has no entries, no need to validate or create a scanner.</span>
-<span class="source-line-no">492</span><span id="line-492">    byte[] cf = store.getColumnFamilyDescriptor().getName();</span>
-<span class="source-line-no">493</span><span id="line-493">    TimeRange timeRange = scan.getColumnFamilyTimeRange().get(cf);</span>
-<span class="source-line-no">494</span><span id="line-494">    if (timeRange == null) {</span>
-<span class="source-line-no">495</span><span id="line-495">      timeRange = scan.getTimeRange();</span>
-<span class="source-line-no">496</span><span id="line-496">    }</span>
-<span class="source-line-no">497</span><span id="line-497">    return reader.passesTimerangeFilter(timeRange, oldestUnexpiredTS)</span>
-<span class="source-line-no">498</span><span id="line-498">      &amp;&amp; reader.passesKeyRangeFilter(scan)</span>
-<span class="source-line-no">499</span><span id="line-499">      &amp;&amp; reader.passesBloomFilter(scan, scan.getFamilyMap().get(cf));</span>
-<span class="source-line-no">500</span><span id="line-500">  }</span>
-<span class="source-line-no">501</span><span id="line-501"></span>
-<span class="source-line-no">502</span><span id="line-502">  @Override</span>
-<span class="source-line-no">503</span><span id="line-503">  public boolean seekToPreviousRow(ExtendedCell originalKey) throws IOException {</span>
-<span class="source-line-no">504</span><span id="line-504">    try {</span>
-<span class="source-line-no">505</span><span id="line-505">      if (isFastSeekingEncoding) {</span>
-<span class="source-line-no">506</span><span id="line-506">        return seekToPreviousRowStateless(originalKey);</span>
-<span class="source-line-no">507</span><span id="line-507">      } else if (previousRow == null || getComparator().compareRows(previousRow, originalKey) &gt; 0) {</span>
-<span class="source-line-no">508</span><span id="line-508">        return seekToPreviousRowWithoutHint(originalKey);</span>
-<span class="source-line-no">509</span><span id="line-509">      } else {</span>
-<span class="source-line-no">510</span><span id="line-510">        return seekToPreviousRowWithHint();</span>
-<span class="source-line-no">511</span><span id="line-511">      }</span>
-<span class="source-line-no">512</span><span id="line-512">    } catch (FileNotFoundException e) {</span>
-<span class="source-line-no">513</span><span id="line-513">      throw e;</span>
-<span class="source-line-no">514</span><span id="line-514">    } catch (IOException ioe) {</span>
-<span class="source-line-no">515</span><span id="line-515">      throw new IOException("Could not seekToPreviousRow " + this + " to key " + originalKey, ioe);</span>
-<span class="source-line-no">516</span><span id="line-516">    } finally {</span>
-<span class="source-line-no">517</span><span id="line-517">      this.realSeekDone = true;</span>
-<span class="source-line-no">518</span><span id="line-518">    }</span>
-<span class="source-line-no">519</span><span id="line-519">  }</span>
-<span class="source-line-no">520</span><span id="line-520"></span>
-<span class="source-line-no">521</span><span id="line-521">  /**</span>
-<span class="source-line-no">522</span><span id="line-522">   * This variant of the {@link StoreFileScanner#seekToPreviousRow(Cell)} method requires one seek</span>
-<span class="source-line-no">523</span><span id="line-523">   * and one reseek. This method maintains state in {@link StoreFileScanner#previousRow} which only</span>
-<span class="source-line-no">524</span><span id="line-524">   * makes sense in the context of a sequential row-by-row reverse scan.</span>
-<span class="source-line-no">525</span><span id="line-525">   * {@link StoreFileScanner#previousRow} should be reset if that is not the case. The reasoning for</span>
-<span class="source-line-no">526</span><span id="line-526">   * why this method is faster than {@link StoreFileScanner#seekToPreviousRowStateless(Cell)} is</span>
-<span class="source-line-no">527</span><span id="line-527">   * that seeks are slower as they need to start from the beginning of the file, while reseeks go</span>
-<span class="source-line-no">528</span><span id="line-528">   * forward from the current position.</span>
-<span class="source-line-no">529</span><span id="line-529">   */</span>
-<span class="source-line-no">530</span><span id="line-530">  private boolean seekToPreviousRowWithHint() throws IOException {</span>
-<span class="source-line-no">531</span><span id="line-531">    do {</span>
-<span class="source-line-no">532</span><span id="line-532">      // Using our existing seek hint, set our next seek hint</span>
-<span class="source-line-no">533</span><span id="line-533">      ExtendedCell firstKeyOfPreviousRow = PrivateCellUtil.createFirstOnRow(previousRow);</span>
-<span class="source-line-no">534</span><span id="line-534">      seekBeforeAndSaveKeyToPreviousRow(firstKeyOfPreviousRow);</span>
-<span class="source-line-no">535</span><span id="line-535"></span>
-<span class="source-line-no">536</span><span id="line-536">      // Reseek back to our initial seek hint (i.e. what we think is the start of the</span>
-<span class="source-line-no">537</span><span id="line-537">      // previous row)</span>
-<span class="source-line-no">538</span><span id="line-538">      if (!reseekAtOrAfter(firstKeyOfPreviousRow)) {</span>
-<span class="source-line-no">539</span><span id="line-539">        return false;</span>
-<span class="source-line-no">540</span><span id="line-540">      }</span>
-<span class="source-line-no">541</span><span id="line-541"></span>
-<span class="source-line-no">542</span><span id="line-542">      // If after skipping newer Kvs, we're still in our seek hint row, then we're finished</span>
-<span class="source-line-no">543</span><span id="line-543">      if (isStillAtSeekTargetAfterSkippingNewerKvs(firstKeyOfPreviousRow)) {</span>
-<span class="source-line-no">544</span><span id="line-544">        return true;</span>
-<span class="source-line-no">545</span><span id="line-545">      }</span>
-<span class="source-line-no">546</span><span id="line-546"></span>
-<span class="source-line-no">547</span><span id="line-547">      // If the previousRow seek hint is missing, that means that we're at row after the first row</span>
-<span class="source-line-no">548</span><span id="line-548">      // in the storefile. Use the without-hint seek path to process the final row</span>
-<span class="source-line-no">549</span><span id="line-549">      if (previousRow == null) {</span>
-<span class="source-line-no">550</span><span id="line-550">        return seekToPreviousRowWithoutHint(firstKeyOfPreviousRow);</span>
-<span class="source-line-no">551</span><span id="line-551">      }</span>
-<span class="source-line-no">552</span><span id="line-552"></span>
-<span class="source-line-no">553</span><span id="line-553">      // Otherwise, use the previousRow seek hint to continue traversing backwards</span>
-<span class="source-line-no">554</span><span id="line-554">    } while (true);</span>
-<span class="source-line-no">555</span><span id="line-555">  }</span>
+<span class="source-line-no">404</span><span id="line-404">    delayedReseek = forward;</span>
+<span class="source-line-no">405</span><span id="line-405">    delayedSeekKV = kv;</span>
+<span class="source-line-no">406</span><span id="line-406"></span>
+<span class="source-line-no">407</span><span id="line-407">    if (haveToSeek) {</span>
+<span class="source-line-no">408</span><span id="line-408">      // This row/column might be in this store file (or we did not use the</span>
+<span class="source-line-no">409</span><span id="line-409">      // Bloom filter), so we still need to seek.</span>
+<span class="source-line-no">410</span><span id="line-410">      realSeekDone = false;</span>
+<span class="source-line-no">411</span><span id="line-411">      long maxTimestampInFile = reader.getMaxTimestamp();</span>
+<span class="source-line-no">412</span><span id="line-412">      long seekTimestamp = kv.getTimestamp();</span>
+<span class="source-line-no">413</span><span id="line-413">      if (seekTimestamp &gt; maxTimestampInFile) {</span>
+<span class="source-line-no">414</span><span id="line-414">        // Create a fake key that is not greater than the real next key.</span>
+<span class="source-line-no">415</span><span id="line-415">        // (Lower timestamps correspond to higher KVs.)</span>
+<span class="source-line-no">416</span><span id="line-416">        // To understand this better, consider that we are asked to seek to</span>
+<span class="source-line-no">417</span><span id="line-417">        // a higher timestamp than the max timestamp in this file. We know that</span>
+<span class="source-line-no">418</span><span id="line-418">        // the next point when we have to consider this file again is when we</span>
+<span class="source-line-no">419</span><span id="line-419">        // pass the max timestamp of this file (with the same row/column).</span>
+<span class="source-line-no">420</span><span id="line-420">        setCurrentCell(PrivateCellUtil.createFirstOnRowColTS(kv, maxTimestampInFile));</span>
+<span class="source-line-no">421</span><span id="line-421">      } else {</span>
+<span class="source-line-no">422</span><span id="line-422">        // This will be the case e.g. when we need to seek to the next</span>
+<span class="source-line-no">423</span><span id="line-423">        // row/column, and we don't know exactly what they are, so we set the</span>
+<span class="source-line-no">424</span><span id="line-424">        // seek key's timestamp to OLDEST_TIMESTAMP to skip the rest of this</span>
+<span class="source-line-no">425</span><span id="line-425">        // row/column.</span>
+<span class="source-line-no">426</span><span id="line-426">        enforceSeek();</span>
+<span class="source-line-no">427</span><span id="line-427">      }</span>
+<span class="source-line-no">428</span><span id="line-428">      return cur != null;</span>
+<span class="source-line-no">429</span><span id="line-429">    }</span>
+<span class="source-line-no">430</span><span id="line-430"></span>
+<span class="source-line-no">431</span><span id="line-431">    // Multi-column Bloom filter optimization.</span>
+<span class="source-line-no">432</span><span id="line-432">    // Create a fake key/value, so that this scanner only bubbles up to the top</span>
+<span class="source-line-no">433</span><span id="line-433">    // of the KeyValueHeap in StoreScanner after we scanned this row/column in</span>
+<span class="source-line-no">434</span><span id="line-434">    // all other store files. The query matcher will then just skip this fake</span>
+<span class="source-line-no">435</span><span id="line-435">    // key/value and the store scanner will progress to the next column. This</span>
+<span class="source-line-no">436</span><span id="line-436">    // is obviously not a "real real" seek, but unlike the fake KV earlier in</span>
+<span class="source-line-no">437</span><span id="line-437">    // this method, we want this to be propagated to ScanQueryMatcher.</span>
+<span class="source-line-no">438</span><span id="line-438">    setCurrentCell(PrivateCellUtil.createLastOnRowCol(kv));</span>
+<span class="source-line-no">439</span><span id="line-439"></span>
+<span class="source-line-no">440</span><span id="line-440">    realSeekDone = true;</span>
+<span class="source-line-no">441</span><span id="line-441">    return true;</span>
+<span class="source-line-no">442</span><span id="line-442">  }</span>
+<span class="source-line-no">443</span><span id="line-443"></span>
+<span class="source-line-no">444</span><span id="line-444">  StoreFileReader getReader() {</span>
+<span class="source-line-no">445</span><span id="line-445">    return reader;</span>
+<span class="source-line-no">446</span><span id="line-446">  }</span>
+<span class="source-line-no">447</span><span id="line-447"></span>
+<span class="source-line-no">448</span><span id="line-448">  CellComparator getComparator() {</span>
+<span class="source-line-no">449</span><span id="line-449">    return reader.getComparator();</span>
+<span class="source-line-no">450</span><span id="line-450">  }</span>
+<span class="source-line-no">451</span><span id="line-451"></span>
+<span class="source-line-no">452</span><span id="line-452">  @Override</span>
+<span class="source-line-no">453</span><span id="line-453">  public boolean realSeekDone() {</span>
+<span class="source-line-no">454</span><span id="line-454">    return realSeekDone;</span>
+<span class="source-line-no">455</span><span id="line-455">  }</span>
+<span class="source-line-no">456</span><span id="line-456"></span>
+<span class="source-line-no">457</span><span id="line-457">  @Override</span>
+<span class="source-line-no">458</span><span id="line-458">  public void enforceSeek() throws IOException {</span>
+<span class="source-line-no">459</span><span id="line-459">    if (realSeekDone) return;</span>
+<span class="source-line-no">460</span><span id="line-460"></span>
+<span class="source-line-no">461</span><span id="line-461">    if (delayedReseek) {</span>
+<span class="source-line-no">462</span><span id="line-462">      reseek(delayedSeekKV);</span>
+<span class="source-line-no">463</span><span id="line-463">    } else {</span>
+<span class="source-line-no">464</span><span id="line-464">      seek(delayedSeekKV);</span>
+<span class="source-line-no">465</span><span id="line-465">    }</span>
+<span class="source-line-no">466</span><span id="line-466">  }</span>
+<span class="source-line-no">467</span><span id="line-467"></span>
+<span class="source-line-no">468</span><span id="line-468">  @Override</span>
+<span class="source-line-no">469</span><span id="line-469">  public boolean isFileScanner() {</span>
+<span class="source-line-no">470</span><span id="line-470">    return true;</span>
+<span class="source-line-no">471</span><span id="line-471">  }</span>
+<span class="source-line-no">472</span><span id="line-472"></span>
+<span class="source-line-no">473</span><span id="line-473">  @Override</span>
+<span class="source-line-no">474</span><span id="line-474">  public void recordBlockSize(IntConsumer blockSizeConsumer) {</span>
+<span class="source-line-no">475</span><span id="line-475">    hfs.recordBlockSize(blockSizeConsumer);</span>
+<span class="source-line-no">476</span><span id="line-476">  }</span>
+<span class="source-line-no">477</span><span id="line-477"></span>
+<span class="source-line-no">478</span><span id="line-478">  @Override</span>
+<span class="source-line-no">479</span><span id="line-479">  public Path getFilePath() {</span>
+<span class="source-line-no">480</span><span id="line-480">    return reader.getHFileReader().getPath();</span>
+<span class="source-line-no">481</span><span id="line-481">  }</span>
+<span class="source-line-no">482</span><span id="line-482"></span>
+<span class="source-line-no">483</span><span id="line-483">  // Test methods</span>
+<span class="source-line-no">484</span><span id="line-484">  static final long getSeekCount() {</span>
+<span class="source-line-no">485</span><span id="line-485">    return seekCount.sum();</span>
+<span class="source-line-no">486</span><span id="line-486">  }</span>
+<span class="source-line-no">487</span><span id="line-487"></span>
+<span class="source-line-no">488</span><span id="line-488">  static final void instrument() {</span>
+<span class="source-line-no">489</span><span id="line-489">    seekCount = new LongAdder();</span>
+<span class="source-line-no">490</span><span id="line-490">  }</span>
+<span class="source-line-no">491</span><span id="line-491"></span>
+<span class="source-line-no">492</span><span id="line-492">  @Override</span>
+<span class="source-line-no">493</span><span id="line-493">  public boolean shouldUseScanner(Scan scan, HStore store, long oldestUnexpiredTS) {</span>
+<span class="source-line-no">494</span><span id="line-494">    // if the file has no entries, no need to validate or create a scanner.</span>
+<span class="source-line-no">495</span><span id="line-495">    byte[] cf = store.getColumnFamilyDescriptor().getName();</span>
+<span class="source-line-no">496</span><span id="line-496">    TimeRange timeRange = scan.getColumnFamilyTimeRange().get(cf);</span>
+<span class="source-line-no">497</span><span id="line-497">    if (timeRange == null) {</span>
+<span class="source-line-no">498</span><span id="line-498">      timeRange = scan.getTimeRange();</span>
+<span class="source-line-no">499</span><span id="line-499">    }</span>
+<span class="source-line-no">500</span><span id="line-500">    return reader.passesTimerangeFilter(timeRange, oldestUnexpiredTS)</span>
+<span class="source-line-no">501</span><span id="line-501">      &amp;&amp; reader.passesKeyRangeFilter(scan)</span>
+<span class="source-line-no">502</span><span id="line-502">      &amp;&amp; reader.passesBloomFilter(scan, scan.getFamilyMap().get(cf));</span>
+<span class="source-line-no">503</span><span id="line-503">  }</span>
+<span class="source-line-no">504</span><span id="line-504"></span>
+<span class="source-line-no">505</span><span id="line-505">  @Override</span>
+<span class="source-line-no">506</span><span id="line-506">  public boolean seekToPreviousRow(ExtendedCell originalKey) throws IOException {</span>
+<span class="source-line-no">507</span><span id="line-507">    try {</span>
+<span class="source-line-no">508</span><span id="line-508">      if (isFastSeekingEncoding) {</span>
+<span class="source-line-no">509</span><span id="line-509">        return seekToPreviousRowStateless(originalKey);</span>
+<span class="source-line-no">510</span><span id="line-510">      } else if (previousRow == null || getComparator().compareRows(previousRow, originalKey) &gt; 0) {</span>
+<span class="source-line-no">511</span><span id="line-511">        return seekToPreviousRowWithoutHint(originalKey);</span>
+<span class="source-line-no">512</span><span id="line-512">      } else {</span>
+<span class="source-line-no">513</span><span id="line-513">        return seekToPreviousRowWithHint();</span>
+<span class="source-line-no">514</span><span id="line-514">      }</span>
+<span class="source-line-no">515</span><span id="line-515">    } catch (FileNotFoundException e) {</span>
+<span class="source-line-no">516</span><span id="line-516">      throw e;</span>
+<span class="source-line-no">517</span><span id="line-517">    } catch (IOException ioe) {</span>
+<span class="source-line-no">518</span><span id="line-518">      throw new IOException("Could not seekToPreviousRow " + this + " to key " + originalKey, ioe);</span>
+<span class="source-line-no">519</span><span id="line-519">    } finally {</span>
+<span class="source-line-no">520</span><span id="line-520">      this.realSeekDone = true;</span>
+<span class="source-line-no">521</span><span id="line-521">    }</span>
+<span class="source-line-no">522</span><span id="line-522">  }</span>
+<span class="source-line-no">523</span><span id="line-523"></span>
+<span class="source-line-no">524</span><span id="line-524">  /**</span>
+<span class="source-line-no">525</span><span id="line-525">   * This variant of the {@link StoreFileScanner#seekToPreviousRow(ExtendedCell)} method requires</span>
+<span class="source-line-no">526</span><span id="line-526">   * one seek and one reseek. This method maintains state in {@link StoreFileScanner#previousRow}</span>
+<span class="source-line-no">527</span><span id="line-527">   * which only makes sense in the context of a sequential row-by-row reverse scan.</span>
+<span class="source-line-no">528</span><span id="line-528">   * {@link StoreFileScanner#previousRow} should be reset if that is not the case. The reasoning for</span>
+<span class="source-line-no">529</span><span id="line-529">   * why this method is faster than</span>
+<span class="source-line-no">530</span><span id="line-530">   * {@link StoreFileScanner#seekToPreviousRowStateless(ExtendedCell)} is that seeks are slower as</span>
+<span class="source-line-no">531</span><span id="line-531">   * they need to start from the beginning of the file, while reseeks go forward from the current</span>
+<span class="source-line-no">532</span><span id="line-532">   * position.</span>
+<span class="source-line-no">533</span><span id="line-533">   */</span>
+<span class="source-line-no">534</span><span id="line-534">  private boolean seekToPreviousRowWithHint() throws IOException {</span>
+<span class="source-line-no">535</span><span id="line-535">    do {</span>
+<span class="source-line-no">536</span><span id="line-536">      // Using our existing seek hint, set our next seek hint</span>
+<span class="source-line-no">537</span><span id="line-537">      ExtendedCell firstKeyOfPreviousRow = PrivateCellUtil.createFirstOnRow(previousRow);</span>
+<span class="source-line-no">538</span><span id="line-538">      seekBeforeAndSaveKeyToPreviousRow(firstKeyOfPreviousRow);</span>
+<span class="source-line-no">539</span><span id="line-539"></span>
+<span class="source-line-no">540</span><span id="line-540">      // Reseek back to our initial seek hint (i.e. what we think is the start of the</span>
+<span class="source-line-no">541</span><span id="line-541">      // previous row)</span>
+<span class="source-line-no">542</span><span id="line-542">      if (!reseekAtOrAfter(firstKeyOfPreviousRow)) {</span>
+<span class="source-line-no">543</span><span id="line-543">        return false;</span>
+<span class="source-line-no">544</span><span id="line-544">      }</span>
+<span class="source-line-no">545</span><span id="line-545"></span>
+<span class="source-line-no">546</span><span id="line-546">      // If after skipping newer Kvs, we're still in our seek hint row, then we're finished</span>
+<span class="source-line-no">547</span><span id="line-547">      if (isStillAtSeekTargetAfterSkippingNewerKvs(firstKeyOfPreviousRow)) {</span>
+<span class="source-line-no">548</span><span id="line-548">        return true;</span>
+<span class="source-line-no">549</span><span id="line-549">      }</span>
+<span class="source-line-no">550</span><span id="line-550"></span>
+<span class="source-line-no">551</span><span id="line-551">      // If the previousRow seek hint is missing, that means that we're at row after the first row</span>
+<span class="source-line-no">552</span><span id="line-552">      // in the storefile. Use the without-hint seek path to process the final row</span>
+<span class="source-line-no">553</span><span id="line-553">      if (previousRow == null) {</span>
+<span class="source-line-no">554</span><span id="line-554">        return seekToPreviousRowWithoutHint(firstKeyOfPreviousRow);</span>
+<span class="source-line-no">555</span><span id="line-555">      }</span>
 <span class="source-line-no">556</span><span id="line-556"></span>
-<span class="source-line-no">557</span><span id="line-557">  /**</span>
-<span class="source-line-no">558</span><span id="line-558">   * This variant of the {@link StoreFileScanner#seekToPreviousRow(Cell)} method requires two seeks</span>
-<span class="source-line-no">559</span><span id="line-559">   * and one reseek. The extra expense/seek is with the intent of speeding up subsequent calls by</span>
-<span class="source-line-no">560</span><span id="line-560">   * using the {@link StoreFileScanner#seekToPreviousRowWithHint} which this method seeds the state</span>
-<span class="source-line-no">561</span><span id="line-561">   * for by setting {@link StoreFileScanner#previousRow}</span>
-<span class="source-line-no">562</span><span id="line-562">   */</span>
-<span class="source-line-no">563</span><span id="line-563">  private boolean seekToPreviousRowWithoutHint(Cell originalKey) throws IOException {</span>
-<span class="source-line-no">564</span><span id="line-564">    // Rewind to the cell before the beginning of this row</span>
-<span class="source-line-no">565</span><span id="line-565">    ExtendedCell keyAtBeginningOfRow = PrivateCellUtil.createFirstOnRow(originalKey);</span>
-<span class="source-line-no">566</span><span id="line-566">    if (!seekBefore(keyAtBeginningOfRow)) {</span>
-<span class="source-line-no">567</span><span id="line-567">      return false;</span>
-<span class="source-line-no">568</span><span id="line-568">    }</span>
-<span class="source-line-no">569</span><span id="line-569"></span>
-<span class="source-line-no">570</span><span id="line-570">    // Rewind before this row and save what we find as a seek hint</span>
-<span class="source-line-no">571</span><span id="line-571">    ExtendedCell firstKeyOfPreviousRow = PrivateCellUtil.createFirstOnRow(hfs.getCell());</span>
-<span class="source-line-no">572</span><span id="line-572">    seekBeforeAndSaveKeyToPreviousRow(firstKeyOfPreviousRow);</span>
+<span class="source-line-no">557</span><span id="line-557">      // Otherwise, use the previousRow seek hint to continue traversing backwards</span>
+<span class="source-line-no">558</span><span id="line-558">    } while (true);</span>
+<span class="source-line-no">559</span><span id="line-559">  }</span>
+<span class="source-line-no">560</span><span id="line-560"></span>
+<span class="source-line-no">561</span><span id="line-561">  /**</span>
+<span class="source-line-no">562</span><span id="line-562">   * This variant of the {@link StoreFileScanner#seekToPreviousRow(ExtendedCell)} method requires</span>
+<span class="source-line-no">563</span><span id="line-563">   * two seeks and one reseek. The extra expense/seek is with the intent of speeding up subsequent</span>
+<span class="source-line-no">564</span><span id="line-564">   * calls by using the {@link StoreFileScanner#seekToPreviousRowWithHint} which this method seeds</span>
+<span class="source-line-no">565</span><span id="line-565">   * the state for by setting {@link StoreFileScanner#previousRow}</span>
+<span class="source-line-no">566</span><span id="line-566">   */</span>
+<span class="source-line-no">567</span><span id="line-567">  private boolean seekToPreviousRowWithoutHint(ExtendedCell originalKey) throws IOException {</span>
+<span class="source-line-no">568</span><span id="line-568">    // Rewind to the cell before the beginning of this row</span>
+<span class="source-line-no">569</span><span id="line-569">    ExtendedCell keyAtBeginningOfRow = PrivateCellUtil.createFirstOnRow(originalKey);</span>
+<span class="source-line-no">570</span><span id="line-570">    if (!seekBefore(keyAtBeginningOfRow)) {</span>
+<span class="source-line-no">571</span><span id="line-571">      return false;</span>
+<span class="source-line-no">572</span><span id="line-572">    }</span>
 <span class="source-line-no">573</span><span id="line-573"></span>
-<span class="source-line-no">574</span><span id="line-574">    // Seek back to the start of the previous row</span>
-<span class="source-line-no">575</span><span id="line-575">    if (!reseekAtOrAfter(firstKeyOfPreviousRow)) {</span>
-<span class="source-line-no">576</span><span id="line-576">      return false;</span>
-<span class="source-line-no">577</span><span id="line-577">    }</span>
-<span class="source-line-no">578</span><span id="line-578"></span>
-<span class="source-line-no">579</span><span id="line-579">    // If after skipping newer Kvs, we're still in what we thought was the previous</span>
-<span class="source-line-no">580</span><span id="line-580">    // row, then we can exit</span>
-<span class="source-line-no">581</span><span id="line-581">    if (isStillAtSeekTargetAfterSkippingNewerKvs(firstKeyOfPreviousRow)) {</span>
-<span class="source-line-no">582</span><span id="line-582">      return true;</span>
-<span class="source-line-no">583</span><span id="line-583">    }</span>
-<span class="source-line-no">584</span><span id="line-584"></span>
-<span class="source-line-no">585</span><span id="line-585">    // Skipping newer kvs resulted in skipping the entire row that we thought was the</span>
-<span class="source-line-no">586</span><span id="line-586">    // previous row. If we've set a seek hint, then we can use that to go backwards</span>
-<span class="source-line-no">587</span><span id="line-587">    // further</span>
-<span class="source-line-no">588</span><span id="line-588">    if (previousRow != null) {</span>
-<span class="source-line-no">589</span><span id="line-589">      return seekToPreviousRowWithHint();</span>
-<span class="source-line-no">590</span><span id="line-590">    }</span>
-<span class="source-line-no">591</span><span id="line-591"></span>
-<span class="source-line-no">592</span><span id="line-592">    // If we've made it here, then we weren't able to set a seek hint. This can happen</span>
-<span class="source-line-no">593</span><span id="line-593">    // only if we're at the beginning of the storefile i.e. there is no row before this</span>
-<span class="source-line-no">594</span><span id="line-594">    // one</span>
-<span class="source-line-no">595</span><span id="line-595">    return false;</span>
-<span class="source-line-no">596</span><span id="line-596">  }</span>
-<span class="source-line-no">597</span><span id="line-597"></span>
-<span class="source-line-no">598</span><span id="line-598">  /**</span>
-<span class="source-line-no">599</span><span id="line-599">   * This variant of the {@link StoreFileScanner#seekToPreviousRow(Cell)} method requires two seeks.</span>
-<span class="source-line-no">600</span><span id="line-600">   * It should be used if the cost for seeking is lower i.e. when using a fast seeking data block</span>
-<span class="source-line-no">601</span><span id="line-601">   * encoding like RIV1.</span>
-<span class="source-line-no">602</span><span id="line-602">   */</span>
-<span class="source-line-no">603</span><span id="line-603">  private boolean seekToPreviousRowStateless(ExtendedCell originalKey) throws IOException {</span>
-<span class="source-line-no">604</span><span id="line-604">    ExtendedCell key = originalKey;</span>
-<span class="source-line-no">605</span><span id="line-605">    do {</span>
-<span class="source-line-no">606</span><span id="line-606">      ExtendedCell keyAtBeginningOfRow = PrivateCellUtil.createFirstOnRow(key);</span>
-<span class="source-line-no">607</span><span id="line-607">      if (!seekBefore(keyAtBeginningOfRow)) {</span>
-<span class="source-line-no">608</span><span id="line-608">        return false;</span>
-<span class="source-line-no">609</span><span id="line-609">      }</span>
-<span class="source-line-no">610</span><span id="line-610"></span>
-<span class="source-line-no">611</span><span id="line-611">      ExtendedCell firstKeyOfPreviousRow = PrivateCellUtil.createFirstOnRow(hfs.getCell());</span>
-<span class="source-line-no">612</span><span id="line-612">      if (!seekAtOrAfter(firstKeyOfPreviousRow)) {</span>
-<span class="source-line-no">613</span><span id="line-613">        return false;</span>
-<span class="source-line-no">614</span><span id="line-614">      }</span>
-<span class="source-line-no">615</span><span id="line-615"></span>
-<span class="source-line-no">616</span><span id="line-616">      if (isStillAtSeekTargetAfterSkippingNewerKvs(firstKeyOfPreviousRow)) {</span>
-<span class="source-line-no">617</span><span id="line-617">        return true;</span>
+<span class="source-line-no">574</span><span id="line-574">    // Rewind before this row and save what we find as a seek hint</span>
+<span class="source-line-no">575</span><span id="line-575">    ExtendedCell firstKeyOfPreviousRow = PrivateCellUtil.createFirstOnRow(hfs.getKey());</span>
+<span class="source-line-no">576</span><span id="line-576">    seekBeforeAndSaveKeyToPreviousRow(firstKeyOfPreviousRow);</span>
+<span class="source-line-no">577</span><span id="line-577"></span>
+<span class="source-line-no">578</span><span id="line-578">    // Seek back to the start of the previous row</span>
+<span class="source-line-no">579</span><span id="line-579">    if (!reseekAtOrAfter(firstKeyOfPreviousRow)) {</span>
+<span class="source-line-no">580</span><span id="line-580">      return false;</span>
+<span class="source-line-no">581</span><span id="line-581">    }</span>
+<span class="source-line-no">582</span><span id="line-582"></span>
+<span class="source-line-no">583</span><span id="line-583">    // If after skipping newer Kvs, we're still in what we thought was the previous</span>
+<span class="source-line-no">584</span><span id="line-584">    // row, then we can exit</span>
+<span class="source-line-no">585</span><span id="line-585">    if (isStillAtSeekTargetAfterSkippingNewerKvs(firstKeyOfPreviousRow)) {</span>
+<span class="source-line-no">586</span><span id="line-586">      return true;</span>
+<span class="source-line-no">587</span><span id="line-587">    }</span>
+<span class="source-line-no">588</span><span id="line-588"></span>
+<span class="source-line-no">589</span><span id="line-589">    // Skipping newer kvs resulted in skipping the entire row that we thought was the</span>
+<span class="source-line-no">590</span><span id="line-590">    // previous row. If we've set a seek hint, then we can use that to go backwards</span>
+<span class="source-line-no">591</span><span id="line-591">    // further</span>
+<span class="source-line-no">592</span><span id="line-592">    if (previousRow != null) {</span>
+<span class="source-line-no">593</span><span id="line-593">      return seekToPreviousRowWithHint();</span>
+<span class="source-line-no">594</span><span id="line-594">    }</span>
+<span class="source-line-no">595</span><span id="line-595"></span>
+<span class="source-line-no">596</span><span id="line-596">    // If we've made it here, then we weren't able to set a seek hint. This can happen</span>
+<span class="source-line-no">597</span><span id="line-597">    // only if we're at the beginning of the storefile i.e. there is no row before this</span>
+<span class="source-line-no">598</span><span id="line-598">    // one</span>
+<span class="source-line-no">599</span><span id="line-599">    return false;</span>
+<span class="source-line-no">600</span><span id="line-600">  }</span>
+<span class="source-line-no">601</span><span id="line-601"></span>
+<span class="source-line-no">602</span><span id="line-602">  /**</span>
+<span class="source-line-no">603</span><span id="line-603">   * This variant of the {@link StoreFileScanner#seekToPreviousRow(ExtendedCell)} method requires</span>
+<span class="source-line-no">604</span><span id="line-604">   * two seeks. It should be used if the cost for seeking is lower i.e. when using a fast seeking</span>
+<span class="source-line-no">605</span><span id="line-605">   * data block encoding like RIV1.</span>
+<span class="source-line-no">606</span><span id="line-606">   */</span>
+<span class="source-line-no">607</span><span id="line-607">  private boolean seekToPreviousRowStateless(ExtendedCell originalKey) throws IOException {</span>
+<span class="source-line-no">608</span><span id="line-608">    ExtendedCell key = originalKey;</span>
+<span class="source-line-no">609</span><span id="line-609">    do {</span>
+<span class="source-line-no">610</span><span id="line-610">      ExtendedCell keyAtBeginningOfRow = PrivateCellUtil.createFirstOnRow(key);</span>
+<span class="source-line-no">611</span><span id="line-611">      if (!seekBefore(keyAtBeginningOfRow)) {</span>
+<span class="source-line-no">612</span><span id="line-612">        return false;</span>
+<span class="source-line-no">613</span><span id="line-613">      }</span>
+<span class="source-line-no">614</span><span id="line-614"></span>
+<span class="source-line-no">615</span><span id="line-615">      ExtendedCell firstKeyOfPreviousRow = PrivateCellUtil.createFirstOnRow(hfs.getKey());</span>
+<span class="source-line-no">616</span><span id="line-616">      if (!seekAtOrAfter(firstKeyOfPreviousRow)) {</span>
+<span class="source-line-no">617</span><span id="line-617">        return false;</span>
 <span class="source-line-no">618</span><span id="line-618">      }</span>
-<span class="source-line-no">619</span><span id="line-619">      key = firstKeyOfPreviousRow;</span>
-<span class="source-line-no">620</span><span id="line-620">    } while (true);</span>
-<span class="source-line-no">621</span><span id="line-621">  }</span>
-<span class="source-line-no">622</span><span id="line-622"></span>
-<span class="source-line-no">623</span><span id="line-623">  private boolean seekBefore(ExtendedCell seekKey) throws IOException {</span>
-<span class="source-line-no">624</span><span id="line-624">    if (seekCount != null) {</span>
-<span class="source-line-no">625</span><span id="line-625">      seekCount.increment();</span>
-<span class="source-line-no">626</span><span id="line-626">    }</span>
-<span class="source-line-no">627</span><span id="line-627">    if (!hfs.seekBefore(seekKey)) {</span>
-<span class="source-line-no">628</span><span id="line-628">      this.cur = null;</span>
-<span class="source-line-no">629</span><span id="line-629">      return false;</span>
+<span class="source-line-no">619</span><span id="line-619"></span>
+<span class="source-line-no">620</span><span id="line-620">      if (isStillAtSeekTargetAfterSkippingNewerKvs(firstKeyOfPreviousRow)) {</span>
+<span class="source-line-no">621</span><span id="line-621">        return true;</span>
+<span class="source-line-no">622</span><span id="line-622">      }</span>
+<span class="source-line-no">623</span><span id="line-623">      key = firstKeyOfPreviousRow;</span>
+<span class="source-line-no">624</span><span id="line-624">    } while (true);</span>
+<span class="source-line-no">625</span><span id="line-625">  }</span>
+<span class="source-line-no">626</span><span id="line-626"></span>
+<span class="source-line-no">627</span><span id="line-627">  private boolean seekBefore(ExtendedCell seekKey) throws IOException {</span>
+<span class="source-line-no">628</span><span id="line-628">    if (seekCount != null) {</span>
+<span class="source-line-no">629</span><span id="line-629">      seekCount.increment();</span>
 <span class="source-line-no">630</span><span id="line-630">    }</span>
-<span class="source-line-no">631</span><span id="line-631"></span>
-<span class="source-line-no">632</span><span id="line-632">    return true;</span>
-<span class="source-line-no">633</span><span id="line-633">  }</span>
-<span class="source-line-no">634</span><span id="line-634"></span>
-<span class="source-line-no">635</span><span id="line-635">  /**</span>
-<span class="source-line-no">636</span><span id="line-636">   * Seeks before the seek target cell and saves the location to {@link #previousRow}. If there</span>
-<span class="source-line-no">637</span><span id="line-637">   * doesn't exist a KV in this file before the seek target cell, reposition the scanner at the</span>
-<span class="source-line-no">638</span><span id="line-638">   * beginning of the storefile (in preparation to a reseek at or after the seek key) and set the</span>
-<span class="source-line-no">639</span><span id="line-639">   * {@link #previousRow} to null. If {@link #previousRow} is ever non-null and then transitions to</span>
-<span class="source-line-no">640</span><span id="line-640">   * being null again via this method, that's because there doesn't exist a row before the seek</span>
-<span class="source-line-no">641</span><span id="line-641">   * target in the storefile (i.e. we're at the beginning of the storefile)</span>
-<span class="source-line-no">642</span><span id="line-642">   */</span>
-<span class="source-line-no">643</span><span id="line-643">  private void seekBeforeAndSaveKeyToPreviousRow(ExtendedCell seekKey) throws IOException {</span>
-<span class="source-line-no">644</span><span id="line-644">    if (seekCount != null) {</span>
-<span class="source-line-no">645</span><span id="line-645">      seekCount.increment();</span>
-<span class="source-line-no">646</span><span id="line-646">    }</span>
-<span class="source-line-no">647</span><span id="line-647">    if (!hfs.seekBefore(seekKey)) {</span>
-<span class="source-line-no">648</span><span id="line-648">      // Since the above seek failed, we need to position ourselves back at the start of the</span>
-<span class="source-line-no">649</span><span id="line-649">      // block or else our reseek might fail. seekTo() cannot return false here as at least</span>
-<span class="source-line-no">650</span><span id="line-650">      // one seekBefore will have returned true by the time we get here</span>
-<span class="source-line-no">651</span><span id="line-651">      hfs.seekTo();</span>
-<span class="source-line-no">652</span><span id="line-652">      this.previousRow = null;</span>
-<span class="source-line-no">653</span><span id="line-653">    } else {</span>
-<span class="source-line-no">654</span><span id="line-654">      this.previousRow = hfs.getCell();</span>
-<span class="source-line-no">655</span><span id="line-655">    }</span>
-<span class="source-line-no">656</span><span id="line-656">  }</span>
-<span class="source-line-no">657</span><span id="line-657"></span>
-<span class="source-line-no">658</span><span id="line-658">  private boolean seekAtOrAfter(ExtendedCell seekKey) throws IOException {</span>
-<span class="source-line-no">659</span><span id="line-659">    if (seekCount != null) {</span>
-<span class="source-line-no">660</span><span id="line-660">      seekCount.increment();</span>
-<span class="source-line-no">661</span><span id="line-661">    }</span>
-<span class="source-line-no">662</span><span id="line-662">    if (!seekAtOrAfter(hfs, seekKey)) {</span>
-<span class="source-line-no">663</span><span id="line-663">      this.cur = null;</span>
-<span class="source-line-no">664</span><span id="line-664">      return false;</span>
+<span class="source-line-no">631</span><span id="line-631">    if (!hfs.seekBefore(seekKey)) {</span>
+<span class="source-line-no">632</span><span id="line-632">      this.cur = null;</span>
+<span class="source-line-no">633</span><span id="line-633">      return false;</span>
+<span class="source-line-no">634</span><span id="line-634">    }</span>
+<span class="source-line-no">635</span><span id="line-635"></span>
+<span class="source-line-no">636</span><span id="line-636">    return true;</span>
+<span class="source-line-no">637</span><span id="line-637">  }</span>
+<span class="source-line-no">638</span><span id="line-638"></span>
+<span class="source-line-no">639</span><span id="line-639">  /**</span>
+<span class="source-line-no">640</span><span id="line-640">   * Seeks before the seek target cell and saves the location to {@link #previousRow}. If there</span>
+<span class="source-line-no">641</span><span id="line-641">   * doesn't exist a KV in this file before the seek target cell, reposition the scanner at the</span>
+<span class="source-line-no">642</span><span id="line-642">   * beginning of the storefile (in preparation to a reseek at or after the seek key) and set the</span>
+<span class="source-line-no">643</span><span id="line-643">   * {@link #previousRow} to null. If {@link #previousRow} is ever non-null and then transitions to</span>
+<span class="source-line-no">644</span><span id="line-644">   * being null again via this method, that's because there doesn't exist a row before the seek</span>
+<span class="source-line-no">645</span><span id="line-645">   * target in the storefile (i.e. we're at the beginning of the storefile)</span>
+<span class="source-line-no">646</span><span id="line-646">   */</span>
+<span class="source-line-no">647</span><span id="line-647">  private void seekBeforeAndSaveKeyToPreviousRow(ExtendedCell seekKey) throws IOException {</span>
+<span class="source-line-no">648</span><span id="line-648">    if (seekCount != null) {</span>
+<span class="source-line-no">649</span><span id="line-649">      seekCount.increment();</span>
+<span class="source-line-no">650</span><span id="line-650">    }</span>
+<span class="source-line-no">651</span><span id="line-651">    if (!hfs.seekBefore(seekKey)) {</span>
+<span class="source-line-no">652</span><span id="line-652">      // Since the above seek failed, we need to position ourselves back at the start of the</span>
+<span class="source-line-no">653</span><span id="line-653">      // block or else our reseek might fail. seekTo() cannot return false here as at least</span>
+<span class="source-line-no">654</span><span id="line-654">      // one seekBefore will have returned true by the time we get here</span>
+<span class="source-line-no">655</span><span id="line-655">      hfs.seekTo();</span>
+<span class="source-line-no">656</span><span id="line-656">      this.previousRow = null;</span>
+<span class="source-line-no">657</span><span id="line-657">    } else {</span>
+<span class="source-line-no">658</span><span id="line-658">      this.previousRow = hfs.getKey();</span>
+<span class="source-line-no">659</span><span id="line-659">    }</span>
+<span class="source-line-no">660</span><span id="line-660">  }</span>
+<span class="source-line-no">661</span><span id="line-661"></span>
+<span class="source-line-no">662</span><span id="line-662">  private boolean seekAtOrAfter(ExtendedCell seekKey) throws IOException {</span>
+<span class="source-line-no">663</span><span id="line-663">    if (seekCount != null) {</span>
+<span class="source-line-no">664</span><span id="line-664">      seekCount.increment();</span>
 <span class="source-line-no">665</span><span id="line-665">    }</span>
-<span class="source-line-no">666</span><span id="line-666"></span>
-<span class="source-line-no">667</span><span id="line-667">    return true;</span>
-<span class="source-line-no">668</span><span id="line-668">  }</span>
-<span class="source-line-no">669</span><span id="line-669"></span>
-<span class="source-line-no">670</span><span id="line-670">  private boolean reseekAtOrAfter(ExtendedCell seekKey) throws IOException {</span>
-<span class="source-line-no">671</span><span id="line-671">    if (seekCount != null) {</span>
-<span class="source-line-no">672</span><span id="line-672">      seekCount.increment();</span>
-<span class="source-line-no">673</span><span id="line-673">    }</span>
-<span class="source-line-no">674</span><span id="line-674">    if (!reseekAtOrAfter(hfs, seekKey)) {</span>
-<span class="source-line-no">675</span><span id="line-675">      this.cur = null;</span>
-<span class="source-line-no">676</span><span id="line-676">      return false;</span>
+<span class="source-line-no">666</span><span id="line-666">    if (!seekAtOrAfter(hfs, seekKey)) {</span>
+<span class="source-line-no">667</span><span id="line-667">      this.cur = null;</span>
+<span class="source-line-no">668</span><span id="line-668">      return false;</span>
+<span class="source-line-no">669</span><span id="line-669">    }</span>
+<span class="source-line-no">670</span><span id="line-670"></span>
+<span class="source-line-no">671</span><span id="line-671">    return true;</span>
+<span class="source-line-no">672</span><span id="line-672">  }</span>
+<span class="source-line-no">673</span><span id="line-673"></span>
+<span class="source-line-no">674</span><span id="line-674">  private boolean reseekAtOrAfter(ExtendedCell seekKey) throws IOException {</span>
+<span class="source-line-no">675</span><span id="line-675">    if (seekCount != null) {</span>
+<span class="source-line-no">676</span><span id="line-676">      seekCount.increment();</span>
 <span class="source-line-no">677</span><span id="line-677">    }</span>
-<span class="source-line-no">678</span><span id="line-678"></span>
-<span class="source-line-no">679</span><span id="line-679">    return true;</span>
-<span class="source-line-no">680</span><span id="line-680">  }</span>
-<span class="source-line-no">681</span><span id="line-681"></span>
-<span class="source-line-no">682</span><span id="line-682">  private boolean isStillAtSeekTargetAfterSkippingNewerKvs(Cell seekKey) throws IOException {</span>
-<span class="source-line-no">683</span><span id="line-683">    setCurrentCell(hfs.getCell());</span>
-<span class="source-line-no">684</span><span id="line-684">    return skipKvsNewerThanReadpointReversed() &amp;&amp; getComparator().compareRows(cur, seekKey) &lt;= 0;</span>
-<span class="source-line-no">685</span><span id="line-685">  }</span>
-<span class="source-line-no">686</span><span id="line-686"></span>
-<span class="source-line-no">687</span><span id="line-687">  private boolean skipKvsNewerThanReadpointReversed() throws IOException {</span>
-<span class="source-line-no">688</span><span id="line-688">    this.stopSkippingKVsIfNextRow = true;</span>
-<span class="source-line-no">689</span><span id="line-689">    boolean resultOfSkipKVs;</span>
-<span class="source-line-no">690</span><span id="line-690">    try {</span>
-<span class="source-line-no">691</span><span id="line-691">      resultOfSkipKVs = skipKVsNewerThanReadpoint();</span>
-<span class="source-line-no">692</span><span id="line-692">    } finally {</span>
-<span class="source-line-no">693</span><span id="line-693">      this.stopSkippingKVsIfNextRow = false;</span>
-<span class="source-line-no">694</span><span id="line-694">    }</span>
-<span class="source-line-no">695</span><span id="line-695"></span>
-<span class="source-line-no">696</span><span id="line-696">    return resultOfSkipKVs;</span>
-<span class="source-line-no">697</span><span id="line-697">  }</span>
-<span class="source-line-no">698</span><span id="line-698"></span>
-<span class="source-line-no">699</span><span id="line-699">  @Override</span>
-<span class="source-line-no">700</span><span id="line-700">  public boolean seekToLastRow() throws IOException {</span>
-<span class="source-line-no">701</span><span id="line-701">    Optional&lt;byte[]&gt; lastRow = reader.getLastRowKey();</span>
-<span class="source-line-no">702</span><span id="line-702">    if (!lastRow.isPresent()) {</span>
-<span class="source-line-no">703</span><span id="line-703">      return false;</span>
-<span class="source-line-no">704</span><span id="line-704">    }</span>
-<span class="source-line-no">705</span><span id="line-705">    ExtendedCell seekKey = PrivateCellUtil.createFirstOnRow(lastRow.get());</span>
-<span class="source-line-no">706</span><span id="line-706">    if (seek(seekKey)) {</span>
-<span class="source-line-no">707</span><span id="line-707">      return true;</span>
-<span class="source-line-no">708</span><span id="line-708">    } else {</span>
-<span class="source-line-no">709</span><span id="line-709">      return seekToPreviousRow(seekKey);</span>
-<span class="source-line-no">710</span><span id="line-710">    }</span>
-<span class="source-line-no">711</span><span id="line-711">  }</span>
-<span class="source-line-no">712</span><span id="line-712"></span>
-<span class="source-line-no">713</span><span id="line-713">  @Override</span>
-<span class="source-line-no">714</span><span id="line-714">  public boolean backwardSeek(ExtendedCell key) throws IOException {</span>
-<span class="source-line-no">715</span><span id="line-715">    seek(key);</span>
-<span class="source-line-no">716</span><span id="line-716">    if (cur == null || getComparator().compareRows(cur, key) &gt; 0) {</span>
-<span class="source-line-no">717</span><span id="line-717">      return seekToPreviousRow(key);</span>
-<span class="source-line-no">718</span><span id="line-718">    }</span>
-<span class="source-line-no">719</span><span id="line-719">    return true;</span>
-<span class="source-line-no">720</span><span id="line-720">  }</span>
-<span class="source-line-no">721</span><span id="line-721"></span>
-<span class="source-line-no">722</span><span id="line-722">  @Override</span>
-<span class="source-line-no">723</span><span id="line-723">  public ExtendedCell getNextIndexedKey() {</span>
-<span class="source-line-no">724</span><span id="line-724">    return hfs.getNextIndexedKey();</span>
-<span class="source-line-no">725</span><span id="line-725">  }</span>
-<span class="source-line-no">726</span><span id="line-726"></span>
-<span class="source-line-no">727</span><span id="line-727">  @Override</span>
-<span class="source-line-no">728</span><span id="line-728">  public void shipped() throws IOException {</span>
-<span class="source-line-no">729</span><span id="line-729">    this.hfs.shipped();</span>
-<span class="source-line-no">730</span><span id="line-730">  }</span>
-<span class="source-line-no">731</span><span id="line-731">}</span>
+<span class="source-line-no">678</span><span id="line-678">    if (!reseekAtOrAfter(hfs, seekKey)) {</span>
+<span class="source-line-no">679</span><span id="line-679">      this.cur = null;</span>
+<span class="source-line-no">680</span><span id="line-680">      return false;</span>
+<span class="source-line-no">681</span><span id="line-681">    }</span>
+<span class="source-line-no">682</span><span id="line-682"></span>
+<span class="source-line-no">683</span><span id="line-683">    return true;</span>
+<span class="source-line-no">684</span><span id="line-684">  }</span>
+<span class="source-line-no">685</span><span id="line-685"></span>
+<span class="source-line-no">686</span><span id="line-686">  private boolean isStillAtSeekTargetAfterSkippingNewerKvs(Cell seekKey) throws IOException {</span>
+<span class="source-line-no">687</span><span id="line-687">    setCurrentCell(hfs.getCell());</span>
+<span class="source-line-no">688</span><span id="line-688">    return skipKvsNewerThanReadpointReversed() &amp;&amp; getComparator().compareRows(cur, seekKey) &lt;= 0;</span>
+<span class="source-line-no">689</span><span id="line-689">  }</span>
+<span class="source-line-no">690</span><span id="line-690"></span>
+<span class="source-line-no">691</span><span id="line-691">  private boolean skipKvsNewerThanReadpointReversed() throws IOException {</span>
+<span class="source-line-no">692</span><span id="line-692">    this.stopSkippingKVsIfNextRow = true;</span>
+<span class="source-line-no">693</span><span id="line-693">    boolean resultOfSkipKVs;</span>
+<span class="source-line-no">694</span><span id="line-694">    try {</span>
+<span class="source-line-no">695</span><span id="line-695">      resultOfSkipKVs = skipKVsNewerThanReadpoint();</span>
+<span class="source-line-no">696</span><span id="line-696">    } finally {</span>
+<span class="source-line-no">697</span><span id="line-697">      this.stopSkippingKVsIfNextRow = false;</span>
+<span class="source-line-no">698</span><span id="line-698">    }</span>
+<span class="source-line-no">699</span><span id="line-699"></span>
+<span class="source-line-no">700</span><span id="line-700">    return resultOfSkipKVs;</span>
+<span class="source-line-no">701</span><span id="line-701">  }</span>
+<span class="source-line-no">702</span><span id="line-702"></span>
+<span class="source-line-no">703</span><span id="line-703">  @Override</span>
+<span class="source-line-no">704</span><span id="line-704">  public boolean seekToLastRow() throws IOException {</span>
+<span class="source-line-no">705</span><span id="line-705">    Optional&lt;byte[]&gt; lastRow = reader.getLastRowKey();</span>
+<span class="source-line-no">706</span><span id="line-706">    if (!lastRow.isPresent()) {</span>
+<span class="source-line-no">707</span><span id="line-707">      return false;</span>
+<span class="source-line-no">708</span><span id="line-708">    }</span>
+<span class="source-line-no">709</span><span id="line-709">    ExtendedCell seekKey = PrivateCellUtil.createFirstOnRow(lastRow.get());</span>
+<span class="source-line-no">710</span><span id="line-710">    if (seek(seekKey)) {</span>
+<span class="source-line-no">711</span><span id="line-711">      return true;</span>
+<span class="source-line-no">712</span><span id="line-712">    } else {</span>
+<span class="source-line-no">713</span><span id="line-713">      return seekToPreviousRow(seekKey);</span>
+<span class="source-line-no">714</span><span id="line-714">    }</span>
+<span class="source-line-no">715</span><span id="line-715">  }</span>
+<span class="source-line-no">716</span><span id="line-716"></span>
+<span class="source-line-no">717</span><span id="line-717">  @Override</span>
+<span class="source-line-no">718</span><span id="line-718">  public boolean backwardSeek(ExtendedCell key) throws IOException {</span>
+<span class="source-line-no">719</span><span id="line-719">    seek(key);</span>
+<span class="source-line-no">720</span><span id="line-720">    if (cur == null || getComparator().compareRows(cur, key) &gt; 0) {</span>
+<span class="source-line-no">721</span><span id="line-721">      return seekToPreviousRow(key);</span>
+<span class="source-line-no">722</span><span id="line-722">    }</span>
+<span class="source-line-no">723</span><span id="line-723">    return true;</span>
+<span class="source-line-no">724</span><span id="line-724">  }</span>
+<span class="source-line-no">725</span><span id="line-725"></span>
+<span class="source-line-no">726</span><span id="line-726">  @Override</span>
+<span class="source-line-no">727</span><span id="line-727">  public ExtendedCell getNextIndexedKey() {</span>
+<span class="source-line-no">728</span><span id="line-728">    return hfs.getNextIndexedKey();</span>
+<span class="source-line-no">729</span><span id="line-729">  }</span>
+<span class="source-line-no">730</span><span id="line-730"></span>
+<span class="source-line-no">731</span><span id="line-731">  @Override</span>
+<span class="source-line-no">732</span><span id="line-732">  public void shipped() throws IOException {</span>
+<span class="source-line-no">733</span><span id="line-733">    this.hfs.shipped();</span>
+<span class="source-line-no">734</span><span id="line-734">  }</span>
+<span class="source-line-no">735</span><span id="line-735">}</span>
 
 
 
diff --git a/book.html b/book.html
index 47c65fca69c..f761b8fc4f2 100644
--- a/book.html
+++ b/book.html
@@ -49812,7 +49812,7 @@ org/apache/hadoop/hbase/security/access/AccessControlClient.revoke:(Lorg/apache/
 <div id="footer">
 <div id="footer-text">
 Version 4.0.0-alpha-1-SNAPSHOT<br>
-Last updated 2025-03-19 14:30:01 UTC
+Last updated 2025-03-20 14:30:42 UTC
 </div>
 </div>
 <script type="text/x-mathjax-config">
diff --git a/bulk-loads.html b/bulk-loads.html
index 03f6a24f0a7..8ebb2b0d96f 100644
--- a/bulk-loads.html
+++ b/bulk-loads.html
@@ -185,7 +185,7 @@
         All other marks mentioned may be trademarks or registered trademarks of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-19
+        Last Published: 2025-03-20
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index f34d7f25c21..fbafe145c41 100644
--- a/checkstyle-aggregate.html
+++ b/checkstyle-aggregate.html
@@ -12828,25 +12828,25 @@
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>224</td></tr>
+<td>227</td></tr>
 <tr class="a">
 <td><figure><img src="images/icon_error_sml.gif" alt="" /></figure>&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>253</td></tr>
+<td>256</td></tr>
 <tr class="b">
 <td><figure><img src="images/icon_error_sml.gif" alt="" /></figure>&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>309</td></tr>
+<td>312</td></tr>
 <tr class="a">
 <td><figure><img src="images/icon_error_sml.gif" alt="" /></figure>&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>456</td></tr></table></section><section>
+<td>459</td></tr></table></section><section>
 <h3 id="org.apache.hadoop.hbase.regionserver.StoreFileWriter.java">org/apache/hadoop/hbase/regionserver/StoreFileWriter.java</h3>
 <table border="0" class="table table-striped">
 <tr class="b">
@@ -18515,7 +18515,7 @@
         All other marks mentioned may be trademarks or registered trademarks of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-19
+        Last Published: 2025-03-20
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/checkstyle.rss b/checkstyle.rss
index 40f24667628..a301c990d88 100644
--- a/checkstyle.rss
+++ b/checkstyle.rss
@@ -718,7 +718,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.http.RegionVisualizer.java">org/apache/hadoop/hbase/master/http/RegionVisualizer.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.SplitWALProcedure.java">org/apache/hadoop/hbase/master/procedure/SplitWALProcedure.java</a>
                 </td>
                 <td>
                   0
@@ -732,7 +732,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.SplitWALProcedure.java">org/apache/hadoop/hbase/master/procedure/SplitWALProcedure.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.http.RegionVisualizer.java">org/apache/hadoop/hbase/master/http/RegionVisualizer.java</a>
                 </td>
                 <td>
                   0
@@ -872,7 +872,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoderImpl.java">org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoderImpl.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.NonThreadSafeMemStoreSizing.java">org/apache/hadoop/hbase/regionserver/NonThreadSafeMemStoreSizing.java</a>
                 </td>
                 <td>
                   0
@@ -886,7 +886,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.NonThreadSafeMemStoreSizing.java">org/apache/hadoop/hbase/regionserver/NonThreadSafeMemStoreSizing.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoderImpl.java">org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoderImpl.java</a>
                 </td>
                 <td>
                   0
@@ -1376,7 +1376,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TableSnapshotScanner.java">org/apache/hadoop/hbase/client/TableSnapshotScanner.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.ipc.QueueBalancer.java">org/apache/hadoop/hbase/ipc/QueueBalancer.java</a>
                 </td>
                 <td>
                   0
@@ -1390,7 +1390,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.ipc.QueueBalancer.java">org/apache/hadoop/hbase/ipc/QueueBalancer.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TableSnapshotScanner.java">org/apache/hadoop/hbase/client/TableSnapshotScanner.java</a>
                 </td>
                 <td>
                   0
@@ -2748,7 +2748,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.mob.MobUtils.java">org/apache/hadoop/hbase/mob/MobUtils.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.DateTieredStoreEngine.java">org/apache/hadoop/hbase/regionserver/DateTieredStoreEngine.java</a>
                 </td>
                 <td>
                   0
@@ -2762,7 +2762,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.DateTieredStoreEngine.java">org/apache/hadoop/hbase/regionserver/DateTieredStoreEngine.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.mob.MobUtils.java">org/apache/hadoop/hbase/mob/MobUtils.java</a>
                 </td>
                 <td>
                   0
@@ -3182,7 +3182,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestPreadReversedScanner.java">org/apache/hadoop/hbase/client/TestPreadReversedScanner.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.compactions.SinusoidalFileListGenerator.java">org/apache/hadoop/hbase/regionserver/compactions/SinusoidalFileListGenerator.java</a>
                 </td>
                 <td>
                   0
@@ -3196,7 +3196,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.compactions.SinusoidalFileListGenerator.java">org/apache/hadoop/hbase/regionserver/compactions/SinusoidalFileListGenerator.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestPreadReversedScanner.java">org/apache/hadoop/hbase/client/TestPreadReversedScanner.java</a>
                 </td>
                 <td>
                   0
@@ -3574,7 +3574,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestRpcConnectionRegistry.java">org/apache/hadoop/hbase/client/TestRpcConnectionRegistry.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestAtomicOperation.java">org/apache/hadoop/hbase/regionserver/TestAtomicOperation.java</a>
                 </td>
                 <td>
                   0
@@ -3583,12 +3583,12 @@ under the License.
                   0
                 </td>
                 <td>
-                  0
+                  4
                 </td>
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestAtomicOperation.java">org/apache/hadoop/hbase/regionserver/TestAtomicOperation.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestRpcConnectionRegistry.java">org/apache/hadoop/hbase/client/TestRpcConnectionRegistry.java</a>
                 </td>
                 <td>
                   0
@@ -3597,7 +3597,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  4
+                  0
                 </td>
               </tr>
                           <tr>
@@ -4750,7 +4750,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.master.TestReplicationLogCleaner.java">org/apache/hadoop/hbase/replication/master/TestReplicationLogCleaner.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.TestSyncReplicationActiveAsyncFSWAL.java">org/apache/hadoop/hbase/replication/TestSyncReplicationActiveAsyncFSWAL.java</a>
                 </td>
                 <td>
                   0
@@ -4764,7 +4764,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.TestSyncReplicationActiveAsyncFSWAL.java">org/apache/hadoop/hbase/replication/TestSyncReplicationActiveAsyncFSWAL.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.master.TestReplicationLogCleaner.java">org/apache/hadoop/hbase/replication/master/TestReplicationLogCleaner.java</a>
                 </td>
                 <td>
                   0
@@ -5562,7 +5562,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.util.HFileArchiveTestingUtil.java">org/apache/hadoop/hbase/util/HFileArchiveTestingUtil.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.TestQuotaObserverChore.java">org/apache/hadoop/hbase/quotas/TestQuotaObserverChore.java</a>
                 </td>
                 <td>
                   0
@@ -5571,12 +5571,12 @@ under the License.
                   0
                 </td>
                 <td>
-                  6
+                  0
                 </td>
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.TestMasterChoreScheduled.java">org/apache/hadoop/hbase/master/TestMasterChoreScheduled.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.util.HFileArchiveTestingUtil.java">org/apache/hadoop/hbase/util/HFileArchiveTestingUtil.java</a>
                 </td>
                 <td>
                   0
@@ -5585,12 +5585,12 @@ under the License.
                   0
                 </td>
                 <td>
-                  0
+                  6
                 </td>
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.TestQuotaObserverChore.java">org/apache/hadoop/hbase/quotas/TestQuotaObserverChore.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.TestMasterChoreScheduled.java">org/apache/hadoop/hbase/master/TestMasterChoreScheduled.java</a>
                 </td>
                 <td>
                   0
@@ -7746,7 +7746,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.snapshot.TestRestoreSnapshotHelper.java">org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.snapshot.TestRegionSnapshotTask.java">org/apache/hadoop/hbase/snapshot/TestRegionSnapshotTask.java</a>
                 </td>
                 <td>
                   0
@@ -7760,7 +7760,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.snapshot.TestRegionSnapshotTask.java">org/apache/hadoop/hbase/snapshot/TestRegionSnapshotTask.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.snapshot.TestRestoreSnapshotHelper.java">org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.java</a>
                 </td>
                 <td>
                   0
@@ -8222,7 +8222,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestAsyncAdminMasterSwitch.java">org/apache/hadoop/hbase/client/TestAsyncAdminMasterSwitch.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.security.AbstractTestMutualTls.java">org/apache/hadoop/hbase/security/AbstractTestMutualTls.java</a>
                 </td>
                 <td>
                   0
@@ -8236,7 +8236,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.security.AbstractTestMutualTls.java">org/apache/hadoop/hbase/security/AbstractTestMutualTls.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestAsyncAdminMasterSwitch.java">org/apache/hadoop/hbase/client/TestAsyncAdminMasterSwitch.java</a>
                 </td>
                 <td>
                   0
@@ -9006,7 +9006,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.replication.TestSyncReplicationReplayWALManager.java">org/apache/hadoop/hbase/master/replication/TestSyncReplicationReplayWALManager.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.cleaner.TestCleanerClearHFiles.java">org/apache/hadoop/hbase/master/cleaner/TestCleanerClearHFiles.java</a>
                 </td>
                 <td>
                   0
@@ -9020,7 +9020,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.cleaner.TestCleanerClearHFiles.java">org/apache/hadoop/hbase/master/cleaner/TestCleanerClearHFiles.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.replication.TestSyncReplicationReplayWALManager.java">org/apache/hadoop/hbase/master/replication/TestSyncReplicationReplayWALManager.java</a>
                 </td>
                 <td>
                   0
@@ -9622,7 +9622,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.MetricsMasterFileSystem.java">org/apache/hadoop/hbase/master/MetricsMasterFileSystem.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.SpaceViolationPolicyEnforcementFactory.java">org/apache/hadoop/hbase/quotas/SpaceViolationPolicyEnforcementFactory.java</a>
                 </td>
                 <td>
                   0
@@ -9631,12 +9631,12 @@ under the License.
                   0
                 </td>
                 <td>
-                  0
+                  1
                 </td>
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.SpaceViolationPolicyEnforcementFactory.java">org/apache/hadoop/hbase/quotas/SpaceViolationPolicyEnforcementFactory.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.MetricsMasterFileSystem.java">org/apache/hadoop/hbase/master/MetricsMasterFileSystem.java</a>
                 </td>
                 <td>
                   0
@@ -9645,7 +9645,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  1
+                  0
                 </td>
               </tr>
                           <tr>
@@ -9846,7 +9846,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.regionserver.PeerProcedureHandler.java">org/apache/hadoop/hbase/replication/regionserver/PeerProcedureHandler.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.CellSet.java">org/apache/hadoop/hbase/regionserver/CellSet.java</a>
                 </td>
                 <td>
                   0
@@ -9860,7 +9860,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.CellSet.java">org/apache/hadoop/hbase/regionserver/CellSet.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.regionserver.PeerProcedureHandler.java">org/apache/hadoop/hbase/replication/regionserver/PeerProcedureHandler.java</a>
                 </td>
                 <td>
                   0
@@ -11680,7 +11680,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestRegionServerCrashDisableWAL.java">org/apache/hadoop/hbase/regionserver/TestRegionServerCrashDisableWAL.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.TestMetaTableAccessor.java">org/apache/hadoop/hbase/TestMetaTableAccessor.java</a>
                 </td>
                 <td>
                   0
@@ -11689,12 +11689,12 @@ under the License.
                   0
                 </td>
                 <td>
-                  0
+                  2
                 </td>
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.TestMetaTableAccessor.java">org/apache/hadoop/hbase/TestMetaTableAccessor.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestRegionServerCrashDisableWAL.java">org/apache/hadoop/hbase/regionserver/TestRegionServerCrashDisableWAL.java</a>
                 </td>
                 <td>
                   0
@@ -11703,7 +11703,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  2
+                  0
                 </td>
               </tr>
                           <tr>
@@ -11848,7 +11848,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.protobuf.ReplicationProtobufUtil.java">org/apache/hadoop/hbase/protobuf/ReplicationProtobufUtil.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.SnapshotProcedure.java">org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.java</a>
                 </td>
                 <td>
                   0
@@ -11857,12 +11857,12 @@ under the License.
                   0
                 </td>
                 <td>
-                  1
+                  0
                 </td>
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.SnapshotProcedure.java">org/apache/hadoop/hbase/master/procedure/SnapshotProcedure.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.protobuf.ReplicationProtobufUtil.java">org/apache/hadoop/hbase/protobuf/ReplicationProtobufUtil.java</a>
                 </td>
                 <td>
                   0
@@ -11871,12 +11871,12 @@ under the License.
                   0
                 </td>
                 <td>
-                  0
+                  1
                 </td>
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.TestMultiVersions.java">org/apache/hadoop/hbase/TestMultiVersions.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.wal.TestWALCellCodecWithCompression.java">org/apache/hadoop/hbase/regionserver/wal/TestWALCellCodecWithCompression.java</a>
                 </td>
                 <td>
                   0
@@ -11890,7 +11890,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.wal.TestWALCellCodecWithCompression.java">org/apache/hadoop/hbase/regionserver/wal/TestWALCellCodecWithCompression.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.TestMultiVersions.java">org/apache/hadoop/hbase/TestMultiVersions.java</a>
                 </td>
                 <td>
                   0
@@ -12016,7 +12016,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestCleanupMetaReplicaThroughConfig.java">org/apache/hadoop/hbase/client/TestCleanupMetaReplicaThroughConfig.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.TestCreateTableProcedureMuitipleRegions.java">org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.java</a>
                 </td>
                 <td>
                   0
@@ -12030,7 +12030,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.TestCreateTableProcedureMuitipleRegions.java">org/apache/hadoop/hbase/master/procedure/TestCreateTableProcedureMuitipleRegions.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestCleanupMetaReplicaThroughConfig.java">org/apache/hadoop/hbase/client/TestCleanupMetaReplicaThroughConfig.java</a>
                 </td>
                 <td>
                   0
@@ -12352,7 +12352,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.assignment.TestReportRegionStateTransitionRetry.java">org/apache/hadoop/hbase/master/assignment/TestReportRegionStateTransitionRetry.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.TestTableSpaceQuotaViolationNotifier.java">org/apache/hadoop/hbase/quotas/TestTableSpaceQuotaViolationNotifier.java</a>
                 </td>
                 <td>
                   0
@@ -12366,7 +12366,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.TestTableSpaceQuotaViolationNotifier.java">org/apache/hadoop/hbase/quotas/TestTableSpaceQuotaViolationNotifier.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.assignment.TestReportRegionStateTransitionRetry.java">org/apache/hadoop/hbase/master/assignment/TestReportRegionStateTransitionRetry.java</a>
                 </td>
                 <td>
                   0
@@ -12884,7 +12884,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.types.StructBuilder.java">org/apache/hadoop/hbase/types/StructBuilder.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.DeallocateRewriteByteBuffAllocator.java">org/apache/hadoop/hbase/io/DeallocateRewriteByteBuffAllocator.java</a>
                 </td>
                 <td>
                   0
@@ -12898,7 +12898,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.DeallocateRewriteByteBuffAllocator.java">org/apache/hadoop/hbase/io/DeallocateRewriteByteBuffAllocator.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.types.StructBuilder.java">org/apache/hadoop/hbase/types/StructBuilder.java</a>
                 </td>
                 <td>
                   0
@@ -12996,7 +12996,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.locking.LockProcedure.java">org/apache/hadoop/hbase/master/locking/LockProcedure.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.procedure.flush.FlushTableSubprocedure.java">org/apache/hadoop/hbase/procedure/flush/FlushTableSubprocedure.java</a>
                 </td>
                 <td>
                   0
@@ -13005,12 +13005,12 @@ under the License.
                   0
                 </td>
                 <td>
-                  4
+                  0
                 </td>
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.procedure.flush.FlushTableSubprocedure.java">org/apache/hadoop/hbase/procedure/flush/FlushTableSubprocedure.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.locking.LockProcedure.java">org/apache/hadoop/hbase/master/locking/LockProcedure.java</a>
                 </td>
                 <td>
                   0
@@ -13019,7 +13019,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  0
+                  4
                 </td>
               </tr>
                           <tr>
@@ -13752,7 +13752,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestReplicasClient.java">org/apache/hadoop/hbase/client/TestReplicasClient.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.TestSuperUserQuotaPermissions.java">org/apache/hadoop/hbase/quotas/TestSuperUserQuotaPermissions.java</a>
                 </td>
                 <td>
                   0
@@ -13761,12 +13761,12 @@ under the License.
                   0
                 </td>
                 <td>
-                  1
+                  0
                 </td>
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.TestSuperUserQuotaPermissions.java">org/apache/hadoop/hbase/quotas/TestSuperUserQuotaPermissions.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestReplicasClient.java">org/apache/hadoop/hbase/client/TestReplicasClient.java</a>
                 </td>
                 <td>
                   0
@@ -13775,7 +13775,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  0
+                  1
                 </td>
               </tr>
                           <tr>
@@ -14130,7 +14130,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.TestSyncReplicationStandbyKillMaster.java">org/apache/hadoop/hbase/replication/TestSyncReplicationStandbyKillMaster.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.security.visibility.TestVisibilityLabelsWithDefaultVisLabelService.java">org/apache/hadoop/hbase/security/visibility/TestVisibilityLabelsWithDefaultVisLabelService.java</a>
                 </td>
                 <td>
                   0
@@ -14139,12 +14139,12 @@ under the License.
                   0
                 </td>
                 <td>
-                  0
+                  1
                 </td>
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.security.visibility.TestVisibilityLabelsWithDefaultVisLabelService.java">org/apache/hadoop/hbase/security/visibility/TestVisibilityLabelsWithDefaultVisLabelService.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.TestSyncReplicationStandbyKillMaster.java">org/apache/hadoop/hbase/replication/TestSyncReplicationStandbyKillMaster.java</a>
                 </td>
                 <td>
                   0
@@ -14153,7 +14153,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  1
+                  0
                 </td>
               </tr>
                           <tr>
@@ -14606,7 +14606,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner.java">org/apache/hadoop/hbase/replication/master/ReplicationHFileCleaner.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.compactions.RatioBasedCompactionPolicy.java">org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.java</a>
                 </td>
                 <td>
                   0
@@ -14620,7 +14620,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.compactions.RatioBasedCompactionPolicy.java">org/apache/hadoop/hbase/regionserver/compactions/RatioBasedCompactionPolicy.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner.java">org/apache/hadoop/hbase/replication/master/ReplicationHFileCleaner.java</a>
                 </td>
                 <td>
                   0
@@ -15544,7 +15544,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.AsyncMasterRequestRpcRetryingCaller.java">org/apache/hadoop/hbase/client/AsyncMasterRequestRpcRetryingCaller.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.WrongRegionException.java">org/apache/hadoop/hbase/regionserver/WrongRegionException.java</a>
                 </td>
                 <td>
                   0
@@ -15558,7 +15558,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.WrongRegionException.java">org/apache/hadoop/hbase/regionserver/WrongRegionException.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.AsyncMasterRequestRpcRetryingCaller.java">org/apache/hadoop/hbase/client/AsyncMasterRequestRpcRetryingCaller.java</a>
                 </td>
                 <td>
                   0
@@ -17140,7 +17140,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.TestFlushTableProcedure.java">org/apache/hadoop/hbase/master/procedure/TestFlushTableProcedure.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.TestQuotaUserOverride.java">org/apache/hadoop/hbase/quotas/TestQuotaUserOverride.java</a>
                 </td>
                 <td>
                   0
@@ -17154,7 +17154,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.TestQuotaUserOverride.java">org/apache/hadoop/hbase/quotas/TestQuotaUserOverride.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.TestFlushTableProcedure.java">org/apache/hadoop/hbase/master/procedure/TestFlushTableProcedure.java</a>
                 </td>
                 <td>
                   0
@@ -19408,7 +19408,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestBufferedMutator.java">org/apache/hadoop/hbase/client/TestBufferedMutator.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.wal.TestFSHLog.java">org/apache/hadoop/hbase/regionserver/wal/TestFSHLog.java</a>
                 </td>
                 <td>
                   0
@@ -19422,7 +19422,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.wal.TestFSHLog.java">org/apache/hadoop/hbase/regionserver/wal/TestFSHLog.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestBufferedMutator.java">org/apache/hadoop/hbase/client/TestBufferedMutator.java</a>
                 </td>
                 <td>
                   0
@@ -19954,7 +19954,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.AbstractTestCITimeout.java">org/apache/hadoop/hbase/client/AbstractTestCITimeout.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestReadAndWriteRegionInfoFile.java">org/apache/hadoop/hbase/regionserver/TestReadAndWriteRegionInfoFile.java</a>
                 </td>
                 <td>
                   0
@@ -19968,7 +19968,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestReadAndWriteRegionInfoFile.java">org/apache/hadoop/hbase/regionserver/TestReadAndWriteRegionInfoFile.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.AbstractTestCITimeout.java">org/apache/hadoop/hbase/client/AbstractTestCITimeout.java</a>
                 </td>
                 <td>
                   0
@@ -20444,7 +20444,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.regionserver.TestSourceFSConfigurationProvider.java">org/apache/hadoop/hbase/replication/regionserver/TestSourceFSConfigurationProvider.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestRegionIncrement.java">org/apache/hadoop/hbase/regionserver/TestRegionIncrement.java</a>
                 </td>
                 <td>
                   0
@@ -20453,12 +20453,12 @@ under the License.
                   0
                 </td>
                 <td>
-                  0
+                  5
                 </td>
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestRegionIncrement.java">org/apache/hadoop/hbase/regionserver/TestRegionIncrement.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.regionserver.TestSourceFSConfigurationProvider.java">org/apache/hadoop/hbase/replication/regionserver/TestSourceFSConfigurationProvider.java</a>
                 </td>
                 <td>
                   0
@@ -20467,7 +20467,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  5
+                  0
                 </td>
               </tr>
                           <tr>
@@ -20682,7 +20682,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.mob.TestMobUtils.java">org/apache/hadoop/hbase/mob/TestMobUtils.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestShutdownWhileWALBroken.java">org/apache/hadoop/hbase/regionserver/TestShutdownWhileWALBroken.java</a>
                 </td>
                 <td>
                   0
@@ -20696,7 +20696,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestShutdownWhileWALBroken.java">org/apache/hadoop/hbase/regionserver/TestShutdownWhileWALBroken.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.mob.TestMobUtils.java">org/apache/hadoop/hbase/mob/TestMobUtils.java</a>
                 </td>
                 <td>
                   0
@@ -22530,7 +22530,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TracedAdvancedScanResultConsumer.java">org/apache/hadoop/hbase/client/TracedAdvancedScanResultConsumer.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.TestMasterTransitions.java">org/apache/hadoop/hbase/master/TestMasterTransitions.java</a>
                 </td>
                 <td>
                   0
@@ -22539,12 +22539,12 @@ under the License.
                   0
                 </td>
                 <td>
-                  0
+                  2
                 </td>
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.TestMasterTransitions.java">org/apache/hadoop/hbase/master/TestMasterTransitions.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TracedAdvancedScanResultConsumer.java">org/apache/hadoop/hbase/client/TracedAdvancedScanResultConsumer.java</a>
                 </td>
                 <td>
                   0
@@ -22553,7 +22553,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  2
+                  0
                 </td>
               </tr>
                           <tr>
@@ -23174,7 +23174,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.TestEnableTableProcedure.java">org/apache/hadoop/hbase/master/procedure/TestEnableTableProcedure.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.TestNodeHealthCheckChore.java">org/apache/hadoop/hbase/TestNodeHealthCheckChore.java</a>
                 </td>
                 <td>
                   0
@@ -23183,12 +23183,12 @@ under the License.
                   0
                 </td>
                 <td>
-                  0
+                  1
                 </td>
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.TestNodeHealthCheckChore.java">org/apache/hadoop/hbase/TestNodeHealthCheckChore.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.TestEnableTableProcedure.java">org/apache/hadoop/hbase/master/procedure/TestEnableTableProcedure.java</a>
                 </td>
                 <td>
                   0
@@ -23197,7 +23197,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  1
+                  0
                 </td>
               </tr>
                           <tr>
@@ -23566,7 +23566,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.compress.HFileTestBase.java">org/apache/hadoop/hbase/io/compress/HFileTestBase.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestDataBlockEncodingTool.java">org/apache/hadoop/hbase/regionserver/TestDataBlockEncodingTool.java</a>
                 </td>
                 <td>
                   0
@@ -23580,7 +23580,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestDataBlockEncodingTool.java">org/apache/hadoop/hbase/regionserver/TestDataBlockEncodingTool.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.compress.HFileTestBase.java">org/apache/hadoop/hbase/io/compress/HFileTestBase.java</a>
                 </td>
                 <td>
                   0
@@ -27766,7 +27766,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.DrainingServerTracker.java">org/apache/hadoop/hbase/master/DrainingServerTracker.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.procedure.ZKProcedureUtil.java">org/apache/hadoop/hbase/procedure/ZKProcedureUtil.java</a>
                 </td>
                 <td>
                   0
@@ -27775,12 +27775,12 @@ under the License.
                   0
                 </td>
                 <td>
-                  0
+                  3
                 </td>
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.procedure.ZKProcedureUtil.java">org/apache/hadoop/hbase/procedure/ZKProcedureUtil.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.DrainingServerTracker.java">org/apache/hadoop/hbase/master/DrainingServerTracker.java</a>
                 </td>
                 <td>
                   0
@@ -27789,7 +27789,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  3
+                  0
                 </td>
               </tr>
                           <tr>
@@ -28606,7 +28606,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.util.ShutdownHookManager.java">org/apache/hadoop/hbase/util/ShutdownHookManager.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.FileSystemUtilizationChore.java">org/apache/hadoop/hbase/quotas/FileSystemUtilizationChore.java</a>
                 </td>
                 <td>
                   0
@@ -28615,12 +28615,12 @@ under the License.
                   0
                 </td>
                 <td>
-                  1
+                  0
                 </td>
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.FileSystemUtilizationChore.java">org/apache/hadoop/hbase/quotas/FileSystemUtilizationChore.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.util.ShutdownHookManager.java">org/apache/hadoop/hbase/util/ShutdownHookManager.java</a>
                 </td>
                 <td>
                   0
@@ -28629,7 +28629,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  0
+                  1
                 </td>
               </tr>
                           <tr>
@@ -28746,7 +28746,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestClientOperationInterrupt.java">org/apache/hadoop/hbase/client/TestClientOperationInterrupt.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.TestSnapshotProcedureWithLockTimeout.java">org/apache/hadoop/hbase/master/procedure/TestSnapshotProcedureWithLockTimeout.java</a>
                 </td>
                 <td>
                   0
@@ -28760,7 +28760,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.TestSnapshotProcedureWithLockTimeout.java">org/apache/hadoop/hbase/master/procedure/TestSnapshotProcedureWithLockTimeout.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestClientOperationInterrupt.java">org/apache/hadoop/hbase/client/TestClientOperationInterrupt.java</a>
                 </td>
                 <td>
                   0
@@ -29712,7 +29712,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.encoding.HFileBlockDefaultEncodingContext.java">org/apache/hadoop/hbase/io/encoding/HFileBlockDefaultEncodingContext.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.crypto.tls.HBaseTrustManager.java">org/apache/hadoop/hbase/io/crypto/tls/HBaseTrustManager.java</a>
                 </td>
                 <td>
                   0
@@ -29721,12 +29721,12 @@ under the License.
                   0
                 </td>
                 <td>
-                  0
+                  1
                 </td>
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.crypto.tls.HBaseTrustManager.java">org/apache/hadoop/hbase/io/crypto/tls/HBaseTrustManager.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.encoding.HFileBlockDefaultEncodingContext.java">org/apache/hadoop/hbase/io/encoding/HFileBlockDefaultEncodingContext.java</a>
                 </td>
                 <td>
                   0
@@ -29735,7 +29735,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  1
+                  0
                 </td>
               </tr>
                           <tr>
@@ -30314,7 +30314,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestAsyncTableAdminApi2.java">org/apache/hadoop/hbase/client/TestAsyncTableAdminApi2.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.TestMasterRestartAfterDisablingTable.java">org/apache/hadoop/hbase/master/TestMasterRestartAfterDisablingTable.java</a>
                 </td>
                 <td>
                   0
@@ -30328,7 +30328,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.TestMasterRestartAfterDisablingTable.java">org/apache/hadoop/hbase/master/TestMasterRestartAfterDisablingTable.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestAsyncTableAdminApi2.java">org/apache/hadoop/hbase/client/TestAsyncTableAdminApi2.java</a>
                 </td>
                 <td>
                   0
@@ -32162,7 +32162,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.DummyAsyncClusterConnection.java">org/apache/hadoop/hbase/client/DummyAsyncClusterConnection.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.TestTableProcedureWaitingQueueCleanup.java">org/apache/hadoop/hbase/master/procedure/TestTableProcedureWaitingQueueCleanup.java</a>
                 </td>
                 <td>
                   0
@@ -32176,7 +32176,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.TestTableProcedureWaitingQueueCleanup.java">org/apache/hadoop/hbase/master/procedure/TestTableProcedureWaitingQueueCleanup.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.tool.TestSecureBulkLoadHFiles.java">org/apache/hadoop/hbase/tool/TestSecureBulkLoadHFiles.java</a>
                 </td>
                 <td>
                   0
@@ -32190,7 +32190,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.tool.TestSecureBulkLoadHFiles.java">org/apache/hadoop/hbase/tool/TestSecureBulkLoadHFiles.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.DummyAsyncClusterConnection.java">org/apache/hadoop/hbase/client/DummyAsyncClusterConnection.java</a>
                 </td>
                 <td>
                   0
@@ -32274,7 +32274,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.RowMutations.java">org/apache/hadoop/hbase/client/RowMutations.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.InvalidMutationDurabilityException.java">org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.java</a>
                 </td>
                 <td>
                   0
@@ -32288,7 +32288,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.InvalidMutationDurabilityException.java">org/apache/hadoop/hbase/regionserver/InvalidMutationDurabilityException.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.RowMutations.java">org/apache/hadoop/hbase/client/RowMutations.java</a>
                 </td>
                 <td>
                   0
@@ -33184,7 +33184,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.bucket.BucketCachePersister.java">org/apache/hadoop/hbase/io/hfile/bucket/BucketCachePersister.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest.java">org/apache/hadoop/hbase/regionserver/compactions/CompactionRequest.java</a>
                 </td>
                 <td>
                   0
@@ -33198,7 +33198,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest.java">org/apache/hadoop/hbase/regionserver/compactions/CompactionRequest.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.bucket.BucketCachePersister.java">org/apache/hadoop/hbase/io/hfile/bucket/BucketCachePersister.java</a>
                 </td>
                 <td>
                   0
@@ -34010,7 +34010,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.TestClockSkewDetection.java">org/apache/hadoop/hbase/master/TestClockSkewDetection.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.rsgroup.TestMigrateRSGroupInfo.java">org/apache/hadoop/hbase/rsgroup/TestMigrateRSGroupInfo.java</a>
                 </td>
                 <td>
                   0
@@ -34024,7 +34024,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.rsgroup.TestMigrateRSGroupInfo.java">org/apache/hadoop/hbase/rsgroup/TestMigrateRSGroupInfo.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.TestClockSkewDetection.java">org/apache/hadoop/hbase/master/TestClockSkewDetection.java</a>
                 </td>
                 <td>
                   0
@@ -35858,7 +35858,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestFromClientSideWithCoprocessor.java">org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.bucket.TestFileIOEngine.java">org/apache/hadoop/hbase/io/hfile/bucket/TestFileIOEngine.java</a>
                 </td>
                 <td>
                   0
@@ -35872,7 +35872,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.bucket.TestFileIOEngine.java">org/apache/hadoop/hbase/io/hfile/bucket/TestFileIOEngine.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestFromClientSideWithCoprocessor.java">org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.java</a>
                 </td>
                 <td>
                   0
@@ -36572,7 +36572,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.TestNamespaceReplication.java">org/apache/hadoop/hbase/replication/TestNamespaceReplication.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestPerColumnFamilyFlush.java">org/apache/hadoop/hbase/regionserver/TestPerColumnFamilyFlush.java</a>
                 </td>
                 <td>
                   0
@@ -36586,7 +36586,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestPerColumnFamilyFlush.java">org/apache/hadoop/hbase/regionserver/TestPerColumnFamilyFlush.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.TestNamespaceReplication.java">org/apache/hadoop/hbase/replication/TestNamespaceReplication.java</a>
                 </td>
                 <td>
                   0
@@ -37958,7 +37958,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.mob.TestExpiredMobFileCleaner.java">org/apache/hadoop/hbase/mob/TestExpiredMobFileCleaner.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.assignment.TestRaceBetweenSCPAndTRSP.java">org/apache/hadoop/hbase/master/assignment/TestRaceBetweenSCPAndTRSP.java</a>
                 </td>
                 <td>
                   0
@@ -37972,7 +37972,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.assignment.TestRaceBetweenSCPAndTRSP.java">org/apache/hadoop/hbase/master/assignment/TestRaceBetweenSCPAndTRSP.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.mob.TestExpiredMobFileCleaner.java">org/apache/hadoop/hbase/mob/TestExpiredMobFileCleaner.java</a>
                 </td>
                 <td>
                   0
@@ -38392,7 +38392,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestSnapshotMetadata.java">org/apache/hadoop/hbase/client/TestSnapshotMetadata.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.wal.TestLogRollPeriod.java">org/apache/hadoop/hbase/regionserver/wal/TestLogRollPeriod.java</a>
                 </td>
                 <td>
                   0
@@ -38406,7 +38406,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.wal.TestLogRollPeriod.java">org/apache/hadoop/hbase/regionserver/wal/TestLogRollPeriod.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestSnapshotMetadata.java">org/apache/hadoop/hbase/client/TestSnapshotMetadata.java</a>
                 </td>
                 <td>
                   0
@@ -38476,7 +38476,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestAsyncClientPauseForRpcThrottling.java">org/apache/hadoop/hbase/client/TestAsyncClientPauseForRpcThrottling.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestMemStoreLAB.java">org/apache/hadoop/hbase/regionserver/TestMemStoreLAB.java</a>
                 </td>
                 <td>
                   0
@@ -38490,7 +38490,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestMemStoreLAB.java">org/apache/hadoop/hbase/regionserver/TestMemStoreLAB.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestAsyncClientPauseForRpcThrottling.java">org/apache/hadoop/hbase/client/TestAsyncClientPauseForRpcThrottling.java</a>
                 </td>
                 <td>
                   0
@@ -39638,7 +39638,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.FromClientSideBase.java">org/apache/hadoop/hbase/client/FromClientSideBase.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.TestMetricsIO.java">org/apache/hadoop/hbase/io/TestMetricsIO.java</a>
                 </td>
                 <td>
                   0
@@ -39652,7 +39652,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.TestMetricsIO.java">org/apache/hadoop/hbase/io/TestMetricsIO.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.FromClientSideBase.java">org/apache/hadoop/hbase/client/FromClientSideBase.java</a>
                 </td>
                 <td>
                   0
@@ -40646,7 +40646,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestRSQosFunction.java">org/apache/hadoop/hbase/regionserver/TestRSQosFunction.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestHRegionOnCluster.java">org/apache/hadoop/hbase/regionserver/TestHRegionOnCluster.java</a>
                 </td>
                 <td>
                   0
@@ -40655,12 +40655,12 @@ under the License.
                   0
                 </td>
                 <td>
-                  0
+                  2
                 </td>
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestHRegionOnCluster.java">org/apache/hadoop/hbase/regionserver/TestHRegionOnCluster.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestRSQosFunction.java">org/apache/hadoop/hbase/regionserver/TestRSQosFunction.java</a>
                 </td>
                 <td>
                   0
@@ -40669,7 +40669,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  2
+                  0
                 </td>
               </tr>
                           <tr>
@@ -41094,7 +41094,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.FixedFileTrailer.java">org/apache/hadoop/hbase/io/hfile/FixedFileTrailer.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.RegionSizeReportingChore.java">org/apache/hadoop/hbase/quotas/RegionSizeReportingChore.java</a>
                 </td>
                 <td>
                   0
@@ -41103,12 +41103,12 @@ under the License.
                   0
                 </td>
                 <td>
-                  1
+                  0
                 </td>
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.RegionSizeReportingChore.java">org/apache/hadoop/hbase/quotas/RegionSizeReportingChore.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.FixedFileTrailer.java">org/apache/hadoop/hbase/io/hfile/FixedFileTrailer.java</a>
                 </td>
                 <td>
                   0
@@ -41117,7 +41117,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  0
+                  1
                 </td>
               </tr>
                           <tr>
@@ -42172,7 +42172,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.regionserver.TestRaceWhenCreatingReplicationSource.java">org/apache/hadoop/hbase/replication/regionserver/TestRaceWhenCreatingReplicationSource.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.RegionReplicationLagEvaluation.java">org/apache/hadoop/hbase/RegionReplicationLagEvaluation.java</a>
                 </td>
                 <td>
                   0
@@ -42186,7 +42186,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.RegionReplicationLagEvaluation.java">org/apache/hadoop/hbase/RegionReplicationLagEvaluation.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.regionserver.TestRaceWhenCreatingReplicationSource.java">org/apache/hadoop/hbase/replication/regionserver/TestRaceWhenCreatingReplicationSource.java</a>
                 </td>
                 <td>
                   0
@@ -42844,7 +42844,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestResultFromCoprocessor.java">org/apache/hadoop/hbase/client/TestResultFromCoprocessor.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.TestSCP.java">org/apache/hadoop/hbase/master/procedure/TestSCP.java</a>
                 </td>
                 <td>
                   0
@@ -42858,7 +42858,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.TestSCP.java">org/apache/hadoop/hbase/master/procedure/TestSCP.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestResultFromCoprocessor.java">org/apache/hadoop/hbase/client/TestResultFromCoprocessor.java</a>
                 </td>
                 <td>
                   0
@@ -44594,7 +44594,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestScanWithoutFetchingData.java">org/apache/hadoop/hbase/client/TestScanWithoutFetchingData.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.security.access.TestCoprocessorWhitelistMasterObserver.java">org/apache/hadoop/hbase/security/access/TestCoprocessorWhitelistMasterObserver.java</a>
                 </td>
                 <td>
                   0
@@ -44608,7 +44608,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.security.access.TestCoprocessorWhitelistMasterObserver.java">org/apache/hadoop/hbase/security/access/TestCoprocessorWhitelistMasterObserver.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestScanWithoutFetchingData.java">org/apache/hadoop/hbase/client/TestScanWithoutFetchingData.java</a>
                 </td>
                 <td>
                   0
@@ -44706,7 +44706,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.TableProcedureWaitingQueue.java">org/apache/hadoop/hbase/master/procedure/TableProcedureWaitingQueue.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.DefaultOperationQuota.java">org/apache/hadoop/hbase/quotas/DefaultOperationQuota.java</a>
                 </td>
                 <td>
                   0
@@ -44720,7 +44720,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.DefaultOperationQuota.java">org/apache/hadoop/hbase/quotas/DefaultOperationQuota.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.TableProcedureWaitingQueue.java">org/apache/hadoop/hbase/master/procedure/TableProcedureWaitingQueue.java</a>
                 </td>
                 <td>
                   0
@@ -45210,7 +45210,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.RestoreSnapshotFromClientGetCompactionStateTestBase.java">org/apache/hadoop/hbase/client/RestoreSnapshotFromClientGetCompactionStateTestBase.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.TestHFileWriterV3.java">org/apache/hadoop/hbase/io/hfile/TestHFileWriterV3.java</a>
                 </td>
                 <td>
                   0
@@ -45219,12 +45219,12 @@ under the License.
                   0
                 </td>
                 <td>
-                  0
+                  1
                 </td>
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.TestHFileWriterV3.java">org/apache/hadoop/hbase/io/hfile/TestHFileWriterV3.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.RestoreSnapshotFromClientGetCompactionStateTestBase.java">org/apache/hadoop/hbase/client/RestoreSnapshotFromClientGetCompactionStateTestBase.java</a>
                 </td>
                 <td>
                   0
@@ -45233,7 +45233,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  1
+                  0
                 </td>
               </tr>
                           <tr>
@@ -46218,7 +46218,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestMobRestoreSnapshotFromClientGetCompactionState.java">org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientGetCompactionState.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.TestCacheOnWrite.java">org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.java</a>
                 </td>
                 <td>
                   0
@@ -46232,7 +46232,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.TestCacheOnWrite.java">org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestMobRestoreSnapshotFromClientGetCompactionState.java">org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientGetCompactionState.java</a>
                 </td>
                 <td>
                   0
@@ -47548,7 +47548,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.http.RegionReplicaInfo.java">org/apache/hadoop/hbase/master/http/RegionReplicaInfo.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.MasterWalManager.java">org/apache/hadoop/hbase/master/MasterWalManager.java</a>
                 </td>
                 <td>
                   0
@@ -47557,12 +47557,12 @@ under the License.
                   0
                 </td>
                 <td>
-                  0
+                  1
                 </td>
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.MasterWalManager.java">org/apache/hadoop/hbase/master/MasterWalManager.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.http.RegionReplicaInfo.java">org/apache/hadoop/hbase/master/http/RegionReplicaInfo.java</a>
                 </td>
                 <td>
                   0
@@ -47571,12 +47571,12 @@ under the License.
                   0
                 </td>
                 <td>
-                  1
+                  0
                 </td>
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestAsyncTableScannerCloseWhileSuspending.java">org/apache/hadoop/hbase/client/TestAsyncTableScannerCloseWhileSuspending.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.procedure.SimpleMasterProcedureManager.java">org/apache/hadoop/hbase/procedure/SimpleMasterProcedureManager.java</a>
                 </td>
                 <td>
                   0
@@ -47590,7 +47590,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.procedure.SimpleMasterProcedureManager.java">org/apache/hadoop/hbase/procedure/SimpleMasterProcedureManager.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestAsyncTableScannerCloseWhileSuspending.java">org/apache/hadoop/hbase/client/TestAsyncTableScannerCloseWhileSuspending.java</a>
                 </td>
                 <td>
                   0
@@ -47674,7 +47674,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestMobRestoreSnapshotFromClientAfterTruncate.java">org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientAfterTruncate.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.TestNewStartedRegionServerVersion.java">org/apache/hadoop/hbase/master/TestNewStartedRegionServerVersion.java</a>
                 </td>
                 <td>
                   0
@@ -47688,7 +47688,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.TestNewStartedRegionServerVersion.java">org/apache/hadoop/hbase/master/TestNewStartedRegionServerVersion.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestMobRestoreSnapshotFromClientAfterTruncate.java">org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClientAfterTruncate.java</a>
                 </td>
                 <td>
                   0
@@ -50320,7 +50320,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.regionserver.RejectReplicationRequestStateChecker.java">org/apache/hadoop/hbase/replication/regionserver/RejectReplicationRequestStateChecker.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.wal.Compressor.java">org/apache/hadoop/hbase/regionserver/wal/Compressor.java</a>
                 </td>
                 <td>
                   0
@@ -50329,12 +50329,12 @@ under the License.
                   0
                 </td>
                 <td>
-                  0
+                  4
                 </td>
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.wal.Compressor.java">org/apache/hadoop/hbase/regionserver/wal/Compressor.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.regionserver.RejectReplicationRequestStateChecker.java">org/apache/hadoop/hbase/replication/regionserver/RejectReplicationRequestStateChecker.java</a>
                 </td>
                 <td>
                   0
@@ -50343,7 +50343,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  4
+                  0
                 </td>
               </tr>
                           <tr>
@@ -51006,7 +51006,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestAsyncAccessControlAdminApi.java">org/apache/hadoop/hbase/client/TestAsyncAccessControlAdminApi.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.wal.TestFSWALEntry.java">org/apache/hadoop/hbase/regionserver/wal/TestFSWALEntry.java</a>
                 </td>
                 <td>
                   0
@@ -51034,7 +51034,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.wal.TestFSWALEntry.java">org/apache/hadoop/hbase/regionserver/wal/TestFSWALEntry.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestAsyncAccessControlAdminApi.java">org/apache/hadoop/hbase/client/TestAsyncAccessControlAdminApi.java</a>
                 </td>
                 <td>
                   0
@@ -51888,7 +51888,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.TestReseekTo.java">org/apache/hadoop/hbase/io/hfile/TestReseekTo.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.policies.TestNoInsertsViolationPolicyEnforcement.java">org/apache/hadoop/hbase/quotas/policies/TestNoInsertsViolationPolicyEnforcement.java</a>
                 </td>
                 <td>
                   0
@@ -51902,7 +51902,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.policies.TestNoInsertsViolationPolicyEnforcement.java">org/apache/hadoop/hbase/quotas/policies/TestNoInsertsViolationPolicyEnforcement.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.TestReseekTo.java">org/apache/hadoop/hbase/io/hfile/TestReseekTo.java</a>
                 </td>
                 <td>
                   0
@@ -53498,7 +53498,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.RestoreSnapshotFromClientSchemaChangeTestBase.java">org/apache/hadoop/hbase/client/RestoreSnapshotFromClientSchemaChangeTestBase.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestCompactionWithByteBuff.java">org/apache/hadoop/hbase/regionserver/TestCompactionWithByteBuff.java</a>
                 </td>
                 <td>
                   0
@@ -53512,7 +53512,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestCompactionWithByteBuff.java">org/apache/hadoop/hbase/regionserver/TestCompactionWithByteBuff.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.RestoreSnapshotFromClientSchemaChangeTestBase.java">org/apache/hadoop/hbase/client/RestoreSnapshotFromClientSchemaChangeTestBase.java</a>
                 </td>
                 <td>
                   0
@@ -53960,7 +53960,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.http.TestHbckMetricsResource.java">org/apache/hadoop/hbase/master/http/TestHbckMetricsResource.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.TestSnapshotRegionProcedure.java">org/apache/hadoop/hbase/master/procedure/TestSnapshotRegionProcedure.java</a>
                 </td>
                 <td>
                   0
@@ -53974,7 +53974,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.TestSnapshotRegionProcedure.java">org/apache/hadoop/hbase/master/procedure/TestSnapshotRegionProcedure.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.http.TestHbckMetricsResource.java">org/apache/hadoop/hbase/master/http/TestHbckMetricsResource.java</a>
                 </td>
                 <td>
                   0
@@ -54814,7 +54814,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.CloneSnapshotFromClientNormalTestBase.java">org/apache/hadoop/hbase/client/CloneSnapshotFromClientNormalTestBase.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.ipc.TestCallRunner.java">org/apache/hadoop/hbase/ipc/TestCallRunner.java</a>
                 </td>
                 <td>
                   0
@@ -54828,7 +54828,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.ipc.TestCallRunner.java">org/apache/hadoop/hbase/ipc/TestCallRunner.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.CloneSnapshotFromClientNormalTestBase.java">org/apache/hadoop/hbase/client/CloneSnapshotFromClientNormalTestBase.java</a>
                 </td>
                 <td>
                   0
@@ -54926,7 +54926,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestBootstrapNodeUpdate.java">org/apache/hadoop/hbase/client/TestBootstrapNodeUpdate.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestGetProcedureResult.java">org/apache/hadoop/hbase/client/TestGetProcedureResult.java</a>
                 </td>
                 <td>
                   0
@@ -54940,7 +54940,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestGetProcedureResult.java">org/apache/hadoop/hbase/client/TestGetProcedureResult.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestBootstrapNodeUpdate.java">org/apache/hadoop/hbase/client/TestBootstrapNodeUpdate.java</a>
                 </td>
                 <td>
                   0
@@ -55640,7 +55640,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.TestLruCachedBlock.java">org/apache/hadoop/hbase/io/hfile/TestLruCachedBlock.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.rsgroup.TestEnableRSGroupsCompatibility.java">org/apache/hadoop/hbase/rsgroup/TestEnableRSGroupsCompatibility.java</a>
                 </td>
                 <td>
                   0
@@ -55654,7 +55654,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.rsgroup.TestEnableRSGroupsCompatibility.java">org/apache/hadoop/hbase/rsgroup/TestEnableRSGroupsCompatibility.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.TestLruCachedBlock.java">org/apache/hadoop/hbase/io/hfile/TestLruCachedBlock.java</a>
                 </td>
                 <td>
                   0
@@ -56368,7 +56368,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestMvccConsistentScanner.java">org/apache/hadoop/hbase/client/TestMvccConsistentScanner.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.TestFlushTableProcedureBase.java">org/apache/hadoop/hbase/master/procedure/TestFlushTableProcedureBase.java</a>
                 </td>
                 <td>
                   0
@@ -56382,7 +56382,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.procedure.TestFlushTableProcedureBase.java">org/apache/hadoop/hbase/master/procedure/TestFlushTableProcedureBase.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestMvccConsistentScanner.java">org/apache/hadoop/hbase/client/TestMvccConsistentScanner.java</a>
                 </td>
                 <td>
                   0
@@ -56676,7 +56676,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestScanner.java">org/apache/hadoop/hbase/regionserver/TestScanner.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestRegionReplicas.java">org/apache/hadoop/hbase/regionserver/TestRegionReplicas.java</a>
                 </td>
                 <td>
                   0
@@ -56690,7 +56690,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestRegionReplicas.java">org/apache/hadoop/hbase/regionserver/TestRegionReplicas.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestScanner.java">org/apache/hadoop/hbase/regionserver/TestScanner.java</a>
                 </td>
                 <td>
                   0
@@ -57810,7 +57810,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.DummyAsyncTable.java">org/apache/hadoop/hbase/client/DummyAsyncTable.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.wal.TestSyncFuture.java">org/apache/hadoop/hbase/regionserver/wal/TestSyncFuture.java</a>
                 </td>
                 <td>
                   0
@@ -57824,7 +57824,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.wal.TestSyncFuture.java">org/apache/hadoop/hbase/regionserver/wal/TestSyncFuture.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.DummyAsyncTable.java">org/apache/hadoop/hbase/client/DummyAsyncTable.java</a>
                 </td>
                 <td>
                   0
@@ -58230,7 +58230,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.http.gson.GsonFactory.java">org/apache/hadoop/hbase/master/http/gson/GsonFactory.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.rsgroup.RSGroupInfoManagerImpl.java">org/apache/hadoop/hbase/rsgroup/RSGroupInfoManagerImpl.java</a>
                 </td>
                 <td>
                   0
@@ -58244,7 +58244,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.rsgroup.RSGroupInfoManagerImpl.java">org/apache/hadoop/hbase/rsgroup/RSGroupInfoManagerImpl.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.http.gson.GsonFactory.java">org/apache/hadoop/hbase/master/http/gson/GsonFactory.java</a>
                 </td>
                 <td>
                   0
@@ -58748,7 +58748,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestCacheOnWriteInSchema.java">org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestSeekOptimizations.java">org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.java</a>
                 </td>
                 <td>
                   0
@@ -58757,12 +58757,12 @@ under the License.
                   0
                 </td>
                 <td>
-                  0
+                  2
                 </td>
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestBlocksRead.java">org/apache/hadoop/hbase/regionserver/TestBlocksRead.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestCacheOnWriteInSchema.java">org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.java</a>
                 </td>
                 <td>
                   0
@@ -58776,7 +58776,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestSeekOptimizations.java">org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestBlocksRead.java">org/apache/hadoop/hbase/regionserver/TestBlocksRead.java</a>
                 </td>
                 <td>
                   0
@@ -58785,7 +58785,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  2
+                  0
                 </td>
               </tr>
                           <tr>
@@ -59658,7 +59658,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestMutationGetCellBuilder.java">org/apache/hadoop/hbase/client/TestMutationGetCellBuilder.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestSplitOrMergeStatus.java">org/apache/hadoop/hbase/client/TestSplitOrMergeStatus.java</a>
                 </td>
                 <td>
                   0
@@ -59672,7 +59672,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestSplitOrMergeStatus.java">org/apache/hadoop/hbase/client/TestSplitOrMergeStatus.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestMutationGetCellBuilder.java">org/apache/hadoop/hbase/client/TestMutationGetCellBuilder.java</a>
                 </td>
                 <td>
                   0
@@ -60302,7 +60302,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.SplitWALCallable.java">org/apache/hadoop/hbase/regionserver/SplitWALCallable.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.ReversedStoreScanner.java">org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.java</a>
                 </td>
                 <td>
                   0
@@ -60316,7 +60316,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.ReversedStoreScanner.java">org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.SplitWALCallable.java">org/apache/hadoop/hbase/regionserver/SplitWALCallable.java</a>
                 </td>
                 <td>
                   0
@@ -61408,7 +61408,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.assignment.TestAssignmentManagerLoadMetaRegionState.java">org/apache/hadoop/hbase/master/assignment/TestAssignmentManagerLoadMetaRegionState.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.region.TestMasterRegionWALRecovery.java">org/apache/hadoop/hbase/master/region/TestMasterRegionWALRecovery.java</a>
                 </td>
                 <td>
                   0
@@ -61422,7 +61422,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.region.TestMasterRegionWALRecovery.java">org/apache/hadoop/hbase/master/region/TestMasterRegionWALRecovery.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.assignment.TestAssignmentManagerLoadMetaRegionState.java">org/apache/hadoop/hbase/master/assignment/TestAssignmentManagerLoadMetaRegionState.java</a>
                 </td>
                 <td>
                   0
@@ -62948,7 +62948,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.namequeues.TestWALEventTracker.java">org/apache/hadoop/hbase/namequeues/TestWALEventTracker.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.filter.TestSeekHints.java">org/apache/hadoop/hbase/filter/TestSeekHints.java</a>
                 </td>
                 <td>
                   0
@@ -62962,7 +62962,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.filter.TestSeekHints.java">org/apache/hadoop/hbase/filter/TestSeekHints.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.namequeues.TestWALEventTracker.java">org/apache/hadoop/hbase/namequeues/TestWALEventTracker.java</a>
                 </td>
                 <td>
                   0
@@ -63396,7 +63396,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestAsyncNamespaceAdminApi.java">org/apache/hadoop/hbase/client/TestAsyncNamespaceAdminApi.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.TestScannerSelectionUsingTTL.java">org/apache/hadoop/hbase/io/hfile/TestScannerSelectionUsingTTL.java</a>
                 </td>
                 <td>
                   0
@@ -63410,7 +63410,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.TestScannerSelectionUsingTTL.java">org/apache/hadoop/hbase/io/hfile/TestScannerSelectionUsingTTL.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestAsyncNamespaceAdminApi.java">org/apache/hadoop/hbase/client/TestAsyncNamespaceAdminApi.java</a>
                 </td>
                 <td>
                   0
@@ -63438,7 +63438,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.util.FSRegionScanner.java">org/apache/hadoop/hbase/util/FSRegionScanner.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.SpaceViolationPolicyEnforcement.java">org/apache/hadoop/hbase/quotas/SpaceViolationPolicyEnforcement.java</a>
                 </td>
                 <td>
                   0
@@ -63452,7 +63452,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.SpaceViolationPolicyEnforcement.java">org/apache/hadoop/hbase/quotas/SpaceViolationPolicyEnforcement.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.util.FSRegionScanner.java">org/apache/hadoop/hbase/util/FSRegionScanner.java</a>
                 </td>
                 <td>
                   0
@@ -64628,7 +64628,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.mob.ManualMobMaintHFileCleaner.java">org/apache/hadoop/hbase/mob/ManualMobMaintHFileCleaner.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.StoreFileScanner.java">org/apache/hadoop/hbase/regionserver/StoreFileScanner.java</a>
                 </td>
                 <td>
                   0
@@ -64637,12 +64637,12 @@ under the License.
                   0
                 </td>
                 <td>
-                  0
+                  4
                 </td>
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.StoreFileScanner.java">org/apache/hadoop/hbase/regionserver/StoreFileScanner.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.mob.ManualMobMaintHFileCleaner.java">org/apache/hadoop/hbase/mob/ManualMobMaintHFileCleaner.java</a>
                 </td>
                 <td>
                   0
@@ -64651,7 +64651,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  4
+                  0
                 </td>
               </tr>
                           <tr>
@@ -65104,7 +65104,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.wal.TestWALSplitValueCompression.java">org/apache/hadoop/hbase/wal/TestWALSplitValueCompression.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.monitoring.TestTaskMonitor.java">org/apache/hadoop/hbase/monitoring/TestTaskMonitor.java</a>
                 </td>
                 <td>
                   0
@@ -65118,7 +65118,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.monitoring.TestTaskMonitor.java">org/apache/hadoop/hbase/monitoring/TestTaskMonitor.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.wal.TestWALSplitValueCompression.java">org/apache/hadoop/hbase/wal/TestWALSplitValueCompression.java</a>
                 </td>
                 <td>
                   0
@@ -65174,7 +65174,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestAsyncMetaRegionLocator.java">org/apache/hadoop/hbase/client/TestAsyncMetaRegionLocator.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestDeleteMobTable.java">org/apache/hadoop/hbase/regionserver/TestDeleteMobTable.java</a>
                 </td>
                 <td>
                   0
@@ -65188,7 +65188,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestDeleteMobTable.java">org/apache/hadoop/hbase/regionserver/TestDeleteMobTable.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestAsyncMetaRegionLocator.java">org/apache/hadoop/hbase/client/TestAsyncMetaRegionLocator.java</a>
                 </td>
                 <td>
                   0
@@ -65664,7 +65664,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.filter.TestFilterFromRegionSide.java">org/apache/hadoop/hbase/filter/TestFilterFromRegionSide.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.filter.TestFilterListOnMini.java">org/apache/hadoop/hbase/filter/TestFilterListOnMini.java</a>
                 </td>
                 <td>
                   0
@@ -65678,7 +65678,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.filter.TestFilterListOnMini.java">org/apache/hadoop/hbase/filter/TestFilterListOnMini.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.filter.TestFilterFromRegionSide.java">org/apache/hadoop/hbase/filter/TestFilterFromRegionSide.java</a>
                 </td>
                 <td>
                   0
@@ -66854,7 +66854,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.TableExistsException.java">org/apache/hadoop/hbase/TableExistsException.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.RegionMetrics.java">org/apache/hadoop/hbase/RegionMetrics.java</a>
                 </td>
                 <td>
                   0
@@ -66868,7 +66868,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.RegionMetrics.java">org/apache/hadoop/hbase/RegionMetrics.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.TableExistsException.java">org/apache/hadoop/hbase/TableExistsException.java</a>
                 </td>
                 <td>
                   0
@@ -67078,7 +67078,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.TestEditsStuckBehindDroppedTable.java">org/apache/hadoop/hbase/replication/TestEditsStuckBehindDroppedTable.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestEndToEndSplitTransaction.java">org/apache/hadoop/hbase/regionserver/TestEndToEndSplitTransaction.java</a>
                 </td>
                 <td>
                   0
@@ -67092,7 +67092,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestEndToEndSplitTransaction.java">org/apache/hadoop/hbase/regionserver/TestEndToEndSplitTransaction.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.TestEditsStuckBehindDroppedTable.java">org/apache/hadoop/hbase/replication/TestEditsStuckBehindDroppedTable.java</a>
                 </td>
                 <td>
                   0
@@ -67624,7 +67624,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.LimitedScanResultConsumer.java">org/apache/hadoop/hbase/client/LimitedScanResultConsumer.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestWideScanner.java">org/apache/hadoop/hbase/regionserver/TestWideScanner.java</a>
                 </td>
                 <td>
                   0
@@ -67638,7 +67638,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestWideScanner.java">org/apache/hadoop/hbase/regionserver/TestWideScanner.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.LimitedScanResultConsumer.java">org/apache/hadoop/hbase/client/LimitedScanResultConsumer.java</a>
                 </td>
                 <td>
                   0
@@ -67736,7 +67736,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.mob.DefaultMobStoreFlusher.java">org/apache/hadoop/hbase/mob/DefaultMobStoreFlusher.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.JMXListener.java">org/apache/hadoop/hbase/JMXListener.java</a>
                 </td>
                 <td>
                   0
@@ -67745,12 +67745,12 @@ under the License.
                   0
                 </td>
                 <td>
-                  1
+                  0
                 </td>
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.JMXListener.java">org/apache/hadoop/hbase/JMXListener.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.mob.DefaultMobStoreFlusher.java">org/apache/hadoop/hbase/mob/DefaultMobStoreFlusher.java</a>
                 </td>
                 <td>
                   0
@@ -67759,7 +67759,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  0
+                  1
                 </td>
               </tr>
                           <tr>
@@ -69878,7 +69878,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.TestSyncReplicationActiveFSHLog.java">org/apache/hadoop/hbase/replication/TestSyncReplicationActiveFSHLog.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.TestHBaseMetaEdit.java">org/apache/hadoop/hbase/TestHBaseMetaEdit.java</a>
                 </td>
                 <td>
                   0
@@ -69892,7 +69892,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.TestHBaseMetaEdit.java">org/apache/hadoop/hbase/TestHBaseMetaEdit.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.TestSyncReplicationActiveFSHLog.java">org/apache/hadoop/hbase/replication/TestSyncReplicationActiveFSHLog.java</a>
                 </td>
                 <td>
                   0
@@ -70354,7 +70354,7 @@ under the License.
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.ResizableBlockCache.java">org/apache/hadoop/hbase/io/hfile/ResizableBlockCache.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory.java">org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshotNotifierFactory.java</a>
                 </td>
                 <td>
                   0
@@ -70363,12 +70363,12 @@ under the License.
                   0
                 </td>
                 <td>
-                  0
+                  1
                 </td>
               </tr>
                           <tr>
                 <td>
-                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory.java">org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshotNotifierFactory.java</a>
+                  <a href="https://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.io.hfile.ResizableBlockCache.java">org/apache/hadoop/hbase/io/hfile/ResizableBlockCache.java</a>
                 </td>
                 <td>
                   0
@@ -70377,7 +70377,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  1
+                  0
                 </td>
               </tr>
                           <tr>
diff --git a/coc.html b/coc.html
index 2b0fdbc76c2..7f6b5163e14 100644
--- a/coc.html
+++ b/coc.html
@@ -253,7 +253,7 @@ email to <a class="externalLink" href="mailto:private@hbase.apache.org">the priv
         All other marks mentioned may be trademarks or registered trademarks of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-19
+        Last Published: 2025-03-20
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/dependencies.html b/dependencies.html
index 914d6d8fab1..de0392390cc 100644
--- a/dependencies.html
+++ b/dependencies.html
@@ -318,7 +318,7 @@
         All other marks mentioned may be trademarks or registered trademarks of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-19
+        Last Published: 2025-03-20
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/dependency-convergence.html b/dependency-convergence.html
index 5eeb46a1b4c..86de5a3953d 100644
--- a/dependency-convergence.html
+++ b/dependency-convergence.html
@@ -1111,7 +1111,7 @@
         All other marks mentioned may be trademarks or registered trademarks of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-19
+        Last Published: 2025-03-20
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/dependency-info.html b/dependency-info.html
index e02ffde9e90..876763c1574 100644
--- a/dependency-info.html
+++ b/dependency-info.html
@@ -200,7 +200,7 @@
         All other marks mentioned may be trademarks or registered trademarks of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-19
+        Last Published: 2025-03-20
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/dependency-management.html b/dependency-management.html
index 0b4e476f896..c7ae6f5e39b 100644
--- a/dependency-management.html
+++ b/dependency-management.html
@@ -1748,7 +1748,7 @@
         All other marks mentioned may be trademarks or registered trademarks of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-19
+        Last Published: 2025-03-20
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index 16bf65a490a..3fe5ff8785a 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -81908,6 +81908,8 @@ loadScripts(document, 'script');</script>
 </dd>
 <dt><a href="org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#isTableDisabled(org.apache.hadoop.hbase.thrift2.generated.TTableName)" class="member-name-link">isTableDisabled(TTableName)</a> - Method in class org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift2">ThriftHBaseServiceHandler</a></dt>
 <dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/regionserver/handler/RegionReplicaFlushHandler.html#isTableDisabledOrDropped(java.io.IOException,org.apache.hadoop.hbase.regionserver.HRegion)" class="member-name-link">isTableDisabledOrDropped(IOException, HRegion)</a> - Method in class org.apache.hadoop.hbase.regionserver.handler.<a href="org/apache/hadoop/hbase/regionserver/handler/RegionReplicaFlushHandler.html" title="class in org.apache.hadoop.hbase.regionserver.handler">RegionReplicaFlushHandle [...]
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html#isTableEnabled(java.nio.ByteBuffer)" class="member-name-link">isTableEnabled(ByteBuffer)</a> - Method in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift">ThriftHBaseServiceHandler</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html#isTableEnabled(org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv)" class="member-name-link">isTableEnabled(MasterProcedureEnv)</a> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/AbstractStateMachineTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">AbstractStateMachineTableProcedure</a></dt>
@@ -125040,17 +125042,18 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#seekToPreviousRowStateless(org.apache.hadoop.hbase.ExtendedCell)" class="member-name-link">seekToPreviousRowStateless(ExtendedCell)</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a></dt>
 <dd>
-<div class="block">This variant of the <code>StoreFileScanner#seekToPreviousRow(Cell)</code> method requires two seeks.</div>
+<div class="block">This variant of the <a href="org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#seekToPreviousRow(org.apache.hadoop.hbase.ExtendedCell)"><code>StoreFileScanner.seekToPreviousRow(ExtendedCell)</code></a> method requires
+ two seeks.</div>
 </dd>
 <dt><a href="org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#seekToPreviousRowWithHint()" class="member-name-link">seekToPreviousRowWithHint()</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a></dt>
 <dd>
-<div class="block">This variant of the <code>StoreFileScanner#seekToPreviousRow(Cell)</code> method requires one seek
- and one reseek.</div>
+<div class="block">This variant of the <a href="org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#seekToPreviousRow(org.apache.hadoop.hbase.ExtendedCell)"><code>StoreFileScanner.seekToPreviousRow(ExtendedCell)</code></a> method requires
+ one seek and one reseek.</div>
 </dd>
-<dt><a href="org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#seekToPreviousRowWithoutHint(org.apache.hadoop.hbase.Cell)" class="member-name-link">seekToPreviousRowWithoutHint(Cell)</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a></dt>
+<dt><a href="org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#seekToPreviousRowWithoutHint(org.apache.hadoop.hbase.ExtendedCell)" class="member-name-link">seekToPreviousRowWithoutHint(ExtendedCell)</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a></dt>
 <dd>
-<div class="block">This variant of the <code>StoreFileScanner#seekToPreviousRow(Cell)</code> method requires two seeks
- and one reseek.</div>
+<div class="block">This variant of the <a href="org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#seekToPreviousRow(org.apache.hadoop.hbase.ExtendedCell)"><code>StoreFileScanner.seekToPreviousRow(ExtendedCell)</code></a> method requires
+ two seeks and one reseek.</div>
 </dd>
 <dt><a href="org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#seenRows" class="member-name-link">seenRows</a> - Variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility.SeenRowTracker</a></dt>
 <dd>
diff --git a/devapidocs/member-search-index.js b/devapidocs/member-search-index.js
index bbea96ab1d4..f39333bb7b1 100644
--- a/devapidocs/member-search-index.js
+++ b/devapidocs/member-search-index.js
@@ -1 +1 @@
-memberSearchIndex = [{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getBlockcache()"},{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getBlocksize()"},{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getBloomfilter()"},{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getCompression()"},{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getInMemory()"},{"p":"org.apache. [...]
\ No newline at end of file
+memberSearchIndex = [{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getBlockcache()"},{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getBlocksize()"},{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getBloomfilter()"},{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getCompression()"},{"p":"org.apache.hadoop.hbase.rest.model","c":"ColumnSchemaModel","l":"__getInMemory()"},{"p":"org.apache. [...]
\ No newline at end of file
diff --git a/devapidocs/org/apache/hadoop/hbase/class-use/Cell.html b/devapidocs/org/apache/hadoop/hbase/class-use/Cell.html
index c6ccafdb68d..a1f69d0dafd 100644
--- a/devapidocs/org/apache/hadoop/hbase/class-use/Cell.html
+++ b/devapidocs/org/apache/hadoop/hbase/class-use/Cell.html
@@ -2688,9 +2688,6 @@ service.</div>
 <div class="col-first odd-row-color"><code>private <a href="../Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></div>
 <div class="col-second odd-row-color"><span class="type-name-label">ScannerContext.</span><code><a href="../regionserver/ScannerContext.html#lastPeekedCell" class="member-name-link">lastPeekedCell</a></code></div>
 <div class="col-last odd-row-color">&nbsp;</div>
-<div class="col-first even-row-color"><code>private <a href="../Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></div>
-<div class="col-second even-row-color"><span class="type-name-label">StoreFileScanner.</span><code><a href="../regionserver/StoreFileScanner.html#previousRow" class="member-name-link">previousRow</a></code></div>
-<div class="col-last even-row-color">&nbsp;</div>
 </div>
 <div class="caption"><span>Fields in <a href="../regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a> with type parameters of type <a href="../Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></span></div>
 <div class="summary-table three-column-summary">
@@ -2912,54 +2909,48 @@ service.</div>
 <div class="col-last even-row-color">
 <div class="block">Subclasses can call this method to make sure the last KV is within multi-writer range.</div>
 </div>
-<div class="col-first odd-row-color"><code>private boolean</code></div>
-<div class="col-second odd-row-color"><span class="type-name-label">StoreFileScanner.</span><code><a href="../regionserver/StoreFileScanner.html#seekToPreviousRowWithoutHint(org.apache.hadoop.hbase.Cell)" class="member-name-link">seekToPreviousRowWithoutHint</a><wbr>(<a href="../Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;originalKey)</code></div>
-<div class="col-last odd-row-color">
-<div class="block">This variant of the <code>StoreFileScanner#seekToPreviousRow(Cell)</code> method requires two seeks
- and one reseek.</div>
-</div>
-<div class="col-first even-row-color"><code>(package private) void</code></div>
-<div class="col-second even-row-color"><span class="type-name-label">ScannerContext.</span><code><a href="../regionserver/ScannerContext.html#setLastPeekedCell(org.apache.hadoop.hbase.Cell)" class="member-name-link">setLastPeekedCell</a><wbr>(<a href="../Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;lastPeekedCell)</code></div>
-<div class="col-last even-row-color">&nbsp;</div>
-<div class="col-first odd-row-color"><code>protected boolean</code></div>
-<div class="col-second odd-row-color"><span class="type-name-label">RegionScannerImpl.</span><code><a href="../regionserver/RegionScannerImpl.html#shouldStop(org.apache.hadoop.hbase.Cell)" class="member-name-link">shouldStop</a><wbr>(<a href="../Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;currentRowCell)</code></div>
+<div class="col-first odd-row-color"><code>(package private) void</code></div>
+<div class="col-second odd-row-color"><span class="type-name-label">ScannerContext.</span><code><a href="../regionserver/ScannerContext.html#setLastPeekedCell(org.apache.hadoop.hbase.Cell)" class="member-name-link">setLastPeekedCell</a><wbr>(<a href="../Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;lastPeekedCell)</code></div>
 <div class="col-last odd-row-color">&nbsp;</div>
 <div class="col-first even-row-color"><code>protected boolean</code></div>
-<div class="col-second even-row-color"><span class="type-name-label">ReversedRegionScannerImpl.</span><code><a href="../regionserver/ReversedRegionScannerImpl.html#shouldStop(org.apache.hadoop.hbase.Cell)" class="member-name-link">shouldStop</a><wbr>(<a href="../Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;currentRowCell)</code></div>
+<div class="col-second even-row-color"><span class="type-name-label">RegionScannerImpl.</span><code><a href="../regionserver/RegionScannerImpl.html#shouldStop(org.apache.hadoop.hbase.Cell)" class="member-name-link">shouldStop</a><wbr>(<a href="../Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;currentRowCell)</code></div>
 <div class="col-last even-row-color">&nbsp;</div>
-<div class="col-first odd-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/NavigableSet.html" title="class or interface in java.util" class="external-link">NavigableSet</a>&lt;<a href="../regionserver/CellSet.html" title="type parameter in CellSet">T</a>&gt;</code></div>
-<div class="col-second odd-row-color"><span class="type-name-label">CellSet.</span><code><a href="../regionserver/CellSet.html#subSet(org.apache.hadoop.hbase.Cell,boolean,org.apache.hadoop.hbase.Cell,boolean)" class="member-name-link">subSet</a><wbr>(<a href="../Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;fromElement,
+<div class="col-first odd-row-color"><code>protected boolean</code></div>
+<div class="col-second odd-row-color"><span class="type-name-label">ReversedRegionScannerImpl.</span><code><a href="../regionserver/ReversedRegionScannerImpl.html#shouldStop(org.apache.hadoop.hbase.Cell)" class="member-name-link">shouldStop</a><wbr>(<a href="../Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;currentRowCell)</code></div>
+<div class="col-last odd-row-color">&nbsp;</div>
+<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/NavigableSet.html" title="class or interface in java.util" class="external-link">NavigableSet</a>&lt;<a href="../regionserver/CellSet.html" title="type parameter in CellSet">T</a>&gt;</code></div>
+<div class="col-second even-row-color"><span class="type-name-label">CellSet.</span><code><a href="../regionserver/CellSet.html#subSet(org.apache.hadoop.hbase.Cell,boolean,org.apache.hadoop.hbase.Cell,boolean)" class="member-name-link">subSet</a><wbr>(<a href="../Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;fromElement,
  boolean&nbsp;fromInclusive,
  <a href="../Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;toElement,
  boolean&nbsp;toInclusive)</code></div>
-<div class="col-last odd-row-color">&nbsp;</div>
-<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Iterator.html" title="class or interface in java.util" class="external-link">Iterator</a>&lt;<a href="../regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;</code></div>
-<div class="col-second even-row-color"><span class="type-name-label">DefaultStoreFileManager.</span><code><a href="../regionserver/DefaultStoreFileManager.html#updateCandidateFilesForRowKeyBefore(java.util.Iterator,org.apache.hadoop.hbase.KeyValue,org.apache.hadoop.hbase.Cell)" class="member-name-link">updateCandidateFilesForRowKeyBefore</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Iterator.html" title="class or interface in java.util" class="e [...]
- <a href="../KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;targetKey,
- <a href="../Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;candidate)</code></div>
 <div class="col-last even-row-color">&nbsp;</div>
 <div class="col-first odd-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Iterator.html" title="class or interface in java.util" class="external-link">Iterator</a>&lt;<a href="../regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;</code></div>
-<div class="col-second odd-row-color"><span class="type-name-label">StoreFileManager.</span><code><a href="../regionserver/StoreFileManager.html#updateCandidateFilesForRowKeyBefore(java.util.Iterator,org.apache.hadoop.hbase.KeyValue,org.apache.hadoop.hbase.Cell)" class="member-name-link">updateCandidateFilesForRowKeyBefore</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Iterator.html" title="class or interface in java.util" class="external-link">I [...]
+<div class="col-second odd-row-color"><span class="type-name-label">DefaultStoreFileManager.</span><code><a href="../regionserver/DefaultStoreFileManager.html#updateCandidateFilesForRowKeyBefore(java.util.Iterator,org.apache.hadoop.hbase.KeyValue,org.apache.hadoop.hbase.Cell)" class="member-name-link">updateCandidateFilesForRowKeyBefore</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Iterator.html" title="class or interface in java.util" class="ex [...]
  <a href="../KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;targetKey,
  <a href="../Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;candidate)</code></div>
-<div class="col-last odd-row-color">
-<div class="block">Updates the candidate list for finding row key before.</div>
-</div>
+<div class="col-last odd-row-color">&nbsp;</div>
 <div class="col-first even-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Iterator.html" title="class or interface in java.util" class="external-link">Iterator</a>&lt;<a href="../regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;</code></div>
-<div class="col-second even-row-color"><span class="type-name-label">StripeStoreFileManager.</span><code><a href="../regionserver/StripeStoreFileManager.html#updateCandidateFilesForRowKeyBefore(java.util.Iterator,org.apache.hadoop.hbase.KeyValue,org.apache.hadoop.hbase.Cell)" class="member-name-link">updateCandidateFilesForRowKeyBefore</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Iterator.html" title="class or interface in java.util" class="ext [...]
+<div class="col-second even-row-color"><span class="type-name-label">StoreFileManager.</span><code><a href="../regionserver/StoreFileManager.html#updateCandidateFilesForRowKeyBefore(java.util.Iterator,org.apache.hadoop.hbase.KeyValue,org.apache.hadoop.hbase.Cell)" class="member-name-link">updateCandidateFilesForRowKeyBefore</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Iterator.html" title="class or interface in java.util" class="external-link"> [...]
  <a href="../KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;targetKey,
  <a href="../Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;candidate)</code></div>
 <div class="col-last even-row-color">
+<div class="block">Updates the candidate list for finding row key before.</div>
+</div>
+<div class="col-first odd-row-color"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Iterator.html" title="class or interface in java.util" class="external-link">Iterator</a>&lt;<a href="../regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;</code></div>
+<div class="col-second odd-row-color"><span class="type-name-label">StripeStoreFileManager.</span><code><a href="../regionserver/StripeStoreFileManager.html#updateCandidateFilesForRowKeyBefore(java.util.Iterator,org.apache.hadoop.hbase.KeyValue,org.apache.hadoop.hbase.Cell)" class="member-name-link">updateCandidateFilesForRowKeyBefore</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Iterator.html" title="class or interface in java.util" class="exte [...]
+ <a href="../KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;targetKey,
+ <a href="../Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;candidate)</code></div>
+<div class="col-last odd-row-color">
 <div class="block">See <a href="../regionserver/StoreFileManager.html#getCandidateFilesForRowKeyBefore(org.apache.hadoop.hbase.KeyValue)"><code>StoreFileManager.getCandidateFilesForRowKeyBefore(KeyValue)</code></a> and
  <a href="../regionserver/StoreFileManager.html#updateCandidateFilesForRowKeyBefore(java.util.Iterator,org.apache.hadoop.hbase.KeyValue,org.apache.hadoop.hbase.Cell)"><code>StoreFileManager.updateCandidateFilesForRowKeyBefore(Iterator, KeyValue, Cell)</code></a> for
  details on this methods.</div>
 </div>
-<div class="col-first odd-row-color"><code>private void</code></div>
-<div class="col-second odd-row-color"><span class="type-name-label">HRegion.</span><code><a href="../regionserver/HRegion.html#updateDeleteLatestVersionTimestamp(org.apache.hadoop.hbase.Cell,org.apache.hadoop.hbase.client.Get,int,byte%5B%5D)" class="member-name-link">updateDeleteLatestVersionTimestamp</a><wbr>(<a href="../Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+<div class="col-first even-row-color"><code>private void</code></div>
+<div class="col-second even-row-color"><span class="type-name-label">HRegion.</span><code><a href="../regionserver/HRegion.html#updateDeleteLatestVersionTimestamp(org.apache.hadoop.hbase.Cell,org.apache.hadoop.hbase.client.Get,int,byte%5B%5D)" class="member-name-link">updateDeleteLatestVersionTimestamp</a><wbr>(<a href="../Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
  <a href="../client/Get.html" title="class in org.apache.hadoop.hbase.client">Get</a>&nbsp;get,
  int&nbsp;count,
  byte[]&nbsp;byteNow)</code></div>
-<div class="col-last odd-row-color">&nbsp;</div>
+<div class="col-last even-row-color">&nbsp;</div>
 </div>
 <div class="caption"><span>Method parameters in <a href="../regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a> with type arguments of type <a href="../Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></span></div>
 <div class="summary-table three-column-summary">
diff --git a/devapidocs/org/apache/hadoop/hbase/class-use/ExtendedCell.html b/devapidocs/org/apache/hadoop/hbase/class-use/ExtendedCell.html
index dc2a7bf8663..cee55454546 100644
--- a/devapidocs/org/apache/hadoop/hbase/class-use/ExtendedCell.html
+++ b/devapidocs/org/apache/hadoop/hbase/class-use/ExtendedCell.html
@@ -1930,8 +1930,11 @@ service.</div>
 <div class="col-second even-row-color"><span class="type-name-label">StoreScanner.</span><code><a href="../regionserver/StoreScanner.html#prevCell" class="member-name-link">prevCell</a></code></div>
 <div class="col-last even-row-color">&nbsp;</div>
 <div class="col-first odd-row-color"><code>private <a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a></code></div>
-<div class="col-second odd-row-color"><span class="type-name-label">SegmentScanner.</span><code><a href="../regionserver/SegmentScanner.html#stopSkippingKVsRow" class="member-name-link">stopSkippingKVsRow</a></code></div>
+<div class="col-second odd-row-color"><span class="type-name-label">StoreFileScanner.</span><code><a href="../regionserver/StoreFileScanner.html#previousRow" class="member-name-link">previousRow</a></code></div>
 <div class="col-last odd-row-color">&nbsp;</div>
+<div class="col-first even-row-color"><code>private <a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a></code></div>
+<div class="col-second even-row-color"><span class="type-name-label">SegmentScanner.</span><code><a href="../regionserver/SegmentScanner.html#stopSkippingKVsRow" class="member-name-link">stopSkippingKVsRow</a></code></div>
+<div class="col-last even-row-color">&nbsp;</div>
 </div>
 <div class="caption"><span>Fields in <a href="../regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a> with type parameters of type <a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a></span></div>
 <div class="summary-table three-column-summary">
@@ -2797,66 +2800,73 @@ service.</div>
 <div class="col-first even-row-color"><code>private boolean</code></div>
 <div class="col-second even-row-color"><span class="type-name-label">StoreFileScanner.</span><code><a href="../regionserver/StoreFileScanner.html#seekToPreviousRowStateless(org.apache.hadoop.hbase.ExtendedCell)" class="member-name-link">seekToPreviousRowStateless</a><wbr>(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;originalKey)</code></div>
 <div class="col-last even-row-color">
-<div class="block">This variant of the <code>StoreFileScanner#seekToPreviousRow(Cell)</code> method requires two seeks.</div>
+<div class="block">This variant of the <a href="../regionserver/StoreFileScanner.html#seekToPreviousRow(org.apache.hadoop.hbase.ExtendedCell)"><code>StoreFileScanner.seekToPreviousRow(ExtendedCell)</code></a> method requires
+ two seeks.</div>
 </div>
-<div class="col-first odd-row-color"><code>protected void</code></div>
-<div class="col-second odd-row-color"><span class="type-name-label">StoreFileScanner.</span><code><a href="../regionserver/StoreFileScanner.html#setCurrentCell(org.apache.hadoop.hbase.ExtendedCell)" class="member-name-link">setCurrentCell</a><wbr>(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;newVal)</code></div>
-<div class="col-last odd-row-color">&nbsp;</div>
-<div class="col-first even-row-color"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/SortedSet.html" title="class or interface in java.util" class="external-link">SortedSet</a>&lt;<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&gt;</code></div>
-<div class="col-second even-row-color"><span class="type-name-label">CompositeImmutableSegment.</span><code><a href="../regionserver/CompositeImmutableSegment.html#tailSet(org.apache.hadoop.hbase.ExtendedCell)" class="member-name-link">tailSet</a><wbr>(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;firstCell)</code></div>
-<div class="col-last even-row-color">
-<div class="block">Returns a subset of the segment cell set, which starts with the given cell</div>
+<div class="col-first odd-row-color"><code>private boolean</code></div>
+<div class="col-second odd-row-color"><span class="type-name-label">StoreFileScanner.</span><code><a href="../regionserver/StoreFileScanner.html#seekToPreviousRowWithoutHint(org.apache.hadoop.hbase.ExtendedCell)" class="member-name-link">seekToPreviousRowWithoutHint</a><wbr>(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;originalKey)</code></div>
+<div class="col-last odd-row-color">
+<div class="block">This variant of the <a href="../regionserver/StoreFileScanner.html#seekToPreviousRow(org.apache.hadoop.hbase.ExtendedCell)"><code>StoreFileScanner.seekToPreviousRow(ExtendedCell)</code></a> method requires
+ two seeks and one reseek.</div>
 </div>
+<div class="col-first even-row-color"><code>protected void</code></div>
+<div class="col-second even-row-color"><span class="type-name-label">StoreFileScanner.</span><code><a href="../regionserver/StoreFileScanner.html#setCurrentCell(org.apache.hadoop.hbase.ExtendedCell)" class="member-name-link">setCurrentCell</a><wbr>(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;newVal)</code></div>
+<div class="col-last even-row-color">&nbsp;</div>
 <div class="col-first odd-row-color"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/SortedSet.html" title="class or interface in java.util" class="external-link">SortedSet</a>&lt;<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&gt;</code></div>
-<div class="col-second odd-row-color"><span class="type-name-label">Segment.</span><code><a href="../regionserver/Segment.html#tailSet(org.apache.hadoop.hbase.ExtendedCell)" class="member-name-link">tailSet</a><wbr>(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;firstCell)</code></div>
+<div class="col-second odd-row-color"><span class="type-name-label">CompositeImmutableSegment.</span><code><a href="../regionserver/CompositeImmutableSegment.html#tailSet(org.apache.hadoop.hbase.ExtendedCell)" class="member-name-link">tailSet</a><wbr>(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;firstCell)</code></div>
 <div class="col-last odd-row-color">
 <div class="block">Returns a subset of the segment cell set, which starts with the given cell</div>
 </div>
-<div class="col-first even-row-color"><code>private void</code></div>
-<div class="col-second even-row-color"><span class="type-name-label">StoreFileWriter.SingleStoreFileWriter.</span><code><a href="../regionserver/StoreFileWriter.SingleStoreFileWriter.html#trackTimestamps(org.apache.hadoop.hbase.ExtendedCell)" class="member-name-link">trackTimestamps</a><wbr>(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;cell)</code></div>
+<div class="col-first even-row-color"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/SortedSet.html" title="class or interface in java.util" class="external-link">SortedSet</a>&lt;<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&gt;</code></div>
+<div class="col-second even-row-color"><span class="type-name-label">Segment.</span><code><a href="../regionserver/Segment.html#tailSet(org.apache.hadoop.hbase.ExtendedCell)" class="member-name-link">tailSet</a><wbr>(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;firstCell)</code></div>
 <div class="col-last even-row-color">
-<div class="block">Record the earlest Put timestamp.</div>
+<div class="block">Returns a subset of the segment cell set, which starts with the given cell</div>
 </div>
-<div class="col-first odd-row-color"><code>protected boolean</code></div>
-<div class="col-second odd-row-color"><span class="type-name-label">StoreScanner.</span><code><a href="../regionserver/StoreScanner.html#trySkipToNextColumn(org.apache.hadoop.hbase.ExtendedCell)" class="member-name-link">trySkipToNextColumn</a><wbr>(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;cell)</code></div>
+<div class="col-first odd-row-color"><code>private void</code></div>
+<div class="col-second odd-row-color"><span class="type-name-label">StoreFileWriter.SingleStoreFileWriter.</span><code><a href="../regionserver/StoreFileWriter.SingleStoreFileWriter.html#trackTimestamps(org.apache.hadoop.hbase.ExtendedCell)" class="member-name-link">trackTimestamps</a><wbr>(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;cell)</code></div>
 <div class="col-last odd-row-color">
-<div class="block">See <a href="../regionserver/StoreScanner.html#trySkipToNextRow(org.apache.hadoop.hbase.ExtendedCell)"><code>StoreScanner.trySkipToNextRow(ExtendedCell)</code></a></div>
+<div class="block">Record the earlest Put timestamp.</div>
 </div>
 <div class="col-first even-row-color"><code>protected boolean</code></div>
-<div class="col-second even-row-color"><span class="type-name-label">StoreScanner.</span><code><a href="../regionserver/StoreScanner.html#trySkipToNextRow(org.apache.hadoop.hbase.ExtendedCell)" class="member-name-link">trySkipToNextRow</a><wbr>(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;cell)</code></div>
+<div class="col-second even-row-color"><span class="type-name-label">StoreScanner.</span><code><a href="../regionserver/StoreScanner.html#trySkipToNextColumn(org.apache.hadoop.hbase.ExtendedCell)" class="member-name-link">trySkipToNextColumn</a><wbr>(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;cell)</code></div>
 <div class="col-last even-row-color">
+<div class="block">See <a href="../regionserver/StoreScanner.html#trySkipToNextRow(org.apache.hadoop.hbase.ExtendedCell)"><code>StoreScanner.trySkipToNextRow(ExtendedCell)</code></a></div>
+</div>
+<div class="col-first odd-row-color"><code>protected boolean</code></div>
+<div class="col-second odd-row-color"><span class="type-name-label">StoreScanner.</span><code><a href="../regionserver/StoreScanner.html#trySkipToNextRow(org.apache.hadoop.hbase.ExtendedCell)" class="member-name-link">trySkipToNextRow</a><wbr>(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;cell)</code></div>
+<div class="col-last odd-row-color">
 <div class="block">See if we should actually SEEK or rather just SKIP to the next Cell (see HBASE-13109).</div>
 </div>
-<div class="col-first odd-row-color"><code>protected void</code></div>
-<div class="col-second odd-row-color"><span class="type-name-label">CompositeImmutableSegment.</span><code><a href="../regionserver/CompositeImmutableSegment.html#updateMetaInfo(org.apache.hadoop.hbase.ExtendedCell,boolean,boolean,org.apache.hadoop.hbase.regionserver.MemStoreSizing,boolean)" class="member-name-link">updateMetaInfo</a><wbr>(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;cellToAdd,
+<div class="col-first even-row-color"><code>protected void</code></div>
+<div class="col-second even-row-color"><span class="type-name-label">CompositeImmutableSegment.</span><code><a href="../regionserver/CompositeImmutableSegment.html#updateMetaInfo(org.apache.hadoop.hbase.ExtendedCell,boolean,boolean,org.apache.hadoop.hbase.regionserver.MemStoreSizing,boolean)" class="member-name-link">updateMetaInfo</a><wbr>(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;cellToAdd,
  boolean&nbsp;succ,
  boolean&nbsp;mslabUsed,
  <a href="../regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
  boolean&nbsp;sizeAddedPreOperation)</code></div>
-<div class="col-last odd-row-color">&nbsp;</div>
-<div class="col-first even-row-color"><code>protected void</code></div>
-<div class="col-second even-row-color"><span class="type-name-label">Segment.</span><code><a href="../regionserver/Segment.html#updateMetaInfo(org.apache.hadoop.hbase.ExtendedCell,boolean,boolean,org.apache.hadoop.hbase.regionserver.MemStoreSizing,boolean)" class="member-name-link">updateMetaInfo</a><wbr>(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;cellToAdd,
+<div class="col-last even-row-color">&nbsp;</div>
+<div class="col-first odd-row-color"><code>protected void</code></div>
+<div class="col-second odd-row-color"><span class="type-name-label">Segment.</span><code><a href="../regionserver/Segment.html#updateMetaInfo(org.apache.hadoop.hbase.ExtendedCell,boolean,boolean,org.apache.hadoop.hbase.regionserver.MemStoreSizing,boolean)" class="member-name-link">updateMetaInfo</a><wbr>(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;cellToAdd,
  boolean&nbsp;succ,
  boolean&nbsp;mslabUsed,
  <a href="../regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing,
  boolean&nbsp;sizeAddedPreOperation)</code></div>
-<div class="col-last even-row-color">&nbsp;</div>
-<div class="col-first odd-row-color"><code>protected void</code></div>
-<div class="col-second odd-row-color"><span class="type-name-label">Segment.</span><code><a href="../regionserver/Segment.html#updateMetaInfo(org.apache.hadoop.hbase.ExtendedCell,boolean,org.apache.hadoop.hbase.regionserver.MemStoreSizing)" class="member-name-link">updateMetaInfo</a><wbr>(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;cellToAdd,
+<div class="col-last odd-row-color">&nbsp;</div>
+<div class="col-first even-row-color"><code>protected void</code></div>
+<div class="col-second even-row-color"><span class="type-name-label">Segment.</span><code><a href="../regionserver/Segment.html#updateMetaInfo(org.apache.hadoop.hbase.ExtendedCell,boolean,org.apache.hadoop.hbase.regionserver.MemStoreSizing)" class="member-name-link">updateMetaInfo</a><wbr>(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;cellToAdd,
  boolean&nbsp;succ,
  <a href="../regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code></div>
-<div class="col-last odd-row-color">&nbsp;</div>
-<div class="col-first even-row-color"><code>private void</code></div>
-<div class="col-second even-row-color"><span class="type-name-label">AbstractMemStore.</span><code><a href="../regionserver/AbstractMemStore.html#upsert(org.apache.hadoop.hbase.ExtendedCell,long,org.apache.hadoop.hbase.regionserver.MemStoreSizing)" class="member-name-link">upsert</a><wbr>(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;cell,
+<div class="col-last even-row-color">&nbsp;</div>
+<div class="col-first odd-row-color"><code>private void</code></div>
+<div class="col-second odd-row-color"><span class="type-name-label">AbstractMemStore.</span><code><a href="../regionserver/AbstractMemStore.html#upsert(org.apache.hadoop.hbase.ExtendedCell,long,org.apache.hadoop.hbase.regionserver.MemStoreSizing)" class="member-name-link">upsert</a><wbr>(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;cell,
  long&nbsp;readpoint,
  <a href="../regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code></div>
-<div class="col-last even-row-color">&nbsp;</div>
-<div class="col-first odd-row-color"><code>void</code></div>
-<div class="col-second odd-row-color"><span class="type-name-label">MutableSegment.</span><code><a href="../regionserver/MutableSegment.html#upsert(org.apache.hadoop.hbase.ExtendedCell,long,org.apache.hadoop.hbase.regionserver.MemStoreSizing,boolean)" class="member-name-link">upsert</a><wbr>(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;cell,
+<div class="col-last odd-row-color">&nbsp;</div>
+<div class="col-first even-row-color"><code>void</code></div>
+<div class="col-second even-row-color"><span class="type-name-label">MutableSegment.</span><code><a href="../regionserver/MutableSegment.html#upsert(org.apache.hadoop.hbase.ExtendedCell,long,org.apache.hadoop.hbase.regionserver.MemStoreSizing,boolean)" class="member-name-link">upsert</a><wbr>(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;cell,
  long&nbsp;readpoint,
  <a href="../regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memStoreSizing,
  boolean&nbsp;sizeAddedPreOperation)</code></div>
-<div class="col-last odd-row-color">&nbsp;</div>
+<div class="col-last even-row-color">&nbsp;</div>
 </div>
 <div class="caption"><span>Method parameters in <a href="../regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a> with type arguments of type <a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a></span></div>
 <div class="summary-table three-column-summary">
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html b/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html
index 8540f121f52..db75b406e41 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html
@@ -126,7 +126,7 @@ implements <a href="KeyValueScanner.html" title="interface in org.apache.hadoop.
 <div class="col-first even-row-color"><code>private final boolean</code></div>
 <div class="col-second even-row-color"><code><a href="#isFastSeekingEncoding" class="member-name-link">isFastSeekingEncoding</a></code></div>
 <div class="col-last even-row-color">&nbsp;</div>
-<div class="col-first odd-row-color"><code>private <a href="../Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></div>
+<div class="col-first odd-row-color"><code>private <a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a></code></div>
 <div class="col-second odd-row-color"><code><a href="#previousRow" class="member-name-link">previousRow</a></code></div>
 <div class="col-last odd-row-color">&nbsp;</div>
 <div class="col-first even-row-color"><code>private final <a href="StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a></code></div>
@@ -341,19 +341,20 @@ implements <a href="KeyValueScanner.html" title="interface in org.apache.hadoop.
 <div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private boolean</code></div>
 <div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#seekToPreviousRowStateless(org.apache.hadoop.hbase.ExtendedCell)" class="member-name-link">seekToPreviousRowStateless</a><wbr>(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;originalKey)</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
-<div class="block">This variant of the <code>StoreFileScanner#seekToPreviousRow(Cell)</code> method requires two seeks.</div>
+<div class="block">This variant of the <a href="#seekToPreviousRow(org.apache.hadoop.hbase.ExtendedCell)"><code>seekToPreviousRow(ExtendedCell)</code></a> method requires
+ two seeks.</div>
 </div>
 <div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private boolean</code></div>
 <div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#seekToPreviousRowWithHint()" class="member-name-link">seekToPreviousRowWithHint</a>()</code></div>
 <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
-<div class="block">This variant of the <code>StoreFileScanner#seekToPreviousRow(Cell)</code> method requires one seek
- and one reseek.</div>
+<div class="block">This variant of the <a href="#seekToPreviousRow(org.apache.hadoop.hbase.ExtendedCell)"><code>seekToPreviousRow(ExtendedCell)</code></a> method requires
+ one seek and one reseek.</div>
 </div>
 <div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private boolean</code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#seekToPreviousRowWithoutHint(org.apache.hadoop.hbase.Cell)" class="member-name-link">seekToPreviousRowWithoutHint</a><wbr>(<a href="../Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;originalKey)</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#seekToPreviousRowWithoutHint(org.apache.hadoop.hbase.ExtendedCell)" class="member-name-link">seekToPreviousRowWithoutHint</a><wbr>(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;originalKey)</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
-<div class="block">This variant of the <code>StoreFileScanner#seekToPreviousRow(Cell)</code> method requires two seeks
- and one reseek.</div>
+<div class="block">This variant of the <a href="#seekToPreviousRow(org.apache.hadoop.hbase.ExtendedCell)"><code>seekToPreviousRow(ExtendedCell)</code></a> method requires
+ two seeks and one reseek.</div>
 </div>
 <div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
 <div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setCurrentCell(org.apache.hadoop.hbase.ExtendedCell)" class="member-name-link">setCurrentCell</a><wbr>(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;newVal)</code></div>
@@ -460,37 +461,37 @@ implements <a href="KeyValueScanner.html" title="interface in org.apache.hadoop.
 <li>
 <section class="detail" id="previousRow">
 <h3>previousRow</h3>
-<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type"><a href="../Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-66">previousRow</a></span></div>
+<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type"><a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-69">previousRow</a></span></div>
 </section>
 </li>
 <li>
 <section class="detail" id="isFastSeekingEncoding">
 <h3>isFastSeekingEncoding</h3>
-<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-71">isFastSeekingEncoding</a></span></div>
+<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-74">isFastSeekingEncoding</a></span></div>
 </section>
 </li>
 <li>
 <section class="detail" id="seekCount">
 <h3>seekCount</h3>
-<div class="member-signature"><span class="modifiers">private static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/atomic/LongAdder.html" title="class or interface in java.util.concurrent.atomic" class="external-link">LongAdder</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-73">seekCount</a></span></div>
+<div class="member-signature"><span class="modifiers">private static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/atomic/LongAdder.html" title="class or interface in java.util.concurrent.atomic" class="external-link">LongAdder</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-76">seekCount</a></span></div>
 </section>
 </li>
 <li>
 <section class="detail" id="canOptimizeForNonNullColumn">
 <h3>canOptimizeForNonNullColumn</h3>
-<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-75">canOptimizeForNonNullColumn</a></span></div>
+<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-78">canOptimizeForNonNullColumn</a></span></div>
 </section>
 </li>
 <li>
 <section class="detail" id="readPt">
 <h3>readPt</h3>
-<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-77">readPt</a></span></div>
+<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-80">readPt</a></span></div>
 </section>
 </li>
 <li>
 <section class="detail" id="scannerOrder">
 <h3>scannerOrder</h3>
-<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-81">scannerOrder</a></span></div>
+<div class="member-signature"><span class="modifiers">private final</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-84">scannerOrder</a></span></div>
 </section>
 </li>
 </ul>
@@ -504,7 +505,7 @@ implements <a href="KeyValueScanner.html" title="interface in org.apache.hadoop.
 <li>
 <section class="detail" id="&lt;init&gt;(org.apache.hadoop.hbase.regionserver.StoreFileReader,org.apache.hadoop.hbase.io.hfile.HFileScanner,boolean,boolean,long,long,boolean,boolean)">
 <h3>StoreFileScanner</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-98">StoreFileScanner</a></span><wbr><span class="parameters">(<a href="StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a>&nbsp;reader,
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-101">StoreFileScanner</a></span><wbr><span class="parameters">(<a href="StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a>&nbsp;reader,
  <a href="../io/hfile/HFileScanner.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileScanner</a>&nbsp;hfs,
  boolean&nbsp;useMVCC,
  boolean&nbsp;hasMVCC,
@@ -541,7 +542,7 @@ implements <a href="KeyValueScanner.html" title="interface in org.apache.hadoop.
 <li>
 <section class="detail" id="getScannersForStoreFiles(java.util.Collection,boolean,boolean,boolean,boolean,long)">
 <h3>getScannersForStoreFiles</h3>
-<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a>&gt;</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/S [...]
+<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a>&gt;</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/S [...]
  boolean&nbsp;cacheBlocks,
  boolean&nbsp;usePread,
  boolean&nbsp;isCompaction,
@@ -558,7 +559,7 @@ implements <a href="KeyValueScanner.html" title="interface in org.apache.hadoop.
 <li>
 <section class="detail" id="getScannersForStoreFiles(java.util.Collection,boolean,boolean,boolean,boolean,org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher,long)">
 <h3>getScannersForStoreFiles</h3>
-<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a>&gt;</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/S [...]
+<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a>&gt;</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/S [...]
  boolean&nbsp;cacheBlocks,
  boolean&nbsp;usePread,
  boolean&nbsp;isCompaction,
@@ -577,7 +578,7 @@ implements <a href="KeyValueScanner.html" title="interface in org.apache.hadoop.
 <li>
 <section class="detail" id="getScannersForCompaction(java.util.Collection,boolean,long)">
 <h3>getScannersForCompaction</h3>
-<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a>&gt;</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/S [...]
+<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a>&gt;</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/S [...]
  boolean&nbsp;canUseDropBehind,
  long&nbsp;readPt)</span>
                                                        throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
@@ -592,7 +593,7 @@ implements <a href="KeyValueScanner.html" title="interface in org.apache.hadoop.
 <li>
 <section class="detail" id="toString()">
 <h3>toString</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-191">toString</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-194">toString</a></span>()</div>
 <dl class="notes">
 <dt>Overrides:</dt>
 <dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
@@ -602,7 +603,7 @@ implements <a href="KeyValueScanner.html" title="interface in org.apache.hadoop.
 <li>
 <section class="detail" id="peek()">
 <h3>peek</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-196">peek</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-199">peek</a></span>()</div>
 <div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="KeyValueScanner.html#peek()">KeyValueScanner</a></code></span></div>
 <div class="block">Look at the next Cell in this scanner, but do not iterate scanner. NOTICE: The returned cell
  has not been passed into ScanQueryMatcher. So it may not be what the user need.</div>
@@ -617,7 +618,7 @@ implements <a href="KeyValueScanner.html" title="interface in org.apache.hadoop.
 <li>
 <section class="detail" id="next()">
 <h3>next</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-201">next</a></span>()
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-204">next</a></span>()
                   throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
 <div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="KeyValueScanner.html#next()">KeyValueScanner</a></code></span></div>
 <div class="block">Return the next Cell in this scanner, iterating the scanner</div>
@@ -634,7 +635,7 @@ implements <a href="KeyValueScanner.html" title="interface in org.apache.hadoop.
 <li>
 <section class="detail" id="seek(org.apache.hadoop.hbase.ExtendedCell)">
 <h3>seek</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-222">seek</a></span><wbr><span class="parameters">(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;key)</span>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-225">seek</a></span><wbr><span class="parameters">(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;key)</span>
              throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
 <div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="KeyValueScanner.html#seek(org.apache.hadoop.hbase.ExtendedCell)">KeyValueScanner</a></code></span></div>
 <div class="block">Seek the scanner at or after the specified KeyValue.</div>
@@ -653,7 +654,7 @@ implements <a href="KeyValueScanner.html" title="interface in org.apache.hadoop.
 <li>
 <section class="detail" id="reseek(org.apache.hadoop.hbase.ExtendedCell)">
 <h3>reseek</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-251">reseek</a></span><wbr><span class="parameters">(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;key)</span>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-254">reseek</a></span><wbr><span class="parameters">(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;key)</span>
                throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
 <div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="KeyValueScanner.html#reseek(org.apache.hadoop.hbase.ExtendedCell)">KeyValueScanner</a></code></span></div>
 <div class="block">Reseek the scanner at or after the specified KeyValue. This method is guaranteed to seek at or
@@ -674,7 +675,7 @@ implements <a href="KeyValueScanner.html" title="interface in org.apache.hadoop.
 <li>
 <section class="detail" id="setCurrentCell(org.apache.hadoop.hbase.ExtendedCell)">
 <h3>setCurrentCell</h3>
-<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-279">setCurrentCell</a></span><wbr><span class="parameters">(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;newVal)</span>
+<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-282">setCurrentCell</a></span><wbr><span class="parameters">(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;newVal)</span>
                        throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
 <dl class="notes">
 <dt>Throws:</dt>
@@ -685,7 +686,7 @@ implements <a href="KeyValueScanner.html" title="interface in org.apache.hadoop.
 <li>
 <section class="detail" id="skipKVsNewerThanReadpoint()">
 <h3>skipKVsNewerThanReadpoint</h3>
-<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-286">skipKVsNewerThanReadpoint</a></span>()
+<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-289">skipKVsNewerThanReadpoint</a></span>()
                                      throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
 <dl class="notes">
 <dt>Throws:</dt>
@@ -696,7 +697,7 @@ implements <a href="KeyValueScanner.html" title="interface in org.apache.hadoop.
 <li>
 <section class="detail" id="close()">
 <h3>close</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-307">close</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-310">close</a></span>()</div>
 <div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="KeyValueScanner.html#close()">KeyValueScanner</a></code></span></div>
 <div class="block">Close the KeyValue scanner.</div>
 <dl class="notes">
@@ -712,7 +713,7 @@ implements <a href="KeyValueScanner.html" title="interface in org.apache.hadoop.
 <li>
 <section class="detail" id="seekAtOrAfter(org.apache.hadoop.hbase.io.hfile.HFileScanner,org.apache.hadoop.hbase.ExtendedCell)">
 <h3>seekAtOrAfter</h3>
-<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-319">seekAtOrAfter</a></span><wbr><span class="parameters">(<a href="../io/hfile/HFileScanner.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileScanner</a>&nbsp;s,
+<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-322">seekAtOrAfter</a></span><wbr><span class="parameters">(<a href="../io/hfile/HFileScanner.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileScanner</a>&nbsp;s,
  <a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;k)</span>
                              throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
 <div class="block">Returns false if not found or if k is after the end.</div>
@@ -725,7 +726,7 @@ implements <a href="KeyValueScanner.html" title="interface in org.apache.hadoop.
 <li>
 <section class="detail" id="reseekAtOrAfter(org.apache.hadoop.hbase.io.hfile.HFileScanner,org.apache.hadoop.hbase.ExtendedCell)">
 <h3>reseekAtOrAfter</h3>
-<div class="member-signature"><span class="modifiers">static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-337">reseekAtOrAfter</a></span><wbr><span class="parameters">(<a href="../io/hfile/HFileScanner.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileScanner</a>&nbsp;s,
+<div class="member-signature"><span class="modifiers">static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-340">reseekAtOrAfter</a></span><wbr><span class="parameters">(<a href="../io/hfile/HFileScanner.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileScanner</a>&nbsp;s,
  <a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;k)</span>
                         throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
 <dl class="notes">
@@ -737,7 +738,7 @@ implements <a href="KeyValueScanner.html" title="interface in org.apache.hadoop.
 <li>
 <section class="detail" id="getScannerOrder()">
 <h3>getScannerOrder</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-361">getScannerOrder</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-364">getScannerOrder</a></span>()</div>
 <div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="KeyValueScanner.html#getScannerOrder()">KeyValueScanner</a></code></span></div>
 <div class="block">Get the order of this KeyValueScanner. This is only relevant for StoreFileScanners. This is
  required for comparing multiple files to find out which one has the latest data.
@@ -757,7 +758,7 @@ implements <a href="KeyValueScanner.html" title="interface in org.apache.hadoop.
 <li>
 <section class="detail" id="requestSeek(org.apache.hadoop.hbase.ExtendedCell,boolean,boolean)">
 <h3>requestSeek</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-378">requestSeek</a></span><wbr><span class="parameters">(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;kv,
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-381">requestSeek</a></span><wbr><span class="parameters">(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;kv,
  boolean&nbsp;forward,
  boolean&nbsp;useBloom)</span>
                     throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
@@ -784,19 +785,19 @@ implements <a href="KeyValueScanner.html" title="interface in org.apache.hadoop.
 <li>
 <section class="detail" id="getReader()">
 <h3>getReader</h3>
-<div class="member-signature"><span class="return-type"><a href="StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-441">getReader</a></span>()</div>
+<div class="member-signature"><span class="return-type"><a href="StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-444">getReader</a></span>()</div>
 </section>
 </li>
 <li>
 <section class="detail" id="getComparator()">
 <h3>getComparator</h3>
-<div class="member-signature"><span class="return-type"><a href="../CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-445">getComparator</a></span>()</div>
+<div class="member-signature"><span class="return-type"><a href="../CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-448">getComparator</a></span>()</div>
 </section>
 </li>
 <li>
 <section class="detail" id="realSeekDone()">
 <h3>realSeekDone</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-449">realSeekDone</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-452">realSeekDone</a></span>()</div>
 <div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="KeyValueScanner.html#realSeekDone()">KeyValueScanner</a></code></span></div>
 <div class="block">We optimize our store scanners by checking the most recent store file first, so we sometimes
  pretend we have done a seek but delay it until the store scanner bubbles up to the top of the
@@ -811,7 +812,7 @@ implements <a href="KeyValueScanner.html" title="interface in org.apache.hadoop.
 <li>
 <section class="detail" id="enforceSeek()">
 <h3>enforceSeek</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-454">enforceSeek</a></span>()
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-457">enforceSeek</a></span>()
                  throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
 <div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="KeyValueScanner.html#enforceSeek()">KeyValueScanner</a></code></span></div>
 <div class="block">Does the real seek operation in case it was skipped by seekToRowCol(KeyValue, boolean) (TODO:
@@ -829,7 +830,7 @@ implements <a href="KeyValueScanner.html" title="interface in org.apache.hadoop.
 <li>
 <section class="detail" id="isFileScanner()">
 <h3>isFileScanner</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-465">isFileScanner</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-468">isFileScanner</a></span>()</div>
 <div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="KeyValueScanner.html#isFileScanner()">KeyValueScanner</a></code></span></div>
 <div class="block">Returns true if this is a file scanner. Otherwise a memory scanner is assumed.</div>
 <dl class="notes">
@@ -841,7 +842,7 @@ implements <a href="KeyValueScanner.html" title="interface in org.apache.hadoop.
 <li>
 <section class="detail" id="recordBlockSize(java.util.function.IntConsumer)">
 <h3>recordBlockSize</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-470">recordBlockSize</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/IntConsumer.html" title="class or interface in java.util.function" class="external-link">IntConsumer< [...]
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-473">recordBlockSize</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/IntConsumer.html" title="class or interface in java.util.function" class="external-link">IntConsumer< [...]
 <div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="KeyValueScanner.html#recordBlockSize(java.util.function.IntConsumer)">KeyValueScanner</a></code></span></div>
 <div class="block">Record the size of the current block in bytes, passing as an argument to the blockSizeConsumer.
  Implementations should ensure that blockSizeConsumer is only called once per block.</div>
@@ -856,7 +857,7 @@ implements <a href="KeyValueScanner.html" title="interface in org.apache.hadoop.
 <li>
 <section class="detail" id="getFilePath()">
 <h3>getFilePath</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">org.apache.hadoop.fs.Path</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-475">getFilePath</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">org.apache.hadoop.fs.Path</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-478">getFilePath</a></span>()</div>
 <dl class="notes">
 <dt>Specified by:</dt>
 <dd><code><a href="KeyValueScanner.html#getFilePath()">getFilePath</a></code>&nbsp;in interface&nbsp;<code><a href="KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a></code></dd>
@@ -874,19 +875,19 @@ implements <a href="KeyValueScanner.html" title="interface in org.apache.hadoop.
 <li>
 <section class="detail" id="getSeekCount()">
 <h3>getSeekCount</h3>
-<div class="member-signature"><span class="modifiers">static final</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-481">getSeekCount</a></span>()</div>
+<div class="member-signature"><span class="modifiers">static final</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-484">getSeekCount</a></span>()</div>
 </section>
 </li>
 <li>
 <section class="detail" id="instrument()">
 <h3>instrument</h3>
-<div class="member-signature"><span class="modifiers">static final</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-485">instrument</a></span>()</div>
+<div class="member-signature"><span class="modifiers">static final</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-488">instrument</a></span>()</div>
 </section>
 </li>
 <li>
 <section class="detail" id="shouldUseScanner(org.apache.hadoop.hbase.client.Scan,org.apache.hadoop.hbase.regionserver.HStore,long)">
 <h3>shouldUseScanner</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-489">shouldUseScanner</a></span><wbr><span class="parameters">(<a href="../client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-492">shouldUseScanner</a></span><wbr><span class="parameters">(<a href="../client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
  <a href="HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;store,
  long&nbsp;oldestUnexpiredTS)</span></div>
 <div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="KeyValueScanner.html#shouldUseScanner(org.apache.hadoop.hbase.client.Scan,org.apache.hadoop.hbase.regionserver.HStore,long)">KeyValueScanner</a></code></span></div>
@@ -907,7 +908,7 @@ implements <a href="KeyValueScanner.html" title="interface in org.apache.hadoop.
 <li>
 <section class="detail" id="seekToPreviousRow(org.apache.hadoop.hbase.ExtendedCell)">
 <h3>seekToPreviousRow</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-502">seekToPreviousRow</a></span><wbr><span class="parameters">(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;originalKey)</span>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-505">seekToPreviousRow</a></span><wbr><span class="parameters">(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;originalKey)</span>
                           throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
 <div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="KeyValueScanner.html#seekToPreviousRow(org.apache.hadoop.hbase.ExtendedCell)">KeyValueScanner</a></code></span></div>
 <div class="block">Seek the scanner at the first Cell of the row which is the previous row of specified key</div>
@@ -927,15 +928,16 @@ implements <a href="KeyValueScanner.html" title="interface in org.apache.hadoop.
 <li>
 <section class="detail" id="seekToPreviousRowWithHint()">
 <h3>seekToPreviousRowWithHint</h3>
-<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-530">seekToPreviousRowWithHint</a></span>()
+<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-534">seekToPreviousRowWithHint</a></span>()
                                    throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
-<div class="block">This variant of the <code>StoreFileScanner#seekToPreviousRow(Cell)</code> method requires one seek
- and one reseek. This method maintains state in <a href="#previousRow"><code>previousRow</code></a> which only
- makes sense in the context of a sequential row-by-row reverse scan.
+<div class="block">This variant of the <a href="#seekToPreviousRow(org.apache.hadoop.hbase.ExtendedCell)"><code>seekToPreviousRow(ExtendedCell)</code></a> method requires
+ one seek and one reseek. This method maintains state in <a href="#previousRow"><code>previousRow</code></a>
+ which only makes sense in the context of a sequential row-by-row reverse scan.
  <a href="#previousRow"><code>previousRow</code></a> should be reset if that is not the case. The reasoning for
- why this method is faster than <code>StoreFileScanner#seekToPreviousRowStateless(Cell)</code> is
- that seeks are slower as they need to start from the beginning of the file, while reseeks go
- forward from the current position.</div>
+ why this method is faster than
+ <a href="#seekToPreviousRowStateless(org.apache.hadoop.hbase.ExtendedCell)"><code>seekToPreviousRowStateless(ExtendedCell)</code></a> is that seeks are slower as
+ they need to start from the beginning of the file, while reseeks go forward from the current
+ position.</div>
 <dl class="notes">
 <dt>Throws:</dt>
 <dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code></dd>
@@ -943,14 +945,14 @@ implements <a href="KeyValueScanner.html" title="interface in org.apache.hadoop.
 </section>
 </li>
 <li>
-<section class="detail" id="seekToPreviousRowWithoutHint(org.apache.hadoop.hbase.Cell)">
+<section class="detail" id="seekToPreviousRowWithoutHint(org.apache.hadoop.hbase.ExtendedCell)">
 <h3>seekToPreviousRowWithoutHint</h3>
-<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-563">seekToPreviousRowWithoutHint</a></span><wbr><span class="parameters">(<a href="../Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;originalKey)</span>
+<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-567">seekToPreviousRowWithoutHint</a></span><wbr><span class="parameters">(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;originalKey)</span>
                                       throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
-<div class="block">This variant of the <code>StoreFileScanner#seekToPreviousRow(Cell)</code> method requires two seeks
- and one reseek. The extra expense/seek is with the intent of speeding up subsequent calls by
- using the <a href="#seekToPreviousRowWithHint()"><code>seekToPreviousRowWithHint()</code></a> which this method seeds the state
- for by setting <a href="#previousRow"><code>previousRow</code></a></div>
+<div class="block">This variant of the <a href="#seekToPreviousRow(org.apache.hadoop.hbase.ExtendedCell)"><code>seekToPreviousRow(ExtendedCell)</code></a> method requires
+ two seeks and one reseek. The extra expense/seek is with the intent of speeding up subsequent
+ calls by using the <a href="#seekToPreviousRowWithHint()"><code>seekToPreviousRowWithHint()</code></a> which this method seeds
+ the state for by setting <a href="#previousRow"><code>previousRow</code></a></div>
 <dl class="notes">
 <dt>Throws:</dt>
 <dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code></dd>
@@ -960,11 +962,11 @@ implements <a href="KeyValueScanner.html" title="interface in org.apache.hadoop.
 <li>
 <section class="detail" id="seekToPreviousRowStateless(org.apache.hadoop.hbase.ExtendedCell)">
 <h3>seekToPreviousRowStateless</h3>
-<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-603">seekToPreviousRowStateless</a></span><wbr><span class="parameters">(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;originalKey)</span>
+<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-607">seekToPreviousRowStateless</a></span><wbr><span class="parameters">(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;originalKey)</span>
                                     throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
-<div class="block">This variant of the <code>StoreFileScanner#seekToPreviousRow(Cell)</code> method requires two seeks.
- It should be used if the cost for seeking is lower i.e. when using a fast seeking data block
- encoding like RIV1.</div>
+<div class="block">This variant of the <a href="#seekToPreviousRow(org.apache.hadoop.hbase.ExtendedCell)"><code>seekToPreviousRow(ExtendedCell)</code></a> method requires
+ two seeks. It should be used if the cost for seeking is lower i.e. when using a fast seeking
+ data block encoding like RIV1.</div>
 <dl class="notes">
 <dt>Throws:</dt>
 <dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code></dd>
@@ -974,7 +976,7 @@ implements <a href="KeyValueScanner.html" title="interface in org.apache.hadoop.
 <li>
 <section class="detail" id="seekBefore(org.apache.hadoop.hbase.ExtendedCell)">
 <h3>seekBefore</h3>
-<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-623">seekBefore</a></span><wbr><span class="parameters">(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;seekKey)</span>
+<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-627">seekBefore</a></span><wbr><span class="parameters">(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;seekKey)</span>
                     throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
 <dl class="notes">
 <dt>Throws:</dt>
@@ -985,7 +987,7 @@ implements <a href="KeyValueScanner.html" title="interface in org.apache.hadoop.
 <li>
 <section class="detail" id="seekBeforeAndSaveKeyToPreviousRow(org.apache.hadoop.hbase.ExtendedCell)">
 <h3>seekBeforeAndSaveKeyToPreviousRow</h3>
-<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-643">seekBeforeAndSaveKeyToPreviousRow</a></span><wbr><span class="parameters">(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;seekKey)</span>
+<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-647">seekBeforeAndSaveKeyToPreviousRow</a></span><wbr><span class="parameters">(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;seekKey)</span>
                                         throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
 <div class="block">Seeks before the seek target cell and saves the location to <a href="#previousRow"><code>previousRow</code></a>. If there
  doesn't exist a KV in this file before the seek target cell, reposition the scanner at the
@@ -1002,7 +1004,7 @@ implements <a href="KeyValueScanner.html" title="interface in org.apache.hadoop.
 <li>
 <section class="detail" id="seekAtOrAfter(org.apache.hadoop.hbase.ExtendedCell)">
 <h3>seekAtOrAfter</h3>
-<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-658">seekAtOrAfter</a></span><wbr><span class="parameters">(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;seekKey)</span>
+<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-662">seekAtOrAfter</a></span><wbr><span class="parameters">(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;seekKey)</span>
                        throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
 <dl class="notes">
 <dt>Throws:</dt>
@@ -1013,7 +1015,7 @@ implements <a href="KeyValueScanner.html" title="interface in org.apache.hadoop.
 <li>
 <section class="detail" id="reseekAtOrAfter(org.apache.hadoop.hbase.ExtendedCell)">
 <h3>reseekAtOrAfter</h3>
-<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-670">reseekAtOrAfter</a></span><wbr><span class="parameters">(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;seekKey)</span>
+<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-674">reseekAtOrAfter</a></span><wbr><span class="parameters">(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;seekKey)</span>
                          throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
 <dl class="notes">
 <dt>Throws:</dt>
@@ -1024,7 +1026,7 @@ implements <a href="KeyValueScanner.html" title="interface in org.apache.hadoop.
 <li>
 <section class="detail" id="isStillAtSeekTargetAfterSkippingNewerKvs(org.apache.hadoop.hbase.Cell)">
 <h3>isStillAtSeekTargetAfterSkippingNewerKvs</h3>
-<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-682">isStillAtSeekTargetAfterSkippingNewerKvs</a></span><wbr><span class="parameters">(<a href="../Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;seekKey)</span>
+<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-686">isStillAtSeekTargetAfterSkippingNewerKvs</a></span><wbr><span class="parameters">(<a href="../Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;seekKey)</span>
                                                   throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
 <dl class="notes">
 <dt>Throws:</dt>
@@ -1035,7 +1037,7 @@ implements <a href="KeyValueScanner.html" title="interface in org.apache.hadoop.
 <li>
 <section class="detail" id="skipKvsNewerThanReadpointReversed()">
 <h3>skipKvsNewerThanReadpointReversed</h3>
-<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-687">skipKvsNewerThanReadpointReversed</a></span>()
+<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-691">skipKvsNewerThanReadpointReversed</a></span>()
                                            throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
 <dl class="notes">
 <dt>Throws:</dt>
@@ -1046,7 +1048,7 @@ implements <a href="KeyValueScanner.html" title="interface in org.apache.hadoop.
 <li>
 <section class="detail" id="seekToLastRow()">
 <h3>seekToLastRow</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-699">seekToLastRow</a></span>()
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-703">seekToLastRow</a></span>()
                       throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
 <div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="KeyValueScanner.html#seekToLastRow()">KeyValueScanner</a></code></span></div>
 <div class="block">Seek the scanner at the first KeyValue of last row</div>
@@ -1063,7 +1065,7 @@ implements <a href="KeyValueScanner.html" title="interface in org.apache.hadoop.
 <li>
 <section class="detail" id="backwardSeek(org.apache.hadoop.hbase.ExtendedCell)">
 <h3>backwardSeek</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-713">backwardSeek</a></span><wbr><span class="parameters">(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;key)</span>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-717">backwardSeek</a></span><wbr><span class="parameters">(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;key)</span>
                      throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
 <div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="KeyValueScanner.html#backwardSeek(org.apache.hadoop.hbase.ExtendedCell)">KeyValueScanner</a></code></span></div>
 <div class="block">Seek the scanner at or before the row of specified Cell, it firstly tries to seek the scanner
@@ -1085,7 +1087,7 @@ implements <a href="KeyValueScanner.html" title="interface in org.apache.hadoop.
 <li>
 <section class="detail" id="getNextIndexedKey()">
 <h3>getNextIndexedKey</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-722">getNextIndexedKey</a></span>()</div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-726">getNextIndexedKey</a></span>()</div>
 <dl class="notes">
 <dt>Specified by:</dt>
 <dd><code><a href="KeyValueScanner.html#getNextIndexedKey()">getNextIndexedKey</a></code>&nbsp;in interface&nbsp;<code><a href="KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a></code></dd>
@@ -1099,7 +1101,7 @@ implements <a href="KeyValueScanner.html" title="interface in org.apache.hadoop.
 <li>
 <section class="detail" id="shipped()">
 <h3>shipped</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-727">shipped</a></span>()
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#line-731">shipped</a></span>()
              throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
 <div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="Shipper.html#shipped()">Shipper</a></code></span></div>
 <div class="block">Called after a batch of rows scanned and set to be returned to client. Any in between cleanup
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/HRegion.html b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/HRegion.html
index 76a3eb55f3a..c7cbd2acd1b 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/HRegion.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/HRegion.html
@@ -1499,13 +1499,17 @@ loadScripts(document, 'script');</script>
 <div class="col-last odd-row-color">
 <div class="block"><span class="deprecated-label">Deprecated.</span></div>
 &nbsp;</div>
-<div class="col-first even-row-color"><code>(package private) void</code></div>
-<div class="col-second even-row-color"><span class="type-name-label">RegionReplicaFlushHandler.</span><code><a href="../handler/RegionReplicaFlushHandler.html#triggerFlushInPrimaryRegion(org.apache.hadoop.hbase.regionserver.HRegion)" class="member-name-link">triggerFlushInPrimaryRegion</a><wbr>(<a href="../HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region)</code></div>
+<div class="col-first even-row-color"><code>private boolean</code></div>
+<div class="col-second even-row-color"><span class="type-name-label">RegionReplicaFlushHandler.</span><code><a href="../handler/RegionReplicaFlushHandler.html#isTableDisabledOrDropped(java.io.IOException,org.apache.hadoop.hbase.regionserver.HRegion)" class="member-name-link">isTableDisabledOrDropped</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a>&nbsp;error,
+ <a href="../HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region)</code></div>
 <div class="col-last even-row-color">&nbsp;</div>
-<div class="col-first odd-row-color"><code>private boolean</code></div>
-<div class="col-second odd-row-color"><span class="type-name-label">OpenRegionHandler.</span><code><a href="../handler/OpenRegionHandler.html#updateMeta(org.apache.hadoop.hbase.regionserver.HRegion,long)" class="member-name-link">updateMeta</a><wbr>(<a href="../HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;r,
+<div class="col-first odd-row-color"><code>(package private) void</code></div>
+<div class="col-second odd-row-color"><span class="type-name-label">RegionReplicaFlushHandler.</span><code><a href="../handler/RegionReplicaFlushHandler.html#triggerFlushInPrimaryRegion(org.apache.hadoop.hbase.regionserver.HRegion)" class="member-name-link">triggerFlushInPrimaryRegion</a><wbr>(<a href="../HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region)</code></div>
+<div class="col-last odd-row-color">&nbsp;</div>
+<div class="col-first even-row-color"><code>private boolean</code></div>
+<div class="col-second even-row-color"><span class="type-name-label">OpenRegionHandler.</span><code><a href="../handler/OpenRegionHandler.html#updateMeta(org.apache.hadoop.hbase.regionserver.HRegion,long)" class="member-name-link">updateMeta</a><wbr>(<a href="../HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;r,
  long&nbsp;masterSystemTime)</code></div>
-<div class="col-last odd-row-color">
+<div class="col-last even-row-color">
 <div class="block"><span class="deprecated-label">Deprecated.</span></div>
 <div class="block">Update ZK or META.</div>
 </div>
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/handler/RegionReplicaFlushHandler.html b/devapidocs/org/apache/hadoop/hbase/regionserver/handler/RegionReplicaFlushHandler.html
index 4c37bd994e8..662ec17aeeb 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/handler/RegionReplicaFlushHandler.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/handler/RegionReplicaFlushHandler.html
@@ -154,14 +154,18 @@ loadScripts(document, 'script');</script>
 <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
 <div class="block">Event exception handler, may be overridden</div>
 </div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#process()" class="member-name-link">process</a>()</code></div>
-<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>private boolean</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isTableDisabledOrDropped(java.io.IOException,org.apache.hadoop.hbase.regionserver.HRegion)" class="member-name-link">isTableDisabledOrDropped</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a>&nbsp;error,
+ <a href="../HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#process()" class="member-name-link">process</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
 <div class="block">This method is the main processing loop to be implemented by the various subclasses.</div>
 </div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>(package private) void</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#triggerFlushInPrimaryRegion(org.apache.hadoop.hbase.regionserver.HRegion)" class="member-name-link">triggerFlushInPrimaryRegion</a><wbr>(<a href="../HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region)</code></div>
-<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>(package private) void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#triggerFlushInPrimaryRegion(org.apache.hadoop.hbase.regionserver.HRegion)" class="member-name-link">triggerFlushInPrimaryRegion</a><wbr>(<a href="../HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
 </div>
 </div>
 </div>
@@ -259,9 +263,16 @@ loadScripts(document, 'script');</script>
 </section>
 </li>
 <li>
+<section class="detail" id="isTableDisabledOrDropped(java.io.IOException,org.apache.hadoop.hbase.regionserver.HRegion)">
+<h3>isTableDisabledOrDropped</h3>
+<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/RegionReplicaFlushHandler.html#line-94">isTableDisabledOrDropped</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IO [...]
+ <a href="../HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region)</span></div>
+</section>
+</li>
+<li>
 <section class="detail" id="triggerFlushInPrimaryRegion(org.apache.hadoop.hbase.regionserver.HRegion)">
 <h3>triggerFlushInPrimaryRegion</h3>
-<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/RegionReplicaFlushHandler.html#line-94">triggerFlushInPrimaryRegion</a></span><wbr><span class="parameters">(<a href="../HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region)</span>
+<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/handler/RegionReplicaFlushHandler.html#line-115">triggerFlushInPrimaryRegion</a></span><wbr><span class="parameters">(<a href="../HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region)</span>
                           throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
 <dl class="notes">
 <dt>Throws:</dt>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html
index 5799fb1f77f..0aba0333b44 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileScanner.html
@@ -76,672 +76,676 @@
 <span class="source-line-no">063</span><span id="line-63">  // if have encountered the next row. Only used for reversed scan</span>
 <span class="source-line-no">064</span><span id="line-64">  private boolean stopSkippingKVsIfNextRow = false;</span>
 <span class="source-line-no">065</span><span id="line-65">  // A Cell that represents the row before the most previously seeked to row in seekToPreviousRow</span>
-<span class="source-line-no">066</span><span id="line-66">  private Cell previousRow = null;</span>
-<span class="source-line-no">067</span><span id="line-67">  // Whether the underlying HFile is using a data block encoding that has lower cost for seeking to</span>
-<span class="source-line-no">068</span><span id="line-68">  // a row from the beginning of a block (i.e. RIV1). If the data block encoding has a high cost for</span>
-<span class="source-line-no">069</span><span id="line-69">  // seeks, then we can use a modified reverse scanning algorithm to reduce seeks from the beginning</span>
-<span class="source-line-no">070</span><span id="line-70">  // of the block</span>
-<span class="source-line-no">071</span><span id="line-71">  private final boolean isFastSeekingEncoding;</span>
-<span class="source-line-no">072</span><span id="line-72"></span>
-<span class="source-line-no">073</span><span id="line-73">  private static LongAdder seekCount;</span>
-<span class="source-line-no">074</span><span id="line-74"></span>
-<span class="source-line-no">075</span><span id="line-75">  private final boolean canOptimizeForNonNullColumn;</span>
-<span class="source-line-no">076</span><span id="line-76"></span>
-<span class="source-line-no">077</span><span id="line-77">  private final long readPt;</span>
-<span class="source-line-no">078</span><span id="line-78"></span>
-<span class="source-line-no">079</span><span id="line-79">  // Order of this scanner relative to other scanners when duplicate key-value is found.</span>
-<span class="source-line-no">080</span><span id="line-80">  // Higher values means scanner has newer data.</span>
-<span class="source-line-no">081</span><span id="line-81">  private final long scannerOrder;</span>
-<span class="source-line-no">082</span><span id="line-82"></span>
-<span class="source-line-no">083</span><span id="line-83">  /**</span>
-<span class="source-line-no">084</span><span id="line-84">   * Implements a {@link KeyValueScanner} on top of the specified {@link HFileScanner}</span>
-<span class="source-line-no">085</span><span id="line-85">   * @param useMVCC                     If true, scanner will filter out updates with MVCC larger</span>
-<span class="source-line-no">086</span><span id="line-86">   *                                    than {@code readPt}.</span>
-<span class="source-line-no">087</span><span id="line-87">   * @param readPt                      MVCC value to use to filter out the updates newer than this</span>
-<span class="source-line-no">088</span><span id="line-88">   *                                    scanner.</span>
-<span class="source-line-no">089</span><span id="line-89">   * @param hasMVCC                     Set to true if underlying store file reader has MVCC info.</span>
-<span class="source-line-no">090</span><span id="line-90">   * @param scannerOrder                Order of the scanner relative to other scanners. See</span>
-<span class="source-line-no">091</span><span id="line-91">   *                                    {@link KeyValueScanner#getScannerOrder()}.</span>
-<span class="source-line-no">092</span><span id="line-92">   * @param canOptimizeForNonNullColumn {@code true} if we can make sure there is no null column,</span>
-<span class="source-line-no">093</span><span id="line-93">   *                                    otherwise {@code false}. This is a hint for optimization.</span>
-<span class="source-line-no">094</span><span id="line-94">   * @param isFastSeekingEncoding       {@code true} if the data block encoding can seek quickly</span>
-<span class="source-line-no">095</span><span id="line-95">   *                                    from the beginning of a block (i.e. RIV1), otherwise</span>
-<span class="source-line-no">096</span><span id="line-96">   *                                    {@code false}. This is a hint for optimization.</span>
-<span class="source-line-no">097</span><span id="line-97">   */</span>
-<span class="source-line-no">098</span><span id="line-98">  public StoreFileScanner(StoreFileReader reader, HFileScanner hfs, boolean useMVCC,</span>
-<span class="source-line-no">099</span><span id="line-99">    boolean hasMVCC, long readPt, long scannerOrder, boolean canOptimizeForNonNullColumn,</span>
-<span class="source-line-no">100</span><span id="line-100">    boolean isFastSeekingEncoding) {</span>
-<span class="source-line-no">101</span><span id="line-101">    this.readPt = readPt;</span>
-<span class="source-line-no">102</span><span id="line-102">    this.reader = reader;</span>
-<span class="source-line-no">103</span><span id="line-103">    this.hfs = hfs;</span>
-<span class="source-line-no">104</span><span id="line-104">    this.enforceMVCC = useMVCC;</span>
-<span class="source-line-no">105</span><span id="line-105">    this.hasMVCCInfo = hasMVCC;</span>
-<span class="source-line-no">106</span><span id="line-106">    this.scannerOrder = scannerOrder;</span>
-<span class="source-line-no">107</span><span id="line-107">    this.canOptimizeForNonNullColumn = canOptimizeForNonNullColumn;</span>
-<span class="source-line-no">108</span><span id="line-108">    this.isFastSeekingEncoding = isFastSeekingEncoding;</span>
-<span class="source-line-no">109</span><span id="line-109">    this.reader.incrementRefCount();</span>
-<span class="source-line-no">110</span><span id="line-110">  }</span>
-<span class="source-line-no">111</span><span id="line-111"></span>
-<span class="source-line-no">112</span><span id="line-112">  /**</span>
-<span class="source-line-no">113</span><span id="line-113">   * Return an array of scanners corresponding to the given set of store files.</span>
-<span class="source-line-no">114</span><span id="line-114">   */</span>
-<span class="source-line-no">115</span><span id="line-115">  public static List&lt;StoreFileScanner&gt; getScannersForStoreFiles(Collection&lt;HStoreFile&gt; files,</span>
-<span class="source-line-no">116</span><span id="line-116">    boolean cacheBlocks, boolean usePread, boolean isCompaction, boolean useDropBehind, long readPt)</span>
-<span class="source-line-no">117</span><span id="line-117">    throws IOException {</span>
-<span class="source-line-no">118</span><span id="line-118">    return getScannersForStoreFiles(files, cacheBlocks, usePread, isCompaction, useDropBehind, null,</span>
-<span class="source-line-no">119</span><span id="line-119">      readPt);</span>
-<span class="source-line-no">120</span><span id="line-120">  }</span>
-<span class="source-line-no">121</span><span id="line-121"></span>
-<span class="source-line-no">122</span><span id="line-122">  /**</span>
-<span class="source-line-no">123</span><span id="line-123">   * Return an array of scanners corresponding to the given set of store files, And set the</span>
-<span class="source-line-no">124</span><span id="line-124">   * ScanQueryMatcher for each store file scanner for further optimization</span>
-<span class="source-line-no">125</span><span id="line-125">   */</span>
-<span class="source-line-no">126</span><span id="line-126">  public static List&lt;StoreFileScanner&gt; getScannersForStoreFiles(Collection&lt;HStoreFile&gt; files,</span>
-<span class="source-line-no">127</span><span id="line-127">    boolean cacheBlocks, boolean usePread, boolean isCompaction, boolean canUseDrop,</span>
-<span class="source-line-no">128</span><span id="line-128">    ScanQueryMatcher matcher, long readPt) throws IOException {</span>
-<span class="source-line-no">129</span><span id="line-129">    if (files.isEmpty()) {</span>
-<span class="source-line-no">130</span><span id="line-130">      return Collections.emptyList();</span>
-<span class="source-line-no">131</span><span id="line-131">    }</span>
-<span class="source-line-no">132</span><span id="line-132">    List&lt;StoreFileScanner&gt; scanners = new ArrayList&lt;&gt;(files.size());</span>
-<span class="source-line-no">133</span><span id="line-133">    boolean canOptimizeForNonNullColumn = matcher != null ? !matcher.hasNullColumnInQuery() : false;</span>
-<span class="source-line-no">134</span><span id="line-134">    PriorityQueue&lt;HStoreFile&gt; sortedFiles =</span>
-<span class="source-line-no">135</span><span id="line-135">      new PriorityQueue&lt;&gt;(files.size(), StoreFileComparators.SEQ_ID);</span>
-<span class="source-line-no">136</span><span id="line-136">    for (HStoreFile file : files) {</span>
-<span class="source-line-no">137</span><span id="line-137">      // The sort function needs metadata so we need to open reader first before sorting the list.</span>
-<span class="source-line-no">138</span><span id="line-138">      file.initReader();</span>
-<span class="source-line-no">139</span><span id="line-139">      sortedFiles.add(file);</span>
-<span class="source-line-no">140</span><span id="line-140">    }</span>
-<span class="source-line-no">141</span><span id="line-141">    boolean succ = false;</span>
-<span class="source-line-no">142</span><span id="line-142">    try {</span>
-<span class="source-line-no">143</span><span id="line-143">      for (int i = 0, n = files.size(); i &lt; n; i++) {</span>
-<span class="source-line-no">144</span><span id="line-144">        HStoreFile sf = sortedFiles.remove();</span>
-<span class="source-line-no">145</span><span id="line-145">        StoreFileScanner scanner;</span>
-<span class="source-line-no">146</span><span id="line-146">        if (usePread) {</span>
-<span class="source-line-no">147</span><span id="line-147">          scanner = sf.getPreadScanner(cacheBlocks, readPt, i, canOptimizeForNonNullColumn);</span>
-<span class="source-line-no">148</span><span id="line-148">        } else {</span>
-<span class="source-line-no">149</span><span id="line-149">          scanner = sf.getStreamScanner(canUseDrop, cacheBlocks, isCompaction, readPt, i,</span>
-<span class="source-line-no">150</span><span id="line-150">            canOptimizeForNonNullColumn);</span>
-<span class="source-line-no">151</span><span id="line-151">        }</span>
-<span class="source-line-no">152</span><span id="line-152">        scanners.add(scanner);</span>
-<span class="source-line-no">153</span><span id="line-153">      }</span>
-<span class="source-line-no">154</span><span id="line-154">      succ = true;</span>
-<span class="source-line-no">155</span><span id="line-155">    } finally {</span>
-<span class="source-line-no">156</span><span id="line-156">      if (!succ) {</span>
-<span class="source-line-no">157</span><span id="line-157">        for (StoreFileScanner scanner : scanners) {</span>
-<span class="source-line-no">158</span><span id="line-158">          scanner.close();</span>
-<span class="source-line-no">159</span><span id="line-159">        }</span>
-<span class="source-line-no">160</span><span id="line-160">      }</span>
-<span class="source-line-no">161</span><span id="line-161">    }</span>
-<span class="source-line-no">162</span><span id="line-162">    return scanners;</span>
-<span class="source-line-no">163</span><span id="line-163">  }</span>
-<span class="source-line-no">164</span><span id="line-164"></span>
-<span class="source-line-no">165</span><span id="line-165">  /**</span>
-<span class="source-line-no">166</span><span id="line-166">   * Get scanners for compaction. We will create a separated reader for each store file to avoid</span>
-<span class="source-line-no">167</span><span id="line-167">   * contention with normal read request.</span>
-<span class="source-line-no">168</span><span id="line-168">   */</span>
-<span class="source-line-no">169</span><span id="line-169">  public static List&lt;StoreFileScanner&gt; getScannersForCompaction(Collection&lt;HStoreFile&gt; files,</span>
-<span class="source-line-no">170</span><span id="line-170">    boolean canUseDropBehind, long readPt) throws IOException {</span>
-<span class="source-line-no">171</span><span id="line-171">    List&lt;StoreFileScanner&gt; scanners = new ArrayList&lt;&gt;(files.size());</span>
-<span class="source-line-no">172</span><span id="line-172">    List&lt;HStoreFile&gt; sortedFiles = new ArrayList&lt;&gt;(files);</span>
-<span class="source-line-no">173</span><span id="line-173">    Collections.sort(sortedFiles, StoreFileComparators.SEQ_ID);</span>
-<span class="source-line-no">174</span><span id="line-174">    boolean succ = false;</span>
-<span class="source-line-no">175</span><span id="line-175">    try {</span>
-<span class="source-line-no">176</span><span id="line-176">      for (int i = 0, n = sortedFiles.size(); i &lt; n; i++) {</span>
-<span class="source-line-no">177</span><span id="line-177">        scanners.add(</span>
-<span class="source-line-no">178</span><span id="line-178">          sortedFiles.get(i).getStreamScanner(canUseDropBehind, false, true, readPt, i, false));</span>
-<span class="source-line-no">179</span><span id="line-179">      }</span>
-<span class="source-line-no">180</span><span id="line-180">      succ = true;</span>
-<span class="source-line-no">181</span><span id="line-181">    } finally {</span>
-<span class="source-line-no">182</span><span id="line-182">      if (!succ) {</span>
-<span class="source-line-no">183</span><span id="line-183">        for (StoreFileScanner scanner : scanners) {</span>
-<span class="source-line-no">184</span><span id="line-184">          scanner.close();</span>
-<span class="source-line-no">185</span><span id="line-185">        }</span>
-<span class="source-line-no">186</span><span id="line-186">      }</span>
-<span class="source-line-no">187</span><span id="line-187">    }</span>
-<span class="source-line-no">188</span><span id="line-188">    return scanners;</span>
-<span class="source-line-no">189</span><span id="line-189">  }</span>
-<span class="source-line-no">190</span><span id="line-190"></span>
-<span class="source-line-no">191</span><span id="line-191">  @Override</span>
-<span class="source-line-no">192</span><span id="line-192">  public String toString() {</span>
-<span class="source-line-no">193</span><span id="line-193">    return "StoreFileScanner[" + hfs.toString() + ", cur=" + cur + "]";</span>
-<span class="source-line-no">194</span><span id="line-194">  }</span>
-<span class="source-line-no">195</span><span id="line-195"></span>
-<span class="source-line-no">196</span><span id="line-196">  @Override</span>
-<span class="source-line-no">197</span><span id="line-197">  public ExtendedCell peek() {</span>
-<span class="source-line-no">198</span><span id="line-198">    return cur;</span>
-<span class="source-line-no">199</span><span id="line-199">  }</span>
-<span class="source-line-no">200</span><span id="line-200"></span>
-<span class="source-line-no">201</span><span id="line-201">  @Override</span>
-<span class="source-line-no">202</span><span id="line-202">  public ExtendedCell next() throws IOException {</span>
-<span class="source-line-no">203</span><span id="line-203">    ExtendedCell retKey = cur;</span>
-<span class="source-line-no">204</span><span id="line-204"></span>
-<span class="source-line-no">205</span><span id="line-205">    try {</span>
-<span class="source-line-no">206</span><span id="line-206">      // only seek if we aren't at the end. cur == null implies 'end'.</span>
-<span class="source-line-no">207</span><span id="line-207">      if (cur != null) {</span>
-<span class="source-line-no">208</span><span id="line-208">        hfs.next();</span>
-<span class="source-line-no">209</span><span id="line-209">        setCurrentCell(hfs.getCell());</span>
-<span class="source-line-no">210</span><span id="line-210">        if (hasMVCCInfo || this.reader.isBulkLoaded()) {</span>
-<span class="source-line-no">211</span><span id="line-211">          skipKVsNewerThanReadpoint();</span>
-<span class="source-line-no">212</span><span id="line-212">        }</span>
-<span class="source-line-no">213</span><span id="line-213">      }</span>
-<span class="source-line-no">214</span><span id="line-214">    } catch (FileNotFoundException e) {</span>
-<span class="source-line-no">215</span><span id="line-215">      throw e;</span>
-<span class="source-line-no">216</span><span id="line-216">    } catch (IOException e) {</span>
-<span class="source-line-no">217</span><span id="line-217">      throw new IOException("Could not iterate " + this, e);</span>
-<span class="source-line-no">218</span><span id="line-218">    }</span>
-<span class="source-line-no">219</span><span id="line-219">    return retKey;</span>
-<span class="source-line-no">220</span><span id="line-220">  }</span>
-<span class="source-line-no">221</span><span id="line-221"></span>
-<span class="source-line-no">222</span><span id="line-222">  @Override</span>
-<span class="source-line-no">223</span><span id="line-223">  public boolean seek(ExtendedCell key) throws IOException {</span>
-<span class="source-line-no">224</span><span id="line-224">    if (seekCount != null) seekCount.increment();</span>
-<span class="source-line-no">225</span><span id="line-225"></span>
-<span class="source-line-no">226</span><span id="line-226">    try {</span>
-<span class="source-line-no">227</span><span id="line-227">      try {</span>
-<span class="source-line-no">228</span><span id="line-228">        if (!seekAtOrAfter(hfs, key)) {</span>
-<span class="source-line-no">229</span><span id="line-229">          this.cur = null;</span>
-<span class="source-line-no">230</span><span id="line-230">          return false;</span>
-<span class="source-line-no">231</span><span id="line-231">        }</span>
-<span class="source-line-no">232</span><span id="line-232"></span>
-<span class="source-line-no">233</span><span id="line-233">        setCurrentCell(hfs.getCell());</span>
-<span class="source-line-no">234</span><span id="line-234"></span>
-<span class="source-line-no">235</span><span id="line-235">        if (!hasMVCCInfo &amp;&amp; this.reader.isBulkLoaded()) {</span>
-<span class="source-line-no">236</span><span id="line-236">          return skipKVsNewerThanReadpoint();</span>
-<span class="source-line-no">237</span><span id="line-237">        } else {</span>
-<span class="source-line-no">238</span><span id="line-238">          return !hasMVCCInfo ? true : skipKVsNewerThanReadpoint();</span>
-<span class="source-line-no">239</span><span id="line-239">        }</span>
-<span class="source-line-no">240</span><span id="line-240">      } finally {</span>
-<span class="source-line-no">241</span><span id="line-241">        realSeekDone = true;</span>
-<span class="source-line-no">242</span><span id="line-242">        previousRow = null;</span>
-<span class="source-line-no">243</span><span id="line-243">      }</span>
-<span class="source-line-no">244</span><span id="line-244">    } catch (FileNotFoundException e) {</span>
-<span class="source-line-no">245</span><span id="line-245">      throw e;</span>
-<span class="source-line-no">246</span><span id="line-246">    } catch (IOException ioe) {</span>
-<span class="source-line-no">247</span><span id="line-247">      throw new IOException("Could not seek " + this + " to key " + key, ioe);</span>
-<span class="source-line-no">248</span><span id="line-248">    }</span>
-<span class="source-line-no">249</span><span id="line-249">  }</span>
-<span class="source-line-no">250</span><span id="line-250"></span>
-<span class="source-line-no">251</span><span id="line-251">  @Override</span>
-<span class="source-line-no">252</span><span id="line-252">  public boolean reseek(ExtendedCell key) throws IOException {</span>
-<span class="source-line-no">253</span><span id="line-253">    if (seekCount != null) seekCount.increment();</span>
-<span class="source-line-no">254</span><span id="line-254"></span>
-<span class="source-line-no">255</span><span id="line-255">    try {</span>
-<span class="source-line-no">256</span><span id="line-256">      try {</span>
-<span class="source-line-no">257</span><span id="line-257">        if (!reseekAtOrAfter(hfs, key)) {</span>
-<span class="source-line-no">258</span><span id="line-258">          this.cur = null;</span>
-<span class="source-line-no">259</span><span id="line-259">          return false;</span>
-<span class="source-line-no">260</span><span id="line-260">        }</span>
-<span class="source-line-no">261</span><span id="line-261">        setCurrentCell(hfs.getCell());</span>
-<span class="source-line-no">262</span><span id="line-262"></span>
-<span class="source-line-no">263</span><span id="line-263">        if (!hasMVCCInfo &amp;&amp; this.reader.isBulkLoaded()) {</span>
-<span class="source-line-no">264</span><span id="line-264">          return skipKVsNewerThanReadpoint();</span>
-<span class="source-line-no">265</span><span id="line-265">        } else {</span>
-<span class="source-line-no">266</span><span id="line-266">          return !hasMVCCInfo ? true : skipKVsNewerThanReadpoint();</span>
-<span class="source-line-no">267</span><span id="line-267">        }</span>
-<span class="source-line-no">268</span><span id="line-268">      } finally {</span>
-<span class="source-line-no">269</span><span id="line-269">        realSeekDone = true;</span>
-<span class="source-line-no">270</span><span id="line-270">        previousRow = null;</span>
-<span class="source-line-no">271</span><span id="line-271">      }</span>
-<span class="source-line-no">272</span><span id="line-272">    } catch (FileNotFoundException e) {</span>
-<span class="source-line-no">273</span><span id="line-273">      throw e;</span>
-<span class="source-line-no">274</span><span id="line-274">    } catch (IOException ioe) {</span>
-<span class="source-line-no">275</span><span id="line-275">      throw new IOException("Could not reseek " + this + " to key " + key, ioe);</span>
-<span class="source-line-no">276</span><span id="line-276">    }</span>
-<span class="source-line-no">277</span><span id="line-277">  }</span>
-<span class="source-line-no">278</span><span id="line-278"></span>
-<span class="source-line-no">279</span><span id="line-279">  protected void setCurrentCell(ExtendedCell newVal) throws IOException {</span>
-<span class="source-line-no">280</span><span id="line-280">    this.cur = newVal;</span>
-<span class="source-line-no">281</span><span id="line-281">    if (this.cur != null &amp;&amp; this.reader.isBulkLoaded() &amp;&amp; !this.reader.isSkipResetSeqId()) {</span>
-<span class="source-line-no">282</span><span id="line-282">      PrivateCellUtil.setSequenceId(cur, this.reader.getSequenceID());</span>
-<span class="source-line-no">283</span><span id="line-283">    }</span>
-<span class="source-line-no">284</span><span id="line-284">  }</span>
-<span class="source-line-no">285</span><span id="line-285"></span>
-<span class="source-line-no">286</span><span id="line-286">  protected boolean skipKVsNewerThanReadpoint() throws IOException {</span>
-<span class="source-line-no">287</span><span id="line-287">    // We want to ignore all key-values that are newer than our current</span>
-<span class="source-line-no">288</span><span id="line-288">    // readPoint</span>
-<span class="source-line-no">289</span><span id="line-289">    Cell startKV = cur;</span>
-<span class="source-line-no">290</span><span id="line-290">    while (enforceMVCC &amp;&amp; cur != null &amp;&amp; (cur.getSequenceId() &gt; readPt)) {</span>
-<span class="source-line-no">291</span><span id="line-291">      boolean hasNext = hfs.next();</span>
-<span class="source-line-no">292</span><span id="line-292">      setCurrentCell(hfs.getCell());</span>
-<span class="source-line-no">293</span><span id="line-293">      if (</span>
-<span class="source-line-no">294</span><span id="line-294">        hasNext &amp;&amp; this.stopSkippingKVsIfNextRow &amp;&amp; getComparator().compareRows(cur, startKV) &gt; 0</span>
-<span class="source-line-no">295</span><span id="line-295">      ) {</span>
-<span class="source-line-no">296</span><span id="line-296">        return false;</span>
-<span class="source-line-no">297</span><span id="line-297">      }</span>
-<span class="source-line-no">298</span><span id="line-298">    }</span>
-<span class="source-line-no">299</span><span id="line-299"></span>
-<span class="source-line-no">300</span><span id="line-300">    if (cur == null) {</span>
-<span class="source-line-no">301</span><span id="line-301">      return false;</span>
-<span class="source-line-no">302</span><span id="line-302">    }</span>
-<span class="source-line-no">303</span><span id="line-303"></span>
-<span class="source-line-no">304</span><span id="line-304">    return true;</span>
-<span class="source-line-no">305</span><span id="line-305">  }</span>
+<span class="source-line-no">066</span><span id="line-66">  // Note: Oftentimes this will contain an instance of a KeyOnly implementation of the Cell as it's</span>
+<span class="source-line-no">067</span><span id="line-67">  // not returned to callers and only used as a hint for seeking (so we can save on</span>
+<span class="source-line-no">068</span><span id="line-68">  // memory/allocations)</span>
+<span class="source-line-no">069</span><span id="line-69">  private ExtendedCell previousRow = null;</span>
+<span class="source-line-no">070</span><span id="line-70">  // Whether the underlying HFile is using a data block encoding that has lower cost for seeking to</span>
+<span class="source-line-no">071</span><span id="line-71">  // a row from the beginning of a block (i.e. RIV1). If the data block encoding has a high cost for</span>
+<span class="source-line-no">072</span><span id="line-72">  // seeks, then we can use a modified reverse scanning algorithm to reduce seeks from the beginning</span>
+<span class="source-line-no">073</span><span id="line-73">  // of the block</span>
+<span class="source-line-no">074</span><span id="line-74">  private final boolean isFastSeekingEncoding;</span>
+<span class="source-line-no">075</span><span id="line-75"></span>
+<span class="source-line-no">076</span><span id="line-76">  private static LongAdder seekCount;</span>
+<span class="source-line-no">077</span><span id="line-77"></span>
+<span class="source-line-no">078</span><span id="line-78">  private final boolean canOptimizeForNonNullColumn;</span>
+<span class="source-line-no">079</span><span id="line-79"></span>
+<span class="source-line-no">080</span><span id="line-80">  private final long readPt;</span>
+<span class="source-line-no">081</span><span id="line-81"></span>
+<span class="source-line-no">082</span><span id="line-82">  // Order of this scanner relative to other scanners when duplicate key-value is found.</span>
+<span class="source-line-no">083</span><span id="line-83">  // Higher values means scanner has newer data.</span>
+<span class="source-line-no">084</span><span id="line-84">  private final long scannerOrder;</span>
+<span class="source-line-no">085</span><span id="line-85"></span>
+<span class="source-line-no">086</span><span id="line-86">  /**</span>
+<span class="source-line-no">087</span><span id="line-87">   * Implements a {@link KeyValueScanner} on top of the specified {@link HFileScanner}</span>
+<span class="source-line-no">088</span><span id="line-88">   * @param useMVCC                     If true, scanner will filter out updates with MVCC larger</span>
+<span class="source-line-no">089</span><span id="line-89">   *                                    than {@code readPt}.</span>
+<span class="source-line-no">090</span><span id="line-90">   * @param readPt                      MVCC value to use to filter out the updates newer than this</span>
+<span class="source-line-no">091</span><span id="line-91">   *                                    scanner.</span>
+<span class="source-line-no">092</span><span id="line-92">   * @param hasMVCC                     Set to true if underlying store file reader has MVCC info.</span>
+<span class="source-line-no">093</span><span id="line-93">   * @param scannerOrder                Order of the scanner relative to other scanners. See</span>
+<span class="source-line-no">094</span><span id="line-94">   *                                    {@link KeyValueScanner#getScannerOrder()}.</span>
+<span class="source-line-no">095</span><span id="line-95">   * @param canOptimizeForNonNullColumn {@code true} if we can make sure there is no null column,</span>
+<span class="source-line-no">096</span><span id="line-96">   *                                    otherwise {@code false}. This is a hint for optimization.</span>
+<span class="source-line-no">097</span><span id="line-97">   * @param isFastSeekingEncoding       {@code true} if the data block encoding can seek quickly</span>
+<span class="source-line-no">098</span><span id="line-98">   *                                    from the beginning of a block (i.e. RIV1), otherwise</span>
+<span class="source-line-no">099</span><span id="line-99">   *                                    {@code false}. This is a hint for optimization.</span>
+<span class="source-line-no">100</span><span id="line-100">   */</span>
+<span class="source-line-no">101</span><span id="line-101">  public StoreFileScanner(StoreFileReader reader, HFileScanner hfs, boolean useMVCC,</span>
+<span class="source-line-no">102</span><span id="line-102">    boolean hasMVCC, long readPt, long scannerOrder, boolean canOptimizeForNonNullColumn,</span>
+<span class="source-line-no">103</span><span id="line-103">    boolean isFastSeekingEncoding) {</span>
+<span class="source-line-no">104</span><span id="line-104">    this.readPt = readPt;</span>
+<span class="source-line-no">105</span><span id="line-105">    this.reader = reader;</span>
+<span class="source-line-no">106</span><span id="line-106">    this.hfs = hfs;</span>
+<span class="source-line-no">107</span><span id="line-107">    this.enforceMVCC = useMVCC;</span>
+<span class="source-line-no">108</span><span id="line-108">    this.hasMVCCInfo = hasMVCC;</span>
+<span class="source-line-no">109</span><span id="line-109">    this.scannerOrder = scannerOrder;</span>
+<span class="source-line-no">110</span><span id="line-110">    this.canOptimizeForNonNullColumn = canOptimizeForNonNullColumn;</span>
+<span class="source-line-no">111</span><span id="line-111">    this.isFastSeekingEncoding = isFastSeekingEncoding;</span>
+<span class="source-line-no">112</span><span id="line-112">    this.reader.incrementRefCount();</span>
+<span class="source-line-no">113</span><span id="line-113">  }</span>
+<span class="source-line-no">114</span><span id="line-114"></span>
+<span class="source-line-no">115</span><span id="line-115">  /**</span>
+<span class="source-line-no">116</span><span id="line-116">   * Return an array of scanners corresponding to the given set of store files.</span>
+<span class="source-line-no">117</span><span id="line-117">   */</span>
+<span class="source-line-no">118</span><span id="line-118">  public static List&lt;StoreFileScanner&gt; getScannersForStoreFiles(Collection&lt;HStoreFile&gt; files,</span>
+<span class="source-line-no">119</span><span id="line-119">    boolean cacheBlocks, boolean usePread, boolean isCompaction, boolean useDropBehind, long readPt)</span>
+<span class="source-line-no">120</span><span id="line-120">    throws IOException {</span>
+<span class="source-line-no">121</span><span id="line-121">    return getScannersForStoreFiles(files, cacheBlocks, usePread, isCompaction, useDropBehind, null,</span>
+<span class="source-line-no">122</span><span id="line-122">      readPt);</span>
+<span class="source-line-no">123</span><span id="line-123">  }</span>
+<span class="source-line-no">124</span><span id="line-124"></span>
+<span class="source-line-no">125</span><span id="line-125">  /**</span>
+<span class="source-line-no">126</span><span id="line-126">   * Return an array of scanners corresponding to the given set of store files, And set the</span>
+<span class="source-line-no">127</span><span id="line-127">   * ScanQueryMatcher for each store file scanner for further optimization</span>
+<span class="source-line-no">128</span><span id="line-128">   */</span>
+<span class="source-line-no">129</span><span id="line-129">  public static List&lt;StoreFileScanner&gt; getScannersForStoreFiles(Collection&lt;HStoreFile&gt; files,</span>
+<span class="source-line-no">130</span><span id="line-130">    boolean cacheBlocks, boolean usePread, boolean isCompaction, boolean canUseDrop,</span>
+<span class="source-line-no">131</span><span id="line-131">    ScanQueryMatcher matcher, long readPt) throws IOException {</span>
+<span class="source-line-no">132</span><span id="line-132">    if (files.isEmpty()) {</span>
+<span class="source-line-no">133</span><span id="line-133">      return Collections.emptyList();</span>
+<span class="source-line-no">134</span><span id="line-134">    }</span>
+<span class="source-line-no">135</span><span id="line-135">    List&lt;StoreFileScanner&gt; scanners = new ArrayList&lt;&gt;(files.size());</span>
+<span class="source-line-no">136</span><span id="line-136">    boolean canOptimizeForNonNullColumn = matcher != null ? !matcher.hasNullColumnInQuery() : false;</span>
+<span class="source-line-no">137</span><span id="line-137">    PriorityQueue&lt;HStoreFile&gt; sortedFiles =</span>
+<span class="source-line-no">138</span><span id="line-138">      new PriorityQueue&lt;&gt;(files.size(), StoreFileComparators.SEQ_ID);</span>
+<span class="source-line-no">139</span><span id="line-139">    for (HStoreFile file : files) {</span>
+<span class="source-line-no">140</span><span id="line-140">      // The sort function needs metadata so we need to open reader first before sorting the list.</span>
+<span class="source-line-no">141</span><span id="line-141">      file.initReader();</span>
+<span class="source-line-no">142</span><span id="line-142">      sortedFiles.add(file);</span>
+<span class="source-line-no">143</span><span id="line-143">    }</span>
+<span class="source-line-no">144</span><span id="line-144">    boolean succ = false;</span>
+<span class="source-line-no">145</span><span id="line-145">    try {</span>
+<span class="source-line-no">146</span><span id="line-146">      for (int i = 0, n = files.size(); i &lt; n; i++) {</span>
+<span class="source-line-no">147</span><span id="line-147">        HStoreFile sf = sortedFiles.remove();</span>
+<span class="source-line-no">148</span><span id="line-148">        StoreFileScanner scanner;</span>
+<span class="source-line-no">149</span><span id="line-149">        if (usePread) {</span>
+<span class="source-line-no">150</span><span id="line-150">          scanner = sf.getPreadScanner(cacheBlocks, readPt, i, canOptimizeForNonNullColumn);</span>
+<span class="source-line-no">151</span><span id="line-151">        } else {</span>
+<span class="source-line-no">152</span><span id="line-152">          scanner = sf.getStreamScanner(canUseDrop, cacheBlocks, isCompaction, readPt, i,</span>
+<span class="source-line-no">153</span><span id="line-153">            canOptimizeForNonNullColumn);</span>
+<span class="source-line-no">154</span><span id="line-154">        }</span>
+<span class="source-line-no">155</span><span id="line-155">        scanners.add(scanner);</span>
+<span class="source-line-no">156</span><span id="line-156">      }</span>
+<span class="source-line-no">157</span><span id="line-157">      succ = true;</span>
+<span class="source-line-no">158</span><span id="line-158">    } finally {</span>
+<span class="source-line-no">159</span><span id="line-159">      if (!succ) {</span>
+<span class="source-line-no">160</span><span id="line-160">        for (StoreFileScanner scanner : scanners) {</span>
+<span class="source-line-no">161</span><span id="line-161">          scanner.close();</span>
+<span class="source-line-no">162</span><span id="line-162">        }</span>
+<span class="source-line-no">163</span><span id="line-163">      }</span>
+<span class="source-line-no">164</span><span id="line-164">    }</span>
+<span class="source-line-no">165</span><span id="line-165">    return scanners;</span>
+<span class="source-line-no">166</span><span id="line-166">  }</span>
+<span class="source-line-no">167</span><span id="line-167"></span>
+<span class="source-line-no">168</span><span id="line-168">  /**</span>
+<span class="source-line-no">169</span><span id="line-169">   * Get scanners for compaction. We will create a separated reader for each store file to avoid</span>
+<span class="source-line-no">170</span><span id="line-170">   * contention with normal read request.</span>
+<span class="source-line-no">171</span><span id="line-171">   */</span>
+<span class="source-line-no">172</span><span id="line-172">  public static List&lt;StoreFileScanner&gt; getScannersForCompaction(Collection&lt;HStoreFile&gt; files,</span>
+<span class="source-line-no">173</span><span id="line-173">    boolean canUseDropBehind, long readPt) throws IOException {</span>
+<span class="source-line-no">174</span><span id="line-174">    List&lt;StoreFileScanner&gt; scanners = new ArrayList&lt;&gt;(files.size());</span>
+<span class="source-line-no">175</span><span id="line-175">    List&lt;HStoreFile&gt; sortedFiles = new ArrayList&lt;&gt;(files);</span>
+<span class="source-line-no">176</span><span id="line-176">    Collections.sort(sortedFiles, StoreFileComparators.SEQ_ID);</span>
+<span class="source-line-no">177</span><span id="line-177">    boolean succ = false;</span>
+<span class="source-line-no">178</span><span id="line-178">    try {</span>
+<span class="source-line-no">179</span><span id="line-179">      for (int i = 0, n = sortedFiles.size(); i &lt; n; i++) {</span>
+<span class="source-line-no">180</span><span id="line-180">        scanners.add(</span>
+<span class="source-line-no">181</span><span id="line-181">          sortedFiles.get(i).getStreamScanner(canUseDropBehind, false, true, readPt, i, false));</span>
+<span class="source-line-no">182</span><span id="line-182">      }</span>
+<span class="source-line-no">183</span><span id="line-183">      succ = true;</span>
+<span class="source-line-no">184</span><span id="line-184">    } finally {</span>
+<span class="source-line-no">185</span><span id="line-185">      if (!succ) {</span>
+<span class="source-line-no">186</span><span id="line-186">        for (StoreFileScanner scanner : scanners) {</span>
+<span class="source-line-no">187</span><span id="line-187">          scanner.close();</span>
+<span class="source-line-no">188</span><span id="line-188">        }</span>
+<span class="source-line-no">189</span><span id="line-189">      }</span>
+<span class="source-line-no">190</span><span id="line-190">    }</span>
+<span class="source-line-no">191</span><span id="line-191">    return scanners;</span>
+<span class="source-line-no">192</span><span id="line-192">  }</span>
+<span class="source-line-no">193</span><span id="line-193"></span>
+<span class="source-line-no">194</span><span id="line-194">  @Override</span>
+<span class="source-line-no">195</span><span id="line-195">  public String toString() {</span>
+<span class="source-line-no">196</span><span id="line-196">    return "StoreFileScanner[" + hfs.toString() + ", cur=" + cur + "]";</span>
+<span class="source-line-no">197</span><span id="line-197">  }</span>
+<span class="source-line-no">198</span><span id="line-198"></span>
+<span class="source-line-no">199</span><span id="line-199">  @Override</span>
+<span class="source-line-no">200</span><span id="line-200">  public ExtendedCell peek() {</span>
+<span class="source-line-no">201</span><span id="line-201">    return cur;</span>
+<span class="source-line-no">202</span><span id="line-202">  }</span>
+<span class="source-line-no">203</span><span id="line-203"></span>
+<span class="source-line-no">204</span><span id="line-204">  @Override</span>
+<span class="source-line-no">205</span><span id="line-205">  public ExtendedCell next() throws IOException {</span>
+<span class="source-line-no">206</span><span id="line-206">    ExtendedCell retKey = cur;</span>
+<span class="source-line-no">207</span><span id="line-207"></span>
+<span class="source-line-no">208</span><span id="line-208">    try {</span>
+<span class="source-line-no">209</span><span id="line-209">      // only seek if we aren't at the end. cur == null implies 'end'.</span>
+<span class="source-line-no">210</span><span id="line-210">      if (cur != null) {</span>
+<span class="source-line-no">211</span><span id="line-211">        hfs.next();</span>
+<span class="source-line-no">212</span><span id="line-212">        setCurrentCell(hfs.getCell());</span>
+<span class="source-line-no">213</span><span id="line-213">        if (hasMVCCInfo || this.reader.isBulkLoaded()) {</span>
+<span class="source-line-no">214</span><span id="line-214">          skipKVsNewerThanReadpoint();</span>
+<span class="source-line-no">215</span><span id="line-215">        }</span>
+<span class="source-line-no">216</span><span id="line-216">      }</span>
+<span class="source-line-no">217</span><span id="line-217">    } catch (FileNotFoundException e) {</span>
+<span class="source-line-no">218</span><span id="line-218">      throw e;</span>
+<span class="source-line-no">219</span><span id="line-219">    } catch (IOException e) {</span>
+<span class="source-line-no">220</span><span id="line-220">      throw new IOException("Could not iterate " + this, e);</span>
+<span class="source-line-no">221</span><span id="line-221">    }</span>
+<span class="source-line-no">222</span><span id="line-222">    return retKey;</span>
+<span class="source-line-no">223</span><span id="line-223">  }</span>
+<span class="source-line-no">224</span><span id="line-224"></span>
+<span class="source-line-no">225</span><span id="line-225">  @Override</span>
+<span class="source-line-no">226</span><span id="line-226">  public boolean seek(ExtendedCell key) throws IOException {</span>
+<span class="source-line-no">227</span><span id="line-227">    if (seekCount != null) seekCount.increment();</span>
+<span class="source-line-no">228</span><span id="line-228"></span>
+<span class="source-line-no">229</span><span id="line-229">    try {</span>
+<span class="source-line-no">230</span><span id="line-230">      try {</span>
+<span class="source-line-no">231</span><span id="line-231">        if (!seekAtOrAfter(hfs, key)) {</span>
+<span class="source-line-no">232</span><span id="line-232">          this.cur = null;</span>
+<span class="source-line-no">233</span><span id="line-233">          return false;</span>
+<span class="source-line-no">234</span><span id="line-234">        }</span>
+<span class="source-line-no">235</span><span id="line-235"></span>
+<span class="source-line-no">236</span><span id="line-236">        setCurrentCell(hfs.getCell());</span>
+<span class="source-line-no">237</span><span id="line-237"></span>
+<span class="source-line-no">238</span><span id="line-238">        if (!hasMVCCInfo &amp;&amp; this.reader.isBulkLoaded()) {</span>
+<span class="source-line-no">239</span><span id="line-239">          return skipKVsNewerThanReadpoint();</span>
+<span class="source-line-no">240</span><span id="line-240">        } else {</span>
+<span class="source-line-no">241</span><span id="line-241">          return !hasMVCCInfo ? true : skipKVsNewerThanReadpoint();</span>
+<span class="source-line-no">242</span><span id="line-242">        }</span>
+<span class="source-line-no">243</span><span id="line-243">      } finally {</span>
+<span class="source-line-no">244</span><span id="line-244">        realSeekDone = true;</span>
+<span class="source-line-no">245</span><span id="line-245">        previousRow = null;</span>
+<span class="source-line-no">246</span><span id="line-246">      }</span>
+<span class="source-line-no">247</span><span id="line-247">    } catch (FileNotFoundException e) {</span>
+<span class="source-line-no">248</span><span id="line-248">      throw e;</span>
+<span class="source-line-no">249</span><span id="line-249">    } catch (IOException ioe) {</span>
+<span class="source-line-no">250</span><span id="line-250">      throw new IOException("Could not seek " + this + " to key " + key, ioe);</span>
+<span class="source-line-no">251</span><span id="line-251">    }</span>
+<span class="source-line-no">252</span><span id="line-252">  }</span>
+<span class="source-line-no">253</span><span id="line-253"></span>
+<span class="source-line-no">254</span><span id="line-254">  @Override</span>
+<span class="source-line-no">255</span><span id="line-255">  public boolean reseek(ExtendedCell key) throws IOException {</span>
+<span class="source-line-no">256</span><span id="line-256">    if (seekCount != null) seekCount.increment();</span>
+<span class="source-line-no">257</span><span id="line-257"></span>
+<span class="source-line-no">258</span><span id="line-258">    try {</span>
+<span class="source-line-no">259</span><span id="line-259">      try {</span>
+<span class="source-line-no">260</span><span id="line-260">        if (!reseekAtOrAfter(hfs, key)) {</span>
+<span class="source-line-no">261</span><span id="line-261">          this.cur = null;</span>
+<span class="source-line-no">262</span><span id="line-262">          return false;</span>
+<span class="source-line-no">263</span><span id="line-263">        }</span>
+<span class="source-line-no">264</span><span id="line-264">        setCurrentCell(hfs.getCell());</span>
+<span class="source-line-no">265</span><span id="line-265"></span>
+<span class="source-line-no">266</span><span id="line-266">        if (!hasMVCCInfo &amp;&amp; this.reader.isBulkLoaded()) {</span>
+<span class="source-line-no">267</span><span id="line-267">          return skipKVsNewerThanReadpoint();</span>
+<span class="source-line-no">268</span><span id="line-268">        } else {</span>
+<span class="source-line-no">269</span><span id="line-269">          return !hasMVCCInfo ? true : skipKVsNewerThanReadpoint();</span>
+<span class="source-line-no">270</span><span id="line-270">        }</span>
+<span class="source-line-no">271</span><span id="line-271">      } finally {</span>
+<span class="source-line-no">272</span><span id="line-272">        realSeekDone = true;</span>
+<span class="source-line-no">273</span><span id="line-273">        previousRow = null;</span>
+<span class="source-line-no">274</span><span id="line-274">      }</span>
+<span class="source-line-no">275</span><span id="line-275">    } catch (FileNotFoundException e) {</span>
+<span class="source-line-no">276</span><span id="line-276">      throw e;</span>
+<span class="source-line-no">277</span><span id="line-277">    } catch (IOException ioe) {</span>
+<span class="source-line-no">278</span><span id="line-278">      throw new IOException("Could not reseek " + this + " to key " + key, ioe);</span>
+<span class="source-line-no">279</span><span id="line-279">    }</span>
+<span class="source-line-no">280</span><span id="line-280">  }</span>
+<span class="source-line-no">281</span><span id="line-281"></span>
+<span class="source-line-no">282</span><span id="line-282">  protected void setCurrentCell(ExtendedCell newVal) throws IOException {</span>
+<span class="source-line-no">283</span><span id="line-283">    this.cur = newVal;</span>
+<span class="source-line-no">284</span><span id="line-284">    if (this.cur != null &amp;&amp; this.reader.isBulkLoaded() &amp;&amp; !this.reader.isSkipResetSeqId()) {</span>
+<span class="source-line-no">285</span><span id="line-285">      PrivateCellUtil.setSequenceId(cur, this.reader.getSequenceID());</span>
+<span class="source-line-no">286</span><span id="line-286">    }</span>
+<span class="source-line-no">287</span><span id="line-287">  }</span>
+<span class="source-line-no">288</span><span id="line-288"></span>
+<span class="source-line-no">289</span><span id="line-289">  protected boolean skipKVsNewerThanReadpoint() throws IOException {</span>
+<span class="source-line-no">290</span><span id="line-290">    // We want to ignore all key-values that are newer than our current</span>
+<span class="source-line-no">291</span><span id="line-291">    // readPoint</span>
+<span class="source-line-no">292</span><span id="line-292">    Cell startKV = cur;</span>
+<span class="source-line-no">293</span><span id="line-293">    while (enforceMVCC &amp;&amp; cur != null &amp;&amp; (cur.getSequenceId() &gt; readPt)) {</span>
+<span class="source-line-no">294</span><span id="line-294">      boolean hasNext = hfs.next();</span>
+<span class="source-line-no">295</span><span id="line-295">      setCurrentCell(hfs.getCell());</span>
+<span class="source-line-no">296</span><span id="line-296">      if (</span>
+<span class="source-line-no">297</span><span id="line-297">        hasNext &amp;&amp; this.stopSkippingKVsIfNextRow &amp;&amp; getComparator().compareRows(cur, startKV) &gt; 0</span>
+<span class="source-line-no">298</span><span id="line-298">      ) {</span>
+<span class="source-line-no">299</span><span id="line-299">        return false;</span>
+<span class="source-line-no">300</span><span id="line-300">      }</span>
+<span class="source-line-no">301</span><span id="line-301">    }</span>
+<span class="source-line-no">302</span><span id="line-302"></span>
+<span class="source-line-no">303</span><span id="line-303">    if (cur == null) {</span>
+<span class="source-line-no">304</span><span id="line-304">      return false;</span>
+<span class="source-line-no">305</span><span id="line-305">    }</span>
 <span class="source-line-no">306</span><span id="line-306"></span>
-<span class="source-line-no">307</span><span id="line-307">  @Override</span>
-<span class="source-line-no">308</span><span id="line-308">  public void close() {</span>
-<span class="source-line-no">309</span><span id="line-309">    if (closed) return;</span>
-<span class="source-line-no">310</span><span id="line-310">    cur = null;</span>
-<span class="source-line-no">311</span><span id="line-311">    this.hfs.close();</span>
-<span class="source-line-no">312</span><span id="line-312">    if (this.reader != null) {</span>
-<span class="source-line-no">313</span><span id="line-313">      this.reader.readCompleted();</span>
-<span class="source-line-no">314</span><span id="line-314">    }</span>
-<span class="source-line-no">315</span><span id="line-315">    closed = true;</span>
-<span class="source-line-no">316</span><span id="line-316">  }</span>
-<span class="source-line-no">317</span><span id="line-317"></span>
-<span class="source-line-no">318</span><span id="line-318">  /** Returns false if not found or if k is after the end. */</span>
-<span class="source-line-no">319</span><span id="line-319">  public static boolean seekAtOrAfter(HFileScanner s, ExtendedCell k) throws IOException {</span>
-<span class="source-line-no">320</span><span id="line-320">    int result = s.seekTo(k);</span>
-<span class="source-line-no">321</span><span id="line-321">    if (result &lt; 0) {</span>
-<span class="source-line-no">322</span><span id="line-322">      if (result == HConstants.INDEX_KEY_MAGIC) {</span>
-<span class="source-line-no">323</span><span id="line-323">        // using faked key</span>
-<span class="source-line-no">324</span><span id="line-324">        return true;</span>
-<span class="source-line-no">325</span><span id="line-325">      }</span>
-<span class="source-line-no">326</span><span id="line-326">      // Passed KV is smaller than first KV in file, work from start of file</span>
-<span class="source-line-no">327</span><span id="line-327">      return s.seekTo();</span>
-<span class="source-line-no">328</span><span id="line-328">    } else if (result &gt; 0) {</span>
-<span class="source-line-no">329</span><span id="line-329">      // Passed KV is larger than current KV in file, if there is a next</span>
-<span class="source-line-no">330</span><span id="line-330">      // it is the "after", if not then this scanner is done.</span>
-<span class="source-line-no">331</span><span id="line-331">      return s.next();</span>
-<span class="source-line-no">332</span><span id="line-332">    }</span>
-<span class="source-line-no">333</span><span id="line-333">    // Seeked to the exact key</span>
-<span class="source-line-no">334</span><span id="line-334">    return true;</span>
-<span class="source-line-no">335</span><span id="line-335">  }</span>
-<span class="source-line-no">336</span><span id="line-336"></span>
-<span class="source-line-no">337</span><span id="line-337">  static boolean reseekAtOrAfter(HFileScanner s, ExtendedCell k) throws IOException {</span>
-<span class="source-line-no">338</span><span id="line-338">    // This function is similar to seekAtOrAfter function</span>
-<span class="source-line-no">339</span><span id="line-339">    int result = s.reseekTo(k);</span>
-<span class="source-line-no">340</span><span id="line-340">    if (result &lt;= 0) {</span>
-<span class="source-line-no">341</span><span id="line-341">      if (result == HConstants.INDEX_KEY_MAGIC) {</span>
-<span class="source-line-no">342</span><span id="line-342">        // using faked key</span>
-<span class="source-line-no">343</span><span id="line-343">        return true;</span>
-<span class="source-line-no">344</span><span id="line-344">      }</span>
-<span class="source-line-no">345</span><span id="line-345">      // If up to now scanner is not seeked yet, this means passed KV is smaller</span>
-<span class="source-line-no">346</span><span id="line-346">      // than first KV in file, and it is the first time we seek on this file.</span>
-<span class="source-line-no">347</span><span id="line-347">      // So we also need to work from the start of file.</span>
-<span class="source-line-no">348</span><span id="line-348">      if (!s.isSeeked()) {</span>
-<span class="source-line-no">349</span><span id="line-349">        return s.seekTo();</span>
-<span class="source-line-no">350</span><span id="line-350">      }</span>
-<span class="source-line-no">351</span><span id="line-351">      return true;</span>
-<span class="source-line-no">352</span><span id="line-352">    }</span>
-<span class="source-line-no">353</span><span id="line-353">    // passed KV is larger than current KV in file, if there is a next</span>
-<span class="source-line-no">354</span><span id="line-354">    // it is after, if not then this scanner is done.</span>
-<span class="source-line-no">355</span><span id="line-355">    return s.next();</span>
-<span class="source-line-no">356</span><span id="line-356">  }</span>
-<span class="source-line-no">357</span><span id="line-357"></span>
-<span class="source-line-no">358</span><span id="line-358">  /**</span>
-<span class="source-line-no">359</span><span id="line-359">   * @see KeyValueScanner#getScannerOrder()</span>
-<span class="source-line-no">360</span><span id="line-360">   */</span>
-<span class="source-line-no">361</span><span id="line-361">  @Override</span>
-<span class="source-line-no">362</span><span id="line-362">  public long getScannerOrder() {</span>
-<span class="source-line-no">363</span><span id="line-363">    return scannerOrder;</span>
-<span class="source-line-no">364</span><span id="line-364">  }</span>
-<span class="source-line-no">365</span><span id="line-365"></span>
-<span class="source-line-no">366</span><span id="line-366">  /**</span>
-<span class="source-line-no">367</span><span id="line-367">   * Pretend we have done a seek but don't do it yet, if possible. The hope is that we find</span>
-<span class="source-line-no">368</span><span id="line-368">   * requested columns in more recent files and won't have to seek in older files. Creates a fake</span>
-<span class="source-line-no">369</span><span id="line-369">   * key/value with the given row/column and the highest (most recent) possible timestamp we might</span>
-<span class="source-line-no">370</span><span id="line-370">   * get from this file. When users of such "lazy scanner" need to know the next KV precisely (e.g.</span>
-<span class="source-line-no">371</span><span id="line-371">   * when this scanner is at the top of the heap), they run {@link #enforceSeek()}.</span>
-<span class="source-line-no">372</span><span id="line-372">   * &lt;p&gt;</span>
-<span class="source-line-no">373</span><span id="line-373">   * Note that this function does guarantee that the current KV of this scanner will be advanced to</span>
-<span class="source-line-no">374</span><span id="line-374">   * at least the given KV. Because of this, it does have to do a real seek in cases when the seek</span>
-<span class="source-line-no">375</span><span id="line-375">   * timestamp is older than the highest timestamp of the file, e.g. when we are trying to seek to</span>
-<span class="source-line-no">376</span><span id="line-376">   * the next row/column and use OLDEST_TIMESTAMP in the seek key.</span>
-<span class="source-line-no">377</span><span id="line-377">   */</span>
-<span class="source-line-no">378</span><span id="line-378">  @Override</span>
-<span class="source-line-no">379</span><span id="line-379">  public boolean requestSeek(ExtendedCell kv, boolean forward, boolean useBloom)</span>
-<span class="source-line-no">380</span><span id="line-380">    throws IOException {</span>
-<span class="source-line-no">381</span><span id="line-381">    if (kv.getFamilyLength() == 0) {</span>
-<span class="source-line-no">382</span><span id="line-382">      useBloom = false;</span>
-<span class="source-line-no">383</span><span id="line-383">    }</span>
-<span class="source-line-no">384</span><span id="line-384"></span>
-<span class="source-line-no">385</span><span id="line-385">    boolean haveToSeek = true;</span>
-<span class="source-line-no">386</span><span id="line-386">    if (useBloom) {</span>
-<span class="source-line-no">387</span><span id="line-387">      // check ROWCOL Bloom filter first.</span>
-<span class="source-line-no">388</span><span id="line-388">      if (reader.getBloomFilterType() == BloomType.ROWCOL) {</span>
-<span class="source-line-no">389</span><span id="line-389">        haveToSeek = reader.passesGeneralRowColBloomFilter(kv);</span>
-<span class="source-line-no">390</span><span id="line-390">      } else if (</span>
-<span class="source-line-no">391</span><span id="line-391">        canOptimizeForNonNullColumn</span>
-<span class="source-line-no">392</span><span id="line-392">          &amp;&amp; ((PrivateCellUtil.isDeleteFamily(kv) || PrivateCellUtil.isDeleteFamilyVersion(kv)))</span>
-<span class="source-line-no">393</span><span id="line-393">      ) {</span>
-<span class="source-line-no">394</span><span id="line-394">        // if there is no such delete family kv in the store file,</span>
-<span class="source-line-no">395</span><span id="line-395">        // then no need to seek.</span>
-<span class="source-line-no">396</span><span id="line-396">        haveToSeek = reader.passesDeleteFamilyBloomFilter(kv.getRowArray(), kv.getRowOffset(),</span>
-<span class="source-line-no">397</span><span id="line-397">          kv.getRowLength());</span>
-<span class="source-line-no">398</span><span id="line-398">      }</span>
-<span class="source-line-no">399</span><span id="line-399">    }</span>
-<span class="source-line-no">400</span><span id="line-400"></span>
-<span class="source-line-no">401</span><span id="line-401">    delayedReseek = forward;</span>
-<span class="source-line-no">402</span><span id="line-402">    delayedSeekKV = kv;</span>
+<span class="source-line-no">307</span><span id="line-307">    return true;</span>
+<span class="source-line-no">308</span><span id="line-308">  }</span>
+<span class="source-line-no">309</span><span id="line-309"></span>
+<span class="source-line-no">310</span><span id="line-310">  @Override</span>
+<span class="source-line-no">311</span><span id="line-311">  public void close() {</span>
+<span class="source-line-no">312</span><span id="line-312">    if (closed) return;</span>
+<span class="source-line-no">313</span><span id="line-313">    cur = null;</span>
+<span class="source-line-no">314</span><span id="line-314">    this.hfs.close();</span>
+<span class="source-line-no">315</span><span id="line-315">    if (this.reader != null) {</span>
+<span class="source-line-no">316</span><span id="line-316">      this.reader.readCompleted();</span>
+<span class="source-line-no">317</span><span id="line-317">    }</span>
+<span class="source-line-no">318</span><span id="line-318">    closed = true;</span>
+<span class="source-line-no">319</span><span id="line-319">  }</span>
+<span class="source-line-no">320</span><span id="line-320"></span>
+<span class="source-line-no">321</span><span id="line-321">  /** Returns false if not found or if k is after the end. */</span>
+<span class="source-line-no">322</span><span id="line-322">  public static boolean seekAtOrAfter(HFileScanner s, ExtendedCell k) throws IOException {</span>
+<span class="source-line-no">323</span><span id="line-323">    int result = s.seekTo(k);</span>
+<span class="source-line-no">324</span><span id="line-324">    if (result &lt; 0) {</span>
+<span class="source-line-no">325</span><span id="line-325">      if (result == HConstants.INDEX_KEY_MAGIC) {</span>
+<span class="source-line-no">326</span><span id="line-326">        // using faked key</span>
+<span class="source-line-no">327</span><span id="line-327">        return true;</span>
+<span class="source-line-no">328</span><span id="line-328">      }</span>
+<span class="source-line-no">329</span><span id="line-329">      // Passed KV is smaller than first KV in file, work from start of file</span>
+<span class="source-line-no">330</span><span id="line-330">      return s.seekTo();</span>
+<span class="source-line-no">331</span><span id="line-331">    } else if (result &gt; 0) {</span>
+<span class="source-line-no">332</span><span id="line-332">      // Passed KV is larger than current KV in file, if there is a next</span>
+<span class="source-line-no">333</span><span id="line-333">      // it is the "after", if not then this scanner is done.</span>
+<span class="source-line-no">334</span><span id="line-334">      return s.next();</span>
+<span class="source-line-no">335</span><span id="line-335">    }</span>
+<span class="source-line-no">336</span><span id="line-336">    // Seeked to the exact key</span>
+<span class="source-line-no">337</span><span id="line-337">    return true;</span>
+<span class="source-line-no">338</span><span id="line-338">  }</span>
+<span class="source-line-no">339</span><span id="line-339"></span>
+<span class="source-line-no">340</span><span id="line-340">  static boolean reseekAtOrAfter(HFileScanner s, ExtendedCell k) throws IOException {</span>
+<span class="source-line-no">341</span><span id="line-341">    // This function is similar to seekAtOrAfter function</span>
+<span class="source-line-no">342</span><span id="line-342">    int result = s.reseekTo(k);</span>
+<span class="source-line-no">343</span><span id="line-343">    if (result &lt;= 0) {</span>
+<span class="source-line-no">344</span><span id="line-344">      if (result == HConstants.INDEX_KEY_MAGIC) {</span>
+<span class="source-line-no">345</span><span id="line-345">        // using faked key</span>
+<span class="source-line-no">346</span><span id="line-346">        return true;</span>
+<span class="source-line-no">347</span><span id="line-347">      }</span>
+<span class="source-line-no">348</span><span id="line-348">      // If up to now scanner is not seeked yet, this means passed KV is smaller</span>
+<span class="source-line-no">349</span><span id="line-349">      // than first KV in file, and it is the first time we seek on this file.</span>
+<span class="source-line-no">350</span><span id="line-350">      // So we also need to work from the start of file.</span>
+<span class="source-line-no">351</span><span id="line-351">      if (!s.isSeeked()) {</span>
+<span class="source-line-no">352</span><span id="line-352">        return s.seekTo();</span>
+<span class="source-line-no">353</span><span id="line-353">      }</span>
+<span class="source-line-no">354</span><span id="line-354">      return true;</span>
+<span class="source-line-no">355</span><span id="line-355">    }</span>
+<span class="source-line-no">356</span><span id="line-356">    // passed KV is larger than current KV in file, if there is a next</span>
+<span class="source-line-no">357</span><span id="line-357">    // it is after, if not then this scanner is done.</span>
+<span class="source-line-no">358</span><span id="line-358">    return s.next();</span>
+<span class="source-line-no">359</span><span id="line-359">  }</span>
+<span class="source-line-no">360</span><span id="line-360"></span>
+<span class="source-line-no">361</span><span id="line-361">  /**</span>
+<span class="source-line-no">362</span><span id="line-362">   * @see KeyValueScanner#getScannerOrder()</span>
+<span class="source-line-no">363</span><span id="line-363">   */</span>
+<span class="source-line-no">364</span><span id="line-364">  @Override</span>
+<span class="source-line-no">365</span><span id="line-365">  public long getScannerOrder() {</span>
+<span class="source-line-no">366</span><span id="line-366">    return scannerOrder;</span>
+<span class="source-line-no">367</span><span id="line-367">  }</span>
+<span class="source-line-no">368</span><span id="line-368"></span>
+<span class="source-line-no">369</span><span id="line-369">  /**</span>
+<span class="source-line-no">370</span><span id="line-370">   * Pretend we have done a seek but don't do it yet, if possible. The hope is that we find</span>
+<span class="source-line-no">371</span><span id="line-371">   * requested columns in more recent files and won't have to seek in older files. Creates a fake</span>
+<span class="source-line-no">372</span><span id="line-372">   * key/value with the given row/column and the highest (most recent) possible timestamp we might</span>
+<span class="source-line-no">373</span><span id="line-373">   * get from this file. When users of such "lazy scanner" need to know the next KV precisely (e.g.</span>
+<span class="source-line-no">374</span><span id="line-374">   * when this scanner is at the top of the heap), they run {@link #enforceSeek()}.</span>
+<span class="source-line-no">375</span><span id="line-375">   * &lt;p&gt;</span>
+<span class="source-line-no">376</span><span id="line-376">   * Note that this function does guarantee that the current KV of this scanner will be advanced to</span>
+<span class="source-line-no">377</span><span id="line-377">   * at least the given KV. Because of this, it does have to do a real seek in cases when the seek</span>
+<span class="source-line-no">378</span><span id="line-378">   * timestamp is older than the highest timestamp of the file, e.g. when we are trying to seek to</span>
+<span class="source-line-no">379</span><span id="line-379">   * the next row/column and use OLDEST_TIMESTAMP in the seek key.</span>
+<span class="source-line-no">380</span><span id="line-380">   */</span>
+<span class="source-line-no">381</span><span id="line-381">  @Override</span>
+<span class="source-line-no">382</span><span id="line-382">  public boolean requestSeek(ExtendedCell kv, boolean forward, boolean useBloom)</span>
+<span class="source-line-no">383</span><span id="line-383">    throws IOException {</span>
+<span class="source-line-no">384</span><span id="line-384">    if (kv.getFamilyLength() == 0) {</span>
+<span class="source-line-no">385</span><span id="line-385">      useBloom = false;</span>
+<span class="source-line-no">386</span><span id="line-386">    }</span>
+<span class="source-line-no">387</span><span id="line-387"></span>
+<span class="source-line-no">388</span><span id="line-388">    boolean haveToSeek = true;</span>
+<span class="source-line-no">389</span><span id="line-389">    if (useBloom) {</span>
+<span class="source-line-no">390</span><span id="line-390">      // check ROWCOL Bloom filter first.</span>
+<span class="source-line-no">391</span><span id="line-391">      if (reader.getBloomFilterType() == BloomType.ROWCOL) {</span>
+<span class="source-line-no">392</span><span id="line-392">        haveToSeek = reader.passesGeneralRowColBloomFilter(kv);</span>
+<span class="source-line-no">393</span><span id="line-393">      } else if (</span>
+<span class="source-line-no">394</span><span id="line-394">        canOptimizeForNonNullColumn</span>
+<span class="source-line-no">395</span><span id="line-395">          &amp;&amp; ((PrivateCellUtil.isDeleteFamily(kv) || PrivateCellUtil.isDeleteFamilyVersion(kv)))</span>
+<span class="source-line-no">396</span><span id="line-396">      ) {</span>
+<span class="source-line-no">397</span><span id="line-397">        // if there is no such delete family kv in the store file,</span>
+<span class="source-line-no">398</span><span id="line-398">        // then no need to seek.</span>
+<span class="source-line-no">399</span><span id="line-399">        haveToSeek = reader.passesDeleteFamilyBloomFilter(kv.getRowArray(), kv.getRowOffset(),</span>
+<span class="source-line-no">400</span><span id="line-400">          kv.getRowLength());</span>
+<span class="source-line-no">401</span><span id="line-401">      }</span>
+<span class="source-line-no">402</span><span id="line-402">    }</span>
 <span class="source-line-no">403</span><span id="line-403"></span>
-<span class="source-line-no">404</span><span id="line-404">    if (haveToSeek) {</span>
-<span class="source-line-no">405</span><span id="line-405">      // This row/column might be in this store file (or we did not use the</span>
-<span class="source-line-no">406</span><span id="line-406">      // Bloom filter), so we still need to seek.</span>
-<span class="source-line-no">407</span><span id="line-407">      realSeekDone = false;</span>
-<span class="source-line-no">408</span><span id="line-408">      long maxTimestampInFile = reader.getMaxTimestamp();</span>
-<span class="source-line-no">409</span><span id="line-409">      long seekTimestamp = kv.getTimestamp();</span>
-<span class="source-line-no">410</span><span id="line-410">      if (seekTimestamp &gt; maxTimestampInFile) {</span>
-<span class="source-line-no">411</span><span id="line-411">        // Create a fake key that is not greater than the real next key.</span>
-<span class="source-line-no">412</span><span id="line-412">        // (Lower timestamps correspond to higher KVs.)</span>
-<span class="source-line-no">413</span><span id="line-413">        // To understand this better, consider that we are asked to seek to</span>
-<span class="source-line-no">414</span><span id="line-414">        // a higher timestamp than the max timestamp in this file. We know that</span>
-<span class="source-line-no">415</span><span id="line-415">        // the next point when we have to consider this file again is when we</span>
-<span class="source-line-no">416</span><span id="line-416">        // pass the max timestamp of this file (with the same row/column).</span>
-<span class="source-line-no">417</span><span id="line-417">        setCurrentCell(PrivateCellUtil.createFirstOnRowColTS(kv, maxTimestampInFile));</span>
-<span class="source-line-no">418</span><span id="line-418">      } else {</span>
-<span class="source-line-no">419</span><span id="line-419">        // This will be the case e.g. when we need to seek to the next</span>
-<span class="source-line-no">420</span><span id="line-420">        // row/column, and we don't know exactly what they are, so we set the</span>
-<span class="source-line-no">421</span><span id="line-421">        // seek key's timestamp to OLDEST_TIMESTAMP to skip the rest of this</span>
-<span class="source-line-no">422</span><span id="line-422">        // row/column.</span>
-<span class="source-line-no">423</span><span id="line-423">        enforceSeek();</span>
-<span class="source-line-no">424</span><span id="line-424">      }</span>
-<span class="source-line-no">425</span><span id="line-425">      return cur != null;</span>
-<span class="source-line-no">426</span><span id="line-426">    }</span>
-<span class="source-line-no">427</span><span id="line-427"></span>
-<span class="source-line-no">428</span><span id="line-428">    // Multi-column Bloom filter optimization.</span>
-<span class="source-line-no">429</span><span id="line-429">    // Create a fake key/value, so that this scanner only bubbles up to the top</span>
-<span class="source-line-no">430</span><span id="line-430">    // of the KeyValueHeap in StoreScanner after we scanned this row/column in</span>
-<span class="source-line-no">431</span><span id="line-431">    // all other store files. The query matcher will then just skip this fake</span>
-<span class="source-line-no">432</span><span id="line-432">    // key/value and the store scanner will progress to the next column. This</span>
-<span class="source-line-no">433</span><span id="line-433">    // is obviously not a "real real" seek, but unlike the fake KV earlier in</span>
-<span class="source-line-no">434</span><span id="line-434">    // this method, we want this to be propagated to ScanQueryMatcher.</span>
-<span class="source-line-no">435</span><span id="line-435">    setCurrentCell(PrivateCellUtil.createLastOnRowCol(kv));</span>
-<span class="source-line-no">436</span><span id="line-436"></span>
-<span class="source-line-no">437</span><span id="line-437">    realSeekDone = true;</span>
-<span class="source-line-no">438</span><span id="line-438">    return true;</span>
-<span class="source-line-no">439</span><span id="line-439">  }</span>
-<span class="source-line-no">440</span><span id="line-440"></span>
-<span class="source-line-no">441</span><span id="line-441">  StoreFileReader getReader() {</span>
-<span class="source-line-no">442</span><span id="line-442">    return reader;</span>
-<span class="source-line-no">443</span><span id="line-443">  }</span>
-<span class="source-line-no">444</span><span id="line-444"></span>
-<span class="source-line-no">445</span><span id="line-445">  CellComparator getComparator() {</span>
-<span class="source-line-no">446</span><span id="line-446">    return reader.getComparator();</span>
-<span class="source-line-no">447</span><span id="line-447">  }</span>
-<span class="source-line-no">448</span><span id="line-448"></span>
-<span class="source-line-no">449</span><span id="line-449">  @Override</span>
-<span class="source-line-no">450</span><span id="line-450">  public boolean realSeekDone() {</span>
-<span class="source-line-no">451</span><span id="line-451">    return realSeekDone;</span>
-<span class="source-line-no">452</span><span id="line-452">  }</span>
-<span class="source-line-no">453</span><span id="line-453"></span>
-<span class="source-line-no">454</span><span id="line-454">  @Override</span>
-<span class="source-line-no">455</span><span id="line-455">  public void enforceSeek() throws IOException {</span>
-<span class="source-line-no">456</span><span id="line-456">    if (realSeekDone) return;</span>
-<span class="source-line-no">457</span><span id="line-457"></span>
-<span class="source-line-no">458</span><span id="line-458">    if (delayedReseek) {</span>
-<span class="source-line-no">459</span><span id="line-459">      reseek(delayedSeekKV);</span>
-<span class="source-line-no">460</span><span id="line-460">    } else {</span>
-<span class="source-line-no">461</span><span id="line-461">      seek(delayedSeekKV);</span>
-<span class="source-line-no">462</span><span id="line-462">    }</span>
-<span class="source-line-no">463</span><span id="line-463">  }</span>
-<span class="source-line-no">464</span><span id="line-464"></span>
-<span class="source-line-no">465</span><span id="line-465">  @Override</span>
-<span class="source-line-no">466</span><span id="line-466">  public boolean isFileScanner() {</span>
-<span class="source-line-no">467</span><span id="line-467">    return true;</span>
-<span class="source-line-no">468</span><span id="line-468">  }</span>
-<span class="source-line-no">469</span><span id="line-469"></span>
-<span class="source-line-no">470</span><span id="line-470">  @Override</span>
-<span class="source-line-no">471</span><span id="line-471">  public void recordBlockSize(IntConsumer blockSizeConsumer) {</span>
-<span class="source-line-no">472</span><span id="line-472">    hfs.recordBlockSize(blockSizeConsumer);</span>
-<span class="source-line-no">473</span><span id="line-473">  }</span>
-<span class="source-line-no">474</span><span id="line-474"></span>
-<span class="source-line-no">475</span><span id="line-475">  @Override</span>
-<span class="source-line-no">476</span><span id="line-476">  public Path getFilePath() {</span>
-<span class="source-line-no">477</span><span id="line-477">    return reader.getHFileReader().getPath();</span>
-<span class="source-line-no">478</span><span id="line-478">  }</span>
-<span class="source-line-no">479</span><span id="line-479"></span>
-<span class="source-line-no">480</span><span id="line-480">  // Test methods</span>
-<span class="source-line-no">481</span><span id="line-481">  static final long getSeekCount() {</span>
-<span class="source-line-no">482</span><span id="line-482">    return seekCount.sum();</span>
-<span class="source-line-no">483</span><span id="line-483">  }</span>
-<span class="source-line-no">484</span><span id="line-484"></span>
-<span class="source-line-no">485</span><span id="line-485">  static final void instrument() {</span>
-<span class="source-line-no">486</span><span id="line-486">    seekCount = new LongAdder();</span>
-<span class="source-line-no">487</span><span id="line-487">  }</span>
-<span class="source-line-no">488</span><span id="line-488"></span>
-<span class="source-line-no">489</span><span id="line-489">  @Override</span>
-<span class="source-line-no">490</span><span id="line-490">  public boolean shouldUseScanner(Scan scan, HStore store, long oldestUnexpiredTS) {</span>
-<span class="source-line-no">491</span><span id="line-491">    // if the file has no entries, no need to validate or create a scanner.</span>
-<span class="source-line-no">492</span><span id="line-492">    byte[] cf = store.getColumnFamilyDescriptor().getName();</span>
-<span class="source-line-no">493</span><span id="line-493">    TimeRange timeRange = scan.getColumnFamilyTimeRange().get(cf);</span>
-<span class="source-line-no">494</span><span id="line-494">    if (timeRange == null) {</span>
-<span class="source-line-no">495</span><span id="line-495">      timeRange = scan.getTimeRange();</span>
-<span class="source-line-no">496</span><span id="line-496">    }</span>
-<span class="source-line-no">497</span><span id="line-497">    return reader.passesTimerangeFilter(timeRange, oldestUnexpiredTS)</span>
-<span class="source-line-no">498</span><span id="line-498">      &amp;&amp; reader.passesKeyRangeFilter(scan)</span>
-<span class="source-line-no">499</span><span id="line-499">      &amp;&amp; reader.passesBloomFilter(scan, scan.getFamilyMap().get(cf));</span>
-<span class="source-line-no">500</span><span id="line-500">  }</span>
-<span class="source-line-no">501</span><span id="line-501"></span>
-<span class="source-line-no">502</span><span id="line-502">  @Override</span>
-<span class="source-line-no">503</span><span id="line-503">  public boolean seekToPreviousRow(ExtendedCell originalKey) throws IOException {</span>
-<span class="source-line-no">504</span><span id="line-504">    try {</span>
-<span class="source-line-no">505</span><span id="line-505">      if (isFastSeekingEncoding) {</span>
-<span class="source-line-no">506</span><span id="line-506">        return seekToPreviousRowStateless(originalKey);</span>
-<span class="source-line-no">507</span><span id="line-507">      } else if (previousRow == null || getComparator().compareRows(previousRow, originalKey) &gt; 0) {</span>
-<span class="source-line-no">508</span><span id="line-508">        return seekToPreviousRowWithoutHint(originalKey);</span>
-<span class="source-line-no">509</span><span id="line-509">      } else {</span>
-<span class="source-line-no">510</span><span id="line-510">        return seekToPreviousRowWithHint();</span>
-<span class="source-line-no">511</span><span id="line-511">      }</span>
-<span class="source-line-no">512</span><span id="line-512">    } catch (FileNotFoundException e) {</span>
-<span class="source-line-no">513</span><span id="line-513">      throw e;</span>
-<span class="source-line-no">514</span><span id="line-514">    } catch (IOException ioe) {</span>
-<span class="source-line-no">515</span><span id="line-515">      throw new IOException("Could not seekToPreviousRow " + this + " to key " + originalKey, ioe);</span>
-<span class="source-line-no">516</span><span id="line-516">    } finally {</span>
-<span class="source-line-no">517</span><span id="line-517">      this.realSeekDone = true;</span>
-<span class="source-line-no">518</span><span id="line-518">    }</span>
-<span class="source-line-no">519</span><span id="line-519">  }</span>
-<span class="source-line-no">520</span><span id="line-520"></span>
-<span class="source-line-no">521</span><span id="line-521">  /**</span>
-<span class="source-line-no">522</span><span id="line-522">   * This variant of the {@link StoreFileScanner#seekToPreviousRow(Cell)} method requires one seek</span>
-<span class="source-line-no">523</span><span id="line-523">   * and one reseek. This method maintains state in {@link StoreFileScanner#previousRow} which only</span>
-<span class="source-line-no">524</span><span id="line-524">   * makes sense in the context of a sequential row-by-row reverse scan.</span>
-<span class="source-line-no">525</span><span id="line-525">   * {@link StoreFileScanner#previousRow} should be reset if that is not the case. The reasoning for</span>
-<span class="source-line-no">526</span><span id="line-526">   * why this method is faster than {@link StoreFileScanner#seekToPreviousRowStateless(Cell)} is</span>
-<span class="source-line-no">527</span><span id="line-527">   * that seeks are slower as they need to start from the beginning of the file, while reseeks go</span>
-<span class="source-line-no">528</span><span id="line-528">   * forward from the current position.</span>
-<span class="source-line-no">529</span><span id="line-529">   */</span>
-<span class="source-line-no">530</span><span id="line-530">  private boolean seekToPreviousRowWithHint() throws IOException {</span>
-<span class="source-line-no">531</span><span id="line-531">    do {</span>
-<span class="source-line-no">532</span><span id="line-532">      // Using our existing seek hint, set our next seek hint</span>
-<span class="source-line-no">533</span><span id="line-533">      ExtendedCell firstKeyOfPreviousRow = PrivateCellUtil.createFirstOnRow(previousRow);</span>
-<span class="source-line-no">534</span><span id="line-534">      seekBeforeAndSaveKeyToPreviousRow(firstKeyOfPreviousRow);</span>
-<span class="source-line-no">535</span><span id="line-535"></span>
-<span class="source-line-no">536</span><span id="line-536">      // Reseek back to our initial seek hint (i.e. what we think is the start of the</span>
-<span class="source-line-no">537</span><span id="line-537">      // previous row)</span>
-<span class="source-line-no">538</span><span id="line-538">      if (!reseekAtOrAfter(firstKeyOfPreviousRow)) {</span>
-<span class="source-line-no">539</span><span id="line-539">        return false;</span>
-<span class="source-line-no">540</span><span id="line-540">      }</span>
-<span class="source-line-no">541</span><span id="line-541"></span>
-<span class="source-line-no">542</span><span id="line-542">      // If after skipping newer Kvs, we're still in our seek hint row, then we're finished</span>
-<span class="source-line-no">543</span><span id="line-543">      if (isStillAtSeekTargetAfterSkippingNewerKvs(firstKeyOfPreviousRow)) {</span>
-<span class="source-line-no">544</span><span id="line-544">        return true;</span>
-<span class="source-line-no">545</span><span id="line-545">      }</span>
-<span class="source-line-no">546</span><span id="line-546"></span>
-<span class="source-line-no">547</span><span id="line-547">      // If the previousRow seek hint is missing, that means that we're at row after the first row</span>
-<span class="source-line-no">548</span><span id="line-548">      // in the storefile. Use the without-hint seek path to process the final row</span>
-<span class="source-line-no">549</span><span id="line-549">      if (previousRow == null) {</span>
-<span class="source-line-no">550</span><span id="line-550">        return seekToPreviousRowWithoutHint(firstKeyOfPreviousRow);</span>
-<span class="source-line-no">551</span><span id="line-551">      }</span>
-<span class="source-line-no">552</span><span id="line-552"></span>
-<span class="source-line-no">553</span><span id="line-553">      // Otherwise, use the previousRow seek hint to continue traversing backwards</span>
-<span class="source-line-no">554</span><span id="line-554">    } while (true);</span>
-<span class="source-line-no">555</span><span id="line-555">  }</span>
+<span class="source-line-no">404</span><span id="line-404">    delayedReseek = forward;</span>
+<span class="source-line-no">405</span><span id="line-405">    delayedSeekKV = kv;</span>
+<span class="source-line-no">406</span><span id="line-406"></span>
+<span class="source-line-no">407</span><span id="line-407">    if (haveToSeek) {</span>
+<span class="source-line-no">408</span><span id="line-408">      // This row/column might be in this store file (or we did not use the</span>
+<span class="source-line-no">409</span><span id="line-409">      // Bloom filter), so we still need to seek.</span>
+<span class="source-line-no">410</span><span id="line-410">      realSeekDone = false;</span>
+<span class="source-line-no">411</span><span id="line-411">      long maxTimestampInFile = reader.getMaxTimestamp();</span>
+<span class="source-line-no">412</span><span id="line-412">      long seekTimestamp = kv.getTimestamp();</span>
+<span class="source-line-no">413</span><span id="line-413">      if (seekTimestamp &gt; maxTimestampInFile) {</span>
+<span class="source-line-no">414</span><span id="line-414">        // Create a fake key that is not greater than the real next key.</span>
+<span class="source-line-no">415</span><span id="line-415">        // (Lower timestamps correspond to higher KVs.)</span>
+<span class="source-line-no">416</span><span id="line-416">        // To understand this better, consider that we are asked to seek to</span>
+<span class="source-line-no">417</span><span id="line-417">        // a higher timestamp than the max timestamp in this file. We know that</span>
+<span class="source-line-no">418</span><span id="line-418">        // the next point when we have to consider this file again is when we</span>
+<span class="source-line-no">419</span><span id="line-419">        // pass the max timestamp of this file (with the same row/column).</span>
+<span class="source-line-no">420</span><span id="line-420">        setCurrentCell(PrivateCellUtil.createFirstOnRowColTS(kv, maxTimestampInFile));</span>
+<span class="source-line-no">421</span><span id="line-421">      } else {</span>
+<span class="source-line-no">422</span><span id="line-422">        // This will be the case e.g. when we need to seek to the next</span>
+<span class="source-line-no">423</span><span id="line-423">        // row/column, and we don't know exactly what they are, so we set the</span>
+<span class="source-line-no">424</span><span id="line-424">        // seek key's timestamp to OLDEST_TIMESTAMP to skip the rest of this</span>
+<span class="source-line-no">425</span><span id="line-425">        // row/column.</span>
+<span class="source-line-no">426</span><span id="line-426">        enforceSeek();</span>
+<span class="source-line-no">427</span><span id="line-427">      }</span>
+<span class="source-line-no">428</span><span id="line-428">      return cur != null;</span>
+<span class="source-line-no">429</span><span id="line-429">    }</span>
+<span class="source-line-no">430</span><span id="line-430"></span>
+<span class="source-line-no">431</span><span id="line-431">    // Multi-column Bloom filter optimization.</span>
+<span class="source-line-no">432</span><span id="line-432">    // Create a fake key/value, so that this scanner only bubbles up to the top</span>
+<span class="source-line-no">433</span><span id="line-433">    // of the KeyValueHeap in StoreScanner after we scanned this row/column in</span>
+<span class="source-line-no">434</span><span id="line-434">    // all other store files. The query matcher will then just skip this fake</span>
+<span class="source-line-no">435</span><span id="line-435">    // key/value and the store scanner will progress to the next column. This</span>
+<span class="source-line-no">436</span><span id="line-436">    // is obviously not a "real real" seek, but unlike the fake KV earlier in</span>
+<span class="source-line-no">437</span><span id="line-437">    // this method, we want this to be propagated to ScanQueryMatcher.</span>
+<span class="source-line-no">438</span><span id="line-438">    setCurrentCell(PrivateCellUtil.createLastOnRowCol(kv));</span>
+<span class="source-line-no">439</span><span id="line-439"></span>
+<span class="source-line-no">440</span><span id="line-440">    realSeekDone = true;</span>
+<span class="source-line-no">441</span><span id="line-441">    return true;</span>
+<span class="source-line-no">442</span><span id="line-442">  }</span>
+<span class="source-line-no">443</span><span id="line-443"></span>
+<span class="source-line-no">444</span><span id="line-444">  StoreFileReader getReader() {</span>
+<span class="source-line-no">445</span><span id="line-445">    return reader;</span>
+<span class="source-line-no">446</span><span id="line-446">  }</span>
+<span class="source-line-no">447</span><span id="line-447"></span>
+<span class="source-line-no">448</span><span id="line-448">  CellComparator getComparator() {</span>
+<span class="source-line-no">449</span><span id="line-449">    return reader.getComparator();</span>
+<span class="source-line-no">450</span><span id="line-450">  }</span>
+<span class="source-line-no">451</span><span id="line-451"></span>
+<span class="source-line-no">452</span><span id="line-452">  @Override</span>
+<span class="source-line-no">453</span><span id="line-453">  public boolean realSeekDone() {</span>
+<span class="source-line-no">454</span><span id="line-454">    return realSeekDone;</span>
+<span class="source-line-no">455</span><span id="line-455">  }</span>
+<span class="source-line-no">456</span><span id="line-456"></span>
+<span class="source-line-no">457</span><span id="line-457">  @Override</span>
+<span class="source-line-no">458</span><span id="line-458">  public void enforceSeek() throws IOException {</span>
+<span class="source-line-no">459</span><span id="line-459">    if (realSeekDone) return;</span>
+<span class="source-line-no">460</span><span id="line-460"></span>
+<span class="source-line-no">461</span><span id="line-461">    if (delayedReseek) {</span>
+<span class="source-line-no">462</span><span id="line-462">      reseek(delayedSeekKV);</span>
+<span class="source-line-no">463</span><span id="line-463">    } else {</span>
+<span class="source-line-no">464</span><span id="line-464">      seek(delayedSeekKV);</span>
+<span class="source-line-no">465</span><span id="line-465">    }</span>
+<span class="source-line-no">466</span><span id="line-466">  }</span>
+<span class="source-line-no">467</span><span id="line-467"></span>
+<span class="source-line-no">468</span><span id="line-468">  @Override</span>
+<span class="source-line-no">469</span><span id="line-469">  public boolean isFileScanner() {</span>
+<span class="source-line-no">470</span><span id="line-470">    return true;</span>
+<span class="source-line-no">471</span><span id="line-471">  }</span>
+<span class="source-line-no">472</span><span id="line-472"></span>
+<span class="source-line-no">473</span><span id="line-473">  @Override</span>
+<span class="source-line-no">474</span><span id="line-474">  public void recordBlockSize(IntConsumer blockSizeConsumer) {</span>
+<span class="source-line-no">475</span><span id="line-475">    hfs.recordBlockSize(blockSizeConsumer);</span>
+<span class="source-line-no">476</span><span id="line-476">  }</span>
+<span class="source-line-no">477</span><span id="line-477"></span>
+<span class="source-line-no">478</span><span id="line-478">  @Override</span>
+<span class="source-line-no">479</span><span id="line-479">  public Path getFilePath() {</span>
+<span class="source-line-no">480</span><span id="line-480">    return reader.getHFileReader().getPath();</span>
+<span class="source-line-no">481</span><span id="line-481">  }</span>
+<span class="source-line-no">482</span><span id="line-482"></span>
+<span class="source-line-no">483</span><span id="line-483">  // Test methods</span>
+<span class="source-line-no">484</span><span id="line-484">  static final long getSeekCount() {</span>
+<span class="source-line-no">485</span><span id="line-485">    return seekCount.sum();</span>
+<span class="source-line-no">486</span><span id="line-486">  }</span>
+<span class="source-line-no">487</span><span id="line-487"></span>
+<span class="source-line-no">488</span><span id="line-488">  static final void instrument() {</span>
+<span class="source-line-no">489</span><span id="line-489">    seekCount = new LongAdder();</span>
+<span class="source-line-no">490</span><span id="line-490">  }</span>
+<span class="source-line-no">491</span><span id="line-491"></span>
+<span class="source-line-no">492</span><span id="line-492">  @Override</span>
+<span class="source-line-no">493</span><span id="line-493">  public boolean shouldUseScanner(Scan scan, HStore store, long oldestUnexpiredTS) {</span>
+<span class="source-line-no">494</span><span id="line-494">    // if the file has no entries, no need to validate or create a scanner.</span>
+<span class="source-line-no">495</span><span id="line-495">    byte[] cf = store.getColumnFamilyDescriptor().getName();</span>
+<span class="source-line-no">496</span><span id="line-496">    TimeRange timeRange = scan.getColumnFamilyTimeRange().get(cf);</span>
+<span class="source-line-no">497</span><span id="line-497">    if (timeRange == null) {</span>
+<span class="source-line-no">498</span><span id="line-498">      timeRange = scan.getTimeRange();</span>
+<span class="source-line-no">499</span><span id="line-499">    }</span>
+<span class="source-line-no">500</span><span id="line-500">    return reader.passesTimerangeFilter(timeRange, oldestUnexpiredTS)</span>
+<span class="source-line-no">501</span><span id="line-501">      &amp;&amp; reader.passesKeyRangeFilter(scan)</span>
+<span class="source-line-no">502</span><span id="line-502">      &amp;&amp; reader.passesBloomFilter(scan, scan.getFamilyMap().get(cf));</span>
+<span class="source-line-no">503</span><span id="line-503">  }</span>
+<span class="source-line-no">504</span><span id="line-504"></span>
+<span class="source-line-no">505</span><span id="line-505">  @Override</span>
+<span class="source-line-no">506</span><span id="line-506">  public boolean seekToPreviousRow(ExtendedCell originalKey) throws IOException {</span>
+<span class="source-line-no">507</span><span id="line-507">    try {</span>
+<span class="source-line-no">508</span><span id="line-508">      if (isFastSeekingEncoding) {</span>
+<span class="source-line-no">509</span><span id="line-509">        return seekToPreviousRowStateless(originalKey);</span>
+<span class="source-line-no">510</span><span id="line-510">      } else if (previousRow == null || getComparator().compareRows(previousRow, originalKey) &gt; 0) {</span>
+<span class="source-line-no">511</span><span id="line-511">        return seekToPreviousRowWithoutHint(originalKey);</span>
+<span class="source-line-no">512</span><span id="line-512">      } else {</span>
+<span class="source-line-no">513</span><span id="line-513">        return seekToPreviousRowWithHint();</span>
+<span class="source-line-no">514</span><span id="line-514">      }</span>
+<span class="source-line-no">515</span><span id="line-515">    } catch (FileNotFoundException e) {</span>
+<span class="source-line-no">516</span><span id="line-516">      throw e;</span>
+<span class="source-line-no">517</span><span id="line-517">    } catch (IOException ioe) {</span>
+<span class="source-line-no">518</span><span id="line-518">      throw new IOException("Could not seekToPreviousRow " + this + " to key " + originalKey, ioe);</span>
+<span class="source-line-no">519</span><span id="line-519">    } finally {</span>
+<span class="source-line-no">520</span><span id="line-520">      this.realSeekDone = true;</span>
+<span class="source-line-no">521</span><span id="line-521">    }</span>
+<span class="source-line-no">522</span><span id="line-522">  }</span>
+<span class="source-line-no">523</span><span id="line-523"></span>
+<span class="source-line-no">524</span><span id="line-524">  /**</span>
+<span class="source-line-no">525</span><span id="line-525">   * This variant of the {@link StoreFileScanner#seekToPreviousRow(ExtendedCell)} method requires</span>
+<span class="source-line-no">526</span><span id="line-526">   * one seek and one reseek. This method maintains state in {@link StoreFileScanner#previousRow}</span>
+<span class="source-line-no">527</span><span id="line-527">   * which only makes sense in the context of a sequential row-by-row reverse scan.</span>
+<span class="source-line-no">528</span><span id="line-528">   * {@link StoreFileScanner#previousRow} should be reset if that is not the case. The reasoning for</span>
+<span class="source-line-no">529</span><span id="line-529">   * why this method is faster than</span>
+<span class="source-line-no">530</span><span id="line-530">   * {@link StoreFileScanner#seekToPreviousRowStateless(ExtendedCell)} is that seeks are slower as</span>
+<span class="source-line-no">531</span><span id="line-531">   * they need to start from the beginning of the file, while reseeks go forward from the current</span>
+<span class="source-line-no">532</span><span id="line-532">   * position.</span>
+<span class="source-line-no">533</span><span id="line-533">   */</span>
+<span class="source-line-no">534</span><span id="line-534">  private boolean seekToPreviousRowWithHint() throws IOException {</span>
+<span class="source-line-no">535</span><span id="line-535">    do {</span>
+<span class="source-line-no">536</span><span id="line-536">      // Using our existing seek hint, set our next seek hint</span>
+<span class="source-line-no">537</span><span id="line-537">      ExtendedCell firstKeyOfPreviousRow = PrivateCellUtil.createFirstOnRow(previousRow);</span>
+<span class="source-line-no">538</span><span id="line-538">      seekBeforeAndSaveKeyToPreviousRow(firstKeyOfPreviousRow);</span>
+<span class="source-line-no">539</span><span id="line-539"></span>
+<span class="source-line-no">540</span><span id="line-540">      // Reseek back to our initial seek hint (i.e. what we think is the start of the</span>
+<span class="source-line-no">541</span><span id="line-541">      // previous row)</span>
+<span class="source-line-no">542</span><span id="line-542">      if (!reseekAtOrAfter(firstKeyOfPreviousRow)) {</span>
+<span class="source-line-no">543</span><span id="line-543">        return false;</span>
+<span class="source-line-no">544</span><span id="line-544">      }</span>
+<span class="source-line-no">545</span><span id="line-545"></span>
+<span class="source-line-no">546</span><span id="line-546">      // If after skipping newer Kvs, we're still in our seek hint row, then we're finished</span>
+<span class="source-line-no">547</span><span id="line-547">      if (isStillAtSeekTargetAfterSkippingNewerKvs(firstKeyOfPreviousRow)) {</span>
+<span class="source-line-no">548</span><span id="line-548">        return true;</span>
+<span class="source-line-no">549</span><span id="line-549">      }</span>
+<span class="source-line-no">550</span><span id="line-550"></span>
+<span class="source-line-no">551</span><span id="line-551">      // If the previousRow seek hint is missing, that means that we're at row after the first row</span>
+<span class="source-line-no">552</span><span id="line-552">      // in the storefile. Use the without-hint seek path to process the final row</span>
+<span class="source-line-no">553</span><span id="line-553">      if (previousRow == null) {</span>
+<span class="source-line-no">554</span><span id="line-554">        return seekToPreviousRowWithoutHint(firstKeyOfPreviousRow);</span>
+<span class="source-line-no">555</span><span id="line-555">      }</span>
 <span class="source-line-no">556</span><span id="line-556"></span>
-<span class="source-line-no">557</span><span id="line-557">  /**</span>
-<span class="source-line-no">558</span><span id="line-558">   * This variant of the {@link StoreFileScanner#seekToPreviousRow(Cell)} method requires two seeks</span>
-<span class="source-line-no">559</span><span id="line-559">   * and one reseek. The extra expense/seek is with the intent of speeding up subsequent calls by</span>
-<span class="source-line-no">560</span><span id="line-560">   * using the {@link StoreFileScanner#seekToPreviousRowWithHint} which this method seeds the state</span>
-<span class="source-line-no">561</span><span id="line-561">   * for by setting {@link StoreFileScanner#previousRow}</span>
-<span class="source-line-no">562</span><span id="line-562">   */</span>
-<span class="source-line-no">563</span><span id="line-563">  private boolean seekToPreviousRowWithoutHint(Cell originalKey) throws IOException {</span>
-<span class="source-line-no">564</span><span id="line-564">    // Rewind to the cell before the beginning of this row</span>
-<span class="source-line-no">565</span><span id="line-565">    ExtendedCell keyAtBeginningOfRow = PrivateCellUtil.createFirstOnRow(originalKey);</span>
-<span class="source-line-no">566</span><span id="line-566">    if (!seekBefore(keyAtBeginningOfRow)) {</span>
-<span class="source-line-no">567</span><span id="line-567">      return false;</span>
-<span class="source-line-no">568</span><span id="line-568">    }</span>
-<span class="source-line-no">569</span><span id="line-569"></span>
-<span class="source-line-no">570</span><span id="line-570">    // Rewind before this row and save what we find as a seek hint</span>
-<span class="source-line-no">571</span><span id="line-571">    ExtendedCell firstKeyOfPreviousRow = PrivateCellUtil.createFirstOnRow(hfs.getCell());</span>
-<span class="source-line-no">572</span><span id="line-572">    seekBeforeAndSaveKeyToPreviousRow(firstKeyOfPreviousRow);</span>
+<span class="source-line-no">557</span><span id="line-557">      // Otherwise, use the previousRow seek hint to continue traversing backwards</span>
+<span class="source-line-no">558</span><span id="line-558">    } while (true);</span>
+<span class="source-line-no">559</span><span id="line-559">  }</span>
+<span class="source-line-no">560</span><span id="line-560"></span>
+<span class="source-line-no">561</span><span id="line-561">  /**</span>
+<span class="source-line-no">562</span><span id="line-562">   * This variant of the {@link StoreFileScanner#seekToPreviousRow(ExtendedCell)} method requires</span>
+<span class="source-line-no">563</span><span id="line-563">   * two seeks and one reseek. The extra expense/seek is with the intent of speeding up subsequent</span>
+<span class="source-line-no">564</span><span id="line-564">   * calls by using the {@link StoreFileScanner#seekToPreviousRowWithHint} which this method seeds</span>
+<span class="source-line-no">565</span><span id="line-565">   * the state for by setting {@link StoreFileScanner#previousRow}</span>
+<span class="source-line-no">566</span><span id="line-566">   */</span>
+<span class="source-line-no">567</span><span id="line-567">  private boolean seekToPreviousRowWithoutHint(ExtendedCell originalKey) throws IOException {</span>
+<span class="source-line-no">568</span><span id="line-568">    // Rewind to the cell before the beginning of this row</span>
+<span class="source-line-no">569</span><span id="line-569">    ExtendedCell keyAtBeginningOfRow = PrivateCellUtil.createFirstOnRow(originalKey);</span>
+<span class="source-line-no">570</span><span id="line-570">    if (!seekBefore(keyAtBeginningOfRow)) {</span>
+<span class="source-line-no">571</span><span id="line-571">      return false;</span>
+<span class="source-line-no">572</span><span id="line-572">    }</span>
 <span class="source-line-no">573</span><span id="line-573"></span>
-<span class="source-line-no">574</span><span id="line-574">    // Seek back to the start of the previous row</span>
-<span class="source-line-no">575</span><span id="line-575">    if (!reseekAtOrAfter(firstKeyOfPreviousRow)) {</span>
-<span class="source-line-no">576</span><span id="line-576">      return false;</span>
-<span class="source-line-no">577</span><span id="line-577">    }</span>
-<span class="source-line-no">578</span><span id="line-578"></span>
-<span class="source-line-no">579</span><span id="line-579">    // If after skipping newer Kvs, we're still in what we thought was the previous</span>
-<span class="source-line-no">580</span><span id="line-580">    // row, then we can exit</span>
-<span class="source-line-no">581</span><span id="line-581">    if (isStillAtSeekTargetAfterSkippingNewerKvs(firstKeyOfPreviousRow)) {</span>
-<span class="source-line-no">582</span><span id="line-582">      return true;</span>
-<span class="source-line-no">583</span><span id="line-583">    }</span>
-<span class="source-line-no">584</span><span id="line-584"></span>
-<span class="source-line-no">585</span><span id="line-585">    // Skipping newer kvs resulted in skipping the entire row that we thought was the</span>
-<span class="source-line-no">586</span><span id="line-586">    // previous row. If we've set a seek hint, then we can use that to go backwards</span>
-<span class="source-line-no">587</span><span id="line-587">    // further</span>
-<span class="source-line-no">588</span><span id="line-588">    if (previousRow != null) {</span>
-<span class="source-line-no">589</span><span id="line-589">      return seekToPreviousRowWithHint();</span>
-<span class="source-line-no">590</span><span id="line-590">    }</span>
-<span class="source-line-no">591</span><span id="line-591"></span>
-<span class="source-line-no">592</span><span id="line-592">    // If we've made it here, then we weren't able to set a seek hint. This can happen</span>
-<span class="source-line-no">593</span><span id="line-593">    // only if we're at the beginning of the storefile i.e. there is no row before this</span>
-<span class="source-line-no">594</span><span id="line-594">    // one</span>
-<span class="source-line-no">595</span><span id="line-595">    return false;</span>
-<span class="source-line-no">596</span><span id="line-596">  }</span>
-<span class="source-line-no">597</span><span id="line-597"></span>
-<span class="source-line-no">598</span><span id="line-598">  /**</span>
-<span class="source-line-no">599</span><span id="line-599">   * This variant of the {@link StoreFileScanner#seekToPreviousRow(Cell)} method requires two seeks.</span>
-<span class="source-line-no">600</span><span id="line-600">   * It should be used if the cost for seeking is lower i.e. when using a fast seeking data block</span>
-<span class="source-line-no">601</span><span id="line-601">   * encoding like RIV1.</span>
-<span class="source-line-no">602</span><span id="line-602">   */</span>
-<span class="source-line-no">603</span><span id="line-603">  private boolean seekToPreviousRowStateless(ExtendedCell originalKey) throws IOException {</span>
-<span class="source-line-no">604</span><span id="line-604">    ExtendedCell key = originalKey;</span>
-<span class="source-line-no">605</span><span id="line-605">    do {</span>
-<span class="source-line-no">606</span><span id="line-606">      ExtendedCell keyAtBeginningOfRow = PrivateCellUtil.createFirstOnRow(key);</span>
-<span class="source-line-no">607</span><span id="line-607">      if (!seekBefore(keyAtBeginningOfRow)) {</span>
-<span class="source-line-no">608</span><span id="line-608">        return false;</span>
-<span class="source-line-no">609</span><span id="line-609">      }</span>
-<span class="source-line-no">610</span><span id="line-610"></span>
-<span class="source-line-no">611</span><span id="line-611">      ExtendedCell firstKeyOfPreviousRow = PrivateCellUtil.createFirstOnRow(hfs.getCell());</span>
-<span class="source-line-no">612</span><span id="line-612">      if (!seekAtOrAfter(firstKeyOfPreviousRow)) {</span>
-<span class="source-line-no">613</span><span id="line-613">        return false;</span>
-<span class="source-line-no">614</span><span id="line-614">      }</span>
-<span class="source-line-no">615</span><span id="line-615"></span>
-<span class="source-line-no">616</span><span id="line-616">      if (isStillAtSeekTargetAfterSkippingNewerKvs(firstKeyOfPreviousRow)) {</span>
-<span class="source-line-no">617</span><span id="line-617">        return true;</span>
+<span class="source-line-no">574</span><span id="line-574">    // Rewind before this row and save what we find as a seek hint</span>
+<span class="source-line-no">575</span><span id="line-575">    ExtendedCell firstKeyOfPreviousRow = PrivateCellUtil.createFirstOnRow(hfs.getKey());</span>
+<span class="source-line-no">576</span><span id="line-576">    seekBeforeAndSaveKeyToPreviousRow(firstKeyOfPreviousRow);</span>
+<span class="source-line-no">577</span><span id="line-577"></span>
+<span class="source-line-no">578</span><span id="line-578">    // Seek back to the start of the previous row</span>
+<span class="source-line-no">579</span><span id="line-579">    if (!reseekAtOrAfter(firstKeyOfPreviousRow)) {</span>
+<span class="source-line-no">580</span><span id="line-580">      return false;</span>
+<span class="source-line-no">581</span><span id="line-581">    }</span>
+<span class="source-line-no">582</span><span id="line-582"></span>
+<span class="source-line-no">583</span><span id="line-583">    // If after skipping newer Kvs, we're still in what we thought was the previous</span>
+<span class="source-line-no">584</span><span id="line-584">    // row, then we can exit</span>
+<span class="source-line-no">585</span><span id="line-585">    if (isStillAtSeekTargetAfterSkippingNewerKvs(firstKeyOfPreviousRow)) {</span>
+<span class="source-line-no">586</span><span id="line-586">      return true;</span>
+<span class="source-line-no">587</span><span id="line-587">    }</span>
+<span class="source-line-no">588</span><span id="line-588"></span>
+<span class="source-line-no">589</span><span id="line-589">    // Skipping newer kvs resulted in skipping the entire row that we thought was the</span>
+<span class="source-line-no">590</span><span id="line-590">    // previous row. If we've set a seek hint, then we can use that to go backwards</span>
+<span class="source-line-no">591</span><span id="line-591">    // further</span>
+<span class="source-line-no">592</span><span id="line-592">    if (previousRow != null) {</span>
+<span class="source-line-no">593</span><span id="line-593">      return seekToPreviousRowWithHint();</span>
+<span class="source-line-no">594</span><span id="line-594">    }</span>
+<span class="source-line-no">595</span><span id="line-595"></span>
+<span class="source-line-no">596</span><span id="line-596">    // If we've made it here, then we weren't able to set a seek hint. This can happen</span>
+<span class="source-line-no">597</span><span id="line-597">    // only if we're at the beginning of the storefile i.e. there is no row before this</span>
+<span class="source-line-no">598</span><span id="line-598">    // one</span>
+<span class="source-line-no">599</span><span id="line-599">    return false;</span>
+<span class="source-line-no">600</span><span id="line-600">  }</span>
+<span class="source-line-no">601</span><span id="line-601"></span>
+<span class="source-line-no">602</span><span id="line-602">  /**</span>
+<span class="source-line-no">603</span><span id="line-603">   * This variant of the {@link StoreFileScanner#seekToPreviousRow(ExtendedCell)} method requires</span>
+<span class="source-line-no">604</span><span id="line-604">   * two seeks. It should be used if the cost for seeking is lower i.e. when using a fast seeking</span>
+<span class="source-line-no">605</span><span id="line-605">   * data block encoding like RIV1.</span>
+<span class="source-line-no">606</span><span id="line-606">   */</span>
+<span class="source-line-no">607</span><span id="line-607">  private boolean seekToPreviousRowStateless(ExtendedCell originalKey) throws IOException {</span>
+<span class="source-line-no">608</span><span id="line-608">    ExtendedCell key = originalKey;</span>
+<span class="source-line-no">609</span><span id="line-609">    do {</span>
+<span class="source-line-no">610</span><span id="line-610">      ExtendedCell keyAtBeginningOfRow = PrivateCellUtil.createFirstOnRow(key);</span>
+<span class="source-line-no">611</span><span id="line-611">      if (!seekBefore(keyAtBeginningOfRow)) {</span>
+<span class="source-line-no">612</span><span id="line-612">        return false;</span>
+<span class="source-line-no">613</span><span id="line-613">      }</span>
+<span class="source-line-no">614</span><span id="line-614"></span>
+<span class="source-line-no">615</span><span id="line-615">      ExtendedCell firstKeyOfPreviousRow = PrivateCellUtil.createFirstOnRow(hfs.getKey());</span>
+<span class="source-line-no">616</span><span id="line-616">      if (!seekAtOrAfter(firstKeyOfPreviousRow)) {</span>
+<span class="source-line-no">617</span><span id="line-617">        return false;</span>
 <span class="source-line-no">618</span><span id="line-618">      }</span>
-<span class="source-line-no">619</span><span id="line-619">      key = firstKeyOfPreviousRow;</span>
-<span class="source-line-no">620</span><span id="line-620">    } while (true);</span>
-<span class="source-line-no">621</span><span id="line-621">  }</span>
-<span class="source-line-no">622</span><span id="line-622"></span>
-<span class="source-line-no">623</span><span id="line-623">  private boolean seekBefore(ExtendedCell seekKey) throws IOException {</span>
-<span class="source-line-no">624</span><span id="line-624">    if (seekCount != null) {</span>
-<span class="source-line-no">625</span><span id="line-625">      seekCount.increment();</span>
-<span class="source-line-no">626</span><span id="line-626">    }</span>
-<span class="source-line-no">627</span><span id="line-627">    if (!hfs.seekBefore(seekKey)) {</span>
-<span class="source-line-no">628</span><span id="line-628">      this.cur = null;</span>
-<span class="source-line-no">629</span><span id="line-629">      return false;</span>
+<span class="source-line-no">619</span><span id="line-619"></span>
+<span class="source-line-no">620</span><span id="line-620">      if (isStillAtSeekTargetAfterSkippingNewerKvs(firstKeyOfPreviousRow)) {</span>
+<span class="source-line-no">621</span><span id="line-621">        return true;</span>
+<span class="source-line-no">622</span><span id="line-622">      }</span>
+<span class="source-line-no">623</span><span id="line-623">      key = firstKeyOfPreviousRow;</span>
+<span class="source-line-no">624</span><span id="line-624">    } while (true);</span>
+<span class="source-line-no">625</span><span id="line-625">  }</span>
+<span class="source-line-no">626</span><span id="line-626"></span>
+<span class="source-line-no">627</span><span id="line-627">  private boolean seekBefore(ExtendedCell seekKey) throws IOException {</span>
+<span class="source-line-no">628</span><span id="line-628">    if (seekCount != null) {</span>
+<span class="source-line-no">629</span><span id="line-629">      seekCount.increment();</span>
 <span class="source-line-no">630</span><span id="line-630">    }</span>
-<span class="source-line-no">631</span><span id="line-631"></span>
-<span class="source-line-no">632</span><span id="line-632">    return true;</span>
-<span class="source-line-no">633</span><span id="line-633">  }</span>
-<span class="source-line-no">634</span><span id="line-634"></span>
-<span class="source-line-no">635</span><span id="line-635">  /**</span>
-<span class="source-line-no">636</span><span id="line-636">   * Seeks before the seek target cell and saves the location to {@link #previousRow}. If there</span>
-<span class="source-line-no">637</span><span id="line-637">   * doesn't exist a KV in this file before the seek target cell, reposition the scanner at the</span>
-<span class="source-line-no">638</span><span id="line-638">   * beginning of the storefile (in preparation to a reseek at or after the seek key) and set the</span>
-<span class="source-line-no">639</span><span id="line-639">   * {@link #previousRow} to null. If {@link #previousRow} is ever non-null and then transitions to</span>
-<span class="source-line-no">640</span><span id="line-640">   * being null again via this method, that's because there doesn't exist a row before the seek</span>
-<span class="source-line-no">641</span><span id="line-641">   * target in the storefile (i.e. we're at the beginning of the storefile)</span>
-<span class="source-line-no">642</span><span id="line-642">   */</span>
-<span class="source-line-no">643</span><span id="line-643">  private void seekBeforeAndSaveKeyToPreviousRow(ExtendedCell seekKey) throws IOException {</span>
-<span class="source-line-no">644</span><span id="line-644">    if (seekCount != null) {</span>
-<span class="source-line-no">645</span><span id="line-645">      seekCount.increment();</span>
-<span class="source-line-no">646</span><span id="line-646">    }</span>
-<span class="source-line-no">647</span><span id="line-647">    if (!hfs.seekBefore(seekKey)) {</span>
-<span class="source-line-no">648</span><span id="line-648">      // Since the above seek failed, we need to position ourselves back at the start of the</span>
-<span class="source-line-no">649</span><span id="line-649">      // block or else our reseek might fail. seekTo() cannot return false here as at least</span>
-<span class="source-line-no">650</span><span id="line-650">      // one seekBefore will have returned true by the time we get here</span>
-<span class="source-line-no">651</span><span id="line-651">      hfs.seekTo();</span>
-<span class="source-line-no">652</span><span id="line-652">      this.previousRow = null;</span>
-<span class="source-line-no">653</span><span id="line-653">    } else {</span>
-<span class="source-line-no">654</span><span id="line-654">      this.previousRow = hfs.getCell();</span>
-<span class="source-line-no">655</span><span id="line-655">    }</span>
-<span class="source-line-no">656</span><span id="line-656">  }</span>
-<span class="source-line-no">657</span><span id="line-657"></span>
-<span class="source-line-no">658</span><span id="line-658">  private boolean seekAtOrAfter(ExtendedCell seekKey) throws IOException {</span>
-<span class="source-line-no">659</span><span id="line-659">    if (seekCount != null) {</span>
-<span class="source-line-no">660</span><span id="line-660">      seekCount.increment();</span>
-<span class="source-line-no">661</span><span id="line-661">    }</span>
-<span class="source-line-no">662</span><span id="line-662">    if (!seekAtOrAfter(hfs, seekKey)) {</span>
-<span class="source-line-no">663</span><span id="line-663">      this.cur = null;</span>
-<span class="source-line-no">664</span><span id="line-664">      return false;</span>
+<span class="source-line-no">631</span><span id="line-631">    if (!hfs.seekBefore(seekKey)) {</span>
+<span class="source-line-no">632</span><span id="line-632">      this.cur = null;</span>
+<span class="source-line-no">633</span><span id="line-633">      return false;</span>
+<span class="source-line-no">634</span><span id="line-634">    }</span>
+<span class="source-line-no">635</span><span id="line-635"></span>
+<span class="source-line-no">636</span><span id="line-636">    return true;</span>
+<span class="source-line-no">637</span><span id="line-637">  }</span>
+<span class="source-line-no">638</span><span id="line-638"></span>
+<span class="source-line-no">639</span><span id="line-639">  /**</span>
+<span class="source-line-no">640</span><span id="line-640">   * Seeks before the seek target cell and saves the location to {@link #previousRow}. If there</span>
+<span class="source-line-no">641</span><span id="line-641">   * doesn't exist a KV in this file before the seek target cell, reposition the scanner at the</span>
+<span class="source-line-no">642</span><span id="line-642">   * beginning of the storefile (in preparation to a reseek at or after the seek key) and set the</span>
+<span class="source-line-no">643</span><span id="line-643">   * {@link #previousRow} to null. If {@link #previousRow} is ever non-null and then transitions to</span>
+<span class="source-line-no">644</span><span id="line-644">   * being null again via this method, that's because there doesn't exist a row before the seek</span>
+<span class="source-line-no">645</span><span id="line-645">   * target in the storefile (i.e. we're at the beginning of the storefile)</span>
+<span class="source-line-no">646</span><span id="line-646">   */</span>
+<span class="source-line-no">647</span><span id="line-647">  private void seekBeforeAndSaveKeyToPreviousRow(ExtendedCell seekKey) throws IOException {</span>
+<span class="source-line-no">648</span><span id="line-648">    if (seekCount != null) {</span>
+<span class="source-line-no">649</span><span id="line-649">      seekCount.increment();</span>
+<span class="source-line-no">650</span><span id="line-650">    }</span>
+<span class="source-line-no">651</span><span id="line-651">    if (!hfs.seekBefore(seekKey)) {</span>
+<span class="source-line-no">652</span><span id="line-652">      // Since the above seek failed, we need to position ourselves back at the start of the</span>
+<span class="source-line-no">653</span><span id="line-653">      // block or else our reseek might fail. seekTo() cannot return false here as at least</span>
+<span class="source-line-no">654</span><span id="line-654">      // one seekBefore will have returned true by the time we get here</span>
+<span class="source-line-no">655</span><span id="line-655">      hfs.seekTo();</span>
+<span class="source-line-no">656</span><span id="line-656">      this.previousRow = null;</span>
+<span class="source-line-no">657</span><span id="line-657">    } else {</span>
+<span class="source-line-no">658</span><span id="line-658">      this.previousRow = hfs.getKey();</span>
+<span class="source-line-no">659</span><span id="line-659">    }</span>
+<span class="source-line-no">660</span><span id="line-660">  }</span>
+<span class="source-line-no">661</span><span id="line-661"></span>
+<span class="source-line-no">662</span><span id="line-662">  private boolean seekAtOrAfter(ExtendedCell seekKey) throws IOException {</span>
+<span class="source-line-no">663</span><span id="line-663">    if (seekCount != null) {</span>
+<span class="source-line-no">664</span><span id="line-664">      seekCount.increment();</span>
 <span class="source-line-no">665</span><span id="line-665">    }</span>
-<span class="source-line-no">666</span><span id="line-666"></span>
-<span class="source-line-no">667</span><span id="line-667">    return true;</span>
-<span class="source-line-no">668</span><span id="line-668">  }</span>
-<span class="source-line-no">669</span><span id="line-669"></span>
-<span class="source-line-no">670</span><span id="line-670">  private boolean reseekAtOrAfter(ExtendedCell seekKey) throws IOException {</span>
-<span class="source-line-no">671</span><span id="line-671">    if (seekCount != null) {</span>
-<span class="source-line-no">672</span><span id="line-672">      seekCount.increment();</span>
-<span class="source-line-no">673</span><span id="line-673">    }</span>
-<span class="source-line-no">674</span><span id="line-674">    if (!reseekAtOrAfter(hfs, seekKey)) {</span>
-<span class="source-line-no">675</span><span id="line-675">      this.cur = null;</span>
-<span class="source-line-no">676</span><span id="line-676">      return false;</span>
+<span class="source-line-no">666</span><span id="line-666">    if (!seekAtOrAfter(hfs, seekKey)) {</span>
+<span class="source-line-no">667</span><span id="line-667">      this.cur = null;</span>
+<span class="source-line-no">668</span><span id="line-668">      return false;</span>
+<span class="source-line-no">669</span><span id="line-669">    }</span>
+<span class="source-line-no">670</span><span id="line-670"></span>
+<span class="source-line-no">671</span><span id="line-671">    return true;</span>
+<span class="source-line-no">672</span><span id="line-672">  }</span>
+<span class="source-line-no">673</span><span id="line-673"></span>
+<span class="source-line-no">674</span><span id="line-674">  private boolean reseekAtOrAfter(ExtendedCell seekKey) throws IOException {</span>
+<span class="source-line-no">675</span><span id="line-675">    if (seekCount != null) {</span>
+<span class="source-line-no">676</span><span id="line-676">      seekCount.increment();</span>
 <span class="source-line-no">677</span><span id="line-677">    }</span>
-<span class="source-line-no">678</span><span id="line-678"></span>
-<span class="source-line-no">679</span><span id="line-679">    return true;</span>
-<span class="source-line-no">680</span><span id="line-680">  }</span>
-<span class="source-line-no">681</span><span id="line-681"></span>
-<span class="source-line-no">682</span><span id="line-682">  private boolean isStillAtSeekTargetAfterSkippingNewerKvs(Cell seekKey) throws IOException {</span>
-<span class="source-line-no">683</span><span id="line-683">    setCurrentCell(hfs.getCell());</span>
-<span class="source-line-no">684</span><span id="line-684">    return skipKvsNewerThanReadpointReversed() &amp;&amp; getComparator().compareRows(cur, seekKey) &lt;= 0;</span>
-<span class="source-line-no">685</span><span id="line-685">  }</span>
-<span class="source-line-no">686</span><span id="line-686"></span>
-<span class="source-line-no">687</span><span id="line-687">  private boolean skipKvsNewerThanReadpointReversed() throws IOException {</span>
-<span class="source-line-no">688</span><span id="line-688">    this.stopSkippingKVsIfNextRow = true;</span>
-<span class="source-line-no">689</span><span id="line-689">    boolean resultOfSkipKVs;</span>
-<span class="source-line-no">690</span><span id="line-690">    try {</span>
-<span class="source-line-no">691</span><span id="line-691">      resultOfSkipKVs = skipKVsNewerThanReadpoint();</span>
-<span class="source-line-no">692</span><span id="line-692">    } finally {</span>
-<span class="source-line-no">693</span><span id="line-693">      this.stopSkippingKVsIfNextRow = false;</span>
-<span class="source-line-no">694</span><span id="line-694">    }</span>
-<span class="source-line-no">695</span><span id="line-695"></span>
-<span class="source-line-no">696</span><span id="line-696">    return resultOfSkipKVs;</span>
-<span class="source-line-no">697</span><span id="line-697">  }</span>
-<span class="source-line-no">698</span><span id="line-698"></span>
-<span class="source-line-no">699</span><span id="line-699">  @Override</span>
-<span class="source-line-no">700</span><span id="line-700">  public boolean seekToLastRow() throws IOException {</span>
-<span class="source-line-no">701</span><span id="line-701">    Optional&lt;byte[]&gt; lastRow = reader.getLastRowKey();</span>
-<span class="source-line-no">702</span><span id="line-702">    if (!lastRow.isPresent()) {</span>
-<span class="source-line-no">703</span><span id="line-703">      return false;</span>
-<span class="source-line-no">704</span><span id="line-704">    }</span>
-<span class="source-line-no">705</span><span id="line-705">    ExtendedCell seekKey = PrivateCellUtil.createFirstOnRow(lastRow.get());</span>
-<span class="source-line-no">706</span><span id="line-706">    if (seek(seekKey)) {</span>
-<span class="source-line-no">707</span><span id="line-707">      return true;</span>
-<span class="source-line-no">708</span><span id="line-708">    } else {</span>
-<span class="source-line-no">709</span><span id="line-709">      return seekToPreviousRow(seekKey);</span>
-<span class="source-line-no">710</span><span id="line-710">    }</span>
-<span class="source-line-no">711</span><span id="line-711">  }</span>
-<span class="source-line-no">712</span><span id="line-712"></span>
-<span class="source-line-no">713</span><span id="line-713">  @Override</span>
-<span class="source-line-no">714</span><span id="line-714">  public boolean backwardSeek(ExtendedCell key) throws IOException {</span>
-<span class="source-line-no">715</span><span id="line-715">    seek(key);</span>
-<span class="source-line-no">716</span><span id="line-716">    if (cur == null || getComparator().compareRows(cur, key) &gt; 0) {</span>
-<span class="source-line-no">717</span><span id="line-717">      return seekToPreviousRow(key);</span>
-<span class="source-line-no">718</span><span id="line-718">    }</span>
-<span class="source-line-no">719</span><span id="line-719">    return true;</span>
-<span class="source-line-no">720</span><span id="line-720">  }</span>
-<span class="source-line-no">721</span><span id="line-721"></span>
-<span class="source-line-no">722</span><span id="line-722">  @Override</span>
-<span class="source-line-no">723</span><span id="line-723">  public ExtendedCell getNextIndexedKey() {</span>
-<span class="source-line-no">724</span><span id="line-724">    return hfs.getNextIndexedKey();</span>
-<span class="source-line-no">725</span><span id="line-725">  }</span>
-<span class="source-line-no">726</span><span id="line-726"></span>
-<span class="source-line-no">727</span><span id="line-727">  @Override</span>
-<span class="source-line-no">728</span><span id="line-728">  public void shipped() throws IOException {</span>
-<span class="source-line-no">729</span><span id="line-729">    this.hfs.shipped();</span>
-<span class="source-line-no">730</span><span id="line-730">  }</span>
-<span class="source-line-no">731</span><span id="line-731">}</span>
+<span class="source-line-no">678</span><span id="line-678">    if (!reseekAtOrAfter(hfs, seekKey)) {</span>
+<span class="source-line-no">679</span><span id="line-679">      this.cur = null;</span>
+<span class="source-line-no">680</span><span id="line-680">      return false;</span>
+<span class="source-line-no">681</span><span id="line-681">    }</span>
+<span class="source-line-no">682</span><span id="line-682"></span>
+<span class="source-line-no">683</span><span id="line-683">    return true;</span>
+<span class="source-line-no">684</span><span id="line-684">  }</span>
+<span class="source-line-no">685</span><span id="line-685"></span>
+<span class="source-line-no">686</span><span id="line-686">  private boolean isStillAtSeekTargetAfterSkippingNewerKvs(Cell seekKey) throws IOException {</span>
+<span class="source-line-no">687</span><span id="line-687">    setCurrentCell(hfs.getCell());</span>
+<span class="source-line-no">688</span><span id="line-688">    return skipKvsNewerThanReadpointReversed() &amp;&amp; getComparator().compareRows(cur, seekKey) &lt;= 0;</span>
+<span class="source-line-no">689</span><span id="line-689">  }</span>
+<span class="source-line-no">690</span><span id="line-690"></span>
+<span class="source-line-no">691</span><span id="line-691">  private boolean skipKvsNewerThanReadpointReversed() throws IOException {</span>
+<span class="source-line-no">692</span><span id="line-692">    this.stopSkippingKVsIfNextRow = true;</span>
+<span class="source-line-no">693</span><span id="line-693">    boolean resultOfSkipKVs;</span>
+<span class="source-line-no">694</span><span id="line-694">    try {</span>
+<span class="source-line-no">695</span><span id="line-695">      resultOfSkipKVs = skipKVsNewerThanReadpoint();</span>
+<span class="source-line-no">696</span><span id="line-696">    } finally {</span>
+<span class="source-line-no">697</span><span id="line-697">      this.stopSkippingKVsIfNextRow = false;</span>
+<span class="source-line-no">698</span><span id="line-698">    }</span>
+<span class="source-line-no">699</span><span id="line-699"></span>
+<span class="source-line-no">700</span><span id="line-700">    return resultOfSkipKVs;</span>
+<span class="source-line-no">701</span><span id="line-701">  }</span>
+<span class="source-line-no">702</span><span id="line-702"></span>
+<span class="source-line-no">703</span><span id="line-703">  @Override</span>
+<span class="source-line-no">704</span><span id="line-704">  public boolean seekToLastRow() throws IOException {</span>
+<span class="source-line-no">705</span><span id="line-705">    Optional&lt;byte[]&gt; lastRow = reader.getLastRowKey();</span>
+<span class="source-line-no">706</span><span id="line-706">    if (!lastRow.isPresent()) {</span>
+<span class="source-line-no">707</span><span id="line-707">      return false;</span>
+<span class="source-line-no">708</span><span id="line-708">    }</span>
+<span class="source-line-no">709</span><span id="line-709">    ExtendedCell seekKey = PrivateCellUtil.createFirstOnRow(lastRow.get());</span>
+<span class="source-line-no">710</span><span id="line-710">    if (seek(seekKey)) {</span>
+<span class="source-line-no">711</span><span id="line-711">      return true;</span>
+<span class="source-line-no">712</span><span id="line-712">    } else {</span>
+<span class="source-line-no">713</span><span id="line-713">      return seekToPreviousRow(seekKey);</span>
+<span class="source-line-no">714</span><span id="line-714">    }</span>
+<span class="source-line-no">715</span><span id="line-715">  }</span>
+<span class="source-line-no">716</span><span id="line-716"></span>
+<span class="source-line-no">717</span><span id="line-717">  @Override</span>
+<span class="source-line-no">718</span><span id="line-718">  public boolean backwardSeek(ExtendedCell key) throws IOException {</span>
+<span class="source-line-no">719</span><span id="line-719">    seek(key);</span>
+<span class="source-line-no">720</span><span id="line-720">    if (cur == null || getComparator().compareRows(cur, key) &gt; 0) {</span>
+<span class="source-line-no">721</span><span id="line-721">      return seekToPreviousRow(key);</span>
+<span class="source-line-no">722</span><span id="line-722">    }</span>
+<span class="source-line-no">723</span><span id="line-723">    return true;</span>
+<span class="source-line-no">724</span><span id="line-724">  }</span>
+<span class="source-line-no">725</span><span id="line-725"></span>
+<span class="source-line-no">726</span><span id="line-726">  @Override</span>
+<span class="source-line-no">727</span><span id="line-727">  public ExtendedCell getNextIndexedKey() {</span>
+<span class="source-line-no">728</span><span id="line-728">    return hfs.getNextIndexedKey();</span>
+<span class="source-line-no">729</span><span id="line-729">  }</span>
+<span class="source-line-no">730</span><span id="line-730"></span>
+<span class="source-line-no">731</span><span id="line-731">  @Override</span>
+<span class="source-line-no">732</span><span id="line-732">  public void shipped() throws IOException {</span>
+<span class="source-line-no">733</span><span id="line-733">    this.hfs.shipped();</span>
+<span class="source-line-no">734</span><span id="line-734">  }</span>
+<span class="source-line-no">735</span><span id="line-735">}</span>
 
 
 
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/handler/RegionReplicaFlushHandler.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/handler/RegionReplicaFlushHandler.html
index dc698f08333..07d65a3db39 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/handler/RegionReplicaFlushHandler.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/handler/RegionReplicaFlushHandler.html
@@ -104,112 +104,130 @@
 <span class="source-line-no">091</span><span id="line-91">    return numRetries;</span>
 <span class="source-line-no">092</span><span id="line-92">  }</span>
 <span class="source-line-no">093</span><span id="line-93"></span>
-<span class="source-line-no">094</span><span id="line-94">  void triggerFlushInPrimaryRegion(final HRegion region) throws IOException {</span>
-<span class="source-line-no">095</span><span id="line-95">    long pause = connection.getConfiguration().getLong(HConstants.HBASE_CLIENT_PAUSE,</span>
-<span class="source-line-no">096</span><span id="line-96">      HConstants.DEFAULT_HBASE_CLIENT_PAUSE);</span>
-<span class="source-line-no">097</span><span id="line-97"></span>
-<span class="source-line-no">098</span><span id="line-98">    int maxAttempts = getRetriesCount(connection.getConfiguration());</span>
-<span class="source-line-no">099</span><span id="line-99">    RetryCounter counter = new RetryCounterFactory(maxAttempts, (int) pause).create();</span>
-<span class="source-line-no">100</span><span id="line-100"></span>
-<span class="source-line-no">101</span><span id="line-101">    if (LOG.isDebugEnabled()) {</span>
-<span class="source-line-no">102</span><span id="line-102">      LOG.debug("RPC'ing to primary "</span>
-<span class="source-line-no">103</span><span id="line-103">        + ServerRegionReplicaUtil.getRegionInfoForDefaultReplica(region.getRegionInfo())</span>
-<span class="source-line-no">104</span><span id="line-104">          .getRegionNameAsString()</span>
-<span class="source-line-no">105</span><span id="line-105">        + " from " + region.getRegionInfo().getRegionNameAsString() + " to trigger FLUSH");</span>
-<span class="source-line-no">106</span><span id="line-106">    }</span>
-<span class="source-line-no">107</span><span id="line-107">    while (</span>
-<span class="source-line-no">108</span><span id="line-108">      !region.isClosing() &amp;&amp; !region.isClosed() &amp;&amp; !server.isAborted() &amp;&amp; !server.isStopped()</span>
-<span class="source-line-no">109</span><span id="line-109">    ) {</span>
-<span class="source-line-no">110</span><span id="line-110">      // TODO: flushRegion() is a blocking call waiting for the flush to complete. Ideally we</span>
-<span class="source-line-no">111</span><span id="line-111">      // do not have to wait for the whole flush here, just initiate it.</span>
-<span class="source-line-no">112</span><span id="line-112">      FlushRegionResponse response;</span>
-<span class="source-line-no">113</span><span id="line-113">      try {</span>
-<span class="source-line-no">114</span><span id="line-114">        response = FutureUtils.get(connection.flush(ServerRegionReplicaUtil</span>
-<span class="source-line-no">115</span><span id="line-115">          .getRegionInfoForDefaultReplica(region.getRegionInfo()).getRegionName(), true));</span>
-<span class="source-line-no">116</span><span id="line-116">      } catch (IOException e) {</span>
-<span class="source-line-no">117</span><span id="line-117">        if (</span>
-<span class="source-line-no">118</span><span id="line-118">          e instanceof TableNotFoundException || FutureUtils</span>
-<span class="source-line-no">119</span><span id="line-119">            .get(connection.getAdmin().isTableDisabled(region.getRegionInfo().getTable()))</span>
-<span class="source-line-no">120</span><span id="line-120">        ) {</span>
-<span class="source-line-no">121</span><span id="line-121">          return;</span>
-<span class="source-line-no">122</span><span id="line-122">        }</span>
-<span class="source-line-no">123</span><span id="line-123">        if (!counter.shouldRetry()) {</span>
-<span class="source-line-no">124</span><span id="line-124">          throw e;</span>
-<span class="source-line-no">125</span><span id="line-125">        }</span>
-<span class="source-line-no">126</span><span id="line-126">        // The reason that why we need to retry here is that, the retry for asynchronous admin</span>
-<span class="source-line-no">127</span><span id="line-127">        // request is much simpler than the normal operation, if we failed to locate the region once</span>
-<span class="source-line-no">128</span><span id="line-128">        // then we will throw the exception out and will not try to relocate again. So here we need</span>
-<span class="source-line-no">129</span><span id="line-129">        // to add some retries by ourselves to prevent shutting down the region server too</span>
-<span class="source-line-no">130</span><span id="line-130">        // frequent...</span>
-<span class="source-line-no">131</span><span id="line-131">        LOG.debug("Failed to trigger a flush of primary region replica {} of region {}, retry={}",</span>
-<span class="source-line-no">132</span><span id="line-132">          ServerRegionReplicaUtil.getRegionInfoForDefaultReplica(region.getRegionInfo())</span>
-<span class="source-line-no">133</span><span id="line-133">            .getRegionNameAsString(),</span>
-<span class="source-line-no">134</span><span id="line-134">          region.getRegionInfo().getRegionNameAsString(), counter.getAttemptTimes(), e);</span>
-<span class="source-line-no">135</span><span id="line-135">        try {</span>
-<span class="source-line-no">136</span><span id="line-136">          counter.sleepUntilNextRetry();</span>
-<span class="source-line-no">137</span><span id="line-137">        } catch (InterruptedException e1) {</span>
-<span class="source-line-no">138</span><span id="line-138">          throw new InterruptedIOException(e1.getMessage());</span>
-<span class="source-line-no">139</span><span id="line-139">        }</span>
-<span class="source-line-no">140</span><span id="line-140">        continue;</span>
-<span class="source-line-no">141</span><span id="line-141">      }</span>
-<span class="source-line-no">142</span><span id="line-142"></span>
-<span class="source-line-no">143</span><span id="line-143">      if (response.getFlushed()) {</span>
-<span class="source-line-no">144</span><span id="line-144">        // then we have to wait for seeing the flush entry. All reads will be rejected until we see</span>
-<span class="source-line-no">145</span><span id="line-145">        // a complete flush cycle or replay a region open event</span>
-<span class="source-line-no">146</span><span id="line-146">        if (LOG.isDebugEnabled()) {</span>
-<span class="source-line-no">147</span><span id="line-147">          LOG.debug("Triggered flush of primary region replica "</span>
-<span class="source-line-no">148</span><span id="line-148">            + ServerRegionReplicaUtil.getRegionInfoForDefaultReplica(region.getRegionInfo())</span>
-<span class="source-line-no">149</span><span id="line-149">              .getRegionNameAsString()</span>
-<span class="source-line-no">150</span><span id="line-150">            + " for " + region.getRegionInfo().getEncodedName()</span>
-<span class="source-line-no">151</span><span id="line-151">            + "; now waiting and blocking reads until completes a full flush cycle");</span>
-<span class="source-line-no">152</span><span id="line-152">        }</span>
-<span class="source-line-no">153</span><span id="line-153">        region.setReadsEnabled(true);</span>
-<span class="source-line-no">154</span><span id="line-154">        break;</span>
-<span class="source-line-no">155</span><span id="line-155">      } else {</span>
-<span class="source-line-no">156</span><span id="line-156">        if (response.hasWroteFlushWalMarker()) {</span>
-<span class="source-line-no">157</span><span id="line-157">          if (response.getWroteFlushWalMarker()) {</span>
-<span class="source-line-no">158</span><span id="line-158">            if (LOG.isDebugEnabled()) {</span>
-<span class="source-line-no">159</span><span id="line-159">              LOG.debug("Triggered empty flush marker (memstore empty) on primary region replica "</span>
-<span class="source-line-no">160</span><span id="line-160">                + ServerRegionReplicaUtil.getRegionInfoForDefaultReplica(region.getRegionInfo())</span>
-<span class="source-line-no">161</span><span id="line-161">                  .getRegionNameAsString()</span>
-<span class="source-line-no">162</span><span id="line-162">                + " for " + region.getRegionInfo().getEncodedName()</span>
-<span class="source-line-no">163</span><span id="line-163">                + "; now waiting and blocking reads until observing a flush marker");</span>
-<span class="source-line-no">164</span><span id="line-164">            }</span>
-<span class="source-line-no">165</span><span id="line-165">            region.setReadsEnabled(true);</span>
-<span class="source-line-no">166</span><span id="line-166">            break;</span>
-<span class="source-line-no">167</span><span id="line-167">          } else {</span>
-<span class="source-line-no">168</span><span id="line-168">            // somehow we were not able to get the primary to write the flush request. It may be</span>
-<span class="source-line-no">169</span><span id="line-169">            // closing or already flushing. Retry flush again after some sleep.</span>
-<span class="source-line-no">170</span><span id="line-170">            if (!counter.shouldRetry()) {</span>
-<span class="source-line-no">171</span><span id="line-171">              throw new IOException("Cannot cause primary to flush or drop a wal marker after "</span>
-<span class="source-line-no">172</span><span id="line-172">                + counter.getAttemptTimes() + " retries. Failing opening of this region replica "</span>
-<span class="source-line-no">173</span><span id="line-173">                + region.getRegionInfo().getRegionNameAsString());</span>
-<span class="source-line-no">174</span><span id="line-174">            } else {</span>
-<span class="source-line-no">175</span><span id="line-175">              LOG.warn(</span>
-<span class="source-line-no">176</span><span id="line-176">                "Cannot cause primary replica {} to flush or drop a wal marker "</span>
-<span class="source-line-no">177</span><span id="line-177">                  + "for region replica {}, retry={}",</span>
-<span class="source-line-no">178</span><span id="line-178">                ServerRegionReplicaUtil.getRegionInfoForDefaultReplica(region.getRegionInfo())</span>
-<span class="source-line-no">179</span><span id="line-179">                  .getRegionNameAsString(),</span>
-<span class="source-line-no">180</span><span id="line-180">                region.getRegionInfo().getRegionNameAsString(), counter.getAttemptTimes());</span>
-<span class="source-line-no">181</span><span id="line-181">            }</span>
-<span class="source-line-no">182</span><span id="line-182">          }</span>
-<span class="source-line-no">183</span><span id="line-183">        } else {</span>
-<span class="source-line-no">184</span><span id="line-184">          // nothing to do. Are we dealing with an old server?</span>
-<span class="source-line-no">185</span><span id="line-185">          LOG.warn("Was not able to trigger a flush from primary region due to old server version? "</span>
-<span class="source-line-no">186</span><span id="line-186">            + "Continuing to open the secondary region replica: "</span>
-<span class="source-line-no">187</span><span id="line-187">            + region.getRegionInfo().getRegionNameAsString());</span>
-<span class="source-line-no">188</span><span id="line-188">          break;</span>
-<span class="source-line-no">189</span><span id="line-189">        }</span>
-<span class="source-line-no">190</span><span id="line-190">      }</span>
-<span class="source-line-no">191</span><span id="line-191">      try {</span>
-<span class="source-line-no">192</span><span id="line-192">        counter.sleepUntilNextRetry();</span>
-<span class="source-line-no">193</span><span id="line-193">      } catch (InterruptedException e) {</span>
-<span class="source-line-no">194</span><span id="line-194">        throw new InterruptedIOException(e.getMessage());</span>
-<span class="source-line-no">195</span><span id="line-195">      }</span>
-<span class="source-line-no">196</span><span id="line-196">    }</span>
-<span class="source-line-no">197</span><span id="line-197">    region.setReadsEnabled(true);</span>
-<span class="source-line-no">198</span><span id="line-198">  }</span>
-<span class="source-line-no">199</span><span id="line-199">}</span>
+<span class="source-line-no">094</span><span id="line-94">  private boolean isTableDisabledOrDropped(IOException error, HRegion region) {</span>
+<span class="source-line-no">095</span><span id="line-95">    if (error instanceof TableNotFoundException) {</span>
+<span class="source-line-no">096</span><span id="line-96">      return true;</span>
+<span class="source-line-no">097</span><span id="line-97">    }</span>
+<span class="source-line-no">098</span><span id="line-98">    try {</span>
+<span class="source-line-no">099</span><span id="line-99">      if (</span>
+<span class="source-line-no">100</span><span id="line-100">        FutureUtils.get(connection.getAdmin().isTableDisabled(region.getRegionInfo().getTable()))</span>
+<span class="source-line-no">101</span><span id="line-101">      ) {</span>
+<span class="source-line-no">102</span><span id="line-102">        return true;</span>
+<span class="source-line-no">103</span><span id="line-103">      }</span>
+<span class="source-line-no">104</span><span id="line-104">    } catch (IOException e) {</span>
+<span class="source-line-no">105</span><span id="line-105">      if (error instanceof TableNotFoundException) {</span>
+<span class="source-line-no">106</span><span id="line-106">        return true;</span>
+<span class="source-line-no">107</span><span id="line-107">      } else {</span>
+<span class="source-line-no">108</span><span id="line-108">        LOG.warn("failed tp check whether table {} is disabled", region.getRegionInfo().getTable(),</span>
+<span class="source-line-no">109</span><span id="line-109">          e);</span>
+<span class="source-line-no">110</span><span id="line-110">      }</span>
+<span class="source-line-no">111</span><span id="line-111">    }</span>
+<span class="source-line-no">112</span><span id="line-112">    return false;</span>
+<span class="source-line-no">113</span><span id="line-113">  }</span>
+<span class="source-line-no">114</span><span id="line-114"></span>
+<span class="source-line-no">115</span><span id="line-115">  void triggerFlushInPrimaryRegion(final HRegion region) throws IOException {</span>
+<span class="source-line-no">116</span><span id="line-116">    long pause = connection.getConfiguration().getLong(HConstants.HBASE_CLIENT_PAUSE,</span>
+<span class="source-line-no">117</span><span id="line-117">      HConstants.DEFAULT_HBASE_CLIENT_PAUSE);</span>
+<span class="source-line-no">118</span><span id="line-118"></span>
+<span class="source-line-no">119</span><span id="line-119">    int maxAttempts = getRetriesCount(connection.getConfiguration());</span>
+<span class="source-line-no">120</span><span id="line-120">    RetryCounter counter = new RetryCounterFactory(maxAttempts, (int) pause).create();</span>
+<span class="source-line-no">121</span><span id="line-121"></span>
+<span class="source-line-no">122</span><span id="line-122">    if (LOG.isDebugEnabled()) {</span>
+<span class="source-line-no">123</span><span id="line-123">      LOG.debug("RPC'ing to primary "</span>
+<span class="source-line-no">124</span><span id="line-124">        + ServerRegionReplicaUtil.getRegionInfoForDefaultReplica(region.getRegionInfo())</span>
+<span class="source-line-no">125</span><span id="line-125">          .getRegionNameAsString()</span>
+<span class="source-line-no">126</span><span id="line-126">        + " from " + region.getRegionInfo().getRegionNameAsString() + " to trigger FLUSH");</span>
+<span class="source-line-no">127</span><span id="line-127">    }</span>
+<span class="source-line-no">128</span><span id="line-128">    while (</span>
+<span class="source-line-no">129</span><span id="line-129">      !region.isClosing() &amp;&amp; !region.isClosed() &amp;&amp; !server.isAborted() &amp;&amp; !server.isStopped()</span>
+<span class="source-line-no">130</span><span id="line-130">    ) {</span>
+<span class="source-line-no">131</span><span id="line-131">      // TODO: flushRegion() is a blocking call waiting for the flush to complete. Ideally we</span>
+<span class="source-line-no">132</span><span id="line-132">      // do not have to wait for the whole flush here, just initiate it.</span>
+<span class="source-line-no">133</span><span id="line-133">      FlushRegionResponse response;</span>
+<span class="source-line-no">134</span><span id="line-134">      try {</span>
+<span class="source-line-no">135</span><span id="line-135">        response = FutureUtils.get(connection.flush(ServerRegionReplicaUtil</span>
+<span class="source-line-no">136</span><span id="line-136">          .getRegionInfoForDefaultReplica(region.getRegionInfo()).getRegionName(), true));</span>
+<span class="source-line-no">137</span><span id="line-137">      } catch (IOException e) {</span>
+<span class="source-line-no">138</span><span id="line-138">        if (isTableDisabledOrDropped(e, region)) {</span>
+<span class="source-line-no">139</span><span id="line-139">          return;</span>
+<span class="source-line-no">140</span><span id="line-140">        }</span>
+<span class="source-line-no">141</span><span id="line-141">        if (!counter.shouldRetry()) {</span>
+<span class="source-line-no">142</span><span id="line-142">          throw e;</span>
+<span class="source-line-no">143</span><span id="line-143">        }</span>
+<span class="source-line-no">144</span><span id="line-144">        // The reason that why we need to retry here is that, the retry for asynchronous admin</span>
+<span class="source-line-no">145</span><span id="line-145">        // request is much simpler than the normal operation, if we failed to locate the region once</span>
+<span class="source-line-no">146</span><span id="line-146">        // then we will throw the exception out and will not try to relocate again. So here we need</span>
+<span class="source-line-no">147</span><span id="line-147">        // to add some retries by ourselves to prevent shutting down the region server too</span>
+<span class="source-line-no">148</span><span id="line-148">        // frequent...</span>
+<span class="source-line-no">149</span><span id="line-149">        LOG.debug("Failed to trigger a flush of primary region replica {} of region {}, retry={}",</span>
+<span class="source-line-no">150</span><span id="line-150">          ServerRegionReplicaUtil.getRegionInfoForDefaultReplica(region.getRegionInfo())</span>
+<span class="source-line-no">151</span><span id="line-151">            .getRegionNameAsString(),</span>
+<span class="source-line-no">152</span><span id="line-152">          region.getRegionInfo().getRegionNameAsString(), counter.getAttemptTimes(), e);</span>
+<span class="source-line-no">153</span><span id="line-153">        try {</span>
+<span class="source-line-no">154</span><span id="line-154">          counter.sleepUntilNextRetry();</span>
+<span class="source-line-no">155</span><span id="line-155">        } catch (InterruptedException e1) {</span>
+<span class="source-line-no">156</span><span id="line-156">          throw new InterruptedIOException(e1.getMessage());</span>
+<span class="source-line-no">157</span><span id="line-157">        }</span>
+<span class="source-line-no">158</span><span id="line-158">        continue;</span>
+<span class="source-line-no">159</span><span id="line-159">      }</span>
+<span class="source-line-no">160</span><span id="line-160"></span>
+<span class="source-line-no">161</span><span id="line-161">      if (response.getFlushed()) {</span>
+<span class="source-line-no">162</span><span id="line-162">        // then we have to wait for seeing the flush entry. All reads will be rejected until we see</span>
+<span class="source-line-no">163</span><span id="line-163">        // a complete flush cycle or replay a region open event</span>
+<span class="source-line-no">164</span><span id="line-164">        if (LOG.isDebugEnabled()) {</span>
+<span class="source-line-no">165</span><span id="line-165">          LOG.debug("Triggered flush of primary region replica "</span>
+<span class="source-line-no">166</span><span id="line-166">            + ServerRegionReplicaUtil.getRegionInfoForDefaultReplica(region.getRegionInfo())</span>
+<span class="source-line-no">167</span><span id="line-167">              .getRegionNameAsString()</span>
+<span class="source-line-no">168</span><span id="line-168">            + " for " + region.getRegionInfo().getEncodedName()</span>
+<span class="source-line-no">169</span><span id="line-169">            + "; now waiting and blocking reads until completes a full flush cycle");</span>
+<span class="source-line-no">170</span><span id="line-170">        }</span>
+<span class="source-line-no">171</span><span id="line-171">        region.setReadsEnabled(true);</span>
+<span class="source-line-no">172</span><span id="line-172">        break;</span>
+<span class="source-line-no">173</span><span id="line-173">      } else {</span>
+<span class="source-line-no">174</span><span id="line-174">        if (response.hasWroteFlushWalMarker()) {</span>
+<span class="source-line-no">175</span><span id="line-175">          if (response.getWroteFlushWalMarker()) {</span>
+<span class="source-line-no">176</span><span id="line-176">            if (LOG.isDebugEnabled()) {</span>
+<span class="source-line-no">177</span><span id="line-177">              LOG.debug("Triggered empty flush marker (memstore empty) on primary region replica "</span>
+<span class="source-line-no">178</span><span id="line-178">                + ServerRegionReplicaUtil.getRegionInfoForDefaultReplica(region.getRegionInfo())</span>
+<span class="source-line-no">179</span><span id="line-179">                  .getRegionNameAsString()</span>
+<span class="source-line-no">180</span><span id="line-180">                + " for " + region.getRegionInfo().getEncodedName()</span>
+<span class="source-line-no">181</span><span id="line-181">                + "; now waiting and blocking reads until observing a flush marker");</span>
+<span class="source-line-no">182</span><span id="line-182">            }</span>
+<span class="source-line-no">183</span><span id="line-183">            region.setReadsEnabled(true);</span>
+<span class="source-line-no">184</span><span id="line-184">            break;</span>
+<span class="source-line-no">185</span><span id="line-185">          } else {</span>
+<span class="source-line-no">186</span><span id="line-186">            // somehow we were not able to get the primary to write the flush request. It may be</span>
+<span class="source-line-no">187</span><span id="line-187">            // closing or already flushing. Retry flush again after some sleep.</span>
+<span class="source-line-no">188</span><span id="line-188">            if (!counter.shouldRetry()) {</span>
+<span class="source-line-no">189</span><span id="line-189">              throw new IOException("Cannot cause primary to flush or drop a wal marker after "</span>
+<span class="source-line-no">190</span><span id="line-190">                + counter.getAttemptTimes() + " retries. Failing opening of this region replica "</span>
+<span class="source-line-no">191</span><span id="line-191">                + region.getRegionInfo().getRegionNameAsString());</span>
+<span class="source-line-no">192</span><span id="line-192">            } else {</span>
+<span class="source-line-no">193</span><span id="line-193">              LOG.warn(</span>
+<span class="source-line-no">194</span><span id="line-194">                "Cannot cause primary replica {} to flush or drop a wal marker "</span>
+<span class="source-line-no">195</span><span id="line-195">                  + "for region replica {}, retry={}",</span>
+<span class="source-line-no">196</span><span id="line-196">                ServerRegionReplicaUtil.getRegionInfoForDefaultReplica(region.getRegionInfo())</span>
+<span class="source-line-no">197</span><span id="line-197">                  .getRegionNameAsString(),</span>
+<span class="source-line-no">198</span><span id="line-198">                region.getRegionInfo().getRegionNameAsString(), counter.getAttemptTimes());</span>
+<span class="source-line-no">199</span><span id="line-199">            }</span>
+<span class="source-line-no">200</span><span id="line-200">          }</span>
+<span class="source-line-no">201</span><span id="line-201">        } else {</span>
+<span class="source-line-no">202</span><span id="line-202">          // nothing to do. Are we dealing with an old server?</span>
+<span class="source-line-no">203</span><span id="line-203">          LOG.warn("Was not able to trigger a flush from primary region due to old server version? "</span>
+<span class="source-line-no">204</span><span id="line-204">            + "Continuing to open the secondary region replica: "</span>
+<span class="source-line-no">205</span><span id="line-205">            + region.getRegionInfo().getRegionNameAsString());</span>
+<span class="source-line-no">206</span><span id="line-206">          break;</span>
+<span class="source-line-no">207</span><span id="line-207">        }</span>
+<span class="source-line-no">208</span><span id="line-208">      }</span>
+<span class="source-line-no">209</span><span id="line-209">      try {</span>
+<span class="source-line-no">210</span><span id="line-210">        counter.sleepUntilNextRetry();</span>
+<span class="source-line-no">211</span><span id="line-211">      } catch (InterruptedException e) {</span>
+<span class="source-line-no">212</span><span id="line-212">        throw new InterruptedIOException(e.getMessage());</span>
+<span class="source-line-no">213</span><span id="line-213">      }</span>
+<span class="source-line-no">214</span><span id="line-214">    }</span>
+<span class="source-line-no">215</span><span id="line-215">    region.setReadsEnabled(true);</span>
+<span class="source-line-no">216</span><span id="line-216">  }</span>
+<span class="source-line-no">217</span><span id="line-217">}</span>
 
 
 
diff --git a/downloads.html b/downloads.html
index 2c2f0d95146..e05c75a334c 100644
--- a/downloads.html
+++ b/downloads.html
@@ -422,7 +422,7 @@
         All other marks mentioned may be trademarks or registered trademarks of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-19
+        Last Published: 2025-03-20
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/export_control.html b/export_control.html
index 1a4432750da..1d77f963912 100644
--- a/export_control.html
+++ b/export_control.html
@@ -210,7 +210,7 @@ for more details.</p>
         All other marks mentioned may be trademarks or registered trademarks of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-19
+        Last Published: 2025-03-20
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/index.html b/index.html
index 776586fb9f6..25ca4887eb7 100644
--- a/index.html
+++ b/index.html
@@ -283,7 +283,7 @@
         All other marks mentioned may be trademarks or registered trademarks of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-19
+        Last Published: 2025-03-20
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/issue-management.html b/issue-management.html
index 1d6a33b2a2f..21c5a0d05ef 100644
--- a/issue-management.html
+++ b/issue-management.html
@@ -181,7 +181,7 @@
         All other marks mentioned may be trademarks or registered trademarks of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-19
+        Last Published: 2025-03-20
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/licenses.html b/licenses.html
index 83dc4ddf729..d1d75ff38bc 100644
--- a/licenses.html
+++ b/licenses.html
@@ -383,7 +383,7 @@
         All other marks mentioned may be trademarks or registered trademarks of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-19
+        Last Published: 2025-03-20
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/mailing-lists.html b/mailing-lists.html
index 19d37e612f0..d65b3dca592 100644
--- a/mailing-lists.html
+++ b/mailing-lists.html
@@ -228,7 +228,7 @@
         All other marks mentioned may be trademarks or registered trademarks of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-19
+        Last Published: 2025-03-20
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/metrics.html b/metrics.html
index cd22bb9b609..018e78e7a70 100644
--- a/metrics.html
+++ b/metrics.html
@@ -332,7 +332,7 @@ export HBASE_REGIONSERVER_OPTS=&quot;$HBASE_JMX_OPTS -Dcom.sun.management.jmxrem
         All other marks mentioned may be trademarks or registered trademarks of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-19
+        Last Published: 2025-03-20
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/old_news.html b/old_news.html
index 6b916738a98..27edc640e68 100644
--- a/old_news.html
+++ b/old_news.html
@@ -329,7 +329,7 @@
         All other marks mentioned may be trademarks or registered trademarks of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-19
+        Last Published: 2025-03-20
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/plugin-management.html b/plugin-management.html
index 29839cf81df..929741487b8 100644
--- a/plugin-management.html
+++ b/plugin-management.html
@@ -338,7 +338,7 @@
         All other marks mentioned may be trademarks or registered trademarks of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-19
+        Last Published: 2025-03-20
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/plugins.html b/plugins.html
index 6c987ceab5d..acff20f0a5e 100644
--- a/plugins.html
+++ b/plugins.html
@@ -276,7 +276,7 @@
         All other marks mentioned may be trademarks or registered trademarks of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-19
+        Last Published: 2025-03-20
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/poweredbyhbase.html b/poweredbyhbase.html
index 7a765014725..55124c6765a 100644
--- a/poweredbyhbase.html
+++ b/poweredbyhbase.html
@@ -671,7 +671,7 @@
         All other marks mentioned may be trademarks or registered trademarks of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-19
+        Last Published: 2025-03-20
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/project-info.html b/project-info.html
index 27182a01236..cc3dd8cda90 100644
--- a/project-info.html
+++ b/project-info.html
@@ -225,7 +225,7 @@
         All other marks mentioned may be trademarks or registered trademarks of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-19
+        Last Published: 2025-03-20
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/project-reports.html b/project-reports.html
index 0fb228b33ba..18b0e308eb3 100644
--- a/project-reports.html
+++ b/project-reports.html
@@ -198,7 +198,7 @@
         All other marks mentioned may be trademarks or registered trademarks of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-19
+        Last Published: 2025-03-20
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/pseudo-distributed.html b/pseudo-distributed.html
index 5841b7f5496..c5b06babd91 100644
--- a/pseudo-distributed.html
+++ b/pseudo-distributed.html
@@ -187,7 +187,7 @@ Running Apache HBase (TM) in pseudo-distributed mode
         All other marks mentioned may be trademarks or registered trademarks of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-19
+        Last Published: 2025-03-20
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/replication.html b/replication.html
index a4d50d1d193..6f537c7b9c9 100644
--- a/replication.html
+++ b/replication.html
@@ -182,7 +182,7 @@
         All other marks mentioned may be trademarks or registered trademarks of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-19
+        Last Published: 2025-03-20
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/resources.html b/resources.html
index 77e5812adda..ab8dfcd1999 100644
--- a/resources.html
+++ b/resources.html
@@ -205,7 +205,7 @@
         All other marks mentioned may be trademarks or registered trademarks of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-19
+        Last Published: 2025-03-20
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/scm.html b/scm.html
index 2122bb182b4..ead340a6f57 100644
--- a/scm.html
+++ b/scm.html
@@ -189,7 +189,7 @@
         All other marks mentioned may be trademarks or registered trademarks of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-19
+        Last Published: 2025-03-20
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/sponsors.html b/sponsors.html
index 6c013eac29c..41a150cd343 100644
--- a/sponsors.html
+++ b/sponsors.html
@@ -211,7 +211,7 @@
         All other marks mentioned may be trademarks or registered trademarks of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-19
+        Last Published: 2025-03-20
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/summary.html b/summary.html
index ad4de7a0160..d278fb435e3 100644
--- a/summary.html
+++ b/summary.html
@@ -222,7 +222,7 @@
         All other marks mentioned may be trademarks or registered trademarks of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-19
+        Last Published: 2025-03-20
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/supportingprojects.html b/supportingprojects.html
index 783b18e9772..5d6b76bd936 100644
--- a/supportingprojects.html
+++ b/supportingprojects.html
@@ -401,7 +401,7 @@
         All other marks mentioned may be trademarks or registered trademarks of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-19
+        Last Published: 2025-03-20
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/team.html b/team.html
index 40b42df040b..2514d7ba103 100644
--- a/team.html
+++ b/team.html
@@ -826,7 +826,7 @@
         All other marks mentioned may be trademarks or registered trademarks of their respective owners.
       </div>
       <div style="float: right">
-        Last Published: 2025-03-19
+        Last Published: 2025-03-20
       </div>
         </div>
         <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
diff --git a/testapidocs/index-all.html b/testapidocs/index-all.html
index eb5fd8e8303..6075dd120bf 100644
--- a/testapidocs/index-all.html
+++ b/testapidocs/index-all.html
@@ -619,7 +619,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/backup/TestIncrementalBackupMergeWithBulkLoad.html#afterClass()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.backup">afterClass()</a> - Static method in class org.apache.hadoop.hbase.backup.<a href="../apidocs/org/apache/hadoop/hbase/backup/TestIncrementalBackupMergeWithBulkLoad.html" title="class or interface in org.apache.hadoop.hbase.backup" class="external-link">TestIncrementalBackupMergeW [...]
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#afterClass()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">afterClass()</a> - Static method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSideWithCoprocessor</a></dt>
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#afterClass()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">afterClass()</a> - Static method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSide5</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestAppendFromClientSide.html#afterClass()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">afterClass()</a> - Static method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestAppendFromClientSide.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestAppendFromClientSide</a></dt>
 <dd>&nbsp;</dd>
@@ -843,7 +843,7 @@ loadScripts(document, 'script');</script>
 </dd>
 <dt>assertCounterLt(String, long, BaseSource) - Method in class org.apache.hadoop.hbase.test.MetricsAssertHelperImpl</dt>
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#assertDoubleResult(org.apache.hadoop.hbase.client.Result,byte%5B%5D,byte%5B%5D,byte%5B%5D,byte%5B%5D,byte%5B%5D,byte%5B%5D,byte%5B%5D)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">assertDoubleResult(Result, byte[], byte[], byte[], byte[], byte[], byte[], byte[])</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/ap [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#assertDoubleResult(org.apache.hadoop.hbase.client.Result,byte%5B%5D,byte%5B%5D,byte%5B%5D,byte%5B%5D,byte%5B%5D,byte%5B%5D,byte%5B%5D)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">assertDoubleResult(Result, byte[], byte[], byte[], byte[], byte[], byte[], byte[])</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hb [...]
 <dd>
 <div class="block">Validate that result contains two specified keys, exactly.</div>
 </dd>
@@ -863,7 +863,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/TestMetaTableAccessor.html#assertEmptyMetaLocation(org.apache.hadoop.hbase.client.Table,byte%5B%5D,int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase">assertEmptyMetaLocation(Table, byte[], int)</a> - Static method in class org.apache.hadoop.hbase.<a href="../apidocs/org/apache/hadoop/hbase/TestMetaTableAccessor.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">T [...]
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#assertEmptyResult(org.apache.hadoop.hbase.client.Result)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">assertEmptyResult(Result)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.client" class="ex [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#assertEmptyResult(org.apache.hadoop.hbase.client.Result)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">assertEmptyResult(Result)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientS [...]
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/util/hbck/HbckTestingUtil.html#assertErrors(org.apache.hadoop.hbase.util.HBaseFsck,org.apache.hadoop.hbase.util.HbckErrorReporter.ERROR_CODE%5B%5D)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.util.hbck">assertErrors(HBaseFsck, HbckErrorReporter.ERROR_CODE[])</a> - Static method in class org.apache.hadoop.hbase.util.hbck.<a href="../apidocs/org/apache/hadoop/hbase/util/hbck/HbckTestingUtil.htm [...]
 <dd>&nbsp;</dd>
@@ -908,7 +908,7 @@ loadScripts(document, 'script');</script>
 </dd>
 <dt>assertGaugeLt(String, long, BaseSource) - Method in class org.apache.hadoop.hbase.test.MetricsAssertHelperImpl</dt>
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#assertKey(org.apache.hadoop.hbase.Cell,byte%5B%5D,byte%5B%5D,byte%5B%5D,byte%5B%5D)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">assertKey(Cell, byte[], byte[], byte[], byte[])</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html" title="class or inter [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#assertKey(org.apache.hadoop.hbase.Cell,byte%5B%5D,byte%5B%5D,byte%5B%5D,byte%5B%5D)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">assertKey(Cell, byte[], byte[], byte[], byte[])</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html" title="class or interface in org.apache.hadoop.hb [...]
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/HBaseTestingUtil.html#assertKVListsEqual(java.lang.String,java.util.List,java.util.List)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase">assertKVListsEqual(String, List&lt;? extends Cell&gt;, List&lt;? extends Cell&gt;)</a> - Static method in class org.apache.hadoop.hbase.<a href="../apidocs/org/apache/hadoop/hbase/HBaseTestingUtil.html" title="class or interface in org.apache.hadoop.hbase" clas [...]
 <dd>&nbsp;</dd>
@@ -924,13 +924,13 @@ loadScripts(document, 'script');</script>
 </dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/http/jmx/TestJMXJsonServlet.html#assertNotFind(java.lang.String,java.lang.String)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.http.jmx">assertNotFind(String, String)</a> - Static method in class org.apache.hadoop.hbase.http.jmx.<a href="../apidocs/org/apache/hadoop/hbase/http/jmx/TestJMXJsonServlet.html" title="class or interface in org.apache.hadoop.hbase.http.jmx" class="external-link">Test [...]
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#assertNResult(org.apache.hadoop.hbase.client.Result,byte%5B%5D,byte%5B%5D%5B%5D,byte%5B%5D%5B%5D,byte%5B%5D%5B%5D,int%5B%5D%5B%5D)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">assertNResult(Result, byte[], byte[][], byte[][], byte[][], int[][])</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/ [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#assertNResult(org.apache.hadoop.hbase.client.Result,byte%5B%5D,byte%5B%5D%5B%5D,byte%5B%5D%5B%5D,byte%5B%5D%5B%5D,int%5B%5D%5B%5D)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">assertNResult(Result, byte[], byte[][], byte[][], byte[][], int[][])</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFro [...]
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#assertNResult(org.apache.hadoop.hbase.client.Result,byte%5B%5D,byte%5B%5D,byte%5B%5D,long%5B%5D,byte%5B%5D%5B%5D,int,int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">assertNResult(Result, byte[], byte[], byte[], long[], byte[][], int, int)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/clie [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#assertNResult(org.apache.hadoop.hbase.client.Result,byte%5B%5D,byte%5B%5D,byte%5B%5D,long%5B%5D,byte%5B%5D%5B%5D,int,int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">assertNResult(Result, byte[], byte[], byte[], long[], byte[][], int, int)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromCli [...]
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#assertNullResult(org.apache.hadoop.hbase.client.Result)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">assertNullResult(Result)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.client" class="exte [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#assertNullResult(org.apache.hadoop.hbase.client.Result)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">assertNullResult(Result)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSid [...]
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#assertNumKeys(org.apache.hadoop.hbase.client.Result,int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">assertNumKeys(Result, int)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.client" class="e [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#assertNumKeys(org.apache.hadoop.hbase.client.Result,int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">assertNumKeys(Result, int)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClient [...]
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/snapshot/SnapshotTestingUtils.html#assertOneSnapshotThatMatches(org.apache.hadoop.hbase.client.Admin,byte%5B%5D,org.apache.hadoop.hbase.TableName)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.snapshot">assertOneSnapshotThatMatches(Admin, byte[], TableName)</a> - Static method in class org.apache.hadoop.hbase.snapshot.<a href="../apidocs/org/apache/hadoop/hbase/snapshot/SnapshotTestingUtils.htm [...]
 <dd>
@@ -1003,7 +1003,7 @@ loadScripts(document, 'script');</script>
 </dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/client/RegionReplicaTestHelper.html#assertReplicaDistributed(org.apache.hadoop.hbase.HBaseTestingUtil,org.apache.hadoop.hbase.client.Table)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">assertReplicaDistributed(HBaseTestingUtil, Table)</a> - Static method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/RegionReplicaTestHelper.html" title="class [...]
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#assertRowCount(org.apache.hadoop.hbase.client.Table,int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">assertRowCount(Table, int)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.client" class="e [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#assertRowCount(org.apache.hadoop.hbase.client.Table,int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">assertRowCount(Table, int)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClient [...]
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.html#assertScan(org.apache.hadoop.hbase.regionserver.HRegion,byte%5B%5D,byte%5B%5D)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">assertScan(HRegion, byte[], byte[])</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.html" title="class or interface in org.apache.hadoop.hbase.regio [...]
 <dd>&nbsp;</dd>
@@ -1011,11 +1011,11 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#assertScannerResults(org.apache.hadoop.hbase.regionserver.KeyValueScanner,org.apache.hadoop.hbase.KeyValue%5B%5D)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">assertScannerResults(KeyValueScanner, KeyValue[])</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestDefaultMemStore [...]
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#assertSingleResult(org.apache.hadoop.hbase.client.Result,byte%5B%5D,byte%5B%5D,byte%5B%5D,byte%5B%5D)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">assertSingleResult(Result, byte[], byte[], byte[], byte[])</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocesso [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#assertSingleResult(org.apache.hadoop.hbase.client.Result,byte%5B%5D,byte%5B%5D,byte%5B%5D,byte%5B%5D)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">assertSingleResult(Result, byte[], byte[], byte[], byte[])</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html" title="class or inte [...]
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#assertSingleResult(org.apache.hadoop.hbase.client.Result,byte%5B%5D,byte%5B%5D,byte%5B%5D,long)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">assertSingleResult(Result, byte[], byte[], byte[], long)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html"  [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#assertSingleResult(org.apache.hadoop.hbase.client.Result,byte%5B%5D,byte%5B%5D,byte%5B%5D,long)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">assertSingleResult(Result, byte[], byte[], byte[], long)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html" title="class or interface in [...]
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#assertSingleResult(org.apache.hadoop.hbase.client.Result,byte%5B%5D,byte%5B%5D,byte%5B%5D,long,byte%5B%5D)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">assertSingleResult(Result, byte[], byte[], byte[], long, byte[])</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWit [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#assertSingleResult(org.apache.hadoop.hbase.client.Result,byte%5B%5D,byte%5B%5D,byte%5B%5D,long,byte%5B%5D)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">assertSingleResult(Result, byte[], byte[], byte[], long, byte[])</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html" title="cl [...]
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/hbtop/TestUtils.html#assertSummary(org.apache.hadoop.hbase.hbtop.screen.top.Summary)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.hbtop">assertSummary(Summary)</a> - Static method in class org.apache.hadoop.hbase.hbtop.<a href="../apidocs/org/apache/hadoop/hbase/hbtop/TestUtils.html" title="class or interface in org.apache.hadoop.hbase.hbtop" class="external-link">TestUtils</a></dt>
 <dd>&nbsp;</dd>
@@ -1618,7 +1618,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/rest/client/RemoteHTable.html#buildRowSpec(byte%5B%5D,java.util.Map,long,long,int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.rest.client">buildRowSpec(byte[], Map, long, long, int)</a> - Method in class org.apache.hadoop.hbase.rest.client.<a href="../apidocs/org/apache/hadoop/hbase/rest/client/RemoteHTable.html" title="class or interface in org.apache.hadoop.hbase.rest.client" class="extern [...]
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#buildScanner(java.lang.String,java.lang.String,org.apache.hadoop.hbase.client.Table)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">buildScanner(String, String, Table)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html" title="class or interface in org [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#buildScanner(java.lang.String,java.lang.String,org.apache.hadoop.hbase.client.Table)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">buildScanner(String, String, Table)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html" title="class or interface in org.apache.hadoop.hbase.client" [...]
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/http/TestProxyUserSpnegoHttpServer.html#buildSpnegoConfiguration(org.apache.hadoop.conf.Configuration,java.lang.String,java.io.File)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.http">buildSpnegoConfiguration(Configuration, String, File)</a> - Static method in class org.apache.hadoop.hbase.http.<a href="../apidocs/org/apache/hadoop/hbase/http/TestProxyUserSpnegoHttpServer.html" title="class or [...]
 <dd>&nbsp;</dd>
@@ -6341,9 +6341,9 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetion.MyHStore.html#createScanner(org.apache.hadoop.hbase.client.Scan,org.apache.hadoop.hbase.regionserver.ScanInfo,java.util.NavigableSet,long)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">createScanner(Scan, ScanInfo, NavigableSet&lt;byte[]&gt;, long)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/clie [...]
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#createScanWithRowFilter(byte%5B%5D)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">createScanWithRowFilter(byte[])</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">Te [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#createScanWithRowFilter(byte%5B%5D)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">createScanWithRowFilter(byte[])</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSide5</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#createScanWithRowFilter(byte%5B%5D,byte%5B%5D,org.apache.hadoop.hbase.CompareOperator)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">createScanWithRowFilter(byte[], byte[], CompareOperator)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html" title="cl [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#createScanWithRowFilter(byte%5B%5D,byte%5B%5D,org.apache.hadoop.hbase.CompareOperator)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">createScanWithRowFilter(byte[], byte[], CompareOperator)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html" title="class or interface in org.apac [...]
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/client/AbstractTestScanCursor.html#createScanWithSizeLimit()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">createScanWithSizeLimit()</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/AbstractTestScanCursor.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">AbstractTestScanCursor</a></dt>
 <dd>&nbsp;</dd>
@@ -7194,7 +7194,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/rsgroup/VerifyingRSGroupAdmin.html#deleteColumnFamilyAsync(org.apache.hadoop.hbase.TableName,byte%5B%5D)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.rsgroup">deleteColumnFamilyAsync(TableName, byte[])</a> - Method in class org.apache.hadoop.hbase.rsgroup.<a href="../apidocs/org/apache/hadoop/hbase/rsgroup/VerifyingRSGroupAdmin.html" title="class or interface in org.apache.hadoop.hbase.rsgroup [...]
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#deleteColumns(org.apache.hadoop.hbase.client.Table,java.lang.String,java.lang.String)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">deleteColumns(Table, String, String)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html" title="class or interface in o [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#deleteColumns(org.apache.hadoop.hbase.client.Table,java.lang.String,java.lang.String)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">deleteColumns(Table, String, String)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html" title="class or interface in org.apache.hadoop.hbase.clien [...]
 <dd>&nbsp;</dd>
 <dt>org.apache.hadoop.hbase.chaos.actions.DeleteDataFilesAction - Class in <a href="org/apache/hadoop/hbase/chaos/actions/package-summary.html">org.apache.hadoop.hbase.chaos.actions</a></dt>
 <dd>
@@ -7855,7 +7855,7 @@ loadScripts(document, 'script');</script>
 <dd>
 <div class="block">Used by tests to inject an edge into the manager.</div>
 </dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#equals(byte%5B%5D,byte%5B%5D)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">equals(byte[], byte[])</a> - Static method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromCl [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#equals(byte%5B%5D,byte%5B%5D)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">equals(byte[], byte[])</a> - Static method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSide5</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/client/ColumnCountOnRowFilter.html#equals(java.lang.Object)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">equals(Object)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/ColumnCountOnRowFilter.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">ColumnCountOnRowFilter</a></dt>
 <dd>&nbsp;</dd>
@@ -8756,7 +8756,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestRegionLocator.html#getAllRegionLocations(org.apache.hadoop.hbase.TableName)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">getAllRegionLocations(TableName)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestRegionLocator.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestRegionLo [...]
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#getAllVersionsAndVerify(org.apache.hadoop.hbase.client.Table,byte%5B%5D,byte%5B%5D,byte%5B%5D,long%5B%5D,byte%5B%5D%5B%5D,int,int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">getAllVersionsAndVerify(Table, byte[], byte[], byte[], long[], byte[][], int, int)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#getAllVersionsAndVerify(org.apache.hadoop.hbase.client.Table,byte%5B%5D,byte%5B%5D,byte%5B%5D,long%5B%5D,byte%5B%5D%5B%5D,int,int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">getAllVersionsAndVerify(Table, byte[], byte[], byte[], long[], byte[][], int, int)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/ [...]
 <dd>&nbsp;</dd>
 <dt>getAndStartMonkey() - Method in class org.apache.hadoop.hbase.chaos.util.ChaosMonkeyRunner</dt>
 <dd>&nbsp;</dd>
@@ -10006,7 +10006,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/mob/TestMobCompactionWithDefaults.html#getNumberOfMobFiles(org.apache.hadoop.hbase.TableName,java.lang.String)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.mob">getNumberOfMobFiles(TableName, String)</a> - Method in class org.apache.hadoop.hbase.mob.<a href="../apidocs/org/apache/hadoop/hbase/mob/TestMobCompactionWithDefaults.html" title="class or interface in org.apache.hadoop.hbase.mob" clas [...]
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#getNumberOfRows(java.lang.String,java.lang.String,org.apache.hadoop.hbase.client.Table)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">getNumberOfRows(String, String, Table)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html" title="class or interface  [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#getNumberOfRows(java.lang.String,java.lang.String,org.apache.hadoop.hbase.client.Table)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">getNumberOfRows(String, String, Table)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html" title="class or interface in org.apache.hadoop.hbase.c [...]
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/MetricsRegionWrapperStub.html#getNumBytesCompacted()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">getNumBytesCompacted()</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/MetricsRegionWrapperStub.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">MetricsRegio [...]
 <dd>&nbsp;</dd>
@@ -10796,7 +10796,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.html#getShortCircuitBytesRead()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">getShortCircuitBytesRead()</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="externa [...]
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#getSingleScanResult(org.apache.hadoop.hbase.client.Table,org.apache.hadoop.hbase.client.Scan)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">getSingleScanResult(Table, Scan)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html" title="class or interface  [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#getSingleScanResult(org.apache.hadoop.hbase.client.Table,org.apache.hadoop.hbase.client.Scan)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">getSingleScanResult(Table, Scan)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html" title="class or interface in org.apache.hadoop.hbase.c [...]
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.html#getSmallCompactionQueueSize()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">getSmallCompactionQueueSize()</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="e [...]
 <dd>&nbsp;</dd>
@@ -11052,9 +11052,9 @@ loadScripts(document, 'script');</script>
 <dd>
 <div class="block">Returns the underlying instance of <a href="../apidocs/org/apache/hadoop/hbase/HBaseTestingUtil.html" title="class or interface in org.apache.hadoop.hbase" class="external-link"><code>HBaseTestingUtil</code></a></div>
 </dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#getTestNull(org.apache.hadoop.hbase.client.Table,byte%5B%5D,byte%5B%5D,byte%5B%5D)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">getTestNull(Table, byte[], byte[], byte[])</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html" title="class or interface i [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#getTestNull(org.apache.hadoop.hbase.client.Table,byte%5B%5D,byte%5B%5D,byte%5B%5D)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">getTestNull(Table, byte[], byte[], byte[])</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html" title="class or interface in org.apache.hadoop.hbase.cl [...]
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#getTestNull(org.apache.hadoop.hbase.client.Table,byte%5B%5D,byte%5B%5D,long)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">getTestNull(Table, byte[], byte[], long)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html" title="class or interface in org.ap [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#getTestNull(org.apache.hadoop.hbase.client.Table,byte%5B%5D,byte%5B%5D,long)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">getTestNull(Table, byte[], byte[], long)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html" title="class or interface in org.apache.hadoop.hbase.client" cl [...]
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientSchemaChangeTestBase.html#getTestRestoreSchemaChangeHCD()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">getTestRestoreSchemaChangeHCD()</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/RestoreSnapshotFromClientSchemaChangeTestBase.html" title="class or interface in org.apache.hadoop.hbase.client" clas [...]
 <dd>&nbsp;</dd>
@@ -11144,22 +11144,22 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/rest/RowResourceBase.html#getValueXML(java.lang.String,org.apache.http.Header%5B%5D)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.rest">getValueXML(String, Header[])</a> - Static method in class org.apache.hadoop.hbase.rest.<a href="../apidocs/org/apache/hadoop/hbase/rest/RowResourceBase.html" title="class or interface in org.apache.hadoop.hbase.rest" class="external-link">RowResourceBase</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#getVerifySingleColumn(org.apache.hadoop.hbase.client.Table,byte%5B%5D%5B%5D,int,byte%5B%5D%5B%5D,int,byte%5B%5D%5B%5D,int,byte%5B%5D%5B%5D,int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">getVerifySingleColumn(Table, byte[][], int, byte[][], int, byte[][], int, byte[][], int)</a> - Method in class org.apache.hadoop.hbase.client.<a href=".. [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#getVerifySingleColumn(org.apache.hadoop.hbase.client.Table,byte%5B%5D%5B%5D,int,byte%5B%5D%5B%5D,int,byte%5B%5D%5B%5D,int,byte%5B%5D%5B%5D,int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">getVerifySingleColumn(Table, byte[][], int, byte[][], int, byte[][], int, byte[][], int)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/a [...]
 <dd>
 <div class="block">Verify a single column using gets.</div>
 </dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#getVerifySingleEmpty(org.apache.hadoop.hbase.client.Table,byte%5B%5D%5B%5D,int,byte%5B%5D%5B%5D,int,byte%5B%5D%5B%5D,int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">getVerifySingleEmpty(Table, byte[][], int, byte[][], int, byte[][], int)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/clien [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#getVerifySingleEmpty(org.apache.hadoop.hbase.client.Table,byte%5B%5D%5B%5D,int,byte%5B%5D%5B%5D,int,byte%5B%5D%5B%5D,int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">getVerifySingleEmpty(Table, byte[][], int, byte[][], int, byte[][], int)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClie [...]
 <dd>
 <div class="block">Verify we do not read any values by accident around a single column Same requirements as
  getVerifySingleColumn</div>
 </dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#getVersionAndVerify(org.apache.hadoop.hbase.client.Table,byte%5B%5D,byte%5B%5D,byte%5B%5D,long,byte%5B%5D)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">getVersionAndVerify(Table, byte[], byte[], byte[], long, byte[])</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWit [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#getVersionAndVerify(org.apache.hadoop.hbase.client.Table,byte%5B%5D,byte%5B%5D,byte%5B%5D,long,byte%5B%5D)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">getVersionAndVerify(Table, byte[], byte[], byte[], long, byte[])</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html" title="cl [...]
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#getVersionAndVerifyMissing(org.apache.hadoop.hbase.client.Table,byte%5B%5D,byte%5B%5D,byte%5B%5D,long)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">getVersionAndVerifyMissing(Table, byte[], byte[], byte[], long)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCopr [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#getVersionAndVerifyMissing(org.apache.hadoop.hbase.client.Table,byte%5B%5D,byte%5B%5D,byte%5B%5D,long)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">getVersionAndVerifyMissing(Table, byte[], byte[], byte[], long)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html" title="class o [...]
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#getVersionRangeAndVerify(org.apache.hadoop.hbase.client.Table,byte%5B%5D,byte%5B%5D,byte%5B%5D,long%5B%5D,byte%5B%5D%5B%5D,int,int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">getVersionRangeAndVerify(Table, byte[], byte[], byte[], long[], byte[][], int, int)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apac [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#getVersionRangeAndVerify(org.apache.hadoop.hbase.client.Table,byte%5B%5D,byte%5B%5D,byte%5B%5D,long%5B%5D,byte%5B%5D%5B%5D,int,int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">getVersionRangeAndVerify(Table, byte[], byte[], byte[], long[], byte[][], int, int)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbas [...]
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#getVersionRangeAndVerifyGreaterThan(org.apache.hadoop.hbase.client.Table,byte%5B%5D,byte%5B%5D,byte%5B%5D,long%5B%5D,byte%5B%5D%5B%5D,int,int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">getVersionRangeAndVerifyGreaterThan(Table, byte[], byte[], byte[], long[], byte[][], int, int)</a> - Method in class org.apache.hadoop.hbase.client.<a hre [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#getVersionRangeAndVerifyGreaterThan(org.apache.hadoop.hbase.client.Table,byte%5B%5D,byte%5B%5D,byte%5B%5D,long%5B%5D,byte%5B%5D%5B%5D,int,int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">getVersionRangeAndVerifyGreaterThan(Table, byte[], byte[], byte[], long[], byte[][], int, int)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/ [...]
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/Waiter.html#getWaitForRatio(org.apache.hadoop.conf.Configuration)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase">getWaitForRatio(Configuration)</a> - Static method in class org.apache.hadoop.hbase.<a href="../apidocs/org/apache/hadoop/hbase/Waiter.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">Waiter</a></dt>
 <dd>
@@ -11828,7 +11828,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/security/AbstractTestTlsRejectPlainText.html#initialize()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.security">initialize()</a> - Static method in class org.apache.hadoop.hbase.security.<a href="../apidocs/org/apache/hadoop/hbase/security/AbstractTestTlsRejectPlainText.html" title="class or interface in org.apache.hadoop.hbase.security" class="external-link">AbstractTestTlsRejectPlainText</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#initialize(java.lang.Class,int,java.lang.Class...)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">initialize(Class&lt;? extends ConnectionRegistry&gt;, int, Class&lt;?&gt;...)</a> - Static method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html" title="class or i [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#initialize(java.lang.Class,int,java.lang.Class...)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">initialize(Class&lt;? extends ConnectionRegistry&gt;, int, Class&lt;?&gt;...)</a> - Static method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html" title="class or interface in org.apache.hadoo [...]
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/security/AbstractTestMutualTls.html#initialize(org.apache.hadoop.conf.Configuration,org.apache.hadoop.conf.Configuration)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.security">initialize(Configuration, Configuration)</a> - Method in class org.apache.hadoop.hbase.security.<a href="../apidocs/org/apache/hadoop/hbase/security/AbstractTestMutualTls.html" title="class or interface in org.apache.ha [...]
 <dd>&nbsp;</dd>
@@ -12477,7 +12477,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/TestRESTApiClusterManager.html#isRunningPositive()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase">isRunningPositive()</a> - Method in class org.apache.hadoop.hbase.<a href="../apidocs/org/apache/hadoop/hbase/TestRESTApiClusterManager.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">TestRESTApiClusterManager</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#isSameParameterizedCluster(java.lang.Class,int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">isSameParameterizedCluster(Class&lt;?&gt;, int)</a> - Static method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html" title="class or interface in org.apache.hadoop.hba [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#isSameParameterizedCluster(java.lang.Class,int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">isSameParameterizedCluster(Class&lt;?&gt;, int)</a> - Static method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-l [...]
 <dd>
 <div class="block">JUnit does not provide an easy way to run a hook after each parameterized run.</div>
 </dd>
@@ -13356,18 +13356,18 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/mapreduce/MultiTableInputFormatTestBase.ScanMapper.html#makeAssertions(org.apache.hadoop.hbase.io.ImmutableBytesWritable,org.apache.hadoop.hbase.client.Result)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.mapreduce">makeAssertions(ImmutableBytesWritable, Result)</a> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="../apidocs/org/apache/hadoop/hbase/mapreduce/MultiTableInputFormatTe [...]
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#makeN(byte%5B%5D,int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">makeN(byte[], int)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSideWithCoproce [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#makeN(byte%5B%5D,int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">makeN(byte[], int)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSide5</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/HTestConst.html#makeNAscii(byte%5B%5D,int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase">makeNAscii(byte[], int)</a> - Static method in class org.apache.hadoop.hbase.<a href="../apidocs/org/apache/hadoop/hbase/HTestConst.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">HTestConst</a></dt>
 <dd>
 <div class="block">Generate the given number of unique byte sequences by appending numeric suffixes (ASCII
  representations of decimal numbers).</div>
 </dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#makeNBig(byte%5B%5D,int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">makeNBig(byte[], int)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSideWithC [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#makeNBig(byte%5B%5D,int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">makeNBig(byte[], int)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSide5</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactingMemStore.html#makeQualifier(int,int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">makeQualifier(int, int)</a> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestCompactingMemStore.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">TestComp [...]
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#makeStamps(int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">makeStamps(int)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSideWithCoprocessor</a></dt>
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#makeStamps(int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">makeStamps(int)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSide5</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/master/AbstractTestDLS.html#makeWAL(org.apache.hadoop.hbase.regionserver.HRegionServer,java.util.List,int,int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.master">makeWAL(HRegionServer, List&lt;RegionInfo&gt;, int, int)</a> - Method in class org.apache.hadoop.hbase.master.<a href="../apidocs/org/apache/hadoop/hbase/master/AbstractTestDLS.html" title="class or interface in org.apache.hadoop.hb [...]
 <dd>&nbsp;</dd>
@@ -16708,7 +16708,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/ipc/TestPluggableQueueImpl.html#put(org.apache.hadoop.hbase.ipc.CallRunner)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.ipc">put(CallRunner)</a> - Method in class org.apache.hadoop.hbase.ipc.<a href="../apidocs/org/apache/hadoop/hbase/ipc/TestPluggableQueueImpl.html" title="class or interface in org.apache.hadoop.hbase.ipc" class="external-link">TestPluggableQueueImpl</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#putRows(org.apache.hadoop.hbase.client.Table,int,java.lang.String,java.lang.String)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">putRows(Table, int, String, String)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html" title="class or interface in org. [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#putRows(org.apache.hadoop.hbase.client.Table,int,java.lang.String,java.lang.String)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">putRows(Table, int, String, String)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html" title="class or interface in org.apache.hadoop.hbase.client"  [...]
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestParallelPut.Putter.html#%3Cinit%3E(org.apache.hadoop.hbase.regionserver.HRegion,int,int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">Putter(HRegion, int, int)</a> - Constructor for class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestParallelPut.Putter.html" title="class or interface in org.apache.hadoop.hbase.r [...]
 <dd>&nbsp;</dd>
@@ -17975,7 +17975,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/client/DummyAsyncTable.html#scanAll(org.apache.hadoop.hbase.client.Scan)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">scanAll(Scan)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/DummyAsyncTable.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">DummyAsyncTable</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#scanAllVersionsAndVerify(org.apache.hadoop.hbase.client.Table,byte%5B%5D,byte%5B%5D,byte%5B%5D,long%5B%5D,byte%5B%5D%5B%5D,int,int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">scanAllVersionsAndVerify(Table, byte[], byte[], byte[], long[], byte[][], int, int)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apac [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#scanAllVersionsAndVerify(org.apache.hadoop.hbase.client.Table,byte%5B%5D,byte%5B%5D,byte%5B%5D,long%5B%5D,byte%5B%5D%5B%5D,int,int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">scanAllVersionsAndVerify(Table, byte[], byte[], byte[], long[], byte[][], int, int)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbas [...]
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestAsyncTableScan.html#scanCreater" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">scanCreater</a> - Variable in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestAsyncTableScan.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestAsyncTableScan</a></dt>
 <dd>&nbsp;</dd>
@@ -18014,9 +18014,9 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/mob/TestMobCompactionWithDefaults.html#scanTable(org.apache.hadoop.hbase.TableName)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.mob">scanTable(TableName)</a> - Method in class org.apache.hadoop.hbase.mob.<a href="../apidocs/org/apache/hadoop/hbase/mob/TestMobCompactionWithDefaults.html" title="class or interface in org.apache.hadoop.hbase.mob" class="external-link">TestMobCompactionWithDefaul [...]
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#scanTestNull(org.apache.hadoop.hbase.client.Table,byte%5B%5D,byte%5B%5D,byte%5B%5D)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">scanTestNull(Table, byte[], byte[], byte[])</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html" title="class or interface [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#scanTestNull(org.apache.hadoop.hbase.client.Table,byte%5B%5D,byte%5B%5D,byte%5B%5D)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">scanTestNull(Table, byte[], byte[], byte[])</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html" title="class or interface in org.apache.hadoop.hbase. [...]
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#scanTestNull(org.apache.hadoop.hbase.client.Table,byte%5B%5D,byte%5B%5D,byte%5B%5D,boolean)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">scanTestNull(Table, byte[], byte[], byte[], boolean)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html" title="c [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#scanTestNull(org.apache.hadoop.hbase.client.Table,byte%5B%5D,byte%5B%5D,byte%5B%5D,boolean)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">scanTestNull(Table, byte[], byte[], byte[], boolean)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html" title="class or interface in org.apa [...]
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestAsyncTableScan.html#scanType" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">scanType</a> - Variable in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestAsyncTableScan.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestAsyncTableScan</a></dt>
 <dd>&nbsp;</dd>
@@ -18026,19 +18026,19 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestRawAsyncTableScan.html#scanType" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">scanType</a> - Variable in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestRawAsyncTableScan.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestRawAsyncTableScan</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#scanVerifySingleColumn(org.apache.hadoop.hbase.client.Table,byte%5B%5D%5B%5D,int,byte%5B%5D%5B%5D,int,byte%5B%5D%5B%5D,int,byte%5B%5D%5B%5D,int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">scanVerifySingleColumn(Table, byte[][], int, byte[][], int, byte[][], int, byte[][], int)</a> - Method in class org.apache.hadoop.hbase.client.<a href=" [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#scanVerifySingleColumn(org.apache.hadoop.hbase.client.Table,byte%5B%5D%5B%5D,int,byte%5B%5D%5B%5D,int,byte%5B%5D%5B%5D,int,byte%5B%5D%5B%5D,int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">scanVerifySingleColumn(Table, byte[][], int, byte[][], int, byte[][], int, byte[][], int)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org [...]
 <dd>
 <div class="block">Verify a single column using scanners.</div>
 </dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#scanVerifySingleEmpty(org.apache.hadoop.hbase.client.Table,byte%5B%5D%5B%5D,int,byte%5B%5D%5B%5D,int,byte%5B%5D%5B%5D,int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">scanVerifySingleEmpty(Table, byte[][], int, byte[][], int, byte[][], int)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/cli [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#scanVerifySingleEmpty(org.apache.hadoop.hbase.client.Table,byte%5B%5D%5B%5D,int,byte%5B%5D%5B%5D,int,byte%5B%5D%5B%5D,int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">scanVerifySingleEmpty(Table, byte[][], int, byte[][], int, byte[][], int)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromCl [...]
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#scanVersionAndVerify(org.apache.hadoop.hbase.client.Table,byte%5B%5D,byte%5B%5D,byte%5B%5D,long,byte%5B%5D)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">scanVersionAndVerify(Table, byte[], byte[], byte[], long, byte[])</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideW [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#scanVersionAndVerify(org.apache.hadoop.hbase.client.Table,byte%5B%5D,byte%5B%5D,byte%5B%5D,long,byte%5B%5D)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">scanVersionAndVerify(Table, byte[], byte[], byte[], long, byte[])</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html" title=" [...]
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#scanVersionAndVerifyMissing(org.apache.hadoop.hbase.client.Table,byte%5B%5D,byte%5B%5D,byte%5B%5D,long)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">scanVersionAndVerifyMissing(Table, byte[], byte[], byte[], long)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCo [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#scanVersionAndVerifyMissing(org.apache.hadoop.hbase.client.Table,byte%5B%5D,byte%5B%5D,byte%5B%5D,long)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">scanVersionAndVerifyMissing(Table, byte[], byte[], byte[], long)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html" title="class [...]
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#scanVersionRangeAndVerify(org.apache.hadoop.hbase.client.Table,byte%5B%5D,byte%5B%5D,byte%5B%5D,long%5B%5D,byte%5B%5D%5B%5D,int,int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">scanVersionRangeAndVerify(Table, byte[], byte[], byte[], long[], byte[][], int, int)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/ap [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#scanVersionRangeAndVerify(org.apache.hadoop.hbase.client.Table,byte%5B%5D,byte%5B%5D,byte%5B%5D,long%5B%5D,byte%5B%5D%5B%5D,int,int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">scanVersionRangeAndVerify(Table, byte[], byte[], byte[], long[], byte[][], int, int)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hb [...]
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#scanVersionRangeAndVerifyGreaterThan(org.apache.hadoop.hbase.client.Table,byte%5B%5D,byte%5B%5D,byte%5B%5D,long%5B%5D,byte%5B%5D%5B%5D,int,int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">scanVersionRangeAndVerifyGreaterThan(Table, byte[], byte[], byte[], long[], byte[][], int, int)</a> - Method in class org.apache.hadoop.hbase.client.<a h [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#scanVersionRangeAndVerifyGreaterThan(org.apache.hadoop.hbase.client.Table,byte%5B%5D,byte%5B%5D,byte%5B%5D,long%5B%5D,byte%5B%5D%5B%5D,int,int)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">scanVersionRangeAndVerifyGreaterThan(Table, byte[], byte[], byte[], long[], byte[][], int, int)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidoc [...]
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestSCVFWithMiniCluster.html#scanWithAllQualifiersOfBothFamilies()" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.regionserver">scanWithAllQualifiersOfBothFamilies()</a> - Method in class org.apache.hadoop.hbase.regionserver.<a href="../apidocs/org/apache/hadoop/hbase/regionserver/TestSCVFWithMiniCluster.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class= [...]
 <dd>
@@ -20850,9 +20850,9 @@ loadScripts(document, 'script');</script>
 <dd>
 <div class="block">Subclass so can get at protected methods (none at moment).</div>
 </dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#singleRowGetTest(org.apache.hadoop.hbase.client.Table,byte%5B%5D%5B%5D,byte%5B%5D%5B%5D,byte%5B%5D%5B%5D,byte%5B%5D%5B%5D)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">singleRowGetTest(Table, byte[][], byte[][], byte[][], byte[][])</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFr [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#singleRowGetTest(org.apache.hadoop.hbase.client.Table,byte%5B%5D%5B%5D,byte%5B%5D%5B%5D,byte%5B%5D%5B%5D,byte%5B%5D%5B%5D)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">singleRowGetTest(Table, byte[][], byte[][], byte[][], byte[][])</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5. [...]
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#singleRowScanTest(org.apache.hadoop.hbase.client.Table,byte%5B%5D%5B%5D,byte%5B%5D%5B%5D,byte%5B%5D%5B%5D,byte%5B%5D%5B%5D)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">singleRowScanTest(Table, byte[][], byte[][], byte[][], byte[][])</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/Test [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#singleRowScanTest(org.apache.hadoop.hbase.client.Table,byte%5B%5D%5B%5D,byte%5B%5D%5B%5D,byte%5B%5D%5B%5D,byte%5B%5D%5B%5D)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">singleRowScanTest(Table, byte[][], byte[][], byte[][], byte[][])</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide [...]
 <dd>&nbsp;</dd>
 <dt>sink - Variable in class org.apache.hadoop.hbase.test.IntegrationTestReplication.VerifyReplicationLoop</dt>
 <dd>&nbsp;</dd>
@@ -21131,7 +21131,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="../apidocs/org/apache/hadoop/hbase/rsgroup/VerifyingRSGroupAdmin.html#splitSwitch(boolean,boolean)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.rsgroup">splitSwitch(boolean, boolean)</a> - Method in class org.apache.hadoop.hbase.rsgroup.<a href="../apidocs/org/apache/hadoop/hbase/rsgroup/VerifyingRSGroupAdmin.html" title="class or interface in org.apache.hadoop.hbase.rsgroup" class="external-link">VerifyingRSGroupAdmin</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#splitTable(org.apache.hadoop.hbase.client.Table)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">splitTable(Table)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">Tes [...]
+<dt><a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html#splitTable(org.apache.hadoop.hbase.client.Table)" class="member-name-link external-link" title="class or interface in org.apache.hadoop.hbase.client">splitTable(Table)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/client/TestFromClientSide5.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">TestFromClientSide5</a></dt>
 <dd>
 <div class="block">Split table into multiple regions.</div>
 </dd>
diff --git a/testapidocs/member-search-index.js b/testapidocs/member-search-index.js
index 1ba48d5fd56..0bebf9365b9 100644
--- a/testapidocs/member-search-index.js
+++ b/testapidocs/member-search-index.js
@@ -1 +1 @@
-memberSearchIndex = [{"p":"org.apache.hadoop.hbase.backup","c":"TestSystemTableSnapshot","l":"_testBackupRestoreSystemTable()"},{"p":"org.apache.hadoop.hbase.coprocessor","c":"TestRegionObserverInterface","l":"A"},{"p":"org.apache.hadoop.hbase.client","c":"TestGetProcedureResult.DummyProcedure","l":"abort(MasterProcedureEnv)","u":"abort(org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv)"},{"p":"org.apache.hadoop.hbase.master","c":"TestMigrateNamespaceTable.SuspendProcedure","l" [...]
\ No newline at end of file
+memberSearchIndex = [{"p":"org.apache.hadoop.hbase.backup","c":"TestSystemTableSnapshot","l":"_testBackupRestoreSystemTable()"},{"p":"org.apache.hadoop.hbase.coprocessor","c":"TestRegionObserverInterface","l":"A"},{"p":"org.apache.hadoop.hbase.client","c":"TestGetProcedureResult.DummyProcedure","l":"abort(MasterProcedureEnv)","u":"abort(org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv)"},{"p":"org.apache.hadoop.hbase.master","c":"TestMigrateNamespaceTable.SuspendProcedure","l" [...]
\ No newline at end of file
diff --git a/testdevapidocs/index-all.html b/testdevapidocs/index-all.html
index 1a66d74b5e6..3ef1e327bfa 100644
--- a/testdevapidocs/index-all.html
+++ b/testdevapidocs/index-all.html
@@ -880,7 +880,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/client/TestClientTimeouts.RandomTimeoutRpcChannel.html#addr" class="member-name-link">addr</a> - Variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestClientTimeouts.RandomTimeoutRpcChannel.html" title="class in org.apache.hadoop.hbase.client">TestClientTimeouts.RandomTimeoutRpcChannel</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html#addr" class="member-name-link">addr</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">AbstractTestIPC.FailingSimpleRpcServer.FailingConnection</a></dt>
+<dt><a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html#addr" class="member-name-link">addr</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">FailingNettyRpcServer.FailingConnection</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/ipc/TestFailedServersLog.html#addr" class="member-name-link">addr</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/TestFailedServersLog.html" title="class in org.apache.hadoop.hbase.ipc">TestFailedServersLog</a></dt>
 <dd>&nbsp;</dd>
@@ -2702,7 +2702,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/security/access/TestZKPermissionWatcher.html#AUTH_B" class="member-name-link">AUTH_B</a> - Static variable in class org.apache.hadoop.hbase.security.access.<a href="org/apache/hadoop/hbase/security/access/TestZKPermissionWatcher.html" title="class in org.apache.hadoop.hbase.security.access">TestZKPermissionWatcher</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html#authenticatedWithFallback" class="member-name-link">authenticatedWithFallback</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">AbstractTestIPC.FailingSimpleRpcServer.FailingConnection</a></dt>
+<dt><a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html#authenticatedWithFallback" class="member-name-link">authenticatedWithFallback</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">FailingNettyRpcServer.FailingConnection</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/security/token/TestZKSecretWatcher.AuthenticationTokenSecretManagerForTest.html#%3Cinit%3E(org.apache.hadoop.conf.Configuration,org.apache.hadoop.hbase.zookeeper.ZKWatcher,java.lang.String,long,long)" class="member-name-link">AuthenticationTokenSecretManagerForTest(Configuration, ZKWatcher, String, long, long)</a> - Constructor for class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TestZKSecretWatcher.Authenti [...]
 <dd>&nbsp;</dd>
@@ -4296,9 +4296,9 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/client/TestClientTimeouts.RandomTimeoutBlockingRpcChannel.html#callBlockingMethod(org.apache.hbase.thirdparty.com.google.protobuf.Descriptors.MethodDescriptor,org.apache.hbase.thirdparty.com.google.protobuf.RpcController,org.apache.hbase.thirdparty.com.google.protobuf.Message,org.apache.hbase.thirdparty.com.google.protobuf.Message)" class="member-name-link">callBlockingMethod(Descriptors.MethodDescriptor, RpcController, Message, Message)</a> - Method  [...]
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html#callCleanup" class="member-name-link">callCleanup</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">AbstractTestIPC.FailingSimpleRpcServer.FailingConnection</a></dt>
+<dt><a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html#callCleanup" class="member-name-link">callCleanup</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">FailingNettyRpcServer.FailingConnection</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html#callCleanupIfNeeded()" class="member-name-link">callCleanupIfNeeded()</a> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">AbstractTestIPC.FailingSimpleRpcServer.FailingConnection</a></dt>
+<dt><a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html#callCleanupIfNeeded()" class="member-name-link">callCleanupIfNeeded()</a> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">FailingNettyRpcServer.FailingConnection</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/regionserver/regionreplication/TestRegionReplicationForFlushMarker.ErrorReplayRSRpcServices.html#callCounter" class="member-name-link">callCounter</a> - Static variable in class org.apache.hadoop.hbase.regionserver.regionreplication.<a href="org/apache/hadoop/hbase/regionserver/regionreplication/TestRegionReplicationForFlushMarker.ErrorReplayRSRpcServices.html" title="class in org.apache.hadoop.hbase.regionserver.regionreplication">TestRegionReplicati [...]
 <dd>&nbsp;</dd>
@@ -9837,7 +9837,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/security/TestMutualTlsServerSide.html#clientAuthMode" class="member-name-link">clientAuthMode</a> - Variable in class org.apache.hadoop.hbase.security.<a href="org/apache/hadoop/hbase/security/TestMutualTlsServerSide.html" title="class in org.apache.hadoop.hbase.security">TestMutualTlsServerSide</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html#clientCertificateChain" class="member-name-link">clientCertificateChain</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">AbstractTestIPC.FailingSimpleRpcServer.FailingConnection</a></dt>
+<dt><a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html#clientCertificateChain" class="member-name-link">clientCertificateChain</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">FailingNettyRpcServer.FailingConnection</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/http/log/TestLogLevel.html#clientConf" class="member-name-link">clientConf</a> - Static variable in class org.apache.hadoop.hbase.http.log.<a href="org/apache/hadoop/hbase/http/log/TestLogLevel.html" title="class in org.apache.hadoop.hbase.http.log">TestLogLevel</a></dt>
 <dd>&nbsp;</dd>
@@ -10392,7 +10392,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/ipc/BadAuthNettyRpcConnection.html#codec" class="member-name-link">codec</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/BadAuthNettyRpcConnection.html" title="class in org.apache.hadoop.hbase.ipc">BadAuthNettyRpcConnection</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html#codec" class="member-name-link">codec</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">AbstractTestIPC.FailingSimpleRpcServer.FailingConnection</a></dt>
+<dt><a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html#codec" class="member-name-link">codec</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">FailingNettyRpcServer.FailingConnection</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/test/util/warc/WARCFileWriter.html#codec" class="member-name-link">codec</a> - Variable in class org.apache.hadoop.hbase.test.util.warc.<a href="org/apache/hadoop/hbase/test/util/warc/WARCFileWriter.html" title="class in org.apache.hadoop.hbase.test.util.warc">WARCFileWriter</a></dt>
 <dd>&nbsp;</dd>
@@ -11135,7 +11135,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/io/hfile/TestHFileBlockIndex.html#compressionAlgorithms()" class="member-name-link">compressionAlgorithms()</a> - Static method in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/TestHFileBlockIndex.html" title="class in org.apache.hadoop.hbase.io.hfile">TestHFileBlockIndex</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html#compressionCodec" class="member-name-link">compressionCodec</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">AbstractTestIPC.FailingSimpleRpcServer.FailingConnection</a></dt>
+<dt><a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html#compressionCodec" class="member-name-link">compressionCodec</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">FailingNettyRpcServer.FailingConnection</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/io/compress/CompressionTestBase.html" class="type-name-link" title="class in org.apache.hadoop.hbase.io.compress">CompressionTestBase</a> - Class in <a href="org/apache/hadoop/hbase/io/compress/package-summary.html">org.apache.hadoop.hbase.io.compress</a></dt>
 <dd>&nbsp;</dd>
@@ -12227,13 +12227,13 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/replication/TestReplicationBase.html#connection2" class="member-name-link">connection2</a> - Static variable in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/TestReplicationBase.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationBase</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html#connectionAttributes" class="member-name-link">connectionAttributes</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">AbstractTestIPC.FailingSimpleRpcServer.FailingConnection</a></dt>
+<dt><a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html#connectionAttributes" class="member-name-link">connectionAttributes</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">FailingNettyRpcServer.FailingConnection</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/mapreduce/TestTableInputFormatBase.ConnectionForMergeTesting.html#%3Cinit%3E(org.apache.hadoop.conf.Configuration,java.util.concurrent.ExecutorService,org.apache.hadoop.hbase.security.User,org.apache.hadoop.hbase.client.ConnectionRegistry,java.util.Map)" class="member-name-link">ConnectionForMergeTesting(Configuration, ExecutorService, User, ConnectionRegistry, Map&lt;String, byte[]&gt;)</a> - Constructor for class org.apache.hadoop.hbase.mapreduce.<a [...]
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html#connectionHeader" class="member-name-link">connectionHeader</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">AbstractTestIPC.FailingSimpleRpcServer.FailingConnection</a></dt>
+<dt><a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html#connectionHeader" class="member-name-link">connectionHeader</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">FailingNettyRpcServer.FailingConnection</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html#connectionHeaderRead" class="member-name-link">connectionHeaderRead</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">AbstractTestIPC.FailingSimpleRpcServer.FailingConnection</a></dt>
+<dt><a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html#connectionHeaderRead" class="member-name-link">connectionHeaderRead</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">FailingNettyRpcServer.FailingConnection</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/ipc/TestConnectionId.html#connectionId1" class="member-name-link">connectionId1</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/TestConnectionId.html" title="class in org.apache.hadoop.hbase.ipc">TestConnectionId</a></dt>
 <dd>&nbsp;</dd>
@@ -16741,7 +16741,7 @@ loadScripts(document, 'script');</script>
 <dd>
 <div class="block">Display statistics of different compression algorithms.</div>
 </dd>
-<dt><a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html#disposeSasl()" class="member-name-link">disposeSasl()</a> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">AbstractTestIPC.FailingSimpleRpcServer.FailingConnection</a></dt>
+<dt><a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html#disposeSasl()" class="member-name-link">disposeSasl()</a> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">FailingNettyRpcServer.FailingConnection</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/chaos/factories/MonkeyFactory.html#DISTRIBUTED_ISSUES" class="member-name-link">DISTRIBUTED_ISSUES</a> - Static variable in class org.apache.hadoop.hbase.chaos.factories.<a href="org/apache/hadoop/hbase/chaos/factories/MonkeyFactory.html" title="class in org.apache.hadoop.hbase.chaos.factories">MonkeyFactory</a></dt>
 <dd>&nbsp;</dd>
@@ -17065,7 +17065,7 @@ loadScripts(document, 'script');</script>
 <dd>
 <div class="block">Test that use this should have a timeout, because this method could potentially wait forever.</div>
 </dd>
-<dt><a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html#doRawSaslReply(org.apache.hadoop.hbase.security.SaslStatus,org.apache.hadoop.io.Writable,java.lang.String,java.lang.String)" class="member-name-link">doRawSaslReply(SaslStatus, Writable, String, String)</a> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hb [...]
+<dt><a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html#doRawSaslReply(org.apache.hadoop.hbase.security.SaslStatus,org.apache.hadoop.io.Writable,java.lang.String,java.lang.String)" class="member-name-link">doRawSaslReply(SaslStatus, Writable, String, String)</a> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">FailingNettyRpcServer.Fai [...]
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#doRead()" class="member-name-link">doRead()</a> - Method in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html" title="class in org.apache.hadoop.hbase.io.hfile">TestHFileSeek.MyOptions</a></dt>
 <dd>&nbsp;</dd>
@@ -20296,7 +20296,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/regionserver/TestMultiVersionConcurrencyControl.Writer.html#finished" class="member-name-link">finished</a> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMultiVersionConcurrencyControl.Writer.html" title="class in org.apache.hadoop.hbase.regionserver">TestMultiVersionConcurrencyControl.Writer</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html#finishSaslNegotiation()" class="member-name-link">finishSaslNegotiation()</a> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">AbstractTestIPC.FailingSimpleRpcServer.FailingConnection</a></dt>
+<dt><a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html#finishSaslNegotiation()" class="member-name-link">finishSaslNegotiation()</a> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">FailingNettyRpcServer.FailingConnection</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/mapreduce/MultiTableInputFormatTestBase.ScanReducer.html#first" class="member-name-link">first</a> - Variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/MultiTableInputFormatTestBase.ScanReducer.html" title="class in org.apache.hadoop.hbase.mapreduce">MultiTableInputFormatTestBase.ScanReducer</a></dt>
 <dd>&nbsp;</dd>
@@ -22547,7 +22547,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/util/BaseTestHBaseFsck.MockErrorReporter.html#getErrorList()" class="member-name-link">getErrorList()</a> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/BaseTestHBaseFsck.MockErrorReporter.html" title="class in org.apache.hadoop.hbase.util">BaseTestHBaseFsck.MockErrorReporter</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html#getErrorResponse(java.lang.String,java.lang.Exception)" class="member-name-link">getErrorResponse(String, Exception)</a> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">AbstractTestIPC.FailingSimpleRpcServer.FailingConnection</a></dt>
+<dt><a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html#getErrorResponse(java.lang.String,java.lang.Exception)" class="member-name-link">getErrorResponse(String, Exception)</a> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">FailingNettyRpcServer.FailingConnection</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/master/procedure/TestMasterProcedureScheduler.TestTableProcedureWithEvent.html#getEvent()" class="member-name-link">getEvent()</a> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TestMasterProcedureScheduler.TestTableProcedureWithEvent.html" title="class in org.apache.hadoop.hbase.master.procedure">TestMasterProcedureScheduler.TestTableProcedureWithEvent</a></dt>
 <dd>&nbsp;</dd>
@@ -22833,13 +22833,13 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/util/HBaseHomePath.html#getHomePath()" class="member-name-link">getHomePath()</a> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/HBaseHomePath.html" title="class in org.apache.hadoop.hbase.util">HBaseHomePath</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html#getHostAddress()" class="member-name-link">getHostAddress()</a> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">AbstractTestIPC.FailingSimpleRpcServer.FailingConnection</a></dt>
+<dt><a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html#getHostAddress()" class="member-name-link">getHostAddress()</a> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">FailingNettyRpcServer.FailingConnection</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/TestHDFSBlocksDistribution.MockHDFSBlocksDistribution.html#getHostAndWeights()" class="member-name-link">getHostAndWeights()</a> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestHDFSBlocksDistribution.MockHDFSBlocksDistribution.html" title="class in org.apache.hadoop.hbase">TestHDFSBlocksDistribution.MockHDFSBlocksDistribution</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/RESTApiClusterManager.html#getHostId(java.lang.String)" class="member-name-link">getHostId(String)</a> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/RESTApiClusterManager.html" title="class in org.apache.hadoop.hbase">RESTApiClusterManager</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html#getHostInetAddress()" class="member-name-link">getHostInetAddress()</a> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">AbstractTestIPC.FailingSimpleRpcServer.FailingConnection</a></dt>
+<dt><a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html#getHostInetAddress()" class="member-name-link">getHostInetAddress()</a> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">FailingNettyRpcServer.FailingConnection</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/fs/TestBlockReorder.html#getHostName(org.apache.hadoop.hdfs.server.datanode.DataNode)" class="member-name-link">getHostName(DataNode)</a> - Method in class org.apache.hadoop.hbase.fs.<a href="org/apache/hadoop/hbase/fs/TestBlockReorder.html" title="class in org.apache.hadoop.hbase.fs">TestBlockReorder</a></dt>
 <dd>
@@ -24043,7 +24043,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancer.MockCluster.html#getOrComputeWeightedRegionCacheRatio(int,int)" class="member-name-link">getOrComputeWeightedRegionCacheRatio(int, int)</a> - Method in class org.apache.hadoop.hbase.master.balancer.<a href="org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancer.MockCluster.html" title="class in org.apache.hadoop.hbase.master.balancer">TestStochasticLoadBalancer.MockCluster</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html#getOrCreateSaslServer()" class="member-name-link">getOrCreateSaslServer()</a> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">AbstractTestIPC.FailingSimpleRpcServer.FailingConnection</a></dt>
+<dt><a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html#getOrCreateSaslServer()" class="member-name-link">getOrCreateSaslServer()</a> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">FailingNettyRpcServer.FailingConnection</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html#getOrder()" class="member-name-link">getOrder()</a> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.LinkKey.html" title="class in org.apache.hadoop.hbase.mapreduce">IntegrationTestBulkLoad.LinkKey</a></dt>
 <dd>&nbsp;</dd>
@@ -24794,7 +24794,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/ipc/BadAuthNettyRpcConnection.html#getRemoteInetAddress(org.apache.hadoop.hbase.client.MetricsConnection)" class="member-name-link">getRemoteInetAddress(MetricsConnection)</a> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/BadAuthNettyRpcConnection.html" title="class in org.apache.hadoop.hbase.ipc">BadAuthNettyRpcConnection</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html#getRemotePort()" class="member-name-link">getRemotePort()</a> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">AbstractTestIPC.FailingSimpleRpcServer.FailingConnection</a></dt>
+<dt><a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html#getRemotePort()" class="member-name-link">getRemotePort()</a> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">FailingNettyRpcServer.FailingConnection</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/replication/SyncReplicationTestBase.html#getRemoteWALDir(org.apache.hadoop.fs.Path,java.lang.String)" class="member-name-link">getRemoteWALDir(Path, String)</a> - Method in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/SyncReplicationTestBase.html" title="class in org.apache.hadoop.hbase.replication">SyncReplicationTestBase</a></dt>
 <dd>&nbsp;</dd>
@@ -26151,7 +26151,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/client/FromClientSideBase.html#getVersionAndVerifyMissing(org.apache.hadoop.hbase.client.Table,byte%5B%5D,byte%5B%5D,byte%5B%5D,long)" class="member-name-link">getVersionAndVerifyMissing(Table, byte[], byte[], byte[], long)</a> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/FromClientSideBase.html" title="class in org.apache.hadoop.hbase.client">FromClientSideBase</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html#getVersionInfo()" class="member-name-link">getVersionInfo()</a> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">AbstractTestIPC.FailingSimpleRpcServer.FailingConnection</a></dt>
+<dt><a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html#getVersionInfo()" class="member-name-link">getVersionInfo()</a> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">FailingNettyRpcServer.FailingConnection</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/client/FromClientSideBase.html#getVersionRangeAndVerify(org.apache.hadoop.hbase.client.Table,byte%5B%5D,byte%5B%5D,byte%5B%5D,long%5B%5D,byte%5B%5D%5B%5D,int,int)" class="member-name-link">getVersionRangeAndVerify(Table, byte[], byte[], byte[], long[], byte[][], int, int)</a> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/FromClientSideBase.html" title="class in org.apache.hadoop.hbase.client">FromClientSideBa [...]
 <dd>&nbsp;</dd>
@@ -27401,7 +27401,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/regionserver/TestSecureBulkloadListener.html#host3" class="member-name-link">host3</a> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestSecureBulkloadListener.html" title="class in org.apache.hadoop.hbase.regionserver">TestSecureBulkloadListener</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html#hostAddress" class="member-name-link">hostAddress</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">AbstractTestIPC.FailingSimpleRpcServer.FailingConnection</a></dt>
+<dt><a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html#hostAddress" class="member-name-link">hostAddress</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">FailingNettyRpcServer.FailingConnection</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/HBaseClusterManager.RemoteShell.html#hostname" class="member-name-link">hostname</a> - Variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HBaseClusterManager.RemoteShell.html" title="class in org.apache.hadoop.hbase">HBaseClusterManager.RemoteShell</a></dt>
 <dd>&nbsp;</dd>
@@ -29707,7 +29707,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/client/TestBufferedMutatorParams.MockExecutorService.html#isShutdown()" class="member-name-link">isShutdown()</a> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestBufferedMutatorParams.MockExecutorService.html" title="class in org.apache.hadoop.hbase.client">TestBufferedMutatorParams.MockExecutorService</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html#isSimpleAuthentication()" class="member-name-link">isSimpleAuthentication()</a> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">AbstractTestIPC.FailingSimpleRpcServer.FailingConnection</a></dt>
+<dt><a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html#isSimpleAuthentication()" class="member-name-link">isSimpleAuthentication()</a> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">FailingNettyRpcServer.FailingConnection</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/types/TestStruct.SpecializedPojo1Type1.html#isSkippable()" class="member-name-link">isSkippable()</a> - Method in class org.apache.hadoop.hbase.types.<a href="org/apache/hadoop/hbase/types/TestStruct.SpecializedPojo1Type1.html" title="class in org.apache.hadoop.hbase.types">TestStruct.SpecializedPojo1Type1</a></dt>
 <dd>&nbsp;</dd>
@@ -41088,7 +41088,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/util/AbstractHBaseToolTest.TestTool.html#processOldArgs(java.util.List)" class="member-name-link">processOldArgs(List&lt;String&gt;)</a> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/AbstractHBaseToolTest.TestTool.html" title="class in org.apache.hadoop.hbase.util">AbstractHBaseToolTest.TestTool</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html#processOneRpc(org.apache.hadoop.hbase.nio.ByteBuff)" class="member-name-link">processOneRpc(ByteBuff)</a> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">AbstractTestIPC.FailingSimpleRpcServer.FailingConnection</a></dt>
+<dt><a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html#processOneRpc(org.apache.hadoop.hbase.nio.ByteBuff)" class="member-name-link">processOneRpc(ByteBuff)</a> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">FailingNettyRpcServer.FailingConnection</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/AcidGuaranteesTestTool.html#processOptions(org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine)" class="member-name-link">processOptions(CommandLine)</a> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/AcidGuaranteesTestTool.html" title="class in org.apache.hadoop.hbase">AcidGuaranteesTestTool</a></dt>
 <dd>&nbsp;</dd>
@@ -41146,7 +41146,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#processOptions(org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine,org.apache.hbase.thirdparty.org.apache.commons.cli.Options)" class="member-name-link">processOptions(CommandLine, Options)</a> - Method in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html" title="class in org.apache.hadoop.hbase.io.hfile">TestHFileSeek.MyOptions</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html#processPreamble(java.nio.ByteBuffer)" class="member-name-link">processPreamble(ByteBuffer)</a> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">AbstractTestIPC.FailingSimpleRpcServer.FailingConnection</a></dt>
+<dt><a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html#processPreamble(java.nio.ByteBuffer)" class="member-name-link">processPreamble(ByteBuffer)</a> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">FailingNettyRpcServer.FailingConnection</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html#processRequest(org.apache.hadoop.hbase.nio.ByteBuff)" class="member-name-link">processRequest(ByteBuff)</a> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">AbstractTestIPC.FailingSimpleRpcServer.FailingConnection</a></dt>
 <dd>&nbsp;</dd>
@@ -41292,7 +41292,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/ipc/BadAuthNettyRpcConnection.html#provider" class="member-name-link">provider</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/BadAuthNettyRpcConnection.html" title="class in org.apache.hadoop.hbase.ipc">BadAuthNettyRpcConnection</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html#provider" class="member-name-link">provider</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">AbstractTestIPC.FailingSimpleRpcServer.FailingConnection</a></dt>
+<dt><a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html#provider" class="member-name-link">provider</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">FailingNettyRpcServer.FailingConnection</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/io/crypto/tls/AbstractTestX509Parameterized.html#PROVIDER" class="member-name-link">PROVIDER</a> - Static variable in class org.apache.hadoop.hbase.io.crypto.tls.<a href="org/apache/hadoop/hbase/io/crypto/tls/AbstractTestX509Parameterized.html" title="class in org.apache.hadoop.hbase.io.crypto.tls">AbstractTestX509Parameterized</a></dt>
 <dd>&nbsp;</dd>
@@ -43376,7 +43376,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/master/procedure/TestServerRemoteProcedure.NoopServerRemoteProcedure.html#remoteOperationFailed(org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv,org.apache.hadoop.hbase.procedure2.RemoteProcedureException)" class="member-name-link">remoteOperationFailed(MasterProcedureEnv, RemoteProcedureException)</a> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TestServerRemoteProcedure.NoopS [...]
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html#remotePort" class="member-name-link">remotePort</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">AbstractTestIPC.FailingSimpleRpcServer.FailingConnection</a></dt>
+<dt><a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html#remotePort" class="member-name-link">remotePort</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">FailingNettyRpcServer.FailingConnection</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/master/replication/TestRegisterPeerWorkerWhenRestarting.HMasterForTest.html#remoteProcedureCompleted(long)" class="member-name-link">remoteProcedureCompleted(long)</a> - Method in class org.apache.hadoop.hbase.master.replication.<a href="org/apache/hadoop/hbase/master/replication/TestRegisterPeerWorkerWhenRestarting.HMasterForTest.html" title="class in org.apache.hadoop.hbase.master.replication">TestRegisterPeerWorkerWhenRestarting.HMasterForTest</a></dt>
 <dd>&nbsp;</dd>
@@ -44506,7 +44506,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/RESTApiClusterManager.html#retryCounterFactory" class="member-name-link">retryCounterFactory</a> - Variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/RESTApiClusterManager.html" title="class in org.apache.hadoop.hbase">RESTApiClusterManager</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html#retryImmediatelySupported" class="member-name-link">retryImmediatelySupported</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">AbstractTestIPC.FailingSimpleRpcServer.FailingConnection</a></dt>
+<dt><a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html#retryImmediatelySupported" class="member-name-link">retryImmediatelySupported</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">FailingNettyRpcServer.FailingConnection</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/client/TestAsyncAdminBuilder.TestMaxRetriesCoprocessor.html#retryNum" class="member-name-link">retryNum</a> - Variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestAsyncAdminBuilder.TestMaxRetriesCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestAsyncAdminBuilder.TestMaxRetriesCoprocessor</a></dt>
 <dd>&nbsp;</dd>
@@ -45642,7 +45642,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/regionserver/TestScannerLeaseCount.MockedQuotaManagerRegionServer.html#rpcQuotaManager" class="member-name-link">rpcQuotaManager</a> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestScannerLeaseCount.MockedQuotaManagerRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerLeaseCount.MockedQuotaManagerRegionServer</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html#rpcServer" class="member-name-link">rpcServer</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">AbstractTestIPC.FailingSimpleRpcServer.FailingConnection</a></dt>
+<dt><a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html#rpcServer" class="member-name-link">rpcServer</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">FailingNettyRpcServer.FailingConnection</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/ipc/TestMultipleServerPrincipalsIPC.html#rpcServer" class="member-name-link">rpcServer</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/TestMultipleServerPrincipalsIPC.html" title="class in org.apache.hadoop.hbase.ipc">TestMultipleServerPrincipalsIPC</a></dt>
 <dd>&nbsp;</dd>
@@ -46509,9 +46509,9 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/ipc/BadAuthNettyRpcConnection.html#saslNegotiationDone(java.lang.String,boolean)" class="member-name-link">saslNegotiationDone(String, boolean)</a> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/BadAuthNettyRpcConnection.html" title="class in org.apache.hadoop.hbase.ipc">BadAuthNettyRpcConnection</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html#saslProviders" class="member-name-link">saslProviders</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">AbstractTestIPC.FailingSimpleRpcServer.FailingConnection</a></dt>
+<dt><a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html#saslProviders" class="member-name-link">saslProviders</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">FailingNettyRpcServer.FailingConnection</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html#saslServer" class="member-name-link">saslServer</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">AbstractTestIPC.FailingSimpleRpcServer.FailingConnection</a></dt>
+<dt><a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html#saslServer" class="member-name-link">saslServer</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">FailingNettyRpcServer.FailingConnection</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/http/ssl/KeyStoreTestUtil.html#saveConfig(java.io.File,org.apache.hadoop.conf.Configuration)" class="member-name-link">saveConfig(File, Configuration)</a> - Static method in class org.apache.hadoop.hbase.http.ssl.<a href="org/apache/hadoop/hbase/http/ssl/KeyStoreTestUtil.html" title="class in org.apache.hadoop.hbase.http.ssl">KeyStoreTestUtil</a></dt>
 <dd>
@@ -47446,7 +47446,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/util/ProcessBasedLocalHBaseCluster.html#serverWorkingDir(org.apache.hadoop.hbase.util.ProcessBasedLocalHBaseCluster.ServerType,int)" class="member-name-link">serverWorkingDir(ProcessBasedLocalHBaseCluster.ServerType, int)</a> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/ProcessBasedLocalHBaseCluster.html" title="class in org.apache.hadoop.hbase.util">ProcessBasedLocalHBaseCluster</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html#service" class="member-name-link">service</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">AbstractTestIPC.FailingSimpleRpcServer.FailingConnection</a></dt>
+<dt><a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html#service" class="member-name-link">service</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">FailingNettyRpcServer.FailingConnection</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/TestChoreService.html#service" class="member-name-link">service</a> - Variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestChoreService.html" title="class in org.apache.hadoop.hbase">TestChoreService</a></dt>
 <dd>&nbsp;</dd>
@@ -51583,7 +51583,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/test/IntegrationTestZKAndFSPermissions.html#skipFSCheck" class="member-name-link">skipFSCheck</a> - Variable in class org.apache.hadoop.hbase.test.<a href="org/apache/hadoop/hbase/test/IntegrationTestZKAndFSPermissions.html" title="class in org.apache.hadoop.hbase.test">IntegrationTestZKAndFSPermissions</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html#skipInitialSaslHandshake" class="member-name-link">skipInitialSaslHandshake</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">AbstractTestIPC.FailingSimpleRpcServer.FailingConnection</a></dt>
+<dt><a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html#skipInitialSaslHandshake" class="member-name-link">skipInitialSaslHandshake</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">FailingNettyRpcServer.FailingConnection</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/chaos/actions/Action.html#skipMetaRS" class="member-name-link">skipMetaRS</a> - Variable in class org.apache.hadoop.hbase.chaos.actions.<a href="org/apache/hadoop/hbase/chaos/actions/Action.html" title="class in org.apache.hadoop.hbase.chaos.actions">Action</a></dt>
 <dd>&nbsp;</dd>
@@ -88274,7 +88274,7 @@ loadScripts(document, 'script');</script>
 </dd>
 <dt><a href="org/apache/hadoop/hbase/io/hfile/TestCacheConfig.DataCacheEntry.html#toString()" class="member-name-link">toString()</a> - Method in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/TestCacheConfig.DataCacheEntry.html" title="class in org.apache.hadoop.hbase.io.hfile">TestCacheConfig.DataCacheEntry</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html#toString()" class="member-name-link">toString()</a> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">AbstractTestIPC.FailingSimpleRpcServer.FailingConnection</a></dt>
+<dt><a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html#toString()" class="member-name-link">toString()</a> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">FailingNettyRpcServer.FailingConnection</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/mapreduce/TestMultiTableSnapshotInputFormatImpl.ScanWithEquals.html#toString()" class="member-name-link">toString()</a> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestMultiTableSnapshotInputFormatImpl.ScanWithEquals.html" title="class in org.apache.hadoop.hbase.mapreduce">TestMultiTableSnapshotInputFormatImpl.ScanWithEquals</a></dt>
 <dd>&nbsp;</dd>
@@ -88725,7 +88725,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/security/visibility/TestVisibilityLabels.html#UC2" class="member-name-link">UC2</a> - Static variable in class org.apache.hadoop.hbase.security.visibility.<a href="org/apache/hadoop/hbase/security/visibility/TestVisibilityLabels.html" title="class in org.apache.hadoop.hbase.security.visibility">TestVisibilityLabels</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html#ugi" class="member-name-link">ugi</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">AbstractTestIPC.FailingSimpleRpcServer.FailingConnection</a></dt>
+<dt><a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html#ugi" class="member-name-link">ugi</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">FailingNettyRpcServer.FailingConnection</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/ipc/TestRpcSkipInitialSaslHandshake.html#ugi" class="member-name-link">ugi</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/TestRpcSkipInitialSaslHandshake.html" title="class in org.apache.hadoop.hbase.ipc">TestRpcSkipInitialSaslHandshake</a></dt>
 <dd>&nbsp;</dd>
@@ -89103,7 +89103,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/HBaseClusterManager.RemoteShell.html#user" class="member-name-link">user</a> - Variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HBaseClusterManager.RemoteShell.html" title="class in org.apache.hadoop.hbase">HBaseClusterManager.RemoteShell</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html#user" class="member-name-link">user</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">AbstractTestIPC.FailingSimpleRpcServer.FailingConnection</a></dt>
+<dt><a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html#user" class="member-name-link">user</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">FailingNettyRpcServer.FailingConnection</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/security/token/TestFsDelegationToken.html#user" class="member-name-link">user</a> - Variable in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TestFsDelegationToken.html" title="class in org.apache.hadoop.hbase.security.token">TestFsDelegationToken</a></dt>
 <dd>&nbsp;</dd>
@@ -89329,7 +89329,7 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/ipc/BadAuthNettyRpcConnection.html#useSasl" class="member-name-link">useSasl</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/BadAuthNettyRpcConnection.html" title="class in org.apache.hadoop.hbase.ipc">BadAuthNettyRpcConnection</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html#useSasl" class="member-name-link">useSasl</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/AbstractTestIPC.FailingSimpleRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">AbstractTestIPC.FailingSimpleRpcServer.FailingConnection</a></dt>
+<dt><a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html#useSasl" class="member-name-link">useSasl</a> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/FailingNettyRpcServer.FailingConnection.html" title="class in org.apache.hadoop.hbase.ipc">FailingNettyRpcServer.FailingConnection</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/backup/TestBackupBase.html#useSecondCluster" class="member-name-link">useSecondCluster</a> - Static variable in class org.apache.hadoop.hbase.backup.<a href="org/apache/hadoop/hbase/backup/TestBackupBase.html" title="class in org.apache.hadoop.hbase.backup">TestBackupBase</a></dt>
 <dd>&nbsp;</dd>
diff --git a/testdevapidocs/member-search-index.js b/testdevapidocs/member-search-index.js
index a63a2a519c1..f84f5c4e0b6 100644
--- a/testdevapidocs/member-search-index.js
+++ b/testdevapidocs/member-search-index.js
@@ -1 +1 @@
-memberSearchIndex = [{"p":"org.apache.hadoop.hbase.master.janitor","c":"TestMetaFixerNoCluster","l":"_ARI"},{"p":"org.apache.hadoop.hbase.io","c":"TestHalfStoreFileReader","l":"_b(String)","u":"_b(java.lang.String)"},{"p":"org.apache.hadoop.hbase.master.janitor","c":"TestMetaFixerNoCluster","l":"_BRI"},{"p":"org.apache.hadoop.hbase.backup","c":"TestSystemTableSnapshot","l":"_testBackupRestoreSystemTable()"},{"p":"org.apache.hadoop.hbase.regionserver","c":"TestBlocksScanned","l":"_testBlo [...]
\ No newline at end of file
+memberSearchIndex = [{"p":"org.apache.hadoop.hbase.master.janitor","c":"TestMetaFixerNoCluster","l":"_ARI"},{"p":"org.apache.hadoop.hbase.io","c":"TestHalfStoreFileReader","l":"_b(String)","u":"_b(java.lang.String)"},{"p":"org.apache.hadoop.hbase.master.janitor","c":"TestMetaFixerNoCluster","l":"_BRI"},{"p":"org.apache.hadoop.hbase.backup","c":"TestSystemTableSnapshot","l":"_testBackupRestoreSystemTable()"},{"p":"org.apache.hadoop.hbase.regionserver","c":"TestBlocksScanned","l":"_testBlo [...]
\ No newline at end of file