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> </dd>
<dt>affixShutdownHook(Thread, int) - Static method in class org.apache.hadoop.hbase.util.ShutdownHookManager</dt>
<dd> </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> </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> </dd>
<dt>call(O) - Method in class org.apache.hadoop.hbase.coprocessor.CoprocessorHost.ObserverOperationWithResult</dt>
<dd> </dd>
-<dt>call(AbstractRpcBasedConnectionRegistry.Callable<T>, Predicate<T>, String) - Method in class org.apache.hadoop.hbase.client.MasterRegistry</dt>
+<dt>call(AbstractRpcBasedConnectionRegistry.Callable<T>, Predicate<T>, String) - Method in class org.apache.hadoop.hbase.client.RpcConnectionRegistry</dt>
<dd> </dd>
<dt>call(HBaseRpcController, AdminProtos.AdminService.Interface) - Method in interface org.apache.hadoop.hbase.client.AsyncAdminRequestRetryingCaller.Callable</dt>
<dd> </dd>
@@ -7172,7 +7172,7 @@ loadScripts(document, 'script');</script>
</dd>
<dt>close() - Method in class org.apache.hadoop.hbase.chaos.ChaosAgent</dt>
<dd> </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> </dd>
<dt>close() - Method in interface org.apache.hadoop.hbase.client.Admin</dt>
<dd> </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> </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> </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> </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> </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> </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> </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> </dd>
<dt>getActiveLogFiles() - Static method in class org.apache.hadoop.hbase.logging.Log4jUtils</dt>
<dd> </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> </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> </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> </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> </dd>
<dt>getMetaRegionLocations() - Method in interface org.apache.hadoop.hbase.client.ConnectionRegistry</dt>
<dd>
@@ -37431,7 +37431,7 @@ loadScripts(document, 'script');</script>
<dd> </dd>
<dt>HEDGED_READS_DESC - Static variable in interface org.apache.hadoop.hbase.regionserver.MetricsRegionServerSource</dt>
<dd> </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>
</dd>
<dt>START_TIME_KEY - Static variable in class org.apache.hadoop.hbase.mapreduce.WALInputFormat</dt>
<dd> </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> </dd>
<dt>startBlockEncoding(HFileBlockEncodingContext, DataOutputStream) - Method in class org.apache.hadoop.hbase.io.encoding.CopyKeyDataBlockEncoder</dt>
<dd> </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<StoreFileScanner> getScannersForStoreFiles(Collection<HStoreFile> 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<StoreFileScanner> getScannersForStoreFiles(Collection<HStoreFile> 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<StoreFileScanner> scanners = new ArrayList<>(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<HStoreFile> sortedFiles =</span>
-<span class="source-line-no">135</span><span id="line-135"> new PriorityQueue<>(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 < 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<StoreFileScanner> getScannersForCompaction(Collection<HStoreFile> 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<StoreFileScanner> scanners = new ArrayList<>(files.size());</span>
-<span class="source-line-no">172</span><span id="line-172"> List<HStoreFile> sortedFiles = new ArrayList<>(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 < 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 && 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 && 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 && this.reader.isBulkLoaded() && !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 && cur != null && (cur.getSequenceId() > 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 && this.stopSkippingKVsIfNextRow && getComparator().compareRows(cur, startKV) > 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<StoreFileScanner> getScannersForStoreFiles(Collection<HStoreFile> 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<StoreFileScanner> getScannersForStoreFiles(Collection<HStoreFile> 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<StoreFileScanner> scanners = new ArrayList<>(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<HStoreFile> sortedFiles =</span>
+<span class="source-line-no">138</span><span id="line-138"> new PriorityQueue<>(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 < 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<StoreFileScanner> getScannersForCompaction(Collection<HStoreFile> 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<StoreFileScanner> scanners = new ArrayList<>(files.size());</span>
+<span class="source-line-no">175</span><span id="line-175"> List<HStoreFile> sortedFiles = new ArrayList<>(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 < 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 && 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 && 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 && this.reader.isBulkLoaded() && !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 && cur != null && (cur.getSequenceId() > 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 && this.stopSkippingKVsIfNextRow && getComparator().compareRows(cur, startKV) > 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 < 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 > 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 <= 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"> * <p></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"> && ((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 < 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 > 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 <= 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"> * <p></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"> && ((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 > 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"> && reader.passesKeyRangeFilter(scan)</span>
-<span class="source-line-no">499</span><span id="line-499"> && 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) > 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 > 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"> && reader.passesKeyRangeFilter(scan)</span>
+<span class="source-line-no">502</span><span id="line-502"> && 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) > 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() && getComparator().compareRows(cur, seekKey) <= 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<byte[]> 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) > 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() && getComparator().compareRows(cur, seekKey) <= 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<byte[]> 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) > 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> 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> 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> 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> </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> </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> </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> </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"> </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"> </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> 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> lastPeekedCell)</code></div>
-<div class="col-last even-row-color"> </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> 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> lastPeekedCell)</code></div>
<div class="col-last odd-row-color"> </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> 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> currentRowCell)</code></div>
<div class="col-last even-row-color"> </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><<a href="../regionserver/CellSet.html" title="type parameter in CellSet">T</a>></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> 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> currentRowCell)</code></div>
+<div class="col-last odd-row-color"> </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><<a href="../regionserver/CellSet.html" title="type parameter in CellSet">T</a>></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> fromElement,
boolean fromInclusive,
<a href="../Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> toElement,
boolean toInclusive)</code></div>
-<div class="col-last odd-row-color"> </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><<a href="../regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>></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> targetKey,
- <a href="../Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> candidate)</code></div>
<div class="col-last even-row-color"> </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><<a href="../regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>></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> targetKey,
<a href="../Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> 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"> </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><<a href="../regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>></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> targetKey,
<a href="../Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> 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><<a href="../regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>></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> targetKey,
+ <a href="../Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> 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> 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> cell,
<a href="../client/Get.html" title="class in org.apache.hadoop.hbase.client">Get</a> get,
int count,
byte[] byteNow)</code></div>
-<div class="col-last odd-row-color"> </div>
+<div class="col-last even-row-color"> </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"> </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"> </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"> </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> 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> newVal)</code></div>
-<div class="col-last odd-row-color"> </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><<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">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> 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> 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> newVal)</code></div>
+<div class="col-last even-row-color"> </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><<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">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> 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> 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> 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><<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">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> 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> 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> 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> 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> 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> 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> 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> cellToAdd,
boolean succ,
boolean mslabUsed,
<a href="../regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a> memstoreSizing,
boolean sizeAddedPreOperation)</code></div>
-<div class="col-last odd-row-color"> </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> cellToAdd,
+<div class="col-last even-row-color"> </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> cellToAdd,
boolean succ,
boolean mslabUsed,
<a href="../regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a> memstoreSizing,
boolean sizeAddedPreOperation)</code></div>
-<div class="col-last even-row-color"> </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> cellToAdd,
+<div class="col-last odd-row-color"> </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> cellToAdd,
boolean succ,
<a href="../regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a> memstoreSizing)</code></div>
-<div class="col-last odd-row-color"> </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> cell,
+<div class="col-last even-row-color"> </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> cell,
long readpoint,
<a href="../regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a> memstoreSizing)</code></div>
-<div class="col-last even-row-color"> </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> cell,
+<div class="col-last odd-row-color"> </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> cell,
long readpoint,
<a href="../regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a> memStoreSizing,
boolean sizeAddedPreOperation)</code></div>
-<div class="col-last odd-row-color"> </div>
+<div class="col-last even-row-color"> </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"> </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"> </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> 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> 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> 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> 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> <span class="return-type"><a href="../Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></span> <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> <span class="return-type"><a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a></span> <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> <span class="return-type">boolean</span> <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> <span class="return-type">boolean</span> <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> <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> <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> <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> <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> <span class="return-type">boolean</span> <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> <span class="return-type">boolean</span> <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> <span class="return-type">long</span> <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> <span class="return-type">long</span> <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> <span class="return-type">long</span> <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> <span class="return-type">long</span> <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="<init>(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> <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> reader,
+<div class="member-signature"><span class="modifiers">public</span> <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> reader,
<a href="../io/hfile/HFileScanner.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileScanner</a> hfs,
boolean useMVCC,
boolean 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> <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><<a href="StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a>></span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/S [...]
+<div class="member-signature"><span class="modifiers">public static</span> <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><<a href="StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a>></span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/S [...]
boolean cacheBlocks,
boolean usePread,
boolean 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> <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><<a href="StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a>></span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/S [...]
+<div class="member-signature"><span class="modifiers">public static</span> <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><<a href="StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a>></span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/S [...]
boolean cacheBlocks,
boolean usePread,
boolean 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> <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><<a href="StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a>></span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/S [...]
+<div class="member-signature"><span class="modifiers">public static</span> <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><<a href="StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a>></span> <span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/S [...]
boolean canUseDropBehind,
long 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> <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> <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> <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> <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> in class <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> <span class="return-type"><a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a></span> <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> <span class="return-type"><a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a></span> <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: <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> <span class="return-type"><a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a></span> <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> <span class="return-type"><a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a></span> <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: <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> <span class="return-type">boolean</span> <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> key)</span>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">boolean</span> <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> 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: <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> <span class="return-type">boolean</span> <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> key)</span>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">boolean</span> <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> 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: <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> <span class="return-type">void</span> <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> newVal)</span>
+<div class="member-signature"><span class="modifiers">protected</span> <span class="return-type">void</span> <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> 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> <span class="return-type">boolean</span> <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> <span class="return-type">boolean</span> <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> <span class="return-type">void</span> <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> <span class="return-type">void</span> <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: <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> <span class="return-type">boolean</span> <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> s,
+<div class="member-signature"><span class="modifiers">public static</span> <span class="return-type">boolean</span> <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> s,
<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a> 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> <span class="return-type">boolean</span> <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> s,
+<div class="member-signature"><span class="modifiers">static</span> <span class="return-type">boolean</span> <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> s,
<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a> 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> <span class="return-type">long</span> <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> <span class="return-type">long</span> <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: <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> <span class="return-type">boolean</span> <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> kv,
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">boolean</span> <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> kv,
boolean forward,
boolean 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> <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> <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> <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> <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> <span class="return-type">boolean</span> <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> <span class="return-type">boolean</span> <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: <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> <span class="return-type">void</span> <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> <span class="return-type">void</span> <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: <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> <span class="return-type">boolean</span> <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> <span class="return-type">boolean</span> <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: <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> <span class="return-type">void</span> <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> <span class="return-type">void</span> <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: <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> <span class="return-type">org.apache.hadoop.fs.Path</span> <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> <span class="return-type">org.apache.hadoop.fs.Path</span> <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> in interface <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> <span class="return-type">long</span> <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> <span class="return-type">long</span> <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> <span class="return-type">void</span> <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> <span class="return-type">void</span> <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> <span class="return-type">boolean</span> <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> scan,
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">boolean</span> <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> scan,
<a href="HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a> store,
long oldestUnexpiredTS)</span></div>
<div class="block"><span class="descfrm-type-label">Description copied from interface: <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> <span class="return-type">boolean</span> <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> originalKey)</span>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">boolean</span> <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> 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: <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> <span class="return-type">boolean</span> <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> <span class="return-type">boolean</span> <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> <span class="return-type">boolean</span> <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> originalKey)</span>
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">boolean</span> <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> 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> <span class="return-type">boolean</span> <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> originalKey)</span>
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">boolean</span> <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> 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> <span class="return-type">boolean</span> <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> seekKey)</span>
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">boolean</span> <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> 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> <span class="return-type">void</span> <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> seekKey)</span>
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">void</span> <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> 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> <span class="return-type">boolean</span> <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> seekKey)</span>
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">boolean</span> <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> 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> <span class="return-type">boolean</span> <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> seekKey)</span>
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">boolean</span> <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> 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> <span class="return-type">boolean</span> <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> seekKey)</span>
+<div class="member-signature"><span class="modifiers">private</span> <span class="return-type">boolean</span> <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> 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> <span class="return-type">boolean</span> <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> <span class="return-type">boolean</span> <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> <span class="return-type">boolean</span> <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> <span class="return-type">boolean</span> <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: <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> <span class="return-type">boolean</span> <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> key)</span>
+<div class="member-signature"><span class="modifiers">public</span> <span class="return-type">boolean</span> <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> 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: <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> <span class="return-type"><a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a></span> <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> <span class="return-type"><a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a></span> <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> in interface <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> <span class="return-type">void</span> <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> <span class="return-type">void</span> <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: <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>
</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> 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> error,
+ <a href="../HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a> region)</code></div>
<div class="col-last even-row-color"> </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> 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> region)</code></div>
+<div class="col-last odd-row-color"> </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> r,
long 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> error,
+ <a href="../HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a> region)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </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> region)</code></div>
-<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </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> region)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </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> <span class="return-type">boolean</span> <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> 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> <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> region)</span>
+<div class="member-signature"><span class="return-type">void</span> <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> 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<StoreFileScanner> getScannersForStoreFiles(Collection<HStoreFile> 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<StoreFileScanner> getScannersForStoreFiles(Collection<HStoreFile> 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<StoreFileScanner> scanners = new ArrayList<>(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<HStoreFile> sortedFiles =</span>
-<span class="source-line-no">135</span><span id="line-135"> new PriorityQueue<>(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 < 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<StoreFileScanner> getScannersForCompaction(Collection<HStoreFile> 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<StoreFileScanner> scanners = new ArrayList<>(files.size());</span>
-<span class="source-line-no">172</span><span id="line-172"> List<HStoreFile> sortedFiles = new ArrayList<>(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 < 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 && 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 && 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 && this.reader.isBulkLoaded() && !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 && cur != null && (cur.getSequenceId() > 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 && this.stopSkippingKVsIfNextRow && getComparator().compareRows(cur, startKV) > 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<StoreFileScanner> getScannersForStoreFiles(Collection<HStoreFile> 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<StoreFileScanner> getScannersForStoreFiles(Collection<HStoreFile> 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<StoreFileScanner> scanners = new ArrayList<>(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<HStoreFile> sortedFiles =</span>
+<span class="source-line-no">138</span><span id="line-138"> new PriorityQueue<>(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 < 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<StoreFileScanner> getScannersForCompaction(Collection<HStoreFile> 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<StoreFileScanner> scanners = new ArrayList<>(files.size());</span>
+<span class="source-line-no">175</span><span id="line-175"> List<HStoreFile> sortedFiles = new ArrayList<>(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 < 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 && 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 && 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 && this.reader.isBulkLoaded() && !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 && cur != null && (cur.getSequenceId() > 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 && this.stopSkippingKVsIfNextRow && getComparator().compareRows(cur, startKV) > 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 < 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 > 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 <= 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"> * <p></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"> && ((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 < 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 > 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 <= 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"> * <p></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"> && ((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 > 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"> && reader.passesKeyRangeFilter(scan)</span>
-<span class="source-line-no">499</span><span id="line-499"> && 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) > 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 > 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"> && reader.passesKeyRangeFilter(scan)</span>
+<span class="source-line-no">502</span><span id="line-502"> && 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) > 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() && getComparator().compareRows(cur, seekKey) <= 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<byte[]> 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) > 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() && getComparator().compareRows(cur, seekKey) <= 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<byte[]> 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) > 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() && !region.isClosed() && !server.isAborted() && !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() && !region.isClosed() && !server.isAborted() && !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="$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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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<? extends Cell>, List<? extends Cell>)</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> </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> </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> </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> </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> </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> </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> </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> </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> </dd>
@@ -1011,11 +1011,11 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </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> </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> </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> </dd>
@@ -1618,7 +1618,7 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </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> </dd>
@@ -6341,9 +6341,9 @@ loadScripts(document, 'script');</script>
<dd> </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<byte[]>, long)</a> - Method in class org.apache.hadoop.hbase.client.<a href="../apidocs/org/apache/hadoop/hbase/clie [...]
<dd> </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> </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> </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> </dd>
@@ -7194,7 +7194,7 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </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> </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> </dd>
@@ -8756,7 +8756,7 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </dd>
<dt>getAndStartMonkey() - Method in class org.apache.hadoop.hbase.chaos.util.ChaosMonkeyRunner</dt>
<dd> </dd>
@@ -10006,7 +10006,7 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </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> </dd>
@@ -10796,7 +10796,7 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </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> </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> </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> </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> </dd>
@@ -11144,22 +11144,22 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </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> </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> </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> </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> </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> </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<? extends ConnectionRegistry>, int, Class<?>...)</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<? extends ConnectionRegistry>, int, Class<?>...)</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> </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> </dd>
@@ -12477,7 +12477,7 @@ loadScripts(document, 'script');</script>
<dd> </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> </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<?>, 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<?>, 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> </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> </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> </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> </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> </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> </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<RegionInfo>, 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> </dd>
@@ -16708,7 +16708,7 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </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> </dd>
@@ -17975,7 +17975,7 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </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> </dd>
@@ -18014,9 +18014,9 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </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> </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> </dd>
@@ -18026,19 +18026,19 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </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> </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> </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> </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> </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> </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> </dd>
<dt>sink - Variable in class org.apache.hadoop.hbase.test.IntegrationTestReplication.VerifyReplicationLoop</dt>
<dd> </dd>
@@ -21131,7 +21131,7 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </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> </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> </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> </dd>
@@ -2702,7 +2702,7 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </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> </dd>
@@ -4296,9 +4296,9 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </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> </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> </dd>
@@ -9837,7 +9837,7 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </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> </dd>
@@ -10392,7 +10392,7 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </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> </dd>
@@ -11135,7 +11135,7 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </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> </dd>
@@ -12227,13 +12227,13 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </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<String, byte[]>)</a> - Constructor for class org.apache.hadoop.hbase.mapreduce.<a [...]
<dd> </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> </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> </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> </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> </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> </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> </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> </dd>
@@ -20296,7 +20296,7 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </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> </dd>
@@ -22547,7 +22547,7 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </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> </dd>
@@ -22833,13 +22833,13 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </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> </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> </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> </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> </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> </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> </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> </dd>
@@ -24794,7 +24794,7 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </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> </dd>
@@ -26151,7 +26151,7 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </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> </dd>
@@ -27401,7 +27401,7 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </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> </dd>
@@ -29707,7 +29707,7 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </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> </dd>
@@ -41088,7 +41088,7 @@ loadScripts(document, 'script');</script>
<dd> </dd>
<dt><a href="org/apache/hadoop/hbase/util/AbstractHBaseToolTest.TestTool.html#processOldArgs(java.util.List)" class="member-name-link">processOldArgs(List<String>)</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> </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> </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> </dd>
@@ -41146,7 +41146,7 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </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> </dd>
@@ -41292,7 +41292,7 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </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> </dd>
@@ -43376,7 +43376,7 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </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> </dd>
@@ -44506,7 +44506,7 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </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> </dd>
@@ -45642,7 +45642,7 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </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> </dd>
@@ -46509,9 +46509,9 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </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> </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> </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> </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> </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> </dd>
@@ -51583,7 +51583,7 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </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> </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> </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> </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> </dd>
@@ -88725,7 +88725,7 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </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> </dd>
@@ -89103,7 +89103,7 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </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> </dd>
@@ -89329,7 +89329,7 @@ loadScripts(document, 'script');</script>
<dd> </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> </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> </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> </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