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

asf-gitbox-commits 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 a82be74a291 Published site at 190d52271a14ad99631310a9a67b8b38cff8cc5f.
a82be74a291 is described below

commit a82be74a2916924b8352d1a1115c42715bf30719
Author: HBase <[email protected]>
AuthorDate: Thu May 21 23:50:12 2026 +0000

    Published site at 190d52271a14ad99631310a9a67b8b38cff8cc5f.
---
 books/apache-hbase-reference-guide-dark-mode.pdf   | Bin 38899979 -> 38899977 
bytes
 books/apache-hbase-reference-guide.pdf             | Bin 38790049 -> 38790049 
bytes
 checkstyle-aggregate.html                          |   2 +-
 dependency-convergence.html                        |   2 +-
 dependency-info.html                               |   2 +-
 dependency-management.html                         |   2 +-
 hbase-website/dependency-convergence.html          |   2 +-
 hbase-website/dependency-info.html                 |   2 +-
 hbase-website/dependency-management.html           |   2 +-
 hbase-website/index.html                           |   2 +-
 hbase-website/issue-management.html                |   2 +-
 hbase-website/licenses.html                        |   2 +-
 hbase-website/mailing-lists.html                   |   2 +-
 hbase-website/plugin-management.html               |   2 +-
 hbase-website/plugins.html                         |   2 +-
 hbase-website/project-info.html                    |   2 +-
 hbase-website/scm.html                             |   2 +-
 hbase-website/summary.html                         |   2 +-
 hbase-website/team.html                            |   2 +-
 issue-management.html                              |   2 +-
 licenses.html                                      |   2 +-
 mailing-lists.html                                 |   2 +-
 plugin-management.html                             |   2 +-
 plugins.html                                       |   2 +-
 project-info.html                                  |   2 +-
 project-reports.html                               |   2 +-
 scm.html                                           |   2 +-
 summary.html                                       |   2 +-
 team.html                                          |   2 +-
 testdevapidocs/index-all.html                      |   2 +
 testdevapidocs/member-search-index.js              |   2 +-
 .../io/hfile/bucket/TestPrefetchPersistence.html   |  80 +++---
 .../io/hfile/bucket/TestPrefetchPersistence.html   | 271 +++++++++++----------
 33 files changed, 215 insertions(+), 194 deletions(-)

diff --git a/books/apache-hbase-reference-guide-dark-mode.pdf 
b/books/apache-hbase-reference-guide-dark-mode.pdf
index a4937cca504..a9c5d7ba0b2 100644
Binary files a/books/apache-hbase-reference-guide-dark-mode.pdf and 
b/books/apache-hbase-reference-guide-dark-mode.pdf differ
diff --git a/books/apache-hbase-reference-guide.pdf 
b/books/apache-hbase-reference-guide.pdf
index ea7b7779fa3..fe7c9ab469e 100644
Binary files a/books/apache-hbase-reference-guide.pdf and 
b/books/apache-hbase-reference-guide.pdf differ
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index 9a78fe35db9..add95020f82 100644
--- a/checkstyle-aggregate.html
+++ b/checkstyle-aggregate.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-checkstyle-plugin:3.6.0:checkstyle-aggregate at 
2026-05-20
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-checkstyle-plugin:3.6.0:checkstyle-aggregate at 
2026-05-21
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; lang="en">
diff --git a/dependency-convergence.html b/dependency-convergence.html
index d935cd5c4cf..cde5b342a42 100644
--- a/dependency-convergence.html
+++ b/dependency-convergence.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-convergence
 at 2026-05-20
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-convergence
 at 2026-05-21
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; lang="en">
diff --git a/dependency-info.html b/dependency-info.html
index b2f04106358..3571ea747f8 100644
--- a/dependency-info.html
+++ b/dependency-info.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-info
 at 2026-05-20
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-info
 at 2026-05-21
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; lang="en">
diff --git a/dependency-management.html b/dependency-management.html
index 39252045fd0..9b9e288c49e 100644
--- a/dependency-management.html
+++ b/dependency-management.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-management
 at 2026-05-20
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-management
 at 2026-05-21
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; lang="en">
diff --git a/hbase-website/dependency-convergence.html 
b/hbase-website/dependency-convergence.html
index 5d25a5aa25d..86eb03ef479 100644
--- a/hbase-website/dependency-convergence.html
+++ b/hbase-website/dependency-convergence.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-convergence
 at 2026-05-20
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-convergence
 at 2026-05-21
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; lang="en">
diff --git a/hbase-website/dependency-info.html 
b/hbase-website/dependency-info.html
index 63d1266b9ef..2909ed005cb 100644
--- a/hbase-website/dependency-info.html
+++ b/hbase-website/dependency-info.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-info
 at 2026-05-20
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-info
 at 2026-05-21
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; lang="en">
diff --git a/hbase-website/dependency-management.html 
b/hbase-website/dependency-management.html
index 6dda8ac1a6d..c2d04d3c4cb 100644
--- a/hbase-website/dependency-management.html
+++ b/hbase-website/dependency-management.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-management
 at 2026-05-20
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:dependency-management
 at 2026-05-21
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; lang="en">
diff --git a/hbase-website/index.html b/hbase-website/index.html
index 4aedbfd6fe6..422d13ea358 100644
--- a/hbase-website/index.html
+++ b/hbase-website/index.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:index at 
2026-05-20
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:index at 
2026-05-21
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; lang="en">
diff --git a/hbase-website/issue-management.html 
b/hbase-website/issue-management.html
index 60c7d8ead13..6598cc7acb0 100644
--- a/hbase-website/issue-management.html
+++ b/hbase-website/issue-management.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:issue-management
 at 2026-05-20
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:issue-management
 at 2026-05-21
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; lang="en">
diff --git a/hbase-website/licenses.html b/hbase-website/licenses.html
index 5b938ca98f5..ca32f877ccd 100644
--- a/hbase-website/licenses.html
+++ b/hbase-website/licenses.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:licenses at 
2026-05-20
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:licenses at 
2026-05-21
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; lang="en">
diff --git a/hbase-website/mailing-lists.html b/hbase-website/mailing-lists.html
index 154b8af1d89..5750dfdfee5 100644
--- a/hbase-website/mailing-lists.html
+++ b/hbase-website/mailing-lists.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:mailing-lists 
at 2026-05-20
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:mailing-lists 
at 2026-05-21
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; lang="en">
diff --git a/hbase-website/plugin-management.html 
b/hbase-website/plugin-management.html
index 221b2644404..9bf10665223 100644
--- a/hbase-website/plugin-management.html
+++ b/hbase-website/plugin-management.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:plugin-management
 at 2026-05-20
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:plugin-management
 at 2026-05-21
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; lang="en">
diff --git a/hbase-website/plugins.html b/hbase-website/plugins.html
index 6459029ff56..518dded6c22 100644
--- a/hbase-website/plugins.html
+++ b/hbase-website/plugins.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:plugins at 
2026-05-20
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:plugins at 
2026-05-21
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; lang="en">
diff --git a/hbase-website/project-info.html b/hbase-website/project-info.html
index 675111f35aa..c11035b0394 100644
--- a/hbase-website/project-info.html
+++ b/hbase-website/project-info.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-site-plugin:3.21.0:project-info at 2026-05-20
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-site-plugin:3.21.0:project-info at 2026-05-21
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; lang="en">
diff --git a/hbase-website/scm.html b/hbase-website/scm.html
index 004f8d05672..6e95bf6864c 100644
--- a/hbase-website/scm.html
+++ b/hbase-website/scm.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:scm at 
2026-05-20
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:scm at 
2026-05-21
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; lang="en">
diff --git a/hbase-website/summary.html b/hbase-website/summary.html
index f83b27c0047..c4b24316799 100644
--- a/hbase-website/summary.html
+++ b/hbase-website/summary.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:summary at 
2026-05-20
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:summary at 
2026-05-21
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; lang="en">
diff --git a/hbase-website/team.html b/hbase-website/team.html
index 101cdeda5aa..7ecf1d2fc04 100644
--- a/hbase-website/team.html
+++ b/hbase-website/team.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:team at 
2026-05-20
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:team at 
2026-05-21
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; lang="en">
diff --git a/issue-management.html b/issue-management.html
index fe2373bd2d5..56eab8f15f3 100644
--- a/issue-management.html
+++ b/issue-management.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:issue-management
 at 2026-05-20
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:issue-management
 at 2026-05-21
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; lang="en">
diff --git a/licenses.html b/licenses.html
index 9dcd7386fd0..19b8316a83e 100644
--- a/licenses.html
+++ b/licenses.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:licenses at 
2026-05-20
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:licenses at 
2026-05-21
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; lang="en">
diff --git a/mailing-lists.html b/mailing-lists.html
index 23e64404440..35cd840c3c3 100644
--- a/mailing-lists.html
+++ b/mailing-lists.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:mailing-lists 
at 2026-05-20
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:mailing-lists 
at 2026-05-21
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; lang="en">
diff --git a/plugin-management.html b/plugin-management.html
index 9f270267415..beb32867e0a 100644
--- a/plugin-management.html
+++ b/plugin-management.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:plugin-management
 at 2026-05-20
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:plugin-management
 at 2026-05-21
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; lang="en">
diff --git a/plugins.html b/plugins.html
index e01e92903f3..36d76434cb8 100644
--- a/plugins.html
+++ b/plugins.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:plugins at 
2026-05-20
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:plugins at 
2026-05-21
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; lang="en">
diff --git a/project-info.html b/project-info.html
index 03339299eed..1995084d13a 100644
--- a/project-info.html
+++ b/project-info.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-site-plugin:3.21.0:project-info at 2026-05-20
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-site-plugin:3.21.0:project-info at 2026-05-21
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; lang="en">
diff --git a/project-reports.html b/project-reports.html
index d9f2b763d4b..4e59eb59ec9 100644
--- a/project-reports.html
+++ b/project-reports.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-site-plugin:3.21.0:project-reports at 2026-05-20
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-site-plugin:3.21.0:project-reports at 2026-05-21
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; lang="en">
diff --git a/scm.html b/scm.html
index 3377fe39292..59554d983a9 100644
--- a/scm.html
+++ b/scm.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:scm at 
2026-05-20
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:scm at 
2026-05-21
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; lang="en">
diff --git a/summary.html b/summary.html
index 38a70756656..5dc1cb33b2d 100644
--- a/summary.html
+++ b/summary.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:summary at 
2026-05-20
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:summary at 
2026-05-21
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; lang="en">
diff --git a/team.html b/team.html
index e20ab2b9432..24eeb3c1c7b 100644
--- a/team.html
+++ b/team.html
@@ -2,7 +2,7 @@
 
 
 <!--
- | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:team at 
2026-05-20
+ | Generated by Apache Maven Doxia Site Renderer 2.0.0 from 
org.apache.maven.plugins:maven-project-info-reports-plugin:3.9.0:team at 
2026-05-21
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; lang="en">
diff --git a/testdevapidocs/index-all.html b/testdevapidocs/index-all.html
index e70cae0fca1..9d3e5906960 100644
--- a/testdevapidocs/index-all.html
+++ b/testdevapidocs/index-all.html
@@ -6385,6 +6385,8 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/http/TestSSLHttpServer.html#cleanup()" 
class="member-name-link">cleanup()</a> - Static method in class 
org.apache.hadoop.hbase.http.<a 
href="org/apache/hadoop/hbase/http/TestSSLHttpServer.html" title="class in 
org.apache.hadoop.hbase.http">TestSSLHttpServer</a></dt>
 <dd>&nbsp;</dd>
+<dt><a 
href="org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#cleanup()"
 class="member-name-link">cleanup()</a> - Method in class 
org.apache.hadoop.hbase.io.hfile.bucket.<a 
href="org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html" 
title="class in 
org.apache.hadoop.hbase.io.hfile.bucket">TestPrefetchPersistence</a></dt>
+<dd>&nbsp;</dd>
 <dt><a 
href="org/apache/hadoop/hbase/mapreduce/TestImportExportBase.html#cleanup()" 
class="member-name-link">cleanup()</a> - Method in class 
org.apache.hadoop.hbase.mapreduce.<a 
href="org/apache/hadoop/hbase/mapreduce/TestImportExportBase.html" title="class 
in org.apache.hadoop.hbase.mapreduce">TestImportExportBase</a></dt>
 <dd>&nbsp;</dd>
 <dt><a 
href="org/apache/hadoop/hbase/master/cleaner/TestCleanerChore.html#cleanup()" 
class="member-name-link">cleanup()</a> - Static method in class 
org.apache.hadoop.hbase.master.cleaner.<a 
href="org/apache/hadoop/hbase/master/cleaner/TestCleanerChore.html" 
title="class in 
org.apache.hadoop.hbase.master.cleaner">TestCleanerChore</a></dt>
diff --git a/testdevapidocs/member-search-index.js 
b/testdevapidocs/member-search-index.js
index 7b8f45d364f..5c570e68875 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
diff --git 
a/testdevapidocs/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html
 
b/testdevapidocs/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html
index 75b53d33292..52b3c96abff 100644
--- 
a/testdevapidocs/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html
+++ 
b/testdevapidocs/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html
@@ -78,7 +78,7 @@ loadScripts(document, 'script');</script>
 <section class="class-description" id="class-description">
 <hr>
 <div class="type-signature"><span 
class="annotations">@Tag("org.apache.hadoop.hbase.testclassification.IOTests") 
@Tag("org.apache.hadoop.hbase.testclassification.LargeTests")
-</span><span class="modifiers">public class </span><span 
class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-51">TestPrefetchPersistence</a></span>
+</span><span class="modifiers">public class </span><span 
class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-52">TestPrefetchPersistence</a></span>
 <span class="extends-implements">extends <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></span></div>
 </section>
 <section class="summary">
@@ -168,24 +168,27 @@ loadScripts(document, 'script');</script>
 <div class="table-header col-first">Modifier and Type</div>
 <div class="table-header col-second">Method</div>
 <div class="table-header col-last">Description</div>
-<div class="col-first even-row-color method-summary-table 
method-summary-table-tab1 method-summary-table-tab4"><code>static 
org.apache.hadoop.hbase.KeyValue.Type</code></div>
-<div class="col-second even-row-color method-summary-table 
method-summary-table-tab1 method-summary-table-tab4"><code><a 
href="#generateKeyType(java.util.Random)" 
class="member-name-link">generateKeyType</a><wbr>(<a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Random.html";
 title="class or interface in java.util" 
class="external-link">Random</a>&nbsp;rand)</code></div>
-<div class="col-last even-row-color method-summary-table 
method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first odd-row-color method-summary-table 
method-summary-table-tab1 method-summary-table-tab4"><code>static <a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/stream/Stream.html";
 title="class or interface in java.util.stream" 
class="external-link">Stream</a>&lt;org.junit.jupiter.params.provider.Arguments&gt;</code></div>
-<div class="col-second odd-row-color method-summary-table 
method-summary-table-tab1 method-summary-table-tab4"><code><a 
href="#parameters()" class="member-name-link">parameters</a>()</code></div>
-<div class="col-last odd-row-color method-summary-table 
method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
 <div class="col-first even-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
-<div class="col-second even-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4"><code><a 
href="#readStoreFile(org.apache.hadoop.fs.Path)" 
class="member-name-link">readStoreFile</a><wbr>(org.apache.hadoop.fs.Path&nbsp;storeFilePath)</code></div>
+<div class="col-second even-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4"><code><a href="#cleanup()" 
class="member-name-link">cleanup</a>()</code></div>
 <div class="col-last even-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table 
method-summary-table-tab1 method-summary-table-tab4"><code>static 
org.apache.hadoop.hbase.KeyValue.Type</code></div>
+<div class="col-second odd-row-color method-summary-table 
method-summary-table-tab1 method-summary-table-tab4"><code><a 
href="#generateKeyType(java.util.Random)" 
class="member-name-link">generateKeyType</a><wbr>(<a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Random.html";
 title="class or interface in java.util" 
class="external-link">Random</a>&nbsp;rand)</code></div>
+<div class="col-last odd-row-color method-summary-table 
method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table 
method-summary-table-tab1 method-summary-table-tab4"><code>static <a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/stream/Stream.html";
 title="class or interface in java.util.stream" 
class="external-link">Stream</a>&lt;org.junit.jupiter.params.provider.Arguments&gt;</code></div>
+<div class="col-second even-row-color method-summary-table 
method-summary-table-tab1 method-summary-table-tab4"><code><a 
href="#parameters()" class="member-name-link">parameters</a>()</code></div>
+<div class="col-last even-row-color method-summary-table 
method-summary-table-tab1 method-summary-table-tab4">&nbsp;</div>
 <div class="col-first odd-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
-<div class="col-second odd-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setup()" 
class="member-name-link">setup</a>()</code></div>
+<div class="col-second odd-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4"><code><a 
href="#readStoreFile(org.apache.hadoop.fs.Path)" 
class="member-name-link">readStoreFile</a><wbr>(org.apache.hadoop.fs.Path&nbsp;storeFilePath)</code></div>
 <div class="col-last odd-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
 <div class="col-first even-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
-<div class="col-second even-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4"><code><a 
href="#testPrefetchPersistence()" 
class="member-name-link">testPrefetchPersistence</a>()</code></div>
+<div class="col-second even-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setup()" 
class="member-name-link">setup</a>()</code></div>
 <div class="col-last even-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first odd-row-color method-summary-table 
method-summary-table-tab2 
method-summary-table-tab4"><code>org.apache.hadoop.fs.Path</code></div>
-<div class="col-second odd-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4"><code><a 
href="#writeStoreFile(java.lang.String)" 
class="member-name-link">writeStoreFile</a><wbr>(<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>&nbsp;fname)</code></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="#testPrefetchPersistence()" 
class="member-name-link">testPrefetchPersistence</a>()</code></div>
 <div class="col-last odd-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first even-row-color method-summary-table 
method-summary-table-tab2 
method-summary-table-tab4"><code>org.apache.hadoop.fs.Path</code></div>
+<div class="col-second even-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4"><code><a 
href="#writeStoreFile(java.lang.String)" 
class="member-name-link">writeStoreFile</a><wbr>(<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>&nbsp;fname)</code></div>
+<div class="col-last even-row-color method-summary-table 
method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
 </div>
 </div>
 </div>
@@ -206,37 +209,37 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" id="constructedBlockSize">
 <h3>constructedBlockSize</h3>
-<div class="member-signature"><span class="modifiers">final</span>&nbsp;<span 
class="return-type">int</span>&nbsp;<span class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-64">constructedBlockSize</a></span></div>
+<div class="member-signature"><span class="modifiers">final</span>&nbsp;<span 
class="return-type">int</span>&nbsp;<span class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-65">constructedBlockSize</a></span></div>
 </section>
 </li>
 <li>
 <section class="detail" id="constructedBlockSizes">
 <h3>constructedBlockSizes</h3>
-<div class="member-signature"><span class="modifiers">final</span>&nbsp;<span 
class="return-type">int[]</span>&nbsp;<span class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-65">constructedBlockSizes</a></span></div>
+<div class="member-signature"><span class="modifiers">final</span>&nbsp;<span 
class="return-type">int[]</span>&nbsp;<span class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-66">constructedBlockSizes</a></span></div>
 </section>
 </li>
 <li>
 <section class="detail" id="LOG">
 <h3>LOG</h3>
-<div class="member-signature"><span class="modifiers">private static 
final</span>&nbsp;<span class="return-type">org.slf4j.Logger</span>&nbsp;<span 
class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-72">LOG</a></span></div>
+<div class="member-signature"><span class="modifiers">private static 
final</span>&nbsp;<span class="return-type">org.slf4j.Logger</span>&nbsp;<span 
class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-73">LOG</a></span></div>
 </section>
 </li>
 <li>
 <section class="detail" id="TEST_UTIL">
 <h3>TEST_UTIL</h3>
-<div class="member-signature"><span class="modifiers">private static 
final</span>&nbsp;<span class="return-type"><a 
href="../../../HBaseTestingUtil.html" title="class in 
org.apache.hadoop.hbase">HBaseTestingUtil</a></span>&nbsp;<span 
class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-74">TEST_UTIL</a></span></div>
+<div class="member-signature"><span class="modifiers">private static 
final</span>&nbsp;<span class="return-type"><a 
href="../../../HBaseTestingUtil.html" title="class in 
org.apache.hadoop.hbase">HBaseTestingUtil</a></span>&nbsp;<span 
class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-75">TEST_UTIL</a></span></div>
 </section>
 </li>
 <li>
 <section class="detail" id="NUM_VALID_KEY_TYPES">
 <h3>NUM_VALID_KEY_TYPES</h3>
-<div class="member-signature"><span class="modifiers">private static 
final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span 
class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-76">NUM_VALID_KEY_TYPES</a></span></div>
+<div class="member-signature"><span class="modifiers">private static 
final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span 
class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-77">NUM_VALID_KEY_TYPES</a></span></div>
 </section>
 </li>
 <li>
 <section class="detail" id="DATA_BLOCK_SIZE">
 <h3>DATA_BLOCK_SIZE</h3>
-<div class="member-signature"><span class="modifiers">private static 
final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span 
class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-77">DATA_BLOCK_SIZE</a></span></div>
+<div class="member-signature"><span class="modifiers">private static 
final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span 
class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-78">DATA_BLOCK_SIZE</a></span></div>
 <dl class="notes">
 <dt>See Also:</dt>
 <dd>
@@ -250,7 +253,7 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" id="NUM_KV">
 <h3>NUM_KV</h3>
-<div class="member-signature"><span class="modifiers">private static 
final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span 
class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-78">NUM_KV</a></span></div>
+<div class="member-signature"><span class="modifiers">private static 
final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span 
class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-79">NUM_KV</a></span></div>
 <dl class="notes">
 <dt>See Also:</dt>
 <dd>
@@ -264,43 +267,43 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" id="conf">
 <h3>conf</h3>
-<div class="member-signature"><span 
class="modifiers">private</span>&nbsp;<span 
class="return-type">org.apache.hadoop.conf.Configuration</span>&nbsp;<span 
class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-80">conf</a></span></div>
+<div class="member-signature"><span 
class="modifiers">private</span>&nbsp;<span 
class="return-type">org.apache.hadoop.conf.Configuration</span>&nbsp;<span 
class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-81">conf</a></span></div>
 </section>
 </li>
 <li>
 <section class="detail" id="cacheConf">
 <h3>cacheConf</h3>
-<div class="member-signature"><span 
class="modifiers">private</span>&nbsp;<span 
class="return-type">org.apache.hadoop.hbase.io.hfile.CacheConfig</span>&nbsp;<span
 class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-81">cacheConf</a></span></div>
+<div class="member-signature"><span 
class="modifiers">private</span>&nbsp;<span 
class="return-type">org.apache.hadoop.hbase.io.hfile.CacheConfig</span>&nbsp;<span
 class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-82">cacheConf</a></span></div>
 </section>
 </li>
 <li>
 <section class="detail" id="fs">
 <h3>fs</h3>
-<div class="member-signature"><span 
class="modifiers">private</span>&nbsp;<span 
class="return-type">org.apache.hadoop.fs.FileSystem</span>&nbsp;<span 
class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-82">fs</a></span></div>
+<div class="member-signature"><span 
class="modifiers">private</span>&nbsp;<span 
class="return-type">org.apache.hadoop.fs.FileSystem</span>&nbsp;<span 
class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-83">fs</a></span></div>
 </section>
 </li>
 <li>
 <section class="detail" id="prefetchPersistencePath">
 <h3>prefetchPersistencePath</h3>
-<div class="member-signature"><span class="return-type"><a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html";
 title="class or interface in java.lang" 
class="external-link">String</a></span>&nbsp;<span class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-83">prefetchPersistencePath</a></span></div>
+<div class="member-signature"><span class="return-type"><a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html";
 title="class or interface in java.lang" 
class="external-link">String</a></span>&nbsp;<span class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-84">prefetchPersistencePath</a></span></div>
 </section>
 </li>
 <li>
 <section class="detail" id="testDir">
 <h3>testDir</h3>
-<div class="member-signature"><span 
class="return-type">org.apache.hadoop.fs.Path</span>&nbsp;<span 
class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-84">testDir</a></span></div>
+<div class="member-signature"><span 
class="return-type">org.apache.hadoop.fs.Path</span>&nbsp;<span 
class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-85">testDir</a></span></div>
 </section>
 </li>
 <li>
 <section class="detail" id="bucketCache">
 <h3>bucketCache</h3>
-<div class="member-signature"><span 
class="return-type">org.apache.hadoop.hbase.io.hfile.bucket.BucketCache</span>&nbsp;<span
 class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-86">bucketCache</a></span></div>
+<div class="member-signature"><span 
class="return-type">org.apache.hadoop.hbase.io.hfile.bucket.BucketCache</span>&nbsp;<span
 class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-87">bucketCache</a></span></div>
 </section>
 </li>
 <li>
 <section class="detail" id="capacitySize">
 <h3>capacitySize</h3>
-<div class="member-signature"><span class="modifiers">final</span>&nbsp;<span 
class="return-type">long</span>&nbsp;<span class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-88">capacitySize</a></span></div>
+<div class="member-signature"><span class="modifiers">final</span>&nbsp;<span 
class="return-type">long</span>&nbsp;<span class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-89">capacitySize</a></span></div>
 <dl class="notes">
 <dt>See Also:</dt>
 <dd>
@@ -314,7 +317,7 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" id="writeThreads">
 <h3>writeThreads</h3>
-<div class="member-signature"><span class="modifiers">final</span>&nbsp;<span 
class="return-type">int</span>&nbsp;<span class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-89">writeThreads</a></span></div>
+<div class="member-signature"><span class="modifiers">final</span>&nbsp;<span 
class="return-type">int</span>&nbsp;<span class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-90">writeThreads</a></span></div>
 <dl class="notes">
 <dt>See Also:</dt>
 <dd>
@@ -328,7 +331,7 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" id="writerQLen">
 <h3>writerQLen</h3>
-<div class="member-signature"><span class="modifiers">final</span>&nbsp;<span 
class="return-type">int</span>&nbsp;<span class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-90">writerQLen</a></span></div>
+<div class="member-signature"><span class="modifiers">final</span>&nbsp;<span 
class="return-type">int</span>&nbsp;<span class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-91">writerQLen</a></span></div>
 <dl class="notes">
 <dt>See Also:</dt>
 <dd>
@@ -350,7 +353,7 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" id="&lt;init&gt;(int,int[])">
 <h3>TestPrefetchPersistence</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span 
class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-67">TestPrefetchPersistence</a></span><wbr><span
 class="parameters">(int&nbsp;constructedBlockSize,
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span 
class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-68">TestPrefetchPersistence</a></span><wbr><span
 class="parameters">(int&nbsp;constructedBlockSize,
  int[]&nbsp;constructedBlockSizes)</span></div>
 </section>
 </li>
@@ -365,14 +368,14 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" id="parameters()">
 <h3>parameters</h3>
-<div class="member-signature"><span class="modifiers">public 
static</span>&nbsp;<span class="return-type"><a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/stream/Stream.html";
 title="class or interface in java.util.stream" 
class="external-link">Stream</a>&lt;org.junit.jupiter.params.provider.Arguments&gt;</span>&nbsp;<span
 class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-56"
 [...]
+<div class="member-signature"><span class="modifiers">public 
static</span>&nbsp;<span class="return-type"><a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/stream/Stream.html";
 title="class or interface in java.util.stream" 
class="external-link">Stream</a>&lt;org.junit.jupiter.params.provider.Arguments&gt;</span>&nbsp;<span
 class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-57"
 [...]
 </section>
 </li>
 <li>
 <section class="detail" id="setup()">
 <h3>setup</h3>
 <div class="member-signature"><span class="annotations">@BeforeEach
-</span><span class="modifiers">public</span>&nbsp;<span 
class="return-type">void</span>&nbsp;<span class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-92">setup</a></span>()
+</span><span class="modifiers">public</span>&nbsp;<span 
class="return-type">void</span>&nbsp;<span class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-93">setup</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>
@@ -384,7 +387,7 @@ loadScripts(document, 'script');</script>
 <section class="detail" id="testPrefetchPersistence()">
 <h3>testPrefetchPersistence</h3>
 <div class="member-signature"><span class="annotations">@TestTemplate
-</span><span class="modifiers">public</span>&nbsp;<span 
class="return-type">void</span>&nbsp;<span class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-101">testPrefetchPersistence</a></span>()
+</span><span class="modifiers">public</span>&nbsp;<span 
class="return-type">void</span>&nbsp;<span class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-102">testPrefetchPersistence</a></span>()
                              throws <span class="exceptions"><a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html";
 title="class or interface in java.lang" 
class="external-link">Exception</a></span></div>
 <dl class="notes">
 <dt>Throws:</dt>
@@ -393,9 +396,16 @@ loadScripts(document, 'script');</script>
 </section>
 </li>
 <li>
+<section class="detail" id="cleanup()">
+<h3>cleanup</h3>
+<div class="member-signature"><span class="annotations">@AfterEach
+</span><span class="modifiers">public</span>&nbsp;<span 
class="return-type">void</span>&nbsp;<span class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-133">cleanup</a></span>()</div>
+</section>
+</li>
+<li>
 <section class="detail" id="readStoreFile(org.apache.hadoop.fs.Path)">
 <h3>readStoreFile</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span 
class="return-type">void</span>&nbsp;<span class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-133">readStoreFile</a></span><wbr><span
 class="parameters">(org.apache.hadoop.fs.Path&nbsp;storeFilePath)</span>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span 
class="return-type">void</span>&nbsp;<span class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-138">readStoreFile</a></span><wbr><span
 class="parameters">(org.apache.hadoop.fs.Path&nbsp;storeFilePath)</span>
                    throws <span class="exceptions"><a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html";
 title="class or interface in java.lang" 
class="external-link">Exception</a></span></div>
 <dl class="notes">
 <dt>Throws:</dt>
@@ -406,7 +416,7 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" id="writeStoreFile(java.lang.String)">
 <h3>writeStoreFile</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span 
class="return-type">org.apache.hadoop.fs.Path</span>&nbsp;<span 
class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-142">writeStoreFile</a></span><wbr><span
 class="parameters">(<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" [...]
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span 
class="return-type">org.apache.hadoop.fs.Path</span>&nbsp;<span 
class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-151">writeStoreFile</a></span><wbr><span
 class="parameters">(<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" [...]
                                          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>
@@ -417,7 +427,7 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" id="generateKeyType(java.util.Random)">
 <h3>generateKeyType</h3>
-<div class="member-signature"><span class="modifiers">public 
static</span>&nbsp;<span 
class="return-type">org.apache.hadoop.hbase.KeyValue.Type</span>&nbsp;<span 
class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-162">generateKeyType</a></span><wbr><span
 class="parameters">(<a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Random.html";
 title="class or interface in java.util" c [...]
+<div class="member-signature"><span class="modifiers">public 
static</span>&nbsp;<span 
class="return-type">org.apache.hadoop.hbase.KeyValue.Type</span>&nbsp;<span 
class="element-name"><a 
href="../../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html#line-171">generateKeyType</a></span><wbr><span
 class="parameters">(<a 
href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Random.html";
 title="class or interface in java.util" c [...]
 </section>
 </li>
 </ul>
diff --git 
a/testdevapidocs/src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html
 
b/testdevapidocs/src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html
index 78c216fa40a..3b0ea8d9980 100644
--- 
a/testdevapidocs/src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html
+++ 
b/testdevapidocs/src-html/org/apache/hadoop/hbase/io/hfile/bucket/TestPrefetchPersistence.html
@@ -54,139 +54,148 @@
 <span class="source-line-no">041</span><span id="line-41">import 
org.apache.hadoop.hbase.regionserver.StoreFileWriter;</span>
 <span class="source-line-no">042</span><span id="line-42">import 
org.apache.hadoop.hbase.testclassification.IOTests;</span>
 <span class="source-line-no">043</span><span id="line-43">import 
org.apache.hadoop.hbase.testclassification.LargeTests;</span>
-<span class="source-line-no">044</span><span id="line-44">import 
org.junit.jupiter.api.BeforeEach;</span>
-<span class="source-line-no">045</span><span id="line-45">import 
org.junit.jupiter.api.Tag;</span>
-<span class="source-line-no">046</span><span id="line-46">import 
org.junit.jupiter.api.TestTemplate;</span>
-<span class="source-line-no">047</span><span id="line-47">import 
org.junit.jupiter.params.provider.Arguments;</span>
-<span class="source-line-no">048</span><span id="line-48">import 
org.slf4j.Logger;</span>
-<span class="source-line-no">049</span><span id="line-49">import 
org.slf4j.LoggerFactory;</span>
-<span class="source-line-no">050</span><span id="line-50"></span>
-<span class="source-line-no">051</span><span 
id="line-51">@Tag(IOTests.TAG)</span>
-<span class="source-line-no">052</span><span 
id="line-52">@Tag(LargeTests.TAG)</span>
-<span class="source-line-no">053</span><span 
id="line-53">@HBaseParameterizedTestTemplate(name = "{index}: blockSize={0}, 
bucketSizes={1}")</span>
-<span class="source-line-no">054</span><span id="line-54">public class 
TestPrefetchPersistence {</span>
-<span class="source-line-no">055</span><span id="line-55"></span>
-<span class="source-line-no">056</span><span id="line-56">  
@SuppressWarnings("checkstyle:Indentation")</span>
-<span class="source-line-no">057</span><span id="line-57">  public static 
Stream&lt;Arguments&gt; parameters() {</span>
-<span class="source-line-no">058</span><span id="line-58">    return 
Stream.of(Arguments.of(16 * 1024,</span>
-<span class="source-line-no">059</span><span id="line-59">      new int[] { 2 
* 1024 + 1024, 4 * 1024 + 1024, 8 * 1024 + 1024, 16 * 1024 + 1024,</span>
-<span class="source-line-no">060</span><span id="line-60">        28 * 1024 + 
1024, 32 * 1024 + 1024, 64 * 1024 + 1024, 96 * 1024 + 1024,</span>
-<span class="source-line-no">061</span><span id="line-61">        128 * 1024 + 
1024 }));</span>
-<span class="source-line-no">062</span><span id="line-62">  }</span>
-<span class="source-line-no">063</span><span id="line-63"></span>
-<span class="source-line-no">064</span><span id="line-64">  final int 
constructedBlockSize;</span>
-<span class="source-line-no">065</span><span id="line-65">  final int[] 
constructedBlockSizes;</span>
-<span class="source-line-no">066</span><span id="line-66"></span>
-<span class="source-line-no">067</span><span id="line-67">  public 
TestPrefetchPersistence(int constructedBlockSize, int[] constructedBlockSizes) 
{</span>
-<span class="source-line-no">068</span><span id="line-68">    
this.constructedBlockSize = constructedBlockSize;</span>
-<span class="source-line-no">069</span><span id="line-69">    
this.constructedBlockSizes = constructedBlockSizes;</span>
-<span class="source-line-no">070</span><span id="line-70">  }</span>
-<span class="source-line-no">071</span><span id="line-71"></span>
-<span class="source-line-no">072</span><span id="line-72">  private static 
final Logger LOG = 
LoggerFactory.getLogger(TestPrefetchPersistence.class);</span>
-<span class="source-line-no">073</span><span id="line-73"></span>
-<span class="source-line-no">074</span><span id="line-74">  private static 
final HBaseTestingUtil TEST_UTIL = new HBaseTestingUtil();</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 
final int NUM_VALID_KEY_TYPES = KeyValue.Type.values().length - 2;</span>
-<span class="source-line-no">077</span><span id="line-77">  private static 
final int DATA_BLOCK_SIZE = 2048;</span>
-<span class="source-line-no">078</span><span id="line-78">  private static 
final int NUM_KV = 1000;</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 
Configuration conf;</span>
-<span class="source-line-no">081</span><span id="line-81">  private 
CacheConfig cacheConf;</span>
-<span class="source-line-no">082</span><span id="line-82">  private FileSystem 
fs;</span>
-<span class="source-line-no">083</span><span id="line-83">  String 
prefetchPersistencePath;</span>
-<span class="source-line-no">084</span><span id="line-84">  Path 
testDir;</span>
-<span class="source-line-no">085</span><span id="line-85"></span>
-<span class="source-line-no">086</span><span id="line-86">  BucketCache 
bucketCache;</span>
-<span class="source-line-no">087</span><span id="line-87"></span>
-<span class="source-line-no">088</span><span id="line-88">  final long 
capacitySize = 32 * 1024 * 1024;</span>
-<span class="source-line-no">089</span><span id="line-89">  final int 
writeThreads = BucketCache.DEFAULT_WRITER_THREADS;</span>
-<span class="source-line-no">090</span><span id="line-90">  final int 
writerQLen = BucketCache.DEFAULT_WRITER_QUEUE_ITEMS;</span>
-<span class="source-line-no">091</span><span id="line-91"></span>
-<span class="source-line-no">092</span><span id="line-92">  @BeforeEach</span>
-<span class="source-line-no">093</span><span id="line-93">  public void 
setup() throws IOException {</span>
-<span class="source-line-no">094</span><span id="line-94">    conf = 
TEST_UTIL.getConfiguration();</span>
-<span class="source-line-no">095</span><span id="line-95">    
conf.setBoolean(CacheConfig.PREFETCH_BLOCKS_ON_OPEN_KEY, true);</span>
-<span class="source-line-no">096</span><span id="line-96">    testDir = 
TEST_UTIL.getDataTestDir();</span>
-<span class="source-line-no">097</span><span id="line-97">    
TEST_UTIL.getTestFileSystem().mkdirs(testDir);</span>
-<span class="source-line-no">098</span><span id="line-98">    fs = 
HFileSystem.get(conf);</span>
-<span class="source-line-no">099</span><span id="line-99">  }</span>
-<span class="source-line-no">100</span><span id="line-100"></span>
-<span class="source-line-no">101</span><span id="line-101">  
@TestTemplate</span>
-<span class="source-line-no">102</span><span id="line-102">  public void 
testPrefetchPersistence() throws Exception {</span>
-<span class="source-line-no">103</span><span id="line-103">    bucketCache = 
new BucketCache("file:" + testDir + "/bucket.cache", capacitySize,</span>
-<span class="source-line-no">104</span><span id="line-104">      
constructedBlockSize, constructedBlockSizes, writeThreads, writerQLen,</span>
-<span class="source-line-no">105</span><span id="line-105">      testDir + 
"/bucket.persistence", 60 * 1000, conf);</span>
-<span class="source-line-no">106</span><span id="line-106">    
bucketCache.waitForCacheInitialization(10000);</span>
-<span class="source-line-no">107</span><span id="line-107">    cacheConf = new 
CacheConfig(conf, bucketCache);</span>
-<span class="source-line-no">108</span><span id="line-108"></span>
-<span class="source-line-no">109</span><span id="line-109">    long usedSize = 
bucketCache.getAllocator().getUsedSize();</span>
-<span class="source-line-no">110</span><span id="line-110">    assertEquals(0, 
usedSize);</span>
-<span class="source-line-no">111</span><span id="line-111">    assertTrue(new 
File(testDir + "/bucket.cache").exists());</span>
-<span class="source-line-no">112</span><span id="line-112">    // Load 
Cache</span>
-<span class="source-line-no">113</span><span id="line-113">    Path storeFile 
= writeStoreFile("TestPrefetch0");</span>
-<span class="source-line-no">114</span><span id="line-114">    Path storeFile2 
= writeStoreFile("TestPrefetch1");</span>
-<span class="source-line-no">115</span><span id="line-115">    
readStoreFile(storeFile);</span>
-<span class="source-line-no">116</span><span id="line-116">    
readStoreFile(storeFile2);</span>
-<span class="source-line-no">117</span><span id="line-117">    usedSize = 
bucketCache.getAllocator().getUsedSize();</span>
-<span class="source-line-no">118</span><span id="line-118">    
assertNotEquals(0, usedSize);</span>
-<span class="source-line-no">119</span><span id="line-119"></span>
-<span class="source-line-no">120</span><span id="line-120">    
bucketCache.shutdown();</span>
-<span class="source-line-no">121</span><span id="line-121">    assertTrue(new 
File(testDir + "/bucket.persistence").exists());</span>
-<span class="source-line-no">122</span><span id="line-122">    bucketCache = 
new BucketCache("file:" + testDir + "/bucket.cache", capacitySize,</span>
-<span class="source-line-no">123</span><span id="line-123">      
constructedBlockSize, constructedBlockSizes, writeThreads, writerQLen,</span>
-<span class="source-line-no">124</span><span id="line-124">      testDir + 
"/bucket.persistence", 60 * 1000, conf);</span>
-<span class="source-line-no">125</span><span id="line-125">    
bucketCache.waitForCacheInitialization(10000);</span>
-<span class="source-line-no">126</span><span id="line-126">    cacheConf = new 
CacheConfig(conf, bucketCache);</span>
-<span class="source-line-no">127</span><span id="line-127">    
assertTrue(usedSize != 0);</span>
-<span class="source-line-no">128</span><span id="line-128">    
assertTrue(bucketCache.fullyCachedFiles.containsKey(storeFile.getName()));</span>
-<span class="source-line-no">129</span><span id="line-129">    
assertTrue(bucketCache.fullyCachedFiles.containsKey(storeFile2.getName()));</span>
-<span class="source-line-no">130</span><span id="line-130">    
TEST_UTIL.cleanupTestDir();</span>
+<span class="source-line-no">044</span><span id="line-44">import 
org.junit.jupiter.api.AfterEach;</span>
+<span class="source-line-no">045</span><span id="line-45">import 
org.junit.jupiter.api.BeforeEach;</span>
+<span class="source-line-no">046</span><span id="line-46">import 
org.junit.jupiter.api.Tag;</span>
+<span class="source-line-no">047</span><span id="line-47">import 
org.junit.jupiter.api.TestTemplate;</span>
+<span class="source-line-no">048</span><span id="line-48">import 
org.junit.jupiter.params.provider.Arguments;</span>
+<span class="source-line-no">049</span><span id="line-49">import 
org.slf4j.Logger;</span>
+<span class="source-line-no">050</span><span id="line-50">import 
org.slf4j.LoggerFactory;</span>
+<span class="source-line-no">051</span><span id="line-51"></span>
+<span class="source-line-no">052</span><span 
id="line-52">@Tag(IOTests.TAG)</span>
+<span class="source-line-no">053</span><span 
id="line-53">@Tag(LargeTests.TAG)</span>
+<span class="source-line-no">054</span><span 
id="line-54">@HBaseParameterizedTestTemplate(name = "{index}: blockSize={0}, 
bucketSizes={1}")</span>
+<span class="source-line-no">055</span><span id="line-55">public class 
TestPrefetchPersistence {</span>
+<span class="source-line-no">056</span><span id="line-56"></span>
+<span class="source-line-no">057</span><span id="line-57">  
@SuppressWarnings("checkstyle:Indentation")</span>
+<span class="source-line-no">058</span><span id="line-58">  public static 
Stream&lt;Arguments&gt; parameters() {</span>
+<span class="source-line-no">059</span><span id="line-59">    return 
Stream.of(Arguments.of(16 * 1024,</span>
+<span class="source-line-no">060</span><span id="line-60">      new int[] { 2 
* 1024 + 1024, 4 * 1024 + 1024, 8 * 1024 + 1024, 16 * 1024 + 1024,</span>
+<span class="source-line-no">061</span><span id="line-61">        28 * 1024 + 
1024, 32 * 1024 + 1024, 64 * 1024 + 1024, 96 * 1024 + 1024,</span>
+<span class="source-line-no">062</span><span id="line-62">        128 * 1024 + 
1024 }));</span>
+<span class="source-line-no">063</span><span id="line-63">  }</span>
+<span class="source-line-no">064</span><span id="line-64"></span>
+<span class="source-line-no">065</span><span id="line-65">  final int 
constructedBlockSize;</span>
+<span class="source-line-no">066</span><span id="line-66">  final int[] 
constructedBlockSizes;</span>
+<span class="source-line-no">067</span><span id="line-67"></span>
+<span class="source-line-no">068</span><span id="line-68">  public 
TestPrefetchPersistence(int constructedBlockSize, int[] constructedBlockSizes) 
{</span>
+<span class="source-line-no">069</span><span id="line-69">    
this.constructedBlockSize = constructedBlockSize;</span>
+<span class="source-line-no">070</span><span id="line-70">    
this.constructedBlockSizes = constructedBlockSizes;</span>
+<span class="source-line-no">071</span><span id="line-71">  }</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 
final Logger LOG = 
LoggerFactory.getLogger(TestPrefetchPersistence.class);</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 static 
final HBaseTestingUtil TEST_UTIL = new HBaseTestingUtil();</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 static 
final int NUM_VALID_KEY_TYPES = KeyValue.Type.values().length - 2;</span>
+<span class="source-line-no">078</span><span id="line-78">  private static 
final int DATA_BLOCK_SIZE = 2048;</span>
+<span class="source-line-no">079</span><span id="line-79">  private static 
final int NUM_KV = 1000;</span>
+<span class="source-line-no">080</span><span id="line-80"></span>
+<span class="source-line-no">081</span><span id="line-81">  private 
Configuration conf;</span>
+<span class="source-line-no">082</span><span id="line-82">  private 
CacheConfig cacheConf;</span>
+<span class="source-line-no">083</span><span id="line-83">  private FileSystem 
fs;</span>
+<span class="source-line-no">084</span><span id="line-84">  String 
prefetchPersistencePath;</span>
+<span class="source-line-no">085</span><span id="line-85">  Path 
testDir;</span>
+<span class="source-line-no">086</span><span id="line-86"></span>
+<span class="source-line-no">087</span><span id="line-87">  BucketCache 
bucketCache;</span>
+<span class="source-line-no">088</span><span id="line-88"></span>
+<span class="source-line-no">089</span><span id="line-89">  final long 
capacitySize = 32 * 1024 * 1024;</span>
+<span class="source-line-no">090</span><span id="line-90">  final int 
writeThreads = BucketCache.DEFAULT_WRITER_THREADS;</span>
+<span class="source-line-no">091</span><span id="line-91">  final int 
writerQLen = BucketCache.DEFAULT_WRITER_QUEUE_ITEMS;</span>
+<span class="source-line-no">092</span><span id="line-92"></span>
+<span class="source-line-no">093</span><span id="line-93">  @BeforeEach</span>
+<span class="source-line-no">094</span><span id="line-94">  public void 
setup() throws IOException {</span>
+<span class="source-line-no">095</span><span id="line-95">    conf = 
TEST_UTIL.getConfiguration();</span>
+<span class="source-line-no">096</span><span id="line-96">    
conf.setBoolean(CacheConfig.PREFETCH_BLOCKS_ON_OPEN_KEY, true);</span>
+<span class="source-line-no">097</span><span id="line-97">    testDir = 
TEST_UTIL.getDataTestDir();</span>
+<span class="source-line-no">098</span><span id="line-98">    
TEST_UTIL.getTestFileSystem().mkdirs(testDir);</span>
+<span class="source-line-no">099</span><span id="line-99">    fs = 
HFileSystem.get(conf);</span>
+<span class="source-line-no">100</span><span id="line-100">  }</span>
+<span class="source-line-no">101</span><span id="line-101"></span>
+<span class="source-line-no">102</span><span id="line-102">  
@TestTemplate</span>
+<span class="source-line-no">103</span><span id="line-103">  public void 
testPrefetchPersistence() throws Exception {</span>
+<span class="source-line-no">104</span><span id="line-104">    bucketCache = 
new BucketCache("file:" + testDir + "/bucket.cache", capacitySize,</span>
+<span class="source-line-no">105</span><span id="line-105">      
constructedBlockSize, constructedBlockSizes, writeThreads, writerQLen,</span>
+<span class="source-line-no">106</span><span id="line-106">      testDir + 
"/bucket.persistence", 60 * 1000, conf);</span>
+<span class="source-line-no">107</span><span id="line-107">    
bucketCache.waitForCacheInitialization(10000);</span>
+<span class="source-line-no">108</span><span id="line-108">    cacheConf = new 
CacheConfig(conf, bucketCache);</span>
+<span class="source-line-no">109</span><span id="line-109"></span>
+<span class="source-line-no">110</span><span id="line-110">    long usedSize = 
bucketCache.getAllocator().getUsedSize();</span>
+<span class="source-line-no">111</span><span id="line-111">    assertEquals(0, 
usedSize);</span>
+<span class="source-line-no">112</span><span id="line-112">    assertTrue(new 
File(testDir + "/bucket.cache").exists());</span>
+<span class="source-line-no">113</span><span id="line-113">    // Load 
Cache</span>
+<span class="source-line-no">114</span><span id="line-114">    Path storeFile 
= writeStoreFile("TestPrefetch0");</span>
+<span class="source-line-no">115</span><span id="line-115">    Path storeFile2 
= writeStoreFile("TestPrefetch1");</span>
+<span class="source-line-no">116</span><span id="line-116">    
readStoreFile(storeFile);</span>
+<span class="source-line-no">117</span><span id="line-117">    
readStoreFile(storeFile2);</span>
+<span class="source-line-no">118</span><span id="line-118">    usedSize = 
bucketCache.getAllocator().getUsedSize();</span>
+<span class="source-line-no">119</span><span id="line-119">    
assertNotEquals(0, usedSize);</span>
+<span class="source-line-no">120</span><span id="line-120"></span>
+<span class="source-line-no">121</span><span id="line-121">    
bucketCache.shutdown();</span>
+<span class="source-line-no">122</span><span id="line-122">    assertTrue(new 
File(testDir + "/bucket.persistence").exists());</span>
+<span class="source-line-no">123</span><span id="line-123">    bucketCache = 
new BucketCache("file:" + testDir + "/bucket.cache", capacitySize,</span>
+<span class="source-line-no">124</span><span id="line-124">      
constructedBlockSize, constructedBlockSizes, writeThreads, writerQLen,</span>
+<span class="source-line-no">125</span><span id="line-125">      testDir + 
"/bucket.persistence", 60 * 1000, conf);</span>
+<span class="source-line-no">126</span><span id="line-126">    
bucketCache.waitForCacheInitialization(10000);</span>
+<span class="source-line-no">127</span><span id="line-127">    cacheConf = new 
CacheConfig(conf, bucketCache);</span>
+<span class="source-line-no">128</span><span id="line-128">    
assertTrue(usedSize != 0);</span>
+<span class="source-line-no">129</span><span id="line-129">    
assertTrue(bucketCache.fullyCachedFiles.containsKey(storeFile.getName()));</span>
+<span class="source-line-no">130</span><span id="line-130">    
assertTrue(bucketCache.fullyCachedFiles.containsKey(storeFile2.getName()));</span>
 <span class="source-line-no">131</span><span id="line-131">  }</span>
 <span class="source-line-no">132</span><span id="line-132"></span>
-<span class="source-line-no">133</span><span id="line-133">  public void 
readStoreFile(Path storeFilePath) throws Exception {</span>
-<span class="source-line-no">134</span><span id="line-134">    // Open the 
file</span>
-<span class="source-line-no">135</span><span id="line-135">    HFile.Reader 
reader = HFile.createReader(fs, storeFilePath, cacheConf, true, conf);</span>
-<span class="source-line-no">136</span><span id="line-136">    while 
(!reader.prefetchComplete()) {</span>
-<span class="source-line-no">137</span><span id="line-137">      // Sleep for 
a bit</span>
-<span class="source-line-no">138</span><span id="line-138">      
Thread.sleep(1000);</span>
-<span class="source-line-no">139</span><span id="line-139">    }</span>
-<span class="source-line-no">140</span><span id="line-140">  }</span>
-<span class="source-line-no">141</span><span id="line-141"></span>
-<span class="source-line-no">142</span><span id="line-142">  public Path 
writeStoreFile(String fname) throws IOException {</span>
-<span class="source-line-no">143</span><span id="line-143">    Path 
storeFileParentDir = new Path(TEST_UTIL.getDataTestDir(), fname);</span>
-<span class="source-line-no">144</span><span id="line-144">    HFileContext 
meta = new HFileContextBuilder().withBlockSize(DATA_BLOCK_SIZE).build();</span>
-<span class="source-line-no">145</span><span id="line-145">    StoreFileWriter 
sfw = new StoreFileWriter.Builder(conf, cacheConf, fs)</span>
-<span class="source-line-no">146</span><span id="line-146">      
.withOutputDir(storeFileParentDir).withFileContext(meta).build();</span>
-<span class="source-line-no">147</span><span id="line-147">    Random rand = 
ThreadLocalRandom.current();</span>
-<span class="source-line-no">148</span><span id="line-148">    final int 
rowLen = 32;</span>
-<span class="source-line-no">149</span><span id="line-149">    for (int i = 0; 
i &lt; NUM_KV; ++i) {</span>
-<span class="source-line-no">150</span><span id="line-150">      byte[] k = 
RandomKeyValueUtil.randomOrderedKey(rand, i);</span>
-<span class="source-line-no">151</span><span id="line-151">      byte[] v = 
RandomKeyValueUtil.randomValue(rand);</span>
-<span class="source-line-no">152</span><span id="line-152">      int cfLen = 
rand.nextInt(k.length - rowLen + 1);</span>
-<span class="source-line-no">153</span><span id="line-153">      KeyValue kv = 
new KeyValue(k, 0, rowLen, k, rowLen, cfLen, k, rowLen + cfLen,</span>
-<span class="source-line-no">154</span><span id="line-154">        k.length - 
rowLen - cfLen, rand.nextLong(), generateKeyType(rand), v, 0, v.length);</span>
-<span class="source-line-no">155</span><span id="line-155">      
sfw.append(kv);</span>
-<span class="source-line-no">156</span><span id="line-156">    }</span>
-<span class="source-line-no">157</span><span id="line-157"></span>
-<span class="source-line-no">158</span><span id="line-158">    
sfw.close();</span>
-<span class="source-line-no">159</span><span id="line-159">    return 
sfw.getPath();</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">  public static 
KeyValue.Type generateKeyType(Random rand) {</span>
-<span class="source-line-no">163</span><span id="line-163">    if 
(rand.nextBoolean()) {</span>
-<span class="source-line-no">164</span><span id="line-164">      // Let's make 
half of KVs puts.</span>
-<span class="source-line-no">165</span><span id="line-165">      return 
KeyValue.Type.Put;</span>
-<span class="source-line-no">166</span><span id="line-166">    } else {</span>
-<span class="source-line-no">167</span><span id="line-167">      KeyValue.Type 
keyType = KeyValue.Type.values()[1 + rand.nextInt(NUM_VALID_KEY_TYPES)];</span>
-<span class="source-line-no">168</span><span id="line-168">      if (keyType 
== KeyValue.Type.Minimum || keyType == KeyValue.Type.Maximum) {</span>
-<span class="source-line-no">169</span><span id="line-169">        throw new 
RuntimeException("Generated an invalid key type: " + keyType + ". "</span>
-<span class="source-line-no">170</span><span id="line-170">          + 
"Probably the layout of KeyValue.Type has changed.");</span>
-<span class="source-line-no">171</span><span id="line-171">      }</span>
-<span class="source-line-no">172</span><span id="line-172">      return 
keyType;</span>
-<span class="source-line-no">173</span><span id="line-173">    }</span>
-<span class="source-line-no">174</span><span id="line-174">  }</span>
-<span class="source-line-no">175</span><span id="line-175"></span>
-<span class="source-line-no">176</span><span id="line-176">}</span>
+<span class="source-line-no">133</span><span id="line-133">  @AfterEach</span>
+<span class="source-line-no">134</span><span id="line-134">  public void 
cleanup() {</span>
+<span class="source-line-no">135</span><span id="line-135">    
TEST_UTIL.cleanupTestDir();</span>
+<span class="source-line-no">136</span><span id="line-136">  }</span>
+<span class="source-line-no">137</span><span id="line-137"></span>
+<span class="source-line-no">138</span><span id="line-138">  public void 
readStoreFile(Path storeFilePath) throws Exception {</span>
+<span class="source-line-no">139</span><span id="line-139">    // Open the 
file</span>
+<span class="source-line-no">140</span><span id="line-140">    HFile.Reader 
reader = HFile.createReader(fs, storeFilePath, cacheConf, true, conf);</span>
+<span class="source-line-no">141</span><span id="line-141">    int retries = 
0;</span>
+<span class="source-line-no">142</span><span id="line-142">    while (</span>
+<span class="source-line-no">143</span><span id="line-143">      
!reader.prefetchComplete()</span>
+<span class="source-line-no">144</span><span id="line-144">        &amp;&amp; 
!bucketCache.fullyCachedFiles.containsKey(storeFilePath.getName()) &amp;&amp; 
retries &lt; 5</span>
+<span class="source-line-no">145</span><span id="line-145">    ) {</span>
+<span class="source-line-no">146</span><span id="line-146">      
Thread.sleep(500);</span>
+<span class="source-line-no">147</span><span id="line-147">      
retries++;</span>
+<span class="source-line-no">148</span><span id="line-148">    }</span>
+<span class="source-line-no">149</span><span id="line-149">  }</span>
+<span class="source-line-no">150</span><span id="line-150"></span>
+<span class="source-line-no">151</span><span id="line-151">  public Path 
writeStoreFile(String fname) throws IOException {</span>
+<span class="source-line-no">152</span><span id="line-152">    Path 
storeFileParentDir = new Path(TEST_UTIL.getDataTestDir(), fname);</span>
+<span class="source-line-no">153</span><span id="line-153">    HFileContext 
meta = new HFileContextBuilder().withBlockSize(DATA_BLOCK_SIZE).build();</span>
+<span class="source-line-no">154</span><span id="line-154">    StoreFileWriter 
sfw = new StoreFileWriter.Builder(conf, cacheConf, fs)</span>
+<span class="source-line-no">155</span><span id="line-155">      
.withOutputDir(storeFileParentDir).withFileContext(meta).build();</span>
+<span class="source-line-no">156</span><span id="line-156">    Random rand = 
ThreadLocalRandom.current();</span>
+<span class="source-line-no">157</span><span id="line-157">    final int 
rowLen = 32;</span>
+<span class="source-line-no">158</span><span id="line-158">    for (int i = 0; 
i &lt; NUM_KV; ++i) {</span>
+<span class="source-line-no">159</span><span id="line-159">      byte[] k = 
RandomKeyValueUtil.randomOrderedKey(rand, i);</span>
+<span class="source-line-no">160</span><span id="line-160">      byte[] v = 
RandomKeyValueUtil.randomValue(rand);</span>
+<span class="source-line-no">161</span><span id="line-161">      int cfLen = 
rand.nextInt(k.length - rowLen + 1);</span>
+<span class="source-line-no">162</span><span id="line-162">      KeyValue kv = 
new KeyValue(k, 0, rowLen, k, rowLen, cfLen, k, rowLen + cfLen,</span>
+<span class="source-line-no">163</span><span id="line-163">        k.length - 
rowLen - cfLen, rand.nextLong(), generateKeyType(rand), v, 0, v.length);</span>
+<span class="source-line-no">164</span><span id="line-164">      
sfw.append(kv);</span>
+<span class="source-line-no">165</span><span id="line-165">    }</span>
+<span class="source-line-no">166</span><span id="line-166"></span>
+<span class="source-line-no">167</span><span id="line-167">    
sfw.close();</span>
+<span class="source-line-no">168</span><span id="line-168">    return 
sfw.getPath();</span>
+<span class="source-line-no">169</span><span id="line-169">  }</span>
+<span class="source-line-no">170</span><span id="line-170"></span>
+<span class="source-line-no">171</span><span id="line-171">  public static 
KeyValue.Type generateKeyType(Random rand) {</span>
+<span class="source-line-no">172</span><span id="line-172">    if 
(rand.nextBoolean()) {</span>
+<span class="source-line-no">173</span><span id="line-173">      // Let's make 
half of KVs puts.</span>
+<span class="source-line-no">174</span><span id="line-174">      return 
KeyValue.Type.Put;</span>
+<span class="source-line-no">175</span><span id="line-175">    } else {</span>
+<span class="source-line-no">176</span><span id="line-176">      KeyValue.Type 
keyType = KeyValue.Type.values()[1 + rand.nextInt(NUM_VALID_KEY_TYPES)];</span>
+<span class="source-line-no">177</span><span id="line-177">      if (keyType 
== KeyValue.Type.Minimum || keyType == KeyValue.Type.Maximum) {</span>
+<span class="source-line-no">178</span><span id="line-178">        throw new 
RuntimeException("Generated an invalid key type: " + keyType + ". "</span>
+<span class="source-line-no">179</span><span id="line-179">          + 
"Probably the layout of KeyValue.Type has changed.");</span>
+<span class="source-line-no">180</span><span id="line-180">      }</span>
+<span class="source-line-no">181</span><span id="line-181">      return 
keyType;</span>
+<span class="source-line-no">182</span><span id="line-182">    }</span>
+<span class="source-line-no">183</span><span id="line-183">  }</span>
+<span class="source-line-no">184</span><span id="line-184"></span>
+<span class="source-line-no">185</span><span id="line-185">}</span>
 
 
 

Reply via email to