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 2026/04/18 17:14:11 UTC

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

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 f96a23453fd Published site at b5b57f7d15cfb6c562d3cf0a0ddfab8a4044e691.
f96a23453fd is described below

commit f96a23453fda9e028bb6aae1e8eadbc55fa48946
Author: HBase <de...@hbase.apache.org>
AuthorDate: Sat Apr 18 17:10:11 2026 +0000

    Published site at b5b57f7d15cfb6c562d3cf0a0ddfab8a4044e691.
---
 __spa-fallback.html                                |     6 +-
 acid-semantics/index.html                          |    10 +-
 .../hadoop/hbase/regionserver/RegionScanner.html   |   207 +-
 assets/acid-semantics-BoTYVlwm.js                  |   107 +
 assets/code-of-conduct-BvBGYarj.js                 |    16 +
 assets/docs-Bp94CzDc.js                            |     4 +
 assets/docs-layout-Cz5Eytfr.js                     |    16 +
 assets/docs-layout-DXv1WpCa.js                     |     1 +
 assets/downloads-Dx67knM3.js                       |     9 +
 assets/entry.client-_CVK9qYI.js                    |    13 +
 assets/export-control-Qb0Hicza.js                  |     7 +
 assets/landing-layout-shCKuPBh.js                  |     1 +
 assets/mailing-lists-BkeAbr30.js                   |     3 +
 assets/manifest-dee6afce.js                        |     1 +
 assets/mdx-B01kYoV3.js                             |     2 +
 assets/mdx-components-5lzU89H3.js                  |     1 +
 assets/meta-Brd_3t_h.js                            |     1 +
 assets/search-default-C2Ty3ReR.js                  |     2 +
 assets/serialization-BWi82uGp.js                   |     1 +
 assets/source-repository-DaAQ9lC3.js               |    14 +
 assets/sponsors-V9xw5KDQ.js                        |    12 +
 assets/static-A2YJ5TXV-Xr-6Tl_Z.js                 |     1 +
 assets/static-KcbJF3xh.js                          |     1 +
 books/apache-hbase-reference-guide-dark-mode.pdf   |   Bin 38886598 -> 38886593 bytes
 books/apache-hbase-reference-guide.pdf             |   Bin 38776474 -> 38776475 bytes
 checkstyle-aggregate.html                          |   475 +-
 code-of-conduct/index.html                         |    10 +-
 dependency-convergence.html                        |     2 +-
 dependency-info.html                               |     2 +-
 dependency-management.html                         |    10 +-
 .../master/balancer/StochasticLoadBalancer.html    |    28 +-
 .../hadoop/hbase/regionserver/RegionScanner.html   |    28 +-
 .../master/balancer/StochasticLoadBalancer.html    |   835 +-
 .../hadoop/hbase/regionserver/RegionScanner.html   |   207 +-
 docs.data                                          |     2 +-
 docs/acl-matrix.data                               |     2 +-
 docs/acl-matrix/index.html                         |    12 +-
 docs/amv2.data                                     |     2 +-
 docs/amv2/index.html                               |    12 +-
 docs/architecture.data                             |     2 +-
 docs/architecture/bulk-loading.data                |     2 +-
 docs/architecture/bulk-loading/index.html          |    12 +-
 docs/architecture/catalog-tables.data              |     2 +-
 docs/architecture/catalog-tables/index.html        |    12 +-
 docs/architecture/client-request-filters.data      |     2 +-
 .../architecture/client-request-filters/index.html |    12 +-
 docs/architecture/client.data                      |     2 +-
 docs/architecture/client/index.html                |    12 +-
 docs/architecture/hbase-mob.data                   |     2 +-
 docs/architecture/hbase-mob/index.html             |    12 +-
 docs/architecture/hdfs.data                        |     2 +-
 docs/architecture/hdfs/index.html                  |    12 +-
 docs/architecture/index.html                       |    12 +-
 docs/architecture/master.data                      |     2 +-
 docs/architecture/master/index.html                |    12 +-
 docs/architecture/overview.data                    |     2 +-
 docs/architecture/overview/index.html              |    12 +-
 docs/architecture/regions.data                     |     2 +-
 docs/architecture/regions/index.html               |    12 +-
 docs/architecture/regionserver.data                |     2 +-
 docs/architecture/regionserver/index.html          |    12 +-
 docs/architecture/snapshot-scanner.data            |     2 +-
 docs/architecture/snapshot-scanner/index.html      |    12 +-
 docs/architecture/timeline-consistent-reads.data   |     2 +-
 .../timeline-consistent-reads/index.html           |    12 +-
 docs/asf.data                                      |     2 +-
 docs/asf/index.html                                |    12 +-
 docs/backup-restore.data                           |     2 +-
 docs/backup-restore/additional-topics.data         |     2 +-
 docs/backup-restore/additional-topics/index.html   |    12 +-
 docs/backup-restore/administration.data            |     2 +-
 docs/backup-restore/administration/index.html      |    12 +-
 docs/backup-restore/commands.data                  |     2 +-
 docs/backup-restore/commands/index.html            |    12 +-
 docs/backup-restore/index.html                     |    12 +-
 docs/backup-restore/overview.data                  |     2 +-
 docs/backup-restore/overview/index.html            |    12 +-
 docs/building-and-developing.data                  |     2 +-
 docs/building-and-developing/announcing.data       |     2 +-
 docs/building-and-developing/announcing/index.html |    12 +-
 docs/building-and-developing/building.data         |     2 +-
 docs/building-and-developing/building/index.html   |    12 +-
 .../developer-guidelines.data                      |     2 +-
 .../developer-guidelines/index.html                |    12 +-
 .../generating-documentation.data                  |     2 +-
 .../generating-documentation/index.html            |    12 +-
 docs/building-and-developing/getting-involved.data |     2 +-
 .../getting-involved/index.html                    |    12 +-
 docs/building-and-developing/ides.data             |     2 +-
 docs/building-and-developing/ides/index.html       |    12 +-
 docs/building-and-developing/index.html            |    12 +-
 docs/building-and-developing/releasing.data        |     2 +-
 docs/building-and-developing/releasing/index.html  |    12 +-
 docs/building-and-developing/repositories.data     |     2 +-
 .../repositories/index.html                        |    12 +-
 docs/building-and-developing/tests.data            |     2 +-
 docs/building-and-developing/tests/index.html      |    12 +-
 docs/building-and-developing/updating-landing.data |     2 +-
 .../updating-landing/index.html                    |    12 +-
 docs/building-and-developing/voting.data           |     2 +-
 docs/building-and-developing/voting/index.html     |    12 +-
 docs/bulk-data-generator-tool.data                 |     2 +-
 docs/bulk-data-generator-tool/index.html           |    12 +-
 docs/case-studies.data                             |     2 +-
 docs/case-studies/index.html                       |    12 +-
 docs/community.data                                |     2 +-
 docs/community/index.html                          |    12 +-
 docs/compression.data                              |     2 +-
 docs/compression/index.html                        |    12 +-
 docs/configuration.data                            |     2 +-
 docs/configuration/basic-prerequisites.data        |     2 +-
 docs/configuration/basic-prerequisites/index.html  |    12 +-
 docs/configuration/confirm.data                    |     2 +-
 docs/configuration/confirm/index.html              |    12 +-
 docs/configuration/default.data                    |     2 +-
 docs/configuration/default/index.html              |    12 +-
 docs/configuration/dynamic.data                    |     2 +-
 docs/configuration/dynamic/index.html              |    12 +-
 docs/configuration/example.data                    |     2 +-
 docs/configuration/example/index.html              |    12 +-
 docs/configuration/hbase-run-models.data           |     2 +-
 docs/configuration/hbase-run-models/index.html     |    12 +-
 docs/configuration/important.data                  |     2 +-
 docs/configuration/important/index.html            |    12 +-
 docs/configuration/index.html                      |    12 +-
 docs/contributing-to-documentation.data            |     2 +-
 docs/contributing-to-documentation/index.html      |    12 +-
 docs/cp.data                                       |     2 +-
 docs/cp/index.html                                 |    12 +-
 docs/datamodel.data                                |     2 +-
 docs/datamodel/index.html                          |    12 +-
 docs/external-apis.data                            |     2 +-
 docs/external-apis/index.html                      |    12 +-
 docs/faq.data                                      |     2 +-
 docs/faq/index.html                                |    12 +-
 docs/getting-started.data                          |     2 +-
 docs/getting-started/index.html                    |    12 +-
 docs/hbase-apis.data                               |     2 +-
 docs/hbase-apis/index.html                         |    12 +-
 docs/hbase-history.data                            |     2 +-
 docs/hbase-history/index.html                      |    12 +-
 docs/hbase-incompatibilities.data                  |     2 +-
 docs/hbase-incompatibilities/index.html            |    12 +-
 docs/hbtop.data                                    |     2 +-
 docs/hbtop/index.html                              |    12 +-
 docs/hfile-format.data                             |     2 +-
 docs/hfile-format/index.html                       |    12 +-
 docs/index.html                                    |    12 +-
 docs/inmemory-compaction.data                      |     2 +-
 docs/inmemory-compaction/index.html                |    12 +-
 docs/mapreduce.data                                |     2 +-
 docs/mapreduce/index.html                          |    12 +-
 docs/offheap-read-write.data                       |     2 +-
 docs/offheap-read-write/index.html                 |    12 +-
 docs/operational-management.data                   |     2 +-
 .../backup-and-snapshots.data                      |     2 +-
 .../backup-and-snapshots/index.html                |    12 +-
 .../cluster-replication.data                       |     2 +-
 .../cluster-replication/index.html                 |    12 +-
 docs/operational-management/index.html             |    12 +-
 .../metrics-and-monitoring.data                    |     2 +-
 .../metrics-and-monitoring/index.html              |    12 +-
 docs/operational-management/node.data              |     2 +-
 docs/operational-management/node/index.html        |    12 +-
 .../region-and-capacity.data                       |     2 +-
 .../region-and-capacity/index.html                 |    12 +-
 ...ing-multiple-workloads-on-a-single-cluster.data |     2 +-
 .../index.html                                     |    12 +-
 docs/operational-management/table-rename.data      |     2 +-
 .../operational-management/table-rename/index.html |    12 +-
 docs/operational-management/tools.data             |     2 +-
 docs/operational-management/tools/index.html       |    12 +-
 docs/orca.data                                     |     2 +-
 docs/orca/index.html                               |    12 +-
 docs/other-info.data                               |     2 +-
 docs/other-info/index.html                         |    12 +-
 docs/performance.data                              |     2 +-
 docs/performance/index.html                        |    12 +-
 docs/profiler.data                                 |     2 +-
 docs/profiler/index.html                           |    12 +-
 docs/protobuf.data                                 |     2 +-
 docs/protobuf/index.html                           |    12 +-
 docs/pv2.data                                      |     2 +-
 docs/pv2/index.html                                |    12 +-
 docs/regionserver-sizing.data                      |     2 +-
 docs/regionserver-sizing/index.html                |    12 +-
 docs/rpc.data                                      |     2 +-
 docs/rpc/index.html                                |    12 +-
 docs/schema-design.data                            |     2 +-
 docs/schema-design/index.html                      |    12 +-
 docs/security.data                                 |     2 +-
 docs/security/client-access.data                   |     2 +-
 docs/security/client-access/index.html             |    12 +-
 docs/security/data-access.data                     |     2 +-
 docs/security/data-access/index.html               |    12 +-
 docs/security/example.data                         |     2 +-
 docs/security/example/index.html                   |    12 +-
 docs/security/hdfs-and-zookeeper-access.data       |     2 +-
 docs/security/hdfs-and-zookeeper-access/index.html |    12 +-
 docs/security/index.html                           |    12 +-
 docs/security/tls.data                             |     2 +-
 docs/security/tls/index.html                       |    12 +-
 docs/security/user-access.data                     |     2 +-
 docs/security/user-access/index.html               |    12 +-
 docs/security/web-ui.data                          |     2 +-
 docs/security/web-ui/index.html                    |    12 +-
 docs/shell.data                                    |     2 +-
 docs/shell/index.html                              |    12 +-
 docs/single-page.data                              |     2 +-
 docs/single-page/index.html                        |    10 +-
 docs/spark.data                                    |     2 +-
 docs/spark/index.html                              |    12 +-
 docs/sql.data                                      |     2 +-
 docs/sql/index.html                                |    12 +-
 docs/store-file-tracking.data                      |     2 +-
 docs/store-file-tracking/index.html                |    12 +-
 docs/sync-replication.data                         |     2 +-
 docs/sync-replication/index.html                   |    12 +-
 docs/thrift-filter-language.data                   |     2 +-
 docs/thrift-filter-language/index.html             |    12 +-
 docs/tracing.data                                  |     2 +-
 docs/tracing/index.html                            |    12 +-
 docs/troubleshooting.data                          |     2 +-
 docs/troubleshooting/index.html                    |    12 +-
 docs/unit-testing.data                             |     2 +-
 docs/unit-testing/index.html                       |    12 +-
 docs/upgrading.data                                |     2 +-
 docs/upgrading/index.html                          |    12 +-
 docs/upgrading/paths.data                          |     2 +-
 docs/upgrading/paths/index.html                    |    12 +-
 docs/upgrading/rollback.data                       |     2 +-
 docs/upgrading/rollback/index.html                 |    12 +-
 docs/upgrading/rolling.data                        |     2 +-
 docs/upgrading/rolling/index.html                  |    12 +-
 docs/upgrading/version-number.data                 |     2 +-
 docs/upgrading/version-number/index.html           |    12 +-
 docs/ycsb.data                                     |     2 +-
 docs/ycsb/index.html                               |    12 +-
 docs/zookeeper.data                                |     2 +-
 docs/zookeeper/index.html                          |    12 +-
 downloads/index.html                               |    12 +-
 export-control/index.html                          |    10 +-
 hbase-website/dependency-convergence.html          |     2 +-
 hbase-website/dependency-info.html                 |     2 +-
 hbase-website/dependency-management.html           |    10 +-
 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 +-
 index.html                                         |     8 +-
 issue-management.html                              |     2 +-
 licenses.html                                      |     2 +-
 mailing-lists.html                                 |     2 +-
 mailing-lists/index.html                           |    10 +-
 news/index.html                                    |     8 +-
 other-resources/index.html                         |     8 +-
 plugin-management.html                             |     2 +-
 plugins.html                                       |     2 +-
 powered-by-hbase/index.html                        |     8 +-
 project-info.html                                  |     2 +-
 project-reports.html                               |     2 +-
 scm.html                                           |     2 +-
 source-repository/index.html                       |    10 +-
 sponsors/index.html                                |    10 +-
 summary.html                                       |     2 +-
 team.html                                          |     2 +-
 team/index.html                                    |     8 +-
 testapidocs/allclasses-index.html                  |  6012 ++++----
 testapidocs/index-all.html                         |   400 +-
 testapidocs/member-search-index.js                 |     2 +-
 .../hadoop/hbase/class-use/HBaseClassTestRule.html |   312 +-
 .../hbase/class-use/HBaseCommonTestingUtil.html    |     3 -
 .../class-use/HBaseParameterizedTestTemplate.html  |   111 +-
 .../hadoop/hbase/class-use/HBaseTestingUtil.html   |    12 +-
 .../hadoop/hbase/class-use/TableNameTestRule.html  |    31 +-
 .../hbase/io/crypto/tls/class-use/X509KeyType.html |    55 +-
 .../tls/class-use/X509TestContextProvider.html     |     3 -
 ...leRpcServer.html => AbstractTestRpcServer.html} |    17 +-
 .../hbase/ipc/class-use/TestSimpleRpcServer.html   |    27 +-
 .../apache/hadoop/hbase/ipc/package-summary.html   |   128 +-
 .../org/apache/hadoop/hbase/ipc/package-tree.html  |    11 +-
 .../org/apache/hadoop/hbase/ipc/package-use.html   |     4 +-
 .../org/apache/hadoop/hbase/package-use.html       |    54 +-
 .../class-use/TestRSGroupsBase.MethodName.html}    |    24 +-
 .../hadoop/hbase/rsgroup/package-summary.html      |    24 +-
 .../apache/hadoop/hbase/rsgroup/package-tree.html  |     1 +
 .../apache/hadoop/hbase/rsgroup/package-use.html   |     2 +
 .../AbstractTestMutualTls.CertConfig.html          |    33 +-
 testapidocs/overview-tree.html                     |    12 +-
 .../apache/hadoop/hbase/HBaseJupiterExtension.html |     2 +-
 .../hbase/HBaseTestingUtil.SeenRowTracker.html     |  6680 ++++----
 .../org/apache/hadoop/hbase/HBaseTestingUtil.html  |  6680 ++++----
 .../org/apache/hadoop/hbase/TestZooKeeper.html     |   425 +-
 .../hbase/client/AbstractTestAsyncTableScan.html   |   677 +-
 .../apache/hadoop/hbase/client/TestConnection.html |   624 +-
 .../hadoop/hbase/ipc/AbstractTestRpcServer.html    |   154 +
 .../apache/hadoop/hbase/ipc/TestBufferChain.html   |   177 +-
 .../apache/hadoop/hbase/ipc/TestCallRunner.html    |   246 +-
 .../hadoop/hbase/ipc/TestFifoRpcScheduler.html     |   239 +-
 .../apache/hadoop/hbase/ipc/TestHBaseClient.html   |   123 +-
 .../hbase/ipc/TestMasterFifoRpcScheduler.html      |   264 +-
 .../hbase/ipc/TestMultipleServerPrincipalsIPC.html |   482 +-
 .../hbase/ipc/TestNettyChannelWritability.html     |   291 +-
 .../hbase/ipc/TestNettyIPCCloseConnection.html     |   157 +-
 .../hadoop/hbase/ipc/TestNettyRpcServer.html       |   305 +-
 .../apache/hadoop/hbase/ipc/TestProtoBufRpc.html   |   180 +-
 .../hadoop/hbase/ipc/TestRWQueueRpcExecutor.html   |   165 +-
 .../ipc/TestRpcClientLeaks.MyRpcClientImpl.html    |   199 +-
 .../hadoop/hbase/ipc/TestRpcClientLeaks.html       |   199 +-
 .../hadoop/hbase/ipc/TestRpcConnectionHeader.html  |   203 +-
 .../hadoop/hbase/ipc/TestRpcHandlerException.html  |   151 +-
 .../apache/hadoop/hbase/ipc/TestRpcMetrics.html    |   359 +-
 .../ipc/TestRpcServerSlowConnectionSetup.html      |   204 +-
 .../hbase/ipc/TestRpcServerTraceLogging.html       |   128 +-
 .../hbase/ipc/TestRpcSkipInitialSaslHandshake.html |   241 +-
 .../hadoop/hbase/ipc/TestSecureNettyRpcServer.html |   150 +-
 .../hbase/ipc/TestSecureSimpleRpcServer.html       |   148 +-
 .../hbase/ipc/TestSecurityRpcSentBytesMetrics.html |   235 +-
 .../apache/hadoop/hbase/ipc/TestServerCall.html    |   279 +-
 .../hadoop/hbase/ipc/TestSimpleRpcScheduler.html   |  1510 +-
 .../hadoop/hbase/ipc/TestSimpleRpcServer.html      |   124 +-
 .../org/apache/hadoop/hbase/mob/MobTestUtil.html   |   154 +-
 .../apache/hadoop/hbase/mob/TestCachedMobFile.html |   267 +-
 .../hbase/mob/TestDefaultMobStoreFlusher.html      |   265 +-
 .../hbase/mob/TestExpiredMobFileCleaner.html       |   322 +-
 .../hbase/mob/TestExpiredMobFileCleanerChore.html  |   430 +-
 .../hadoop/hbase/mob/TestMobCompactionOptMode.html |    62 +-
 .../mob/TestMobCompactionOptRegionBatchMode.html   |   111 +-
 .../TestMobCompactionRegularRegionBatchMode.html   |   107 +-
 .../hbase/mob/TestMobCompactionWithDefaults.html   |   575 +-
 ...ompactionWithException.MyMobStoreCompactor.html |   438 +-
 .../hbase/mob/TestMobCompactionWithException.html  |   438 +-
 .../hadoop/hbase/mob/TestMobDataBlockEncoding.html |   194 +-
 .../org/apache/hadoop/hbase/mob/TestMobFile.html   |   193 +-
 .../apache/hadoop/hbase/mob/TestMobFileCache.html  |   344 +-
 .../hadoop/hbase/mob/TestMobFileCleanupUtil.html   |   411 +-
 .../apache/hadoop/hbase/mob/TestMobFileLink.html   |   105 +-
 .../apache/hadoop/hbase/mob/TestMobFileName.html   |   116 +-
 .../hadoop/hbase/mob/TestMobStoreCompaction.html   |   832 +-
 .../hadoop/hbase/mob/TestMobStoreScanner.html      |   890 +-
 .../org/apache/hadoop/hbase/mob/TestMobUtils.html  |   143 +-
 .../hbase/mob/TestMobWithByteBuffAllocator.html    |   164 +-
 .../hbase/mob/TestRSMobFileCleanerChore.html       |   577 +-
 .../TestNamespaceAuditor.CPMasterObserver.html     |  1333 +-
 ...estNamespaceAuditor.CPRegionServerObserver.html |  1333 +-
 .../TestNamespaceAuditor.CustomObserver.html       |  1333 +-
 .../TestNamespaceAuditor.MasterSyncObserver.html   |  1333 +-
 .../hbase/namespace/TestNamespaceAuditor.html      |  1333 +-
 .../hbase/quotas/TestBlockBytesScannedQuota.html   |     2 +-
 .../regionserver/TestHRegion.FlushThread.html      | 15237 ++++++++++---------
 .../TestHRegion.HRegionForTesting.html             | 15237 ++++++++++---------
 .../regionserver/TestHRegion.HStoreForTesting.html | 15237 ++++++++++---------
 .../TestHRegion.NoOpRegionCoprocessor.html         | 15237 ++++++++++---------
 .../hbase/regionserver/TestHRegion.PutThread.html  | 15237 ++++++++++---------
 .../hadoop/hbase/regionserver/TestHRegion.html     | 15237 ++++++++++---------
 ...estReplicationBase.ReplicationEndpointTest.html |   490 +-
 .../hbase/replication/TestReplicationBase.html     |   490 +-
 .../hbase/rsgroup/EnableRSGroupsTestBase.html      |    12 +-
 .../hadoop/hbase/rsgroup/TestEnableRSGroups.html   |    31 +-
 .../rsgroup/TestEnableRSGroupsCompatibility.html   |    45 +-
 .../TestMigrateRSGroupInfo.HMasterForTest.html     |   312 +-
 .../hbase/rsgroup/TestMigrateRSGroupInfo.html      |   312 +-
 .../hadoop/hbase/rsgroup/TestRSGroupConfig.html    |   123 +-
 .../hbase/rsgroup/TestRSGroupMappingScript.html    |   196 +-
 .../hadoop/hbase/rsgroup/TestRSGroupsAdmin1.html   |  1160 +-
 .../hadoop/hbase/rsgroup/TestRSGroupsAdmin2.html   |  1372 +-
 .../hadoop/hbase/rsgroup/TestRSGroupsBalance.html  |   404 +-
 .../rsgroup/TestRSGroupsBase.CPMasterObserver.html |  1015 +-
 ...erver.html => TestRSGroupsBase.MethodName.html} |  1017 +-
 .../hadoop/hbase/rsgroup/TestRSGroupsBase.html     |  1015 +-
 .../hadoop/hbase/rsgroup/TestRSGroupsBasics.html   |   451 +-
 .../hbase/rsgroup/TestRSGroupsCPHookCalled.html    |   134 +-
 .../hadoop/hbase/rsgroup/TestRSGroupsFallback.html |   220 +-
 .../hadoop/hbase/rsgroup/TestRSGroupsKillRS.html   |   520 +-
 .../hbase/rsgroup/TestRSGroupsOfflineMode.html     |   328 +-
 .../hadoop/hbase/rsgroup/TestRSGroupsWithACL.html  |   639 +-
 .../rsgroup/TestUpdateRSGroupConfiguration.html    |   157 +-
 .../hbase/rsgroup/VerifyingRSGroupAdmin.html       |     4 +-
 .../security/AbstractTestMutualTls.CertConfig.html |   328 +-
 .../hbase/security/AbstractTestMutualTls.html      |   328 +-
 .../security/AbstractTestSecureIPC.TestThread.html |    12 +-
 .../hbase/security/AbstractTestSecureIPC.html      |    12 +-
 .../security/AbstractTestTlsRejectPlainText.html   |   248 +-
 ...stMultipleServerPrincipalsFallbackToSimple.html |   307 +-
 .../hbase/security/TestMutualTlsClientSide.html    |    94 +-
 .../TestMutualTlsClientSideNonLocalhost.html       |   259 +-
 .../hbase/security/TestMutualTlsServerSide.html    |   186 +-
 .../hbase/security/TestNettyIPCSslFailure.html     |   119 +-
 .../hbase/security/TestNettyTLSIPCFileWatcher.html |   464 +-
 .../security/TestNettyTlsIPCRejectPlainText.html   |    42 +-
 .../security/TestSaslTlsIPCRejectPlainText.html    |    60 +-
 ...estSecurityInfoAndHBasePolicyProviderMatch.html |   103 +-
 .../org/apache/hadoop/hbase/security/TestUser.html |    88 +-
 .../TestUsersOperationsWithSecureHadoop.html       |   303 +-
 testapidocs/type-search-index.js                   |     2 +-
 testdevapidocs/allclasses-index.html               |  9168 +++++------
 testdevapidocs/constant-values.html                |   110 +-
 testdevapidocs/index-all.html                      |   986 +-
 testdevapidocs/member-search-index.js              |     2 +-
 ...TestingUtil.FsDatasetAsyncDiskServiceFixer.html |    12 +-
 .../hbase/HBaseTestingUtil.SeenRowTracker.html     |    20 +-
 .../org/apache/hadoop/hbase/HBaseTestingUtil.html  |   452 +-
 .../hbase/TestZooKeeper.MockLoadBalancer.html      |     8 +-
 .../org/apache/hadoop/hbase/TestZooKeeper.html     |    22 +-
 .../hadoop/hbase/class-use/HBaseClassTestRule.html |   500 +-
 .../hbase/class-use/HBaseCommonTestingUtil.html    |     2 +-
 .../class-use/HBaseParameterizedTestTemplate.html  |   153 +-
 .../hadoop/hbase/class-use/HBaseTestingUtil.html   |    69 +-
 .../hbase/class-use/TableNameTestExtension.html    |    57 +
 .../hadoop/hbase/class-use/TableNameTestRule.html  |    75 +-
 .../client/AbstractTestAsyncTableScan.Setup.html   |     6 +-
 .../hbase/client/AbstractTestAsyncTableScan.html   |   207 +-
 .../apache/hadoop/hbase/client/TestConnection.html |    24 +-
 .../hbase/io/crypto/tls/class-use/X509KeyType.html |    54 +-
 .../tls/class-use/X509TestContextProvider.html     |     2 +-
 .../hfile/bucket/TestPrefetchWithBucketCache.html  |    62 +-
 ...leRpcServer.html => AbstractTestRpcServer.html} |   125 +-
 .../apache/hadoop/hbase/ipc/TestBufferChain.html   |    46 +-
 .../apache/hadoop/hbase/ipc/TestCallRunner.html    |    62 +-
 .../hadoop/hbase/ipc/TestFifoRpcScheduler.html     |    44 +-
 .../apache/hadoop/hbase/ipc/TestHBaseClient.html   |    41 +-
 ...ifoRpcScheduler.MockMasterFifoRpcScheduler.html |     6 +-
 .../hbase/ipc/TestMasterFifoRpcScheduler.html      |    44 +-
 .../hbase/ipc/TestMultipleServerPrincipalsIPC.html |   145 +-
 .../hbase/ipc/TestNettyChannelWritability.html     |    36 +-
 .../hbase/ipc/TestNettyIPCCloseConnection.html     |    53 +-
 .../hadoop/hbase/ipc/TestNettyRpcServer.html       |   102 +-
 .../apache/hadoop/hbase/ipc/TestProtoBufRpc.html   |    63 +-
 .../hadoop/hbase/ipc/TestRWQueueRpcExecutor.html   |    46 +-
 .../ipc/TestRpcClientLeaks.MyRpcClientImpl.html    |    12 +-
 .../hadoop/hbase/ipc/TestRpcClientLeaks.html       |    77 +-
 .../TestRpcConnectionHeader.MyRpcConnection.html   |    14 +-
 .../hadoop/hbase/ipc/TestRpcConnectionHeader.html  |    38 +-
 .../ipc/TestRpcHandlerException.AbortServer.html   |    10 +-
 .../hadoop/hbase/ipc/TestRpcHandlerException.html  |    37 +-
 .../hbase/ipc/TestRpcMetrics.FakeException.html    |     4 +-
 .../apache/hadoop/hbase/ipc/TestRpcMetrics.html    |    32 +-
 .../ipc/TestRpcServerSlowConnectionSetup.html      |    55 +-
 .../hbase/ipc/TestRpcServerTraceLogging.html       |    56 +-
 .../hbase/ipc/TestRpcSkipInitialSaslHandshake.html |    90 +-
 .../hadoop/hbase/ipc/TestSecureNettyRpcServer.html |    83 +-
 .../hbase/ipc/TestSecureSimpleRpcServer.html       |    70 +-
 .../hbase/ipc/TestSecurityRpcSentBytesMetrics.html |    90 +-
 .../apache/hadoop/hbase/ipc/TestServerCall.html    |    86 +-
 ...estSimpleRpcScheduler.CoDelEnvironmentEdge.html |    12 +-
 .../hadoop/hbase/ipc/TestSimpleRpcScheduler.html   |   111 +-
 .../hadoop/hbase/ipc/TestSimpleRpcServer.html      |   177 +-
 ...leRpcServer.html => AbstractTestRpcServer.html} |    17 +-
 .../hbase/ipc/class-use/TestSimpleRpcServer.html   |    27 +-
 .../apache/hadoop/hbase/ipc/package-summary.html   |   146 +-
 .../org/apache/hadoop/hbase/ipc/package-tree.html  |    11 +-
 .../org/apache/hadoop/hbase/ipc/package-use.html   |     8 +-
 .../hbase/master/assignment/TestRollbackSCP.html   |     6 +-
 .../org/apache/hadoop/hbase/mob/MobTestUtil.html   |    16 +-
 .../apache/hadoop/hbase/mob/TestCachedMobFile.html |    88 +-
 .../hbase/mob/TestDefaultMobStoreFlusher.html      |    86 +-
 .../hbase/mob/TestExpiredMobFileCleaner.html       |    89 +-
 .../hbase/mob/TestExpiredMobFileCleanerChore.html  |    99 +-
 .../hadoop/hbase/mob/TestMobCompactionOptMode.html |    38 +-
 .../mob/TestMobCompactionOptRegionBatchMode.html   |    47 +-
 .../TestMobCompactionRegularRegionBatchMode.html   |    47 +-
 .../hbase/mob/TestMobCompactionWithDefaults.html   |   217 +-
 ...ompactionWithException.MyMobStoreCompactor.html |     8 +-
 .../hbase/mob/TestMobCompactionWithException.html  |   117 +-
 .../hadoop/hbase/mob/TestMobDataBlockEncoding.html |    87 +-
 .../org/apache/hadoop/hbase/mob/TestMobFile.html   |    51 +-
 .../apache/hadoop/hbase/mob/TestMobFileCache.html  |   141 +-
 .../hadoop/hbase/mob/TestMobFileCleanupUtil.html   |   103 +-
 .../apache/hadoop/hbase/mob/TestMobFileLink.html   |    54 +-
 .../apache/hadoop/hbase/mob/TestMobFileName.html   |    57 +-
 .../hadoop/hbase/mob/TestMobStoreCompaction.html   |   182 +-
 .../hadoop/hbase/mob/TestMobStoreScanner.html      |   180 +-
 .../org/apache/hadoop/hbase/mob/TestMobUtils.html  |    46 +-
 .../hbase/mob/TestMobWithByteBuffAllocator.html    |    51 +-
 .../hbase/mob/TestRSMobFileCleanerChore.html       |   108 +-
 .../TestNamespaceAuditor.CPMasterObserver.html     |    12 +-
 ...estNamespaceAuditor.CPRegionServerObserver.html |    14 +-
 .../TestNamespaceAuditor.CustomObserver.html       |    12 +-
 .../TestNamespaceAuditor.MasterSyncObserver.html   |    16 +-
 .../hbase/namespace/TestNamespaceAuditor.html      |    86 +-
 .../org/apache/hadoop/hbase/package-use.html       |   106 +-
 .../hbase/regionserver/TestHRegion.Appender.html   |    18 +-
 .../regionserver/TestHRegion.FlushThread.html      |    16 +-
 .../TestHRegion.GetTillDoneOrException.html        |    14 +-
 .../TestHRegion.HRegionForTesting.html             |     8 +-
 .../regionserver/TestHRegion.HRegionWithSeqId.html |     6 +-
 .../regionserver/TestHRegion.HStoreForTesting.html |     6 +-
 .../regionserver/TestHRegion.Incrementer.html      |    18 +-
 .../regionserver/TestHRegion.IsFlushWALMarker.html |    10 +-
 .../TestHRegion.NoOpRegionCoprocessor.html         |     4 +-
 .../hbase/regionserver/TestHRegion.PutThread.html  |    24 +-
 .../hadoop/hbase/regionserver/TestHRegion.html     |   332 +-
 ...estReplicationBase.ReplicationEndpointTest.html |     6 +-
 .../hbase/replication/TestReplicationBase.html     |    38 +-
 .../hbase/rsgroup/EnableRSGroupsTestBase.html      |     9 +-
 .../hadoop/hbase/rsgroup/TestEnableRSGroups.html   |    40 +-
 .../rsgroup/TestEnableRSGroupsCompatibility.html   |    40 +-
 .../TestMigrateRSGroupInfo.HMasterForTest.html     |     6 +-
 .../hbase/rsgroup/TestMigrateRSGroupInfo.html      |    59 +-
 .../hadoop/hbase/rsgroup/TestRSGroupConfig.html    |    53 +-
 .../hbase/rsgroup/TestRSGroupMappingScript.html    |    44 +-
 .../hadoop/hbase/rsgroup/TestRSGroupsAdmin1.html   |    80 +-
 .../hadoop/hbase/rsgroup/TestRSGroupsAdmin2.html   |    76 +-
 .../hadoop/hbase/rsgroup/TestRSGroupsBalance.html  |    52 +-
 .../rsgroup/TestRSGroupsBase.CPMasterObserver.html |   132 +-
 .../TestRSGroupsBase.MethodName.html}              |    73 +-
 .../hadoop/hbase/rsgroup/TestRSGroupsBase.html     |    75 +-
 .../hadoop/hbase/rsgroup/TestRSGroupsBasics.html   |    67 +-
 .../hbase/rsgroup/TestRSGroupsCPHookCalled.html    |    60 +-
 .../hadoop/hbase/rsgroup/TestRSGroupsFallback.html |    51 +-
 .../hadoop/hbase/rsgroup/TestRSGroupsKillRS.html   |    49 +-
 .../hbase/rsgroup/TestRSGroupsOfflineMode.html     |    70 +-
 .../hadoop/hbase/rsgroup/TestRSGroupsWithACL.html  |   185 +-
 .../rsgroup/TestUpdateRSGroupConfiguration.html    |    56 +-
 .../class-use/TestRSGroupsBase.MethodName.html}    |    24 +-
 .../hadoop/hbase/rsgroup/package-summary.html      |    24 +-
 .../apache/hadoop/hbase/rsgroup/package-tree.html  |     1 +
 .../apache/hadoop/hbase/rsgroup/package-use.html   |     2 +
 .../security/AbstractTestMutualTls.CertConfig.html |    16 +-
 .../hbase/security/AbstractTestMutualTls.html      |    69 +-
 .../security/AbstractTestTlsRejectPlainText.html   |    71 +-
 ...stMultipleServerPrincipalsFallbackToSimple.html |   119 +-
 .../hbase/security/TestMutualTlsClientSide.html    |    64 +-
 .../TestMutualTlsClientSideNonLocalhost.html       |   101 +-
 .../hbase/security/TestMutualTlsServerSide.html    |    58 +-
 .../hbase/security/TestNettyIPCSslFailure.html     |    51 +-
 .../hbase/security/TestNettyTLSIPCFileWatcher.html |   106 +-
 .../security/TestNettyTlsIPCRejectPlainText.html   |    46 +-
 .../security/TestSaslTlsIPCRejectPlainText.html    |    60 +-
 ...estSecurityInfoAndHBasePolicyProviderMatch.html |    31 +-
 .../org/apache/hadoop/hbase/security/TestUser.html |    42 +-
 .../TestUsersOperationsWithSecureHadoop.html       |    70 +-
 .../security/access/TestAccessControlFilter.html   |    69 +-
 ...tAccessController.BulkLoadAccessTestAction.html |    10 +-
 .../TestAccessController.BulkLoadHelper.html       |    18 +-
 ...ssController.MyShellBasedUnixGroupsMapping.html |     6 +-
 .../TestAccessController.PingCoprocessor.html      |    20 +-
 ...TestAccessController.TestTableDDLProcedure.html |    22 +-
 .../security/access/TestAccessController.html      |   434 +-
 .../TestAccessController2.MyAccessController.html  |     4 +-
 .../security/access/TestAccessController2.html     |   183 +-
 ...stAccessController3.FaultyAccessController.html |     6 +-
 .../security/access/TestAccessController3.html     |   116 +-
 .../access/TestCellACLWithMultipleVersions.html    |   161 +-
 .../hadoop/hbase/security/access/TestCellACLs.html |   127 +-
 ...WhitelistMasterObserver.TestRegionObserver.html |     6 +-
 .../TestCoprocessorWhitelistMasterObserver.html    |    72 +-
 .../security/access/TestNamespaceCommands.html     |   185 +-
 .../security/access/TestPermissionBuilder.html     |    47 +-
 .../access/TestRpcAccessChecks.Action.html         |     4 +-
 .../access/TestRpcAccessChecks.DummyCpService.html |     6 +-
 .../hbase/security/access/TestRpcAccessChecks.html |   118 +-
 .../security/access/TestScanEarlyTermination.html  |    91 +-
 .../TestSnapshotScannerHDFSAclController.html      |   241 +-
 .../TestSnapshotScannerHDFSAclController2.html     |    68 +-
 .../security/access/TestTablePermissions.html      |    81 +-
 .../access/TestUnloadAccessController.html         |    54 +-
 .../access/TestWithDisabledAuthorization.html      |   155 +-
 .../security/access/TestZKPermissionWatcher.html   |    66 +-
 .../AbstractTestMutualTls.CertConfig.html          |    33 +-
 ...ider.InMemoryClientProviderCallbackHandler.html |     8 +-
 ...ionProviderTestBase.InMemoryClientProvider.html |    16 +-
 ...nProviderTestBase.InMemoryProviderSelector.html |    10 +-
 ...ider.InMemoryServerProviderCallbackHandler.html |     6 +-
 ...ionProviderTestBase.InMemoryServerProvider.html |    10 +-
 ...oviderTestBase.PasswordAuthTokenIdentifier.html |    18 +-
 .../CustomSaslAuthenticationProviderTestBase.html  |    70 +-
 ...omSaslAuthenticationProviderNettyRpcServer.html |    48 +-
 ...mSaslAuthenticationProviderSimpleRpcServer.html |    48 +-
 .../hbase/security/token/SecureTestCluster.html    |    43 +-
 .../security/token/TestAuthenticationKey.html      |    41 +-
 .../token/TestDelegationTokenWithEncryption.html   |    93 +-
 .../security/token/TestFsDelegationToken.html      |    69 +-
 .../token/TestGenerateDelegationToken.html         |    44 +-
 .../token/TestTokenAuthentication.TokenServer.html |   166 +-
 .../security/token/TestTokenAuthentication.html    |    70 +-
 ...er.AuthenticationTokenSecretManagerForTest.html |    10 +-
 .../token/TestZKSecretWatcher.MockAbortable.html   |    10 +-
 .../hbase/security/token/TestZKSecretWatcher.html  |    59 +-
 ...stZKSecretWatcherRefreshKeys.MockAbortable.html |    10 +-
 .../token/TestZKSecretWatcherRefreshKeys.html      |    37 +-
 .../TestDefaultScanLabelGeneratorStack.html        |    92 +-
 .../TestEnforcingScanLabelGenerator.html           |    86 +-
 .../visibility/TestExpressionExpander.html         |    41 +-
 .../security/visibility/TestExpressionParser.html  |    34 +-
 ...tVisibilityLabelReplicationWithExpAsString.html |    63 +-
 ...tVisibilityLabelsOnNewVersionBehaviorTable.html |    44 +-
 ...tVisibilityLabelsOpWithDifferentUsersNoACL.html |    74 +-
 .../TestVisibilityLabelsReplication.SimpleCP.html  |     8 +-
 ...lsReplication.TestCoprocessorForTagsAtSink.html |    10 +-
 ...ation.VisibilityReplicationEndPointForTest.html |    10 +-
 .../TestVisibilityLabelsReplication.html           |   215 +-
 .../visibility/TestVisibilityLabelsWithACL.html    |   124 +-
 ...estVisibilityLabelsWithCustomVisLabService.html |    54 +-
 ...VisibilityLabelsWithDefaultVisLabelService.html |    69 +-
 ...TestVisibilityLabelsWithDeletes.DeleteMark.html |    18 +-
 .../TestVisibilityLabelsWithDeletes.html           |   396 +-
 .../TestVisibilityLabelsWithSLGStack.html          |    82 +-
 .../visibility/TestVisibilityLablesWithGroups.html |    90 +-
 .../visibility/TestVisibilityWithCheckAuths.html   |    88 +-
 .../visibility/TestWithDisabledAuthorization.html  |    81 +-
 ...tyLabels.html => VisibilityLabelsTestBase.html} |   229 +-
 .../VisibilityLabelsWithDeletesTestBase.html       |    83 +-
 ...tyLabels.html => VisibilityLabelsTestBase.html} |    14 +-
 .../hbase/security/visibility/package-summary.html |    52 +-
 .../hbase/security/visibility/package-tree.html    |    12 +-
 .../hbase/security/visibility/package-use.html     |    10 +-
 testdevapidocs/overview-tree.html                  |    24 +-
 .../apache/hadoop/hbase/HBaseJupiterExtension.html |     2 +-
 ...TestingUtil.FsDatasetAsyncDiskServiceFixer.html |  6680 ++++----
 .../hbase/HBaseTestingUtil.SeenRowTracker.html     |  6680 ++++----
 .../org/apache/hadoop/hbase/HBaseTestingUtil.html  |  6680 ++++----
 .../hbase/TestZooKeeper.MockLoadBalancer.html      |   425 +-
 .../org/apache/hadoop/hbase/TestZooKeeper.html     |   425 +-
 .../client/AbstractTestAsyncTableScan.Setup.html   |   677 +-
 .../hbase/client/AbstractTestAsyncTableScan.html   |   677 +-
 .../apache/hadoop/hbase/client/TestConnection.html |   624 +-
 .../hfile/bucket/TestPrefetchWithBucketCache.html  |  1138 +-
 .../hadoop/hbase/ipc/AbstractTestRpcServer.html    |   154 +
 .../apache/hadoop/hbase/ipc/TestBufferChain.html   |   177 +-
 .../apache/hadoop/hbase/ipc/TestCallRunner.html    |   246 +-
 .../hadoop/hbase/ipc/TestFifoRpcScheduler.html     |   239 +-
 .../apache/hadoop/hbase/ipc/TestHBaseClient.html   |   123 +-
 ...ifoRpcScheduler.MockMasterFifoRpcScheduler.html |   264 +-
 .../hbase/ipc/TestMasterFifoRpcScheduler.html      |   264 +-
 .../hbase/ipc/TestMultipleServerPrincipalsIPC.html |   482 +-
 .../hbase/ipc/TestNettyChannelWritability.html     |   291 +-
 .../hbase/ipc/TestNettyIPCCloseConnection.html     |   157 +-
 .../hadoop/hbase/ipc/TestNettyRpcServer.html       |   305 +-
 .../apache/hadoop/hbase/ipc/TestProtoBufRpc.html   |   180 +-
 .../hadoop/hbase/ipc/TestRWQueueRpcExecutor.html   |   165 +-
 .../ipc/TestRpcClientLeaks.MyRpcClientImpl.html    |   199 +-
 .../hadoop/hbase/ipc/TestRpcClientLeaks.html       |   199 +-
 .../TestRpcConnectionHeader.MyRpcConnection.html   |   203 +-
 .../hadoop/hbase/ipc/TestRpcConnectionHeader.html  |   203 +-
 .../ipc/TestRpcHandlerException.AbortServer.html   |   151 +-
 .../hadoop/hbase/ipc/TestRpcHandlerException.html  |   151 +-
 .../hbase/ipc/TestRpcMetrics.FakeException.html    |   359 +-
 .../apache/hadoop/hbase/ipc/TestRpcMetrics.html    |   359 +-
 .../ipc/TestRpcServerSlowConnectionSetup.html      |   204 +-
 .../hbase/ipc/TestRpcServerTraceLogging.html       |   128 +-
 .../hbase/ipc/TestRpcSkipInitialSaslHandshake.html |   241 +-
 .../hadoop/hbase/ipc/TestSecureNettyRpcServer.html |   150 +-
 .../hbase/ipc/TestSecureSimpleRpcServer.html       |   148 +-
 .../hbase/ipc/TestSecurityRpcSentBytesMetrics.html |   235 +-
 .../apache/hadoop/hbase/ipc/TestServerCall.html    |   279 +-
 ...estSimpleRpcScheduler.CoDelEnvironmentEdge.html |  1510 +-
 .../hadoop/hbase/ipc/TestSimpleRpcScheduler.html   |  1510 +-
 .../hadoop/hbase/ipc/TestSimpleRpcServer.html      |   124 +-
 .../TestRollbackSCP.AssignmentManagerForTest.html  |    99 +-
 .../assignment/TestRollbackSCP.HMasterForTest.html |    99 +-
 .../hbase/master/assignment/TestRollbackSCP.html   |    99 +-
 .../org/apache/hadoop/hbase/mob/MobTestUtil.html   |   154 +-
 .../apache/hadoop/hbase/mob/TestCachedMobFile.html |   267 +-
 .../hbase/mob/TestDefaultMobStoreFlusher.html      |   265 +-
 .../hbase/mob/TestExpiredMobFileCleaner.html       |   322 +-
 .../hbase/mob/TestExpiredMobFileCleanerChore.html  |   430 +-
 .../hadoop/hbase/mob/TestMobCompactionOptMode.html |    62 +-
 .../mob/TestMobCompactionOptRegionBatchMode.html   |   111 +-
 .../TestMobCompactionRegularRegionBatchMode.html   |   107 +-
 .../hbase/mob/TestMobCompactionWithDefaults.html   |   575 +-
 ...ompactionWithException.MyMobStoreCompactor.html |   438 +-
 .../hbase/mob/TestMobCompactionWithException.html  |   438 +-
 .../hadoop/hbase/mob/TestMobDataBlockEncoding.html |   194 +-
 .../org/apache/hadoop/hbase/mob/TestMobFile.html   |   193 +-
 .../apache/hadoop/hbase/mob/TestMobFileCache.html  |   344 +-
 .../hadoop/hbase/mob/TestMobFileCleanupUtil.html   |   411 +-
 .../apache/hadoop/hbase/mob/TestMobFileLink.html   |   105 +-
 .../apache/hadoop/hbase/mob/TestMobFileName.html   |   116 +-
 .../hadoop/hbase/mob/TestMobStoreCompaction.html   |   832 +-
 .../hadoop/hbase/mob/TestMobStoreScanner.html      |   890 +-
 .../org/apache/hadoop/hbase/mob/TestMobUtils.html  |   143 +-
 .../hbase/mob/TestMobWithByteBuffAllocator.html    |   164 +-
 .../hbase/mob/TestRSMobFileCleanerChore.html       |   577 +-
 .../TestNamespaceAuditor.CPMasterObserver.html     |  1333 +-
 ...estNamespaceAuditor.CPRegionServerObserver.html |  1333 +-
 .../TestNamespaceAuditor.CustomObserver.html       |  1333 +-
 .../TestNamespaceAuditor.MasterSyncObserver.html   |  1333 +-
 .../hbase/namespace/TestNamespaceAuditor.html      |  1333 +-
 .../hbase/quotas/TestBlockBytesScannedQuota.html   |     2 +-
 .../hbase/regionserver/TestHRegion.Appender.html   | 15237 ++++++++++---------
 .../regionserver/TestHRegion.FlushThread.html      | 15237 ++++++++++---------
 .../TestHRegion.GetTillDoneOrException.html        | 15237 ++++++++++---------
 .../TestHRegion.HRegionForTesting.html             | 15237 ++++++++++---------
 .../regionserver/TestHRegion.HRegionWithSeqId.html | 15237 ++++++++++---------
 .../regionserver/TestHRegion.HStoreForTesting.html | 15237 ++++++++++---------
 .../regionserver/TestHRegion.Incrementer.html      | 15237 ++++++++++---------
 .../regionserver/TestHRegion.IsFlushWALMarker.html | 15237 ++++++++++---------
 .../TestHRegion.NoOpRegionCoprocessor.html         | 15237 ++++++++++---------
 .../hbase/regionserver/TestHRegion.PutThread.html  | 15237 ++++++++++---------
 .../hadoop/hbase/regionserver/TestHRegion.html     | 15237 ++++++++++---------
 ...estReplicationBase.ReplicationEndpointTest.html |   490 +-
 .../hbase/replication/TestReplicationBase.html     |   490 +-
 .../hbase/rsgroup/EnableRSGroupsTestBase.html      |    12 +-
 .../hadoop/hbase/rsgroup/TestEnableRSGroups.html   |    31 +-
 .../rsgroup/TestEnableRSGroupsCompatibility.html   |    45 +-
 .../TestMigrateRSGroupInfo.HMasterForTest.html     |   312 +-
 .../hbase/rsgroup/TestMigrateRSGroupInfo.html      |   312 +-
 .../hadoop/hbase/rsgroup/TestRSGroupConfig.html    |   123 +-
 .../hbase/rsgroup/TestRSGroupMappingScript.html    |   196 +-
 .../hadoop/hbase/rsgroup/TestRSGroupsAdmin1.html   |  1160 +-
 .../hadoop/hbase/rsgroup/TestRSGroupsAdmin2.html   |  1372 +-
 .../hadoop/hbase/rsgroup/TestRSGroupsBalance.html  |   404 +-
 .../rsgroup/TestRSGroupsBase.CPMasterObserver.html |  1015 +-
 .../hbase/rsgroup/TestRSGroupsBase.MethodName.html |  1017 +-
 .../hadoop/hbase/rsgroup/TestRSGroupsBase.html     |  1015 +-
 .../hadoop/hbase/rsgroup/TestRSGroupsBasics.html   |   451 +-
 .../hbase/rsgroup/TestRSGroupsCPHookCalled.html    |   134 +-
 .../hadoop/hbase/rsgroup/TestRSGroupsFallback.html |   220 +-
 .../hadoop/hbase/rsgroup/TestRSGroupsKillRS.html   |   520 +-
 .../hbase/rsgroup/TestRSGroupsOfflineMode.html     |   328 +-
 .../hadoop/hbase/rsgroup/TestRSGroupsWithACL.html  |   639 +-
 .../rsgroup/TestUpdateRSGroupConfiguration.html    |   157 +-
 .../hbase/rsgroup/VerifyingRSGroupAdmin.html       |     4 +-
 .../security/AbstractTestMutualTls.CertConfig.html |   328 +-
 .../hbase/security/AbstractTestMutualTls.html      |   328 +-
 .../security/AbstractTestSecureIPC.TestThread.html |    12 +-
 .../hbase/security/AbstractTestSecureIPC.html      |    12 +-
 .../security/AbstractTestTlsRejectPlainText.html   |   248 +-
 ...stMultipleServerPrincipalsFallbackToSimple.html |   307 +-
 .../hbase/security/TestMutualTlsClientSide.html    |    94 +-
 .../TestMutualTlsClientSideNonLocalhost.html       |   259 +-
 .../hbase/security/TestMutualTlsServerSide.html    |   186 +-
 .../hbase/security/TestNettyIPCSslFailure.html     |   119 +-
 .../hbase/security/TestNettyTLSIPCFileWatcher.html |   464 +-
 .../security/TestNettyTlsIPCRejectPlainText.html   |    42 +-
 .../security/TestSaslTlsIPCRejectPlainText.html    |    60 +-
 ...estSecurityInfoAndHBasePolicyProviderMatch.html |   103 +-
 .../org/apache/hadoop/hbase/security/TestUser.html |    88 +-
 .../TestUsersOperationsWithSecureHadoop.html       |   303 +-
 .../access/SecureTestUtil.AccessTestAction.html    |     4 +-
 .../access/SecureTestUtil.MasterSyncObserver.html  |     4 +-
 .../hbase/security/access/SecureTestUtil.html      |     4 +-
 .../security/access/TestAccessControlFilter.html   |   351 +-
 ...tAccessController.BulkLoadAccessTestAction.html |  7367 +++++----
 .../TestAccessController.BulkLoadHelper.html       |  7367 +++++----
 ...ssController.MyShellBasedUnixGroupsMapping.html |  7367 +++++----
 .../TestAccessController.PingCoprocessor.html      |  7367 +++++----
 ...TestAccessController.TestTableDDLProcedure.html |  7367 +++++----
 .../security/access/TestAccessController.html      |  7367 +++++----
 .../TestAccessController2.MyAccessController.html  |  1014 +-
 .../security/access/TestAccessController2.html     |  1014 +-
 ...stAccessController3.FaultyAccessController.html |   515 +-
 .../security/access/TestAccessController3.html     |   515 +-
 .../access/TestCellACLWithMultipleVersions.html    |  1841 ++-
 .../hadoop/hbase/security/access/TestCellACLs.html |   843 +-
 ...WhitelistMasterObserver.TestRegionObserver.html |   561 +-
 .../TestCoprocessorWhitelistMasterObserver.html    |   561 +-
 .../hbase/security/access/TestHDFSAclHelper.html   |     2 +-
 .../security/access/TestNamespaceCommands.html     |   989 +-
 .../security/access/TestPermissionBuilder.html     |   217 +-
 .../access/TestRpcAccessChecks.Action.html         |   779 +-
 .../access/TestRpcAccessChecks.DummyCpService.html |   779 +-
 .../hbase/security/access/TestRpcAccessChecks.html |   779 +-
 .../security/access/TestScanEarlyTermination.html  |   511 +-
 .../TestSnapshotScannerHDFSAclController.html      |  1747 +--
 .../TestSnapshotScannerHDFSAclController2.html     |   303 +-
 .../security/access/TestTablePermissions.html      |   855 +-
 .../access/TestUnloadAccessController.html         |   173 +-
 .../access/TestWithDisabledAuthorization.html      |  1885 ++-
 .../security/access/TestZKPermissionWatcher.html   |   345 +-
 ...ider.InMemoryClientProviderCallbackHandler.html |  1071 +-
 ...ionProviderTestBase.InMemoryClientProvider.html |  1071 +-
 ...nProviderTestBase.InMemoryProviderSelector.html |  1071 +-
 ...ider.InMemoryServerProviderCallbackHandler.html |  1071 +-
 ...ionProviderTestBase.InMemoryServerProvider.html |  1071 +-
 ...oviderTestBase.PasswordAuthTokenIdentifier.html |  1071 +-
 .../CustomSaslAuthenticationProviderTestBase.html  |  1071 +-
 ...omSaslAuthenticationProviderNettyRpcServer.html |    40 +-
 ...mSaslAuthenticationProviderSimpleRpcServer.html |    40 +-
 .../hbase/security/token/SecureTestCluster.html    |   166 +-
 .../security/token/TestAuthenticationKey.html      |    79 +-
 .../token/TestDelegationTokenWithEncryption.html   |   169 +-
 .../security/token/TestFsDelegationToken.html      |   149 +-
 .../token/TestGenerateDelegationToken.html         |   240 +-
 .../token/TestTokenAuthentication.TokenServer.html |   922 +-
 .../security/token/TestTokenAuthentication.html    |   922 +-
 ...er.AuthenticationTokenSecretManagerForTest.html |   522 +-
 .../token/TestZKSecretWatcher.MockAbortable.html   |   522 +-
 .../hbase/security/token/TestZKSecretWatcher.html  |   522 +-
 ...stZKSecretWatcherRefreshKeys.MockAbortable.html |   159 +-
 .../token/TestZKSecretWatcherRefreshKeys.html      |   159 +-
 .../TestDefaultScanLabelGeneratorStack.html        |   450 +-
 .../TestEnforcingScanLabelGenerator.html           |   274 +-
 .../visibility/TestExpressionExpander.html         |   701 +-
 .../security/visibility/TestExpressionParser.html  |   739 +-
 ...tVisibilityLabelReplicationWithExpAsString.html |   335 +-
 ...tVisibilityLabelsOnNewVersionBehaviorTable.html |    44 +-
 ...tVisibilityLabelsOpWithDifferentUsersNoACL.html |   313 +-
 .../TestVisibilityLabelsReplication.SimpleCP.html  |   889 +-
 ...lsReplication.TestCoprocessorForTagsAtSink.html |   889 +-
 ...ation.VisibilityReplicationEndPointForTest.html |   889 +-
 .../TestVisibilityLabelsReplication.html           |   889 +-
 .../visibility/TestVisibilityLabelsWithACL.html    |   618 +-
 ...estVisibilityLabelsWithCustomVisLabService.html |   113 +-
 ...VisibilityLabelsWithDefaultVisLabelService.html |   463 +-
 ...TestVisibilityLabelsWithDeletes.DeleteMark.html |  6043 ++++----
 .../TestVisibilityLabelsWithDeletes.html           |  6043 ++++----
 .../TestVisibilityLabelsWithSLGStack.html          |   212 +-
 .../visibility/TestVisibilityLablesWithGroups.html |   636 +-
 .../visibility/TestVisibilityWithCheckAuths.html   |   394 +-
 .../visibility/TestWithDisabledAuthorization.html  |   418 +-
 ...tyLabels.html => VisibilityLabelsTestBase.html} |  1621 +-
 .../VisibilityLabelsWithDeletesTestBase.html       |   519 +-
 testdevapidocs/type-search-index.js                |     2 +-
 811 files changed, 249682 insertions(+), 251112 deletions(-)

diff --git a/__spa-fallback.html b/__spa-fallback.html
index 17457c63500..47ef54a49ad 100644
--- a/__spa-fallback.html
+++ b/__spa-fallback.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="modulepreload" href="/assets/entry.client-uuhwLXL0.js" [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="modulepreload" href="/assets/entry.client-_CVK9qYI.js" [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -19,9 +19,9 @@
                 "functions. Check out https://reactrouter.com/start/framework/route-module#hydratefallback " +
                 "for more information."
               );
-            </script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":true};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamController = controller;}}).pipeTh [...]
+            </script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":true};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamController = controller;}}).pipeTh [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
   
   window.__reactRouterRouteModules = {"root":route0};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_3\":-5,\"_4\":-5},\"loaderData\",{},\"actionData\",\"errors\"]\n");</script><!--$--><script>window.__reactRouterContext.streamController.close();</script><!--/$--><!--/$--></body></html>
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_3\":-5,\"_4\":-5},\"loaderData\",{},\"actionData\",\"errors\"]\n");</script><!--$--><script>window.__reactRouterContext.streamController.close();</script><!--/$--><!--/$--></body></html>
\ No newline at end of file
diff --git a/acid-semantics/index.html b/acid-semantics/index.html
index 119712e2152..0399b75fc20 100644
--- a/acid-semantics/index.html
+++ b/acid-semantics/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/images/logo.svg"/><title>ACID Semantics - Apache HBase</title><meta name="description" content="Apache HBase ACID properties and guarantees specification."/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-l [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/images/logo.svg"/><title>ACID Semantics - Apache HBase</title><meta name="description" content="Apache HBase ACID properties and guarantees specification."/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-l [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -133,12 +133,12 @@ an update is considered visible if any subsequent read will see the update as ha
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/landing-layout-DfKLumIW.js";
-import * as route2 from "/assets/acid-semantics-DEgldsHV.js";
+import * as route1 from "/assets/landing-layout-shCKuPBh.js";
+import * as route2 from "/assets/acid-semantics-BoTYVlwm.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_landing/landing-layout":route1,"routes/_landing/acid-semantics":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$?--><template id="B:0"></template><!--/$--><script id="_R_">requestAnimationFrame(function(){$RT=performance.now()});</script><div hidden id="S:0"><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_3\":-5,\"_4\":-5},\"loaderData\",{},\"actionData\",\"errors\"]\n");</script><!--$?--><template id="B:1"></template><!--/$--></div><script>$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){ [...]
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$?--><template id="B:0"></template><!--/$--><script id="_R_">requestAnimationFrame(function(){$RT=performance.now()});</script><div hidden id="S:0"><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_3\":-5,\"_4\":-5},\"loaderData\",{},\"actionData\",\"errors\"]\n");</script><!--$?--><template id="B:1"></template><!--/$--></div><script>$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){ [...]
 $RC=function(a,b){if(b=document.getElementById(b))(a=document.getElementById(a))?(a.previousSibling.data="$~",$RB.push(a,b),2===$RB.length&&("number"!==typeof $RT?requestAnimationFrame($RV.bind(null,$RB)):(a=performance.now(),setTimeout($RV.bind(null,$RB),2300>a&&2E3<a?2300-a:$RT+300-a)))):b.parentNode.removeChild(b)};$RC("B:0","S:0")</script><div hidden id="S:1"><script>window.__reactRouterContext.streamController.close();</script></div><script>$RC("B:1","S:1")</script></body></html>
\ No newline at end of file
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/regionserver/RegionScanner.html b/apidocs/src-html/org/apache/hadoop/hbase/regionserver/RegionScanner.html
index 3090e900b4f..d3ac9931d9b 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/regionserver/RegionScanner.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/regionserver/RegionScanner.html
@@ -31,108 +31,111 @@
 <span class="source-line-no">018</span><span id="line-18">package org.apache.hadoop.hbase.regionserver;</span>
 <span class="source-line-no">019</span><span id="line-19"></span>
 <span class="source-line-no">020</span><span id="line-20">import java.io.IOException;</span>
-<span class="source-line-no">021</span><span id="line-21">import java.util.List;</span>
-<span class="source-line-no">022</span><span id="line-22">import java.util.Set;</span>
-<span class="source-line-no">023</span><span id="line-23">import org.apache.hadoop.fs.Path;</span>
-<span class="source-line-no">024</span><span id="line-24">import org.apache.hadoop.hbase.ExtendedCell;</span>
-<span class="source-line-no">025</span><span id="line-25">import org.apache.hadoop.hbase.HBaseInterfaceAudience;</span>
-<span class="source-line-no">026</span><span id="line-26">import org.apache.hadoop.hbase.client.RegionInfo;</span>
-<span class="source-line-no">027</span><span id="line-27">import org.apache.yetus.audience.InterfaceAudience;</span>
-<span class="source-line-no">028</span><span id="line-28">import org.apache.yetus.audience.InterfaceStability;</span>
-<span class="source-line-no">029</span><span id="line-29"></span>
-<span class="source-line-no">030</span><span id="line-30">/**</span>
-<span class="source-line-no">031</span><span id="line-31"> * RegionScanner describes iterators over rows in an HRegion.</span>
-<span class="source-line-no">032</span><span id="line-32"> */</span>
-<span class="source-line-no">033</span><span id="line-33">@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.COPROC)</span>
-<span class="source-line-no">034</span><span id="line-34">@InterfaceStability.Evolving</span>
-<span class="source-line-no">035</span><span id="line-35">public interface RegionScanner extends InternalScanner {</span>
-<span class="source-line-no">036</span><span id="line-36">  /** Returns The RegionInfo for this scanner. */</span>
-<span class="source-line-no">037</span><span id="line-37">  RegionInfo getRegionInfo();</span>
-<span class="source-line-no">038</span><span id="line-38"></span>
-<span class="source-line-no">039</span><span id="line-39">  /**</span>
-<span class="source-line-no">040</span><span id="line-40">   * @return True if a filter indicates that this scanner will return no further rows.</span>
-<span class="source-line-no">041</span><span id="line-41">   * @throws IOException in case of I/O failure on a filter.</span>
-<span class="source-line-no">042</span><span id="line-42">   */</span>
-<span class="source-line-no">043</span><span id="line-43">  boolean isFilterDone() throws IOException;</span>
-<span class="source-line-no">044</span><span id="line-44"></span>
-<span class="source-line-no">045</span><span id="line-45">  /**</span>
-<span class="source-line-no">046</span><span id="line-46">   * Do a reseek to the required row. Should not be used to seek to a key which may come before the</span>
-<span class="source-line-no">047</span><span id="line-47">   * current position. Always seeks to the beginning of a row boundary. if row is null</span>
-<span class="source-line-no">048</span><span id="line-48">   */</span>
-<span class="source-line-no">049</span><span id="line-49">  boolean reseek(byte[] row) throws IOException;</span>
-<span class="source-line-no">050</span><span id="line-50"></span>
-<span class="source-line-no">051</span><span id="line-51">  /**</span>
-<span class="source-line-no">052</span><span id="line-52">   * @return The preferred max buffersize. See</span>
-<span class="source-line-no">053</span><span id="line-53">   *         {@link org.apache.hadoop.hbase.client.Scan#setMaxResultSize(long)}</span>
-<span class="source-line-no">054</span><span id="line-54">   */</span>
-<span class="source-line-no">055</span><span id="line-55">  long getMaxResultSize();</span>
-<span class="source-line-no">056</span><span id="line-56"></span>
-<span class="source-line-no">057</span><span id="line-57">  /** Returns The Scanner's MVCC readPt see {@link MultiVersionConcurrencyControl} */</span>
-<span class="source-line-no">058</span><span id="line-58">  long getMvccReadPoint();</span>
-<span class="source-line-no">059</span><span id="line-59"></span>
-<span class="source-line-no">060</span><span id="line-60">  /**</span>
-<span class="source-line-no">061</span><span id="line-61">   * @return The limit on the number of cells to retrieve on each call to next(). See</span>
-<span class="source-line-no">062</span><span id="line-62">   *         {@link org.apache.hadoop.hbase.client.Scan#setBatch(int)}</span>
-<span class="source-line-no">063</span><span id="line-63">   */</span>
-<span class="source-line-no">064</span><span id="line-64">  int getBatch();</span>
-<span class="source-line-no">065</span><span id="line-65"></span>
-<span class="source-line-no">066</span><span id="line-66">  /**</span>
-<span class="source-line-no">067</span><span id="line-67">   * @return The Scanner's {@link org.apache.hadoop.hbase.client.Scan#ID_ATRIBUTE} value, or null if</span>
-<span class="source-line-no">068</span><span id="line-68">   *         not set.</span>
-<span class="source-line-no">069</span><span id="line-69">   */</span>
-<span class="source-line-no">070</span><span id="line-70">  default String getOperationId() {</span>
-<span class="source-line-no">071</span><span id="line-71">    return null;</span>
-<span class="source-line-no">072</span><span id="line-72">  }</span>
-<span class="source-line-no">073</span><span id="line-73"></span>
-<span class="source-line-no">074</span><span id="line-74">  /**</span>
-<span class="source-line-no">075</span><span id="line-75">   * Grab the next row's worth of values. This is a special internal method to be called from</span>
-<span class="source-line-no">076</span><span id="line-76">   * coprocessor hooks to avoid expensive setup. Caller must set the thread's readpoint, start and</span>
-<span class="source-line-no">077</span><span id="line-77">   * close a region operation, an synchronize on the scanner object. Caller should maintain and</span>
-<span class="source-line-no">078</span><span id="line-78">   * update metrics. See {@link #nextRaw(List, ScannerContext)}</span>
-<span class="source-line-no">079</span><span id="line-79">   * @param result return output array</span>
-<span class="source-line-no">080</span><span id="line-80">   * @return true if more rows exist after this one, false if scanner is done</span>
-<span class="source-line-no">081</span><span id="line-81">   * @throws IOException e</span>
-<span class="source-line-no">082</span><span id="line-82">   */</span>
-<span class="source-line-no">083</span><span id="line-83">  boolean nextRaw(List&lt;? super ExtendedCell&gt; result) throws IOException;</span>
-<span class="source-line-no">084</span><span id="line-84"></span>
-<span class="source-line-no">085</span><span id="line-85">  /**</span>
-<span class="source-line-no">086</span><span id="line-86">   * Grab the next row's worth of values. The {@link ScannerContext} is used to enforce and track</span>
-<span class="source-line-no">087</span><span id="line-87">   * any limits associated with this call. Any progress that exists in the {@link ScannerContext}</span>
-<span class="source-line-no">088</span><span id="line-88">   * prior to calling this method will be LOST if {@link ScannerContext#getKeepProgress()} is false.</span>
-<span class="source-line-no">089</span><span id="line-89">   * Upon returning from this method, the {@link ScannerContext} will contain information about the</span>
-<span class="source-line-no">090</span><span id="line-90">   * progress made towards the limits. This is a special internal method to be called from</span>
-<span class="source-line-no">091</span><span id="line-91">   * coprocessor hooks to avoid expensive setup. Caller must set the thread's readpoint, start and</span>
-<span class="source-line-no">092</span><span id="line-92">   * close a region operation, an synchronize on the scanner object. Example: &lt;code&gt;</span>
-<span class="source-line-no">093</span><span id="line-93">   * HRegion region = ...;</span>
-<span class="source-line-no">094</span><span id="line-94">   * RegionScanner scanner = ...</span>
-<span class="source-line-no">095</span><span id="line-95">   * MultiVersionConcurrencyControl.setThreadReadPoint(scanner.getMvccReadPoint());</span>
-<span class="source-line-no">096</span><span id="line-96">   * region.startRegionOperation();</span>
-<span class="source-line-no">097</span><span id="line-97">   * try {</span>
-<span class="source-line-no">098</span><span id="line-98">   *   synchronized(scanner) {</span>
-<span class="source-line-no">099</span><span id="line-99">   *     ...</span>
-<span class="source-line-no">100</span><span id="line-100">   *     boolean moreRows = scanner.nextRaw(values);</span>
-<span class="source-line-no">101</span><span id="line-101">   *     ...</span>
-<span class="source-line-no">102</span><span id="line-102">   *   }</span>
-<span class="source-line-no">103</span><span id="line-103">   * } finally {</span>
-<span class="source-line-no">104</span><span id="line-104">   *   region.closeRegionOperation();</span>
-<span class="source-line-no">105</span><span id="line-105">   * }</span>
-<span class="source-line-no">106</span><span id="line-106">   * &lt;/code&gt;</span>
-<span class="source-line-no">107</span><span id="line-107">   * @param result         return output array</span>
-<span class="source-line-no">108</span><span id="line-108">   * @param scannerContext The {@link ScannerContext} instance encapsulating all limits that should</span>
-<span class="source-line-no">109</span><span id="line-109">   *                       be tracked during calls to this method. The progress towards these limits</span>
-<span class="source-line-no">110</span><span id="line-110">   *                       can be tracked within this instance.</span>
-<span class="source-line-no">111</span><span id="line-111">   * @return true if more rows exist after this one, false if scanner is done</span>
-<span class="source-line-no">112</span><span id="line-112">   * @throws IOException e</span>
-<span class="source-line-no">113</span><span id="line-113">   */</span>
-<span class="source-line-no">114</span><span id="line-114">  boolean nextRaw(List&lt;? super ExtendedCell&gt; result, ScannerContext scannerContext)</span>
-<span class="source-line-no">115</span><span id="line-115">    throws IOException;</span>
-<span class="source-line-no">116</span><span id="line-116"></span>
-<span class="source-line-no">117</span><span id="line-117">  /**</span>
-<span class="source-line-no">118</span><span id="line-118">   * Returns the set of store file paths that were successfully read by this scanner. Typically</span>
-<span class="source-line-no">119</span><span id="line-119">   * populated only after the scanner is closed.</span>
-<span class="source-line-no">120</span><span id="line-120">   */</span>
-<span class="source-line-no">121</span><span id="line-121">  Set&lt;Path&gt; getFilesRead();</span>
-<span class="source-line-no">122</span><span id="line-122">}</span>
+<span class="source-line-no">021</span><span id="line-21">import java.util.Collections;</span>
+<span class="source-line-no">022</span><span id="line-22">import java.util.List;</span>
+<span class="source-line-no">023</span><span id="line-23">import java.util.Set;</span>
+<span class="source-line-no">024</span><span id="line-24">import org.apache.hadoop.fs.Path;</span>
+<span class="source-line-no">025</span><span id="line-25">import org.apache.hadoop.hbase.ExtendedCell;</span>
+<span class="source-line-no">026</span><span id="line-26">import org.apache.hadoop.hbase.HBaseInterfaceAudience;</span>
+<span class="source-line-no">027</span><span id="line-27">import org.apache.hadoop.hbase.client.RegionInfo;</span>
+<span class="source-line-no">028</span><span id="line-28">import org.apache.yetus.audience.InterfaceAudience;</span>
+<span class="source-line-no">029</span><span id="line-29">import org.apache.yetus.audience.InterfaceStability;</span>
+<span class="source-line-no">030</span><span id="line-30"></span>
+<span class="source-line-no">031</span><span id="line-31">/**</span>
+<span class="source-line-no">032</span><span id="line-32"> * RegionScanner describes iterators over rows in an HRegion.</span>
+<span class="source-line-no">033</span><span id="line-33"> */</span>
+<span class="source-line-no">034</span><span id="line-34">@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.COPROC)</span>
+<span class="source-line-no">035</span><span id="line-35">@InterfaceStability.Evolving</span>
+<span class="source-line-no">036</span><span id="line-36">public interface RegionScanner extends InternalScanner {</span>
+<span class="source-line-no">037</span><span id="line-37">  /** Returns The RegionInfo for this scanner. */</span>
+<span class="source-line-no">038</span><span id="line-38">  RegionInfo getRegionInfo();</span>
+<span class="source-line-no">039</span><span id="line-39"></span>
+<span class="source-line-no">040</span><span id="line-40">  /**</span>
+<span class="source-line-no">041</span><span id="line-41">   * @return True if a filter indicates that this scanner will return no further rows.</span>
+<span class="source-line-no">042</span><span id="line-42">   * @throws IOException in case of I/O failure on a filter.</span>
+<span class="source-line-no">043</span><span id="line-43">   */</span>
+<span class="source-line-no">044</span><span id="line-44">  boolean isFilterDone() throws IOException;</span>
+<span class="source-line-no">045</span><span id="line-45"></span>
+<span class="source-line-no">046</span><span id="line-46">  /**</span>
+<span class="source-line-no">047</span><span id="line-47">   * Do a reseek to the required row. Should not be used to seek to a key which may come before the</span>
+<span class="source-line-no">048</span><span id="line-48">   * current position. Always seeks to the beginning of a row boundary. if row is null</span>
+<span class="source-line-no">049</span><span id="line-49">   */</span>
+<span class="source-line-no">050</span><span id="line-50">  boolean reseek(byte[] row) throws IOException;</span>
+<span class="source-line-no">051</span><span id="line-51"></span>
+<span class="source-line-no">052</span><span id="line-52">  /**</span>
+<span class="source-line-no">053</span><span id="line-53">   * @return The preferred max buffersize. See</span>
+<span class="source-line-no">054</span><span id="line-54">   *         {@link org.apache.hadoop.hbase.client.Scan#setMaxResultSize(long)}</span>
+<span class="source-line-no">055</span><span id="line-55">   */</span>
+<span class="source-line-no">056</span><span id="line-56">  long getMaxResultSize();</span>
+<span class="source-line-no">057</span><span id="line-57"></span>
+<span class="source-line-no">058</span><span id="line-58">  /** Returns The Scanner's MVCC readPt see {@link MultiVersionConcurrencyControl} */</span>
+<span class="source-line-no">059</span><span id="line-59">  long getMvccReadPoint();</span>
+<span class="source-line-no">060</span><span id="line-60"></span>
+<span class="source-line-no">061</span><span id="line-61">  /**</span>
+<span class="source-line-no">062</span><span id="line-62">   * @return The limit on the number of cells to retrieve on each call to next(). See</span>
+<span class="source-line-no">063</span><span id="line-63">   *         {@link org.apache.hadoop.hbase.client.Scan#setBatch(int)}</span>
+<span class="source-line-no">064</span><span id="line-64">   */</span>
+<span class="source-line-no">065</span><span id="line-65">  int getBatch();</span>
+<span class="source-line-no">066</span><span id="line-66"></span>
+<span class="source-line-no">067</span><span id="line-67">  /**</span>
+<span class="source-line-no">068</span><span id="line-68">   * @return The Scanner's {@link org.apache.hadoop.hbase.client.Scan#ID_ATRIBUTE} value, or null if</span>
+<span class="source-line-no">069</span><span id="line-69">   *         not set.</span>
+<span class="source-line-no">070</span><span id="line-70">   */</span>
+<span class="source-line-no">071</span><span id="line-71">  default String getOperationId() {</span>
+<span class="source-line-no">072</span><span id="line-72">    return null;</span>
+<span class="source-line-no">073</span><span id="line-73">  }</span>
+<span class="source-line-no">074</span><span id="line-74"></span>
+<span class="source-line-no">075</span><span id="line-75">  /**</span>
+<span class="source-line-no">076</span><span id="line-76">   * Grab the next row's worth of values. This is a special internal method to be called from</span>
+<span class="source-line-no">077</span><span id="line-77">   * coprocessor hooks to avoid expensive setup. Caller must set the thread's readpoint, start and</span>
+<span class="source-line-no">078</span><span id="line-78">   * close a region operation, an synchronize on the scanner object. Caller should maintain and</span>
+<span class="source-line-no">079</span><span id="line-79">   * update metrics. See {@link #nextRaw(List, ScannerContext)}</span>
+<span class="source-line-no">080</span><span id="line-80">   * @param result return output array</span>
+<span class="source-line-no">081</span><span id="line-81">   * @return true if more rows exist after this one, false if scanner is done</span>
+<span class="source-line-no">082</span><span id="line-82">   * @throws IOException e</span>
+<span class="source-line-no">083</span><span id="line-83">   */</span>
+<span class="source-line-no">084</span><span id="line-84">  boolean nextRaw(List&lt;? super ExtendedCell&gt; result) throws IOException;</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">   * Grab the next row's worth of values. The {@link ScannerContext} is used to enforce and track</span>
+<span class="source-line-no">088</span><span id="line-88">   * any limits associated with this call. Any progress that exists in the {@link ScannerContext}</span>
+<span class="source-line-no">089</span><span id="line-89">   * prior to calling this method will be LOST if {@link ScannerContext#getKeepProgress()} is false.</span>
+<span class="source-line-no">090</span><span id="line-90">   * Upon returning from this method, the {@link ScannerContext} will contain information about the</span>
+<span class="source-line-no">091</span><span id="line-91">   * progress made towards the limits. This is a special internal method to be called from</span>
+<span class="source-line-no">092</span><span id="line-92">   * coprocessor hooks to avoid expensive setup. Caller must set the thread's readpoint, start and</span>
+<span class="source-line-no">093</span><span id="line-93">   * close a region operation, an synchronize on the scanner object. Example: &lt;code&gt;</span>
+<span class="source-line-no">094</span><span id="line-94">   * HRegion region = ...;</span>
+<span class="source-line-no">095</span><span id="line-95">   * RegionScanner scanner = ...</span>
+<span class="source-line-no">096</span><span id="line-96">   * MultiVersionConcurrencyControl.setThreadReadPoint(scanner.getMvccReadPoint());</span>
+<span class="source-line-no">097</span><span id="line-97">   * region.startRegionOperation();</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">   *   synchronized(scanner) {</span>
+<span class="source-line-no">100</span><span id="line-100">   *     ...</span>
+<span class="source-line-no">101</span><span id="line-101">   *     boolean moreRows = scanner.nextRaw(values);</span>
+<span class="source-line-no">102</span><span id="line-102">   *     ...</span>
+<span class="source-line-no">103</span><span id="line-103">   *   }</span>
+<span class="source-line-no">104</span><span id="line-104">   * } finally {</span>
+<span class="source-line-no">105</span><span id="line-105">   *   region.closeRegionOperation();</span>
+<span class="source-line-no">106</span><span id="line-106">   * }</span>
+<span class="source-line-no">107</span><span id="line-107">   * &lt;/code&gt;</span>
+<span class="source-line-no">108</span><span id="line-108">   * @param result         return output array</span>
+<span class="source-line-no">109</span><span id="line-109">   * @param scannerContext The {@link ScannerContext} instance encapsulating all limits that should</span>
+<span class="source-line-no">110</span><span id="line-110">   *                       be tracked during calls to this method. The progress towards these limits</span>
+<span class="source-line-no">111</span><span id="line-111">   *                       can be tracked within this instance.</span>
+<span class="source-line-no">112</span><span id="line-112">   * @return true if more rows exist after this one, false if scanner is done</span>
+<span class="source-line-no">113</span><span id="line-113">   * @throws IOException e</span>
+<span class="source-line-no">114</span><span id="line-114">   */</span>
+<span class="source-line-no">115</span><span id="line-115">  boolean nextRaw(List&lt;? super ExtendedCell&gt; result, ScannerContext scannerContext)</span>
+<span class="source-line-no">116</span><span id="line-116">    throws IOException;</span>
+<span class="source-line-no">117</span><span id="line-117"></span>
+<span class="source-line-no">118</span><span id="line-118">  /**</span>
+<span class="source-line-no">119</span><span id="line-119">   * Returns the set of store file paths that were successfully read by this scanner. Typically</span>
+<span class="source-line-no">120</span><span id="line-120">   * populated only after the scanner is closed.</span>
+<span class="source-line-no">121</span><span id="line-121">   */</span>
+<span class="source-line-no">122</span><span id="line-122">  default Set&lt;Path&gt; getFilesRead() {</span>
+<span class="source-line-no">123</span><span id="line-123">    return Collections.emptySet();</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>
 
 
 
diff --git a/assets/acid-semantics-BoTYVlwm.js b/assets/acid-semantics-BoTYVlwm.js
new file mode 100644
index 00000000000..50fafe678a7
--- /dev/null
+++ b/assets/acid-semantics-BoTYVlwm.js
@@ -0,0 +1,107 @@
+import{j as e,w as s}from"./chunk-EPOLDU6W-B5LwAila.js";import{M as a}from"./mdx-components-5lzU89H3.js";import"./mdx-B01kYoV3.js";import"./index-BE31Pm92.js";import"./index-lnR2ABT4.js";import"./index-FCA4GwU0.js";import"./link-CDX6ZyVQ.js";import"./external-link-jmuPj2if.js";import"./createLucideIcon-BidaCVke.js";e.jsx(e.Fragment,{children:"ACID properties of HBase"}),e.jsx(e.Fragment,{children:"Definitions"}),e.jsx(e.Fragment,{children:"APIs to consider"}),e.jsx(e.Fragment,{children:" [...]
+`,e.jsx(t.p,{children:"Apache HBase (TM) is not an ACID compliant database. However, it does guarantee certain specific properties."}),`
+`,e.jsx(t.h2,{id:"definitions",children:"Definitions"}),`
+`,e.jsx(t.p,{children:"For the sake of common vocabulary, we define the following terms:"}),`
+`,e.jsxs(t.p,{children:[e.jsx(t.strong,{children:"Atomicity"}),`
+an operation is atomic if it either completes entirely or not at all`]}),`
+`,e.jsxs(t.p,{children:[e.jsx(t.strong,{children:"Consistency"}),`
+all actions cause the table to transition from one valid state directly to another (eg a row will not disappear during an update, etc)`]}),`
+`,e.jsxs(t.p,{children:[e.jsx(t.strong,{children:"Isolation"}),`
+an operation is isolated if it appears to complete independently of any other concurrent transaction`]}),`
+`,e.jsxs(t.p,{children:[e.jsx(t.strong,{children:"Durability"}),`
+any update that reports "successful" to the client will not be lost`]}),`
+`,e.jsxs(t.p,{children:[e.jsx(t.strong,{children:"Visibility"}),`
+an update is considered visible if any subsequent read will see the update as having been committed`]}),`
+`,e.jsxs(t.p,{children:["The terms ",e.jsx(t.em,{children:"must"})," and ",e.jsx(t.em,{children:"may"}),' are used as specified by RFC 2119. In short, the word "must" implies that, if some case exists where the statement is not true, it is a bug. The word "may" implies that, even if the guarantee is provided in a current release, users should not rely on it.']}),`
+`,e.jsx(t.h2,{id:"apis-to-consider",children:"APIs to consider"}),`
+`,e.jsxs(t.ul,{children:[`
+`,e.jsxs(t.li,{children:["Read APIs",`
+`,e.jsxs(t.ul,{children:[`
+`,e.jsx(t.li,{children:"get"}),`
+`,e.jsx(t.li,{children:"scan"}),`
+`]}),`
+`]}),`
+`,e.jsxs(t.li,{children:["Write APIs",`
+`,e.jsxs(t.ul,{children:[`
+`,e.jsx(t.li,{children:"put"}),`
+`,e.jsx(t.li,{children:"batch put"}),`
+`,e.jsx(t.li,{children:"delete"}),`
+`]}),`
+`]}),`
+`,e.jsxs(t.li,{children:["Combination (read-modify-write) APIs",`
+`,e.jsxs(t.ul,{children:[`
+`,e.jsx(t.li,{children:"incrementColumnValue"}),`
+`,e.jsx(t.li,{children:"checkAndPut"}),`
+`]}),`
+`]}),`
+`]}),`
+`,e.jsx(t.h2,{id:"guarantees-provided",children:"Guarantees Provided"}),`
+`,e.jsx(t.h3,{id:"atomicity",children:"Atomicity"}),`
+`,e.jsxs(t.ol,{children:[`
+`,e.jsxs(t.li,{children:["All mutations are atomic within a row. Any put will either wholly succeed or wholly fail.[3]",`
+`,e.jsxs(t.ol,{children:[`
+`,e.jsx(t.li,{children:'An operation that returns a "success" code has completely succeeded.'}),`
+`,e.jsx(t.li,{children:'An operation that returns a "failure" code has completely failed.'}),`
+`,e.jsx(t.li,{children:"An operation that times out may have succeeded and may have failed. However, it will not have partially succeeded or failed."}),`
+`]}),`
+`]}),`
+`,e.jsx(t.li,{children:"This is true even if the mutation crosses multiple column families within a row."}),`
+`,e.jsxs(t.li,{children:["APIs that mutate several rows will ",e.jsx(t.em,{children:"not"})," be atomic across the multiple rows. For example, a multiput that operates on rows 'a','b', and 'c' may return having mutated some but not all of the rows. In such cases, these APIs will return a list of success codes, each of which may be succeeded, failed, or timed out as described above."]}),`
+`,e.jsx(t.li,{children:"The checkAndPut API happens atomically like the typical compareAndSet (CAS) operation found in many hardware architectures."}),`
+`,e.jsxs(t.li,{children:['The order of mutations is seen to happen in a well-defined order for each row, with no interleaving. For example, if one writer issues the mutation "a=1,b=1,c=1" and another writer issues the mutation "a=2,b=2,c=2", the row must either be "a=1,b=1,c=1" or "a=2,b=2,c=2" and must ',e.jsx(t.em,{children:"not"}),' be something like "a=1,b=2,c=1".',`
+`,e.jsxs(t.ol,{children:[`
+`,e.jsxs(t.li,{children:["Please note that this is not true ",e.jsx(t.em,{children:"across rows"})," for multirow batch mutations."]}),`
+`]}),`
+`]}),`
+`]}),`
+`,e.jsx(t.h3,{id:"consistency-and-isolation",children:"Consistency and Isolation"}),`
+`,e.jsxs(t.ol,{children:[`
+`,e.jsx(t.li,{children:"All rows returned via any access API will consist of a complete row that existed at some point in the table's history."}),`
+`,e.jsx(t.li,{children:"This is true across column families - i.e a get of a full row that occurs concurrent with some mutations 1,2,3,4,5 will return a complete row that existed at some point in time between mutation i and i+1 for some i between 1 and 5."}),`
+`,e.jsx(t.li,{children:"The state of a row will only move forward through the history of edits to it."}),`
+`]}),`
+`,e.jsx(t.h4,{id:"consistency-of-scans",children:"Consistency of Scans"}),`
+`,e.jsxs(t.p,{children:["A scan is ",e.jsx(t.strong,{children:"not"})," a consistent view of a table. Scans do ",e.jsx(t.strong,{children:"not"})," exhibit ",e.jsx(t.em,{children:"snapshot isolation"}),"."]}),`
+`,e.jsx(t.p,{children:"Rather, scans have the following properties:"}),`
+`,e.jsxs(t.ol,{children:[`
+`,e.jsx(t.li,{children:"Any row returned by the scan will be a consistent view (i.e. that version of the complete row existed at some point in time) [1]"}),`
+`,e.jsxs(t.li,{children:["A scan will always reflect a view of the data ",e.jsx(t.em,{children:"at least as new as"})," the beginning of the scan. This satisfies the visibility guarantees enumerated below.",`
+`,e.jsxs(t.ol,{children:[`
+`,e.jsx(t.li,{children:"For example, if client A writes data X and then communicates via a side channel to client B, any scans started by client B will contain data at least as new as X."}),`
+`,e.jsxs(t.li,{children:["A scan ",e.jsx(t.em,{children:"must"})," reflect all mutations committed prior to the construction of the scanner, and ",e.jsx(t.em,{children:"may"})," reflect some mutations committed subsequent to the construction of the scanner."]}),`
+`,e.jsxs(t.li,{children:["Scans must include ",e.jsx(t.em,{children:"all"})," data written prior to the scan (except in the case where data is subsequently mutated, in which case it ",e.jsx(t.em,{children:"may"})," reflect the mutation)"]}),`
+`]}),`
+`]}),`
+`]}),`
+`,e.jsx(t.p,{children:'Those familiar with relational databases will recognize this isolation level as "read committed".'}),`
+`,e.jsxs(t.p,{children:['Please note that the guarantees listed above regarding scanner consistency are referring to "transaction commit time", not the "timestamp" field of each cell. That is to say, a scanner started at time ',e.jsx(t.em,{children:"t"})," may see edits with a timestamp value greater than ",e.jsx(t.em,{children:"t"}),', if those edits were committed with a "forward dated" timestamp before the scanner was constructed.']}),`
+`,e.jsx(t.h3,{id:"visibility",children:"Visibility"}),`
+`,e.jsxs(t.ol,{children:[`
+`,e.jsx(t.li,{children:'When a client receives a "success" response for any mutation, that mutation is immediately visible to both that client and any client with whom it later communicates through side channels. [3]'}),`
+`,e.jsxs(t.li,{children:['A row must never exhibit so-called "time-travel" properties. That is to say, if a series of mutations moves a row sequentially through a series of states, any sequence of concurrent reads will return a subsequence of those states.',`
+`,e.jsxs(t.ol,{children:[`
+`,e.jsx(t.li,{children:`For example, if a row's cells are mutated using the "incrementColumnValue" API, a client must never see the value of any cell decrease.`}),`
+`,e.jsx(t.li,{children:"This is true regardless of which read API is used to read back the mutation."}),`
+`]}),`
+`]}),`
+`,e.jsx(t.li,{children:"Any version of a cell that has been returned to a read operation is guaranteed to be durably stored."}),`
+`]}),`
+`,e.jsx(t.h3,{id:"durability",children:"Durability"}),`
+`,e.jsxs(t.ol,{children:[`
+`,e.jsx(t.li,{children:"All visible data is also durable data. That is to say, a read will never return data that has not been made durable on disk[2]"}),`
+`,e.jsx(t.li,{children:'Any operation that returns a "success" code (eg does not throw an exception) will be made durable.[3]'}),`
+`,e.jsx(t.li,{children:'Any operation that returns a "failure" code will not be made durable (subject to the Atomicity guarantees above)'}),`
+`,e.jsx(t.li,{children:"All reasonable failure scenarios will not affect any of the guarantees of this document."}),`
+`]}),`
+`,e.jsx(t.h3,{id:"tunability",children:"Tunability"}),`
+`,e.jsx(t.p,{children:"All of the above guarantees must be possible within Apache HBase. For users who would like to trade off some guarantees for performance, HBase may offer several tuning options. For example:"}),`
+`,e.jsxs(t.ul,{children:[`
+`,e.jsx(t.li,{children:"Visibility may be tuned on a per-read basis to allow stale reads or time travel."}),`
+`,e.jsx(t.li,{children:"Durability may be tuned to only flush data to disk on a periodic basis"}),`
+`]}),`
+`,e.jsx(t.h2,{id:"more-information",children:"More Information"}),`
+`,e.jsxs(t.p,{children:["For more information, see the ",e.jsx(t.a,{href:"/docs/architecture/client",children:"client architecture"})," or ",e.jsx(t.a,{href:"/docs/datamodel",children:"data model"})," sections in the Apache HBase Reference Guide."]}),`
+`,e.jsx(t.h2,{id:"footnotes",children:"Footnotes"}),`
+`,e.jsxs(t.p,{children:["[1] A consistent view is not guaranteed intra-row scanning -- i.e. fetching a portion of a row in one RPC then going back to fetch another portion of the row in a subsequent RPC. Intra-row scanning happens when you set a limit on how many values to return per Scan#next (See ",e.jsx(t.a,{href:"http://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/client/Scan.html#setBatch(int)",children:"Scan#setBatch(int)"}),")."]}),`
+`,e.jsx(t.p,{children:'[2] In the context of Apache HBase, "durably on disk" implies an hflush() call on the transaction log. This does not actually imply an fsync() to magnetic media, but rather just that the data has been written to the OS cache on all replicas of the log. In the case of a full datacenter power loss, it is possible that the edits are not truly durable.'}),`
+`,e.jsx(t.p,{children:"[3] Puts will either wholly succeed or wholly fail, provided that they are actually sent to the RegionServer. If the writebuffer is used, Puts will not be sent until the writebuffer is filled or it is explicitly flushed."})]})}function r(n={}){const{wrapper:t}=n.components||{};return t?e.jsx(t,{...n,children:e.jsx(i,{...n})}):i(n)}function o(){return e.jsx(a,{Content:r,className:"mt-12"})}function j({}){return[{title:"ACID Semantics - Apache HBase"},{name:"descript [...]
diff --git a/assets/code-of-conduct-BvBGYarj.js b/assets/code-of-conduct-BvBGYarj.js
new file mode 100644
index 00000000000..76d1263af0f
--- /dev/null
+++ b/assets/code-of-conduct-BvBGYarj.js
@@ -0,0 +1,16 @@
+import{j as e,w as o}from"./chunk-EPOLDU6W-B5LwAila.js";import{M as a}from"./mdx-components-5lzU89H3.js";import"./mdx-B01kYoV3.js";import"./index-BE31Pm92.js";import"./index-lnR2ABT4.js";import"./index-FCA4GwU0.js";import"./link-CDX6ZyVQ.js";import"./external-link-jmuPj2if.js";import"./createLucideIcon-BidaCVke.js";e.jsx(e.Fragment,{children:"Code of Conduct"}),e.jsx(e.Fragment,{children:"Policy"}),e.jsx(e.Fragment,{children:"Diversity Statement"});function i(n){const t={a:"a",h1:"h1",h2 [...]
+`,e.jsx(t.h2,{id:"policy",children:"Policy"}),`
+`,e.jsxs(t.p,{children:["We expect participants in discussions on the HBase project mailing lists, IRC channels, and JIRA issues to abide by the Apache Software Foundation's ",e.jsx(t.a,{href:"http://apache.org/foundation/policies/conduct.html",children:"Code of Conduct"}),"."]}),`
+`,e.jsx(t.p,{children:"If you feel there has been a violation of this code, please point out your concerns publicly in a friendly and matter of fact manner. Nonverbal communication is prone to misinterpretation and misunderstanding. Everyone has bad days and sometimes says things they regret later. Someone else's communication style may clash with yours, but the difference can be amicably resolved. After pointing out your concerns please be generous upon receiving an apology."}),`
+`,e.jsx(t.p,{children:"Should there be repeated instances of code of conduct violations, or if there is an obvious and severe violation, the HBase PMC may become involved. When this happens the PMC will openly discuss the matter, most likely on the dev@hbase mailing list, and will consider taking the following actions, in order, if there is a continuing problem with an individual:"}),`
+`,e.jsxs(t.ol,{children:[`
+`,e.jsx(t.li,{children:"A friendly off-list warning;"}),`
+`,e.jsx(t.li,{children:"A friendly public warning, if the communication at issue was on list, otherwise another off-list warning;"}),`
+`,e.jsx(t.li,{children:"A three month suspension from the public mailing lists and possible operator action in the IRC channels."}),`
+`,e.jsx(t.li,{children:"A permanent ban from the public mailing lists, IRC channels, and project JIRA."}),`
+`]}),`
+`,e.jsx(t.p,{children:"For flagrant violations requiring a firm response the PMC may opt to skip early steps. No action will be taken before public discussion leading to consensus or a successful majority vote."}),`
+`,e.jsx(t.h2,{id:"diversity-statement",children:"Diversity Statement"}),`
+`,e.jsx(t.p,{children:"As a project and a community, we encourage you to participate in the HBase project in whatever capacity suits you, whether it involves development, documentation, answering questions on mailing lists, triaging issue and patch review, managing releases, or any other way that you want to help. We appreciate your contributions and the time you dedicate to the HBase project. We strive to recognize the work of participants publicly. Please let us know if we can improve  [...]
+`,e.jsx(t.p,{children:"We value diversity and strive to support participation by people with all different backgrounds. Rich projects grow from groups with different points of view and different backgrounds. We welcome your suggestions about how we can welcome participation by people at all skill levels and with all aspects of the project."}),`
+`,e.jsxs(t.p,{children:["If you can think of something we are doing that we shouldn't, or something that we should do but aren't, please let us know. If you feel comfortable doing so, use the public mailing lists. Otherwise, reach out to a PMC member or send an email to ",e.jsx(t.a,{href:"mailto:private@hbase.apache.org",children:"the private PMC mailing list"}),"."]})]})}function s(n={}){const{wrapper:t}=n.components||{};return t?e.jsx(t,{...n,children:e.jsx(i,{...n})}):i(n)}function r( [...]
diff --git a/assets/docs-Bp94CzDc.js b/assets/docs-Bp94CzDc.js
new file mode 100644
index 00000000000..d09e15d5d5d
--- /dev/null
+++ b/assets/docs-Bp94CzDc.js
@@ -0,0 +1,4 @@
+const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/acl-matrix-CSpoONGL.js","assets/chunk-EPOLDU6W-B5LwAila.js","assets/amv2-BZd-8W2P.js","assets/bulk-loading-Jl7zj15p.js","assets/catalog-tables-DBDNW_RH.js","assets/client-request-filters-D3rpht6K.js","assets/client-B5eNOW9s.js","assets/hbase-mob-CWUUOAot.js","assets/hdfs-BJ-YcWlm.js","assets/index-YxOAehho.js","assets/master-CuZMCYHT.js","assets/overview-CFTazJ3C.js","assets/regions-D8EGUAhZ.js","assets/region_states-Dumv7s [...]
+import{r as l,j as s,y as Pt,B as tn,w as rn}from"./chunk-EPOLDU6W-B5LwAila.js";import{_ as m,u as xe,e as yt,c as jt,a as U,z as nn,b as on}from"./index-BKmmHxti.js";import{b as V,c as St}from"./button-CS2SuAfe.js";import{L as F,d as sn,C as an,a as cn}from"./mdx-B01kYoV3.js";import{p as $,k as ge,c as Rt}from"./index-BE31Pm92.js";import{u as Y,f as Se,P as te,p as ln,a as dn,d as B,b as W,t as At,w as Ct,r as Ce,v as Tt,g as un,o as fn,s as mn,h as pn,i as hn,j as xn,k as gn,m as vn,l  [...]
+        "sidebar toc-popover toc"
+        "sidebar main toc" 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr)`,"--fd-docs-row-1":"var(--fd-banner-height, 0px)","--fd-docs-row-2":"calc(var(--fd-docs-row-1) + var(--fd-header-height))","--fd-docs-row-3":"calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height))","--fd-sidebar-col":n?"0px":"var(--fd-sidebar-width)",...t},...o,children:r})}function Is({options:e,...t [...]
diff --git a/assets/docs-layout-Cz5Eytfr.js b/assets/docs-layout-Cz5Eytfr.js
new file mode 100644
index 00000000000..78dd77c0194
--- /dev/null
+++ b/assets/docs-layout-Cz5Eytfr.js
@@ -0,0 +1,16 @@
+const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/search-default-C2Ty3ReR.js","assets/chunk-EPOLDU6W-B5LwAila.js","assets/index-BKmmHxti.js","assets/index-BE31Pm92.js","assets/index-lnR2ABT4.js","assets/index-FCA4GwU0.js","assets/Combination-D-9Ny0bQ.js","assets/static-KcbJF3xh.js","assets/chunk-OTD7MV33-qJr9DjGl.js","assets/serialization-BWi82uGp.js"])))=>i.map(i=>d[i]);
+import{r as p,j as g,L as Lt,z as Mt,A as kt,B as Ft,C as Ut,w as zt,O as jt}from"./chunk-EPOLDU6W-B5LwAila.js";import{u as qe,_ as Ze,S as Bt,J as Wt,I as Vt,d as $t,a as ve,b as Gt,e as Ht}from"./index-BKmmHxti.js";import{c as Kt,p as Xe,D as Jt,q as Qe,F as Yt,j as H,u as $,P as z,g as U,r as qt,d as Zt,i as Xt,f as fe,k as et,e as Qt,s as en,t as x,S as tn,n as nn,v as rn,H as on}from"./index-BE31Pm92.js";import{R as sn,h as an}from"./Combination-D-9Ny0bQ.js";import{c as cn}from"./in [...]
+
+If you want to hide the \`${e.titleName}\`, you can wrap it with our VisuallyHidden component.
+
+For more information, see https://radix-ui.com/primitives/docs/components/${e.docsSlug}`;return p.useEffect(()=>{t&&(document.getElementById(t)||console.error(n))},[n,t]),null},Yn="DialogDescriptionWarning",qn=({contentRef:t,descriptionId:e})=>{const r=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${yt(Yn).contentName}}.`;return p.useEffect(()=>{const o=t.current?.getAttribute("aria-describedby");e&&o&&(document.getElementById(e)||console.warn(r))},[r,t,e]),n [...]
+ - `),Tr={NO_LANGUAGE_WITH_CUSTOM_TOKENIZER:"Do not pass the language option to create when using a custom tokenizer.",LANGUAGE_NOT_SUPPORTED:`Language "%s" is not supported.
+Supported languages are:
+ - ${Nr}`,INVALID_STEMMER_FUNCTION_TYPE:"config.stemmer property must be a function.",MISSING_STEMMER:'As of version 1.0.0 @orama/orama does not ship non English stemmers by default. To solve this, please explicitly import and specify the "%s" stemmer from the package @orama/stemmers. See https://docs.orama.com/docs/orama-js/text-analysis/stemming for more information.',CUSTOM_STOP_WORDS_MUST_BE_FUNCTION_OR_ARRAY:"Custom stop words array must only contain strings.",UNSUPPORTED_COMPONENT: [...]
+Input vectors must be of the size declared in the schema, as calculating similarity between vectors of different sizes can lead to unexpected results.`,WRONG_SEARCH_PROPERTY_TYPE:'Property "%s" is not searchable. Only "string" properties are searchable.',FACET_NOT_SUPPORTED:`Facet doens't support the type "%s".`,INVALID_DISTANCE_SUFFIX:'Invalid distance suffix "%s". Valid suffixes are: cm, m, km, mi, yd, ft.',INVALID_SEARCH_MODE:'Invalid search mode "%s". Valid modes are: "fulltext", "ve [...]
+Please install it before proceeding with creating an answer session.
+Read more at https://docs.orama.com/docs/orama-js/plugins/plugin-secure-proxy#plugin-secure-proxy
+`,PLUGIN_SECURE_PROXY_MISSING_CHAT_MODEL:`Could not find a chat model defined in the secure proxy plugin configuration.
+Please provide a chat model before proceeding with creating an answer session.
+Read more at https://docs.orama.com/docs/orama-js/plugins/plugin-secure-proxy#plugin-secure-proxy
+`,ANSWER_SESSION_LAST_MESSAGE_IS_NOT_ASSISTANT:"The last message in the session is not an assistant message. Cannot regenerate non-assistant messages.",PLUGIN_COMPONENT_CONFLICT:'The component "%s" is already defined. The plugin "%s" is trying to redefine it.'};function D(t,...e){const n=new Error(br(Tr[t]??`Unsupported Orama Error code: ${t}`,...e));return n.code=t,"captureStackTrace"in Error.prototype&&Error.captureStackTrace(n),n}function wr(t){return{raw:Number(t),formatted:Ir(t)}}fu [...]
diff --git a/assets/docs-layout-DXv1WpCa.js b/assets/docs-layout-DXv1WpCa.js
new file mode 100644
index 00000000000..a3cb0bdbca7
--- /dev/null
+++ b/assets/docs-layout-DXv1WpCa.js
@@ -0,0 +1 @@
+import{z as f}from"./docs-layout-Cz5Eytfr.js";import"./chunk-EPOLDU6W-B5LwAila.js";import"./index-BKmmHxti.js";import"./index-BE31Pm92.js";import"./index-lnR2ABT4.js";import"./index-FCA4GwU0.js";import"./Combination-D-9Ny0bQ.js";export{f as default};
diff --git a/assets/downloads-Dx67knM3.js b/assets/downloads-Dx67knM3.js
new file mode 100644
index 00000000000..16aee7ee2b8
--- /dev/null
+++ b/assets/downloads-Dx67knM3.js
@@ -0,0 +1,9 @@
+import{j as e,w as r}from"./chunk-EPOLDU6W-B5LwAila.js";import{M as t}from"./mdx-components-5lzU89H3.js";import"./mdx-B01kYoV3.js";import"./index-BE31Pm92.js";import"./index-lnR2ABT4.js";import"./index-FCA4GwU0.js";import"./link-CDX6ZyVQ.js";import"./external-link-jmuPj2if.js";import"./createLucideIcon-BidaCVke.js";e.jsx(e.Fragment,{children:"Downloads"}),e.jsx(e.Fragment,{children:"Releases"}),e.jsx(e.Fragment,{children:"Connectors"}),e.jsx(e.Fragment,{children:"HBase Operator Tools"}); [...]
+`,e.jsxs(a.p,{children:["The below table lists mirrored release artifacts and their associated hashes and signatures available ONLY at apache.org. The keys used to sign releases can be found in our published ",e.jsx(a.a,{href:"https://downloads.apache.org/hbase/KEYS",children:"KEYS"})," file. See ",e.jsx(a.a,{href:"https://www.apache.org/dyn/closer.cgi#verify",children:"Verify The Integrity Of The Files"})," for how to verify your mirrored downloads."]}),`
+`,e.jsx(a.h2,{id:"releases",children:"Releases"}),`
+`,e.jsxs(a.table,{children:[e.jsx(a.thead,{children:e.jsxs(a.tr,{children:[e.jsx(a.th,{children:"Version"}),e.jsx(a.th,{children:"Release Date"}),e.jsx(a.th,{children:"Compatibility Report"}),e.jsx(a.th,{children:"Changes"}),e.jsx(a.th,{children:"Release Notes"}),e.jsx(a.th,{children:"Download"}),e.jsx(a.th,{children:"Notices"})]})}),e.jsxs(a.tbody,{children:[e.jsxs(a.tr,{children:[e.jsx(a.td,{children:"3.0.0-beta-1"}),e.jsx(a.td,{children:"2024/01/14"}),e.jsx(a.td,{children:e.jsx(a.a,{h [...]
+`,e.jsx(a.h2,{id:"connectors",children:"Connectors"}),`
+`,e.jsxs(a.table,{children:[e.jsx(a.thead,{children:e.jsxs(a.tr,{children:[e.jsx(a.th,{children:"Version"}),e.jsx(a.th,{children:"Release Date"}),e.jsx(a.th,{children:"Compatibility Report"}),e.jsx(a.th,{children:"Changes"}),e.jsx(a.th,{children:"Release Notes"}),e.jsx(a.th,{children:"Download"}),e.jsx(a.th,{children:"Notices"})]})}),e.jsx(a.tbody,{children:e.jsxs(a.tr,{children:[e.jsx(a.td,{children:"1.0.1"}),e.jsx(a.td,{children:"2023/10/27"}),e.jsx(a.td,{}),e.jsx(a.td,{children:e.jsx( [...]
+`,e.jsx(a.h2,{id:"hbase-operator-tools",children:"HBase Operator Tools"}),`
+`,e.jsxs(a.table,{children:[e.jsx(a.thead,{children:e.jsxs(a.tr,{children:[e.jsx(a.th,{children:"Version"}),e.jsx(a.th,{children:"Release Date"}),e.jsx(a.th,{children:"Compatibility Report"}),e.jsx(a.th,{children:"Changes"}),e.jsx(a.th,{children:"Release Notes"}),e.jsx(a.th,{children:"Download"}),e.jsx(a.th,{children:"Notices"})]})}),e.jsx(a.tbody,{children:e.jsxs(a.tr,{children:[e.jsx(a.td,{children:"1.3.0"}),e.jsx(a.td,{children:"2025/12/06"}),e.jsx(a.td,{}),e.jsx(a.td,{children:e.jsx( [...]
+`,e.jsxs(a.p,{children:["If you are looking for an old release that is not present here or on the mirror, check the ",e.jsx(a.a,{href:"https://archive.apache.org/dist/hbase/",children:"Apache Archive"}),"."]})]})}function o(s={}){const{wrapper:a}=s.components||{};return a?e.jsx(a,{...s,children:e.jsx(h,{...s})}):h(s)}function n(){return e.jsx(t,{Content:o,className:"mt-12"})}function w({}){return[{title:"Downloads - Apache HBase"},{name:"description",content:"Download Apache HBase releas [...]
diff --git a/assets/entry.client-_CVK9qYI.js b/assets/entry.client-_CVK9qYI.js
new file mode 100644
index 00000000000..bf9499feca5
--- /dev/null
+++ b/assets/entry.client-_CVK9qYI.js
@@ -0,0 +1,13 @@
+import{d as x1,m as Z1,s as j1,E as V1,N as L1,R as Bl,i as K1,r as _l,e as Sy,u as J1,F as w1,f as W1,h as F1,k as $1,l as k1,n as I1,o as P1,p as lh,q as th,t as ah,v as uh,x as eh,j as my}from"./chunk-EPOLDU6W-B5LwAila.js";import{r as nh,a as fh}from"./index-FCA4GwU0.js";var ni={exports:{}},se={},fi={exports:{}},ci={};var vy;function ch(){return vy||(vy=1,(function(E){function V(b,T){var N=b.length;b.push(T);l:for(;0<N;){var ll=N-1>>>1,tl=b[ll];if(0<R(tl,T))b[ll]=T,b[N]=tl,N=ll;else b [...]
+    at`)?" (<anonymous>)":-1<a.stack.indexOf("@")?"@unknown:0:0":""}return`
+`+xn+l+ii}var Zn=!1;function jn(l,t){if(!l||Zn)return"";Zn=!0;var a=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var u={DetermineComponentFrameRoot:function(){try{if(t){var z=function(){throw Error()};if(Object.defineProperty(z.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(z,[])}catch(o){var h=o}Reflect.construct(l,[],z)}else{try{z.call()}catch(o){h=o}l.call(z.prototype)}}else{try{throw Error()}catch(o) [...]
+`),d=c.split(`
+`);for(e=u=0;u<i.length&&!i[u].includes("DetermineComponentFrameRoot");)u++;for(;e<d.length&&!d[e].includes("DetermineComponentFrameRoot");)e++;if(u===i.length||e===d.length)for(u=i.length-1,e=d.length-1;1<=u&&0<=e&&i[u]!==d[e];)e--;for(;1<=u&&0<=e;u--,e--)if(i[u]!==d[e]){if(u!==1||e!==1)do if(u--,e--,0>e||i[u]!==d[e]){var S=`
+`+i[u].replace(" at new "," at ");return l.displayName&&S.includes("<anonymous>")&&(S=S.replace("<anonymous>",l.displayName)),S}while(1<=u&&0<=e);break}}}finally{Zn=!1,Error.prepareStackTrace=a}return(a=l?l.displayName||l.name:"")?oa(a):""}function gy(l,t){switch(l.tag){case 26:case 27:case 5:return oa(l.type);case 16:return oa("Lazy");case 13:return l.child!==t&&t!==null?oa("Suspense Fallback"):oa("Suspense");case 19:return oa("SuspenseList");case 0:case 15:return jn(l.type,!1);case 11: [...]
+Error generating stack: `+u.message+`
+`+u.stack}}var Vn=Object.prototype.hasOwnProperty,Ln=E.unstable_scheduleCallback,Kn=E.unstable_cancelCallback,by=E.unstable_shouldYield,zy=E.unstable_requestPaint,Vl=E.unstable_now,Ey=E.unstable_getCurrentPriorityLevel,vi=E.unstable_ImmediatePriority,yi=E.unstable_UserBlockingPriority,Te=E.unstable_NormalPriority,Ty=E.unstable_LowPriority,di=E.unstable_IdlePriority,Ay=E.log,My=E.unstable_setDisableYieldValue,Au=null,Ll=null;function Lt(l){if(typeof Ay=="function"&&My(l),Ll&&typeof Ll.set [...]
+`).replace(i1,"")}function qv(l,t){return t=Nv(t),Nv(l)===t}function $(l,t,a,u,e,n){switch(a){case"children":typeof u=="string"?t==="body"||t==="textarea"&&u===""||Va(l,u):(typeof u=="number"||typeof u=="bigint")&&t!=="body"&&Va(l,""+u);break;case"className":_e(l,"class",u);break;case"tabIndex":_e(l,"tabindex",u);break;case"dir":case"role":case"viewBox":case"width":case"height":_e(l,a,u);break;case"style":qi(l,u,n);break;case"data":if(t!=="object"){_e(l,"data",u);break}case"src":case"hre [...]
+        console.log(
+          "💿 Hey developer 👋. You can provide a way better UX than this when your app throws errors. Check out https://reactrouter.com/how-to/error-boundary for more information."
+        );
+      `}});if(K1(E))return Bl.createElement(oy,{renderAppShell:V,title:"Unhandled Thrown Response!"},Bl.createElement("h1",{style:{fontSize:"24px"}},E.status," ",E.statusText),G);let s;if(E instanceof Error)s=E;else{let R=E==null?"Unknown Error":typeof E=="object"&&"toString"in E?E.toString():JSON.stringify(E);s=new Error(R)}return Bl.createElement(oy,{renderAppShell:V,title:"Application Error!"},Bl.createElement("h1",{style:{fontSize:"24px"}},"Application Error"),Bl.createElement("pre", [...]
diff --git a/assets/export-control-Qb0Hicza.js b/assets/export-control-Qb0Hicza.js
new file mode 100644
index 00000000000..eb877a2180c
--- /dev/null
+++ b/assets/export-control-Qb0Hicza.js
@@ -0,0 +1,7 @@
+import{j as o,w as n}from"./chunk-EPOLDU6W-B5LwAila.js";import{M as i}from"./mdx-components-5lzU89H3.js";import"./mdx-B01kYoV3.js";import"./index-BE31Pm92.js";import"./index-lnR2ABT4.js";import"./index-FCA4GwU0.js";import"./link-CDX6ZyVQ.js";import"./external-link-jmuPj2if.js";import"./createLucideIcon-BidaCVke.js";o.jsx(o.Fragment,{children:"Export Control"});function r(t){const e={a:"a",h1:"h1",p:"p",...t.components};return o.jsxs(o.Fragment,{children:[o.jsx(e.h1,{id:"export-control",c [...]
+`,o.jsxs(e.p,{children:[`This distribution uses or includes cryptographic software.
+The country in which you currently reside may have restrictions on the import, possession, use, and/or re-export to another country, of encryption software.
+BEFORE using any encryption software, please check your country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted. See the `,o.jsx(e.a,{href:"https://www.wassenaar.org/",children:"Wassenaar Arrangement"})," for more information."]}),`
+`,o.jsx(e.p,{children:`The U.S. Government Department of Commerce, Bureau of Industry and Security (BIS), has classified this software as Export Commodity Control Number (ECCN) 5D002.C.1, which includes information security software using or performing cryptographic functions with asymmetric algorithms.
+The form and manner of this Apache Software Foundation distribution makes it eligible for export under the License Exception ENC Technology Software Unrestricted (TSU) exception (see the BIS Export Administration Regulations, Section 740.13) for both object code and source code.`}),`
+`,o.jsxs(e.p,{children:["Apache HBase uses the built-in java cryptography libraries. See Oracle's information regarding ",o.jsx(e.a,{href:"https://www.oracle.com/corporate/security-practices/corporate/governance/global-trade-compliance/",children:"Java cryptographic export regulations"})," for more details."]})]})}function s(t={}){const{wrapper:e}=t.components||{};return e?o.jsx(e,{...t,children:o.jsx(r,{...t})}):r(t)}function a(){return o.jsx(i,{Content:s,className:"mt-12"})}function y( [...]
diff --git a/assets/landing-layout-shCKuPBh.js b/assets/landing-layout-shCKuPBh.js
new file mode 100644
index 00000000000..3984c32e262
--- /dev/null
+++ b/assets/landing-layout-shCKuPBh.js
@@ -0,0 +1 @@
+import{j as n,r as a,R as q,w as $n,O as Un}from"./chunk-EPOLDU6W-B5LwAila.js";import{B as Nt}from"./button-CS2SuAfe.js";import{L as C,c as F}from"./link-CDX6ZyVQ.js";import{E as P}from"./external-link-jmuPj2if.js";import{c as Ae,a as me,u as D,b as z,P as R,d as w,e as Et,f as re,g as Gn,o as Bn,s as zn,l as Kn,h as Hn,i as Wn,j as Vn,k as Yn,m as Xn,n as ue,p as Ct,q as Ke,C as U,M as Jn,S as Zn,r as oe,t as Ce,v as Me,w as Se}from"./collapsible-DA3DUpZf.js";import{R as qn,a as Qn}from [...]
diff --git a/assets/mailing-lists-BkeAbr30.js b/assets/mailing-lists-BkeAbr30.js
new file mode 100644
index 00000000000..50fdf6919e5
--- /dev/null
+++ b/assets/mailing-lists-BkeAbr30.js
@@ -0,0 +1,3 @@
+import{j as s,w as h}from"./chunk-EPOLDU6W-B5LwAila.js";import{M as t}from"./mdx-components-5lzU89H3.js";import"./mdx-B01kYoV3.js";import"./index-BE31Pm92.js";import"./index-lnR2ABT4.js";import"./index-FCA4GwU0.js";import"./link-CDX6ZyVQ.js";import"./external-link-jmuPj2if.js";import"./createLucideIcon-BidaCVke.js";s.jsx(s.Fragment,{children:"Apache HBase™ Mailing Lists"});function i(r){const e={a:"a",h1:"h1",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...r.co [...]
+`,s.jsx(e.p,{children:"For each list, links are provided to subscribe, unsubscribe, and view archives."}),`
+`,s.jsxs(e.table,{children:[s.jsx(e.thead,{children:s.jsxs(e.tr,{children:[s.jsx(e.th,{children:"Name"}),s.jsx(e.th,{children:"Subscribe"}),s.jsx(e.th,{children:"Unsubscribe"}),s.jsx(e.th,{children:"Post"}),s.jsx(e.th,{children:"Archive"}),s.jsx(e.th,{children:"Other Archives"})]})}),s.jsxs(e.tbody,{children:[s.jsxs(e.tr,{children:[s.jsx(e.td,{children:"User List"}),s.jsx(e.td,{children:s.jsx(e.a,{href:"mailto:user-subscribe@hbase.apache.org",children:"Subscribe"})}),s.jsx(e.td,{children [...]
diff --git a/assets/manifest-dee6afce.js b/assets/manifest-dee6afce.js
new file mode 100644
index 00000000000..bb11b6c9881
--- /dev/null
+++ b/assets/manifest-dee6afce.js
@@ -0,0 +1 @@
+window.__reactRouterManifest={"entry":{"module":"/assets/entry.client-_CVK9qYI.js","imports":["/assets/chunk-EPOLDU6W-B5LwAila.js","/assets/index-FCA4GwU0.js"],"css":[]},"routes":{"root":{"id":"root","path":"","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":true,"module":"/assets/root-DCifVNB4.js","imports":["/assets/chunk-EPOLDU6W-B5LwAila.js","/assets/index-FCA4GwU0.js","/assets/theme-provider-BI6ghFmW.j [...]
\ No newline at end of file
diff --git a/assets/mdx-B01kYoV3.js b/assets/mdx-B01kYoV3.js
new file mode 100644
index 00000000000..25600c65630
--- /dev/null
+++ b/assets/mdx-B01kYoV3.js
@@ -0,0 +1,2 @@
+import{r as a,j as r,R}from"./chunk-EPOLDU6W-B5LwAila.js";import{L as ye,t as C,C as Ne,a as je,T as Ie,I as we,b as Re,d as Ee,e as B,u as V,f as Y,P as F,g as I,h as q,i as X,j as Se,k as _e,l as Fe,m as Ae,n as ke,o as Me}from"./index-BE31Pm92.js";var K=a.forwardRef(({href:e="#",external:t=e.match(/^\w+:/)||e.startsWith("//"),prefetch:n,children:o,...s},c)=>t?r.jsx("a",{ref:c,href:e,rel:"noreferrer noopener",target:"_blank",...s,children:o}):r.jsx(ye,{ref:c,href:e,prefetch:n,...s,chil [...]
+`)}),navigator.clipboard.writeText(i.textContent??"")});return r.jsx("button",{type:"button","data-checked":o||void 0,className:C(ke({className:"hover:text-fd-accent-foreground data-checked:text-fd-accent-foreground",size:"icon-xs"}),e),"aria-label":o?"Copied Text":"Copy Text",onClick:s,...n,children:o?r.jsx(Fe,{}):r.jsx(Ae,{})})}function gt({ref:e,...t}){const n=a.useRef(null),o=a.use($)!==null;return r.jsx(dt,{ref:he(n,e),...t,className:C("bg-fd-card rounded-xl border",!o&&"my-4",t.cla [...]
diff --git a/assets/mdx-components-5lzU89H3.js b/assets/mdx-components-5lzU89H3.js
new file mode 100644
index 00000000000..428095d2929
--- /dev/null
+++ b/assets/mdx-components-5lzU89H3.js
@@ -0,0 +1 @@
+import{j as t}from"./chunk-EPOLDU6W-B5LwAila.js";import{d as n}from"./mdx-B01kYoV3.js";import{c as m,L as i}from"./link-CDX6ZyVQ.js";import{E as c}from"./external-link-jmuPj2if.js";function x(r){return{...n,h1:e=>t.jsx("h1",{className:"mb-12 text-center text-4xl font-semibold tracking-tight text-balance md:text-6xl",...e}),h2:e=>t.jsx("h2",{className:"mt-12 mb-4 scroll-mt-28 text-3xl font-semibold tracking-tight md:text-4xl",...e}),h3:e=>t.jsx("h3",{className:"mt-8 mb-1 scroll-mt-28 text [...]
diff --git a/assets/meta-Brd_3t_h.js b/assets/meta-Brd_3t_h.js
new file mode 100644
index 00000000000..0c5fea96010
--- /dev/null
+++ b/assets/meta-Brd_3t_h.js
@@ -0,0 +1 @@
+const e="Multi-Page Documentation",t=["---Getting Started---","index","getting-started","external:[All docs for LLMs](/llms-full.txt)","---Configuration & Setup---","configuration","upgrading","shell","---Core Concepts---","datamodel","schema-design","regionserver-sizing","mapreduce","security","architecture","---Advanced Features---","inmemory-compaction","offheap-read-write","backup-restore","sync-replication","---APIs & Integration---","hbase-apis","external-apis","thrift-filter-langu [...]
diff --git a/assets/search-default-C2Ty3ReR.js b/assets/search-default-C2Ty3ReR.js
new file mode 100644
index 00000000000..e69949382a1
--- /dev/null
+++ b/assets/search-default-C2Ty3ReR.js
@@ -0,0 +1,2 @@
+const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/algolia-IZEDLPHE-2120h3C3.js","assets/chunk-OTD7MV33-qJr9DjGl.js","assets/orama-cloud-UZAPMPFV-DSsy8tIc.js","assets/chunk-ZMWYLUDP-oajMeTFk.js","assets/static-A2YJ5TXV-Xr-6Tl_Z.js","assets/serialization-BWi82uGp.js","assets/docs-layout-Cz5Eytfr.js","assets/chunk-EPOLDU6W-B5LwAila.js","assets/index-BKmmHxti.js","assets/index-BE31Pm92.js","assets/index-lnR2ABT4.js","assets/index-FCA4GwU0.js","assets/Combination-D-9Ny0bQ.js"]) [...]
+import{r as u,j as o}from"./chunk-EPOLDU6W-B5LwAila.js";import{u as w,_ as g,a as x}from"./index-BKmmHxti.js";import{S as E,a as L,b as v,d as I,e as T,f as A,g as O,h as R,i as V,T as C,j as P}from"./docs-layout-Cz5Eytfr.js";import"./index-BE31Pm92.js";import"./index-lnR2ABT4.js";import"./index-FCA4GwU0.js";import"./Combination-D-9Ny0bQ.js";function b(r,s=1e3){const[a,t]=u.useState(r);return u.useEffect(()=>{if(s===0)return;const c=window.setTimeout(()=>{t(r)},s);return()=>clearTimeout( [...]
diff --git a/assets/serialization-BWi82uGp.js b/assets/serialization-BWi82uGp.js
new file mode 100644
index 00000000000..1f850c822c5
--- /dev/null
+++ b/assets/serialization-BWi82uGp.js
@@ -0,0 +1 @@
+import{k,l as R,m as V,n as Q,s as J,o as Z,p as z,q as O,t as P,u as _,v as H,w as Y,x as m,y as $,D as ee}from"./docs-layout-Cz5Eytfr.js";function xe(e,t){return e.documentsStore.get(e.data.docs,t)}function te(e){return e.documentsStore.count(e.data.docs)}const M="fulltext",ne="hybrid",oe="vector";function se(e,t){return e[1]-t[1]}function ce(e,t){return t[1]-e[1]}function re(e="desc"){return e.toLowerCase()==="asc"?se:ce}function B(e,t,s){const n={},f=t.map(([d])=>d),u=e.documentsStor [...]
diff --git a/assets/source-repository-DaAQ9lC3.js b/assets/source-repository-DaAQ9lC3.js
new file mode 100644
index 00000000000..40f9e0848b7
--- /dev/null
+++ b/assets/source-repository-DaAQ9lC3.js
@@ -0,0 +1,14 @@
+import{j as e,w as r}from"./chunk-EPOLDU6W-B5LwAila.js";import{M as h}from"./mdx-components-5lzU89H3.js";import"./mdx-B01kYoV3.js";import"./index-BE31Pm92.js";import"./index-lnR2ABT4.js";import"./index-FCA4GwU0.js";import"./link-CDX6ZyVQ.js";import"./external-link-jmuPj2if.js";import"./createLucideIcon-BidaCVke.js";e.jsx(e.Fragment,{children:"Overview"}),e.jsx(e.Fragment,{children:"Web Browser Access"}),e.jsx(e.Fragment,{children:"Anonymous Access"}),e.jsx(e.Fragment,{children:"Developer [...]
+`,e.jsxs(s.p,{children:["Apache HBase™ uses ",e.jsx(s.a,{href:"https://git-scm.com/",children:"Git"})," to manage its source code. Instructions on Git use can be found at ",e.jsx(s.a,{href:"https://git-scm.com/documentation",children:"https://git-scm.com/documentation"}),"."]}),`
+`,e.jsx(s.h3,{id:"web-browser-access",children:"Web Browser Access"}),`
+`,e.jsx(s.p,{children:"The following is a link to a browsable version of the source repository:"}),`
+`,e.jsx(e.Fragment,{children:e.jsx(s.pre,{className:"shiki shiki-themes github-light github-dark",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabIndex:"0",icon:'<svg viewBox="0 0 24 24"><path d="M 6,1 C 4.354992,1 3,2.354992 3,4 v 16 c 0,1.645008 1.354992,3 3,3 h 12 c 1.645008,0 3,-1.354992 3,-3 V 8 7 A 1.0001,1.0001 0 0 0 20.707031,6.2929687 l -5,-5 A 1.0001,1.0001 0 0 0 15,1 h -1 z m 0,2 h 7 v 3 c 0,1.645008 1.354992, [...]
+`,e.jsx(s.p,{children:e.jsx(s.a,{href:"https://gitbox.apache.org/repos/asf?p=hbase.git",children:"Browse the repository"})}),`
+`,e.jsx(s.h3,{id:"anonymous-access",children:"Anonymous Access"}),`
+`,e.jsxs(s.p,{children:["The source can be checked out anonymously from Git with this command (See ",e.jsx(s.a,{href:"https://git-scm.com/docs/git-clone",children:"https://git-scm.com/docs/git-clone"}),"):"]}),`
+`,e.jsx(e.Fragment,{children:e.jsx(s.pre,{className:"shiki shiki-themes github-light github-dark",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabIndex:"0",icon:'<svg viewBox="0 0 24 24"><path d="m 4,4 a 1,1 0 0 0 -0.7070312,0.2929687 1,1 0 0 0 0,1.4140625 L 8.5859375,11 3.2929688,16.292969 a 1,1 0 0 0 0,1.414062 1,1 0 0 0 1.4140624,0 l 5.9999998,-6 a 1.0001,1.0001 0 0 0 0,-1.414062 L 4.7070312,4.2929687 A 1,1 0 0 0 4,4  [...]
+`,e.jsx(s.h3,{id:"developer-access",children:"Developer Access"}),`
+`,e.jsxs(s.p,{children:["Only project developers can access the Git tree via this method (See ",e.jsx(s.a,{href:"https://git-scm.com/docs/git-clone",children:"https://git-scm.com/docs/git-clone"}),")."]}),`
+`,e.jsx(e.Fragment,{children:e.jsx(s.pre,{className:"shiki shiki-themes github-light github-dark",style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},tabIndex:"0",icon:'<svg viewBox="0 0 24 24"><path d="m 4,4 a 1,1 0 0 0 -0.7070312,0.2929687 1,1 0 0 0 0,1.4140625 L 8.5859375,11 3.2929688,16.292969 a 1,1 0 0 0 0,1.414062 1,1 0 0 0 1.4140624,0 l 5.9999998,-6 a 1.0001,1.0001 0 0 0 0,-1.414062 L 4.7070312,4.2929687 A 1,1 0 0 0 4,4  [...]
+`,e.jsx(s.h3,{id:"access-from-behind-a-firewall",children:"Access from Behind a Firewall"}),`
+`,e.jsx(s.p,{children:"Refer to the documentation of the SCM used for more information about access behind a firewall."})]})}function n(i={}){const{wrapper:s}=i.components||{};return s?e.jsx(s,{...i,children:e.jsx(t,{...i})}):t(i)}function c(){return e.jsx(h,{Content:n,className:"mt-12"})}function u({}){return[{title:"Source Repository - Apache HBase"},{name:"description",content:"Access the Apache HBase source code repository."}]}const j=r(function(){return e.jsx(c,{})});export{j as def [...]
diff --git a/assets/sponsors-V9xw5KDQ.js b/assets/sponsors-V9xw5KDQ.js
new file mode 100644
index 00000000000..f886a895571
--- /dev/null
+++ b/assets/sponsors-V9xw5KDQ.js
@@ -0,0 +1,12 @@
+import{j as e,w as r}from"./chunk-EPOLDU6W-B5LwAila.js";import{M as s}from"./mdx-components-5lzU89H3.js";import"./mdx-B01kYoV3.js";import"./index-BE31Pm92.js";import"./index-lnR2ABT4.js";import"./index-FCA4GwU0.js";import"./link-CDX6ZyVQ.js";import"./external-link-jmuPj2if.js";import"./createLucideIcon-BidaCVke.js";e.jsx(e.Fragment,{children:"Sponsors"}),e.jsx(e.Fragment,{children:"Sponsoring the Apache Software Foundation"});function n(t){const o={a:"a",h1:"h1",h2:"h2",li:"li",p:"p",ul: [...]
+`,e.jsxs(o.p,{children:["First off, thanks to ",e.jsx(o.a,{href:"http://www.apache.org/foundation/thanks.html",children:"all who sponsor"})," our parent, the Apache Software Foundation."]}),`
+`,e.jsx(o.p,{children:"The below companies have been gracious enough to provide their commercial tool offerings free of charge to the Apache HBase™ project."}),`
+`,e.jsxs(o.ul,{children:[`
+`,e.jsxs(o.li,{children:["The crew at ",e.jsx(o.a,{href:"http://www.ej-technologies.com/",children:"ej-technologies"})," have been let us use ",e.jsx(o.a,{href:"http://www.ej-technologies.com/products/jprofiler/overview.html",children:"JProfiler"})," for years now."]}),`
+`,e.jsxs(o.li,{children:["The lads at ",e.jsx(o.a,{href:"http://headwaysoftware.com/",children:"headway software"})," have given us a license for ",e.jsx(o.a,{href:"http://headwaysoftware.com/products/?code=Restructure101",children:"Restructure101"})," so we can untangle our interdependency mess."]}),`
+`,e.jsxs(o.li,{children:[e.jsx(o.a,{href:"http://www.yourkit.com",children:"YourKit"})," allows us to use their ",e.jsx(o.a,{href:"http://www.yourkit.com/overview/index.jsp",children:"Java Profiler"}),"."]}),`
+`,e.jsxs(o.li,{children:["Some of us use ",e.jsx(o.a,{href:"http://www.jetbrains.com/idea",children:"IntelliJ IDEA"})," thanks to ",e.jsx(o.a,{href:"http://www.jetbrains.com/",children:"JetBrains"}),"."]}),`
+`,e.jsxs(o.li,{children:["Thank you to Boris at ",e.jsx(o.a,{href:"http://www.vectorportal.com/",children:"Vector Portal"})," for granting us a license on the ",e.jsx(o.a,{href:"http://www.vectorportal.com/subcategory/205/KILLER-WHALE-FREE-VECTOR.eps/ifile/9136/detailtest.asp",children:"image"})," on which our logo is based."]}),`
+`]}),`
+`,e.jsx(o.h2,{id:"sponsoring-the-apache-software-foundation",children:"Sponsoring the Apache Software Foundation"}),`
+`,e.jsxs(o.p,{children:["To contribute to the Apache Software Foundation, a good idea in our opinion, see the ",e.jsx(o.a,{href:"http://www.apache.org/foundation/sponsorship.html",children:"ASF Sponsorship"})," page."]})]})}function a(t={}){const{wrapper:o}=t.components||{};return o?e.jsx(o,{...t,children:e.jsx(n,{...t})}):n(t)}function i(){return e.jsx(s,{Content:a,className:"mt-12"})}function j({}){return[{title:"Sponsors - Apache HBase"},{name:"description",content:"Companies and orga [...]
diff --git a/assets/static-A2YJ5TXV-Xr-6Tl_Z.js b/assets/static-A2YJ5TXV-Xr-6Tl_Z.js
new file mode 100644
index 00000000000..9f9f3bd7c13
--- /dev/null
+++ b/assets/static-A2YJ5TXV-Xr-6Tl_Z.js
@@ -0,0 +1 @@
+import{r as b}from"./chunk-ZMWYLUDP-oajMeTFk.js";import{c as g}from"./chunk-OTD7MV33-qJr9DjGl.js";import{s as f,g as y,l as p}from"./serialization-BWi82uGp.js";import{c as w}from"./docs-layout-Cz5Eytfr.js";import"./chunk-EPOLDU6W-B5LwAila.js";import"./index-BKmmHxti.js";import"./index-BE31Pm92.js";import"./index-lnR2ABT4.js";import"./index-FCA4GwU0.js";import"./Combination-D-9Ny0bQ.js";async function x(o,e,t={}){const i=g(e);return(await f(o,{term:e,tolerance:1,...t,boost:{title:2,..."bo [...]
diff --git a/assets/static-KcbJF3xh.js b/assets/static-KcbJF3xh.js
new file mode 100644
index 00000000000..78af6774f92
--- /dev/null
+++ b/assets/static-KcbJF3xh.js
@@ -0,0 +1 @@
+import{c as C}from"./chunk-OTD7MV33-qJr9DjGl.js";import{c as H,r as W}from"./docs-layout-Cz5Eytfr.js";import{s as Q,g as v,l as M}from"./serialization-BWi82uGp.js";import"./chunk-EPOLDU6W-B5LwAila.js";import"./index-BKmmHxti.js";import"./index-BE31Pm92.js";import"./index-lnR2ABT4.js";import"./index-FCA4GwU0.js";import"./Combination-D-9Ny0bQ.js";const L=new Map;async function P({from:u="/api/search",initOrama:c=s=>H({schema:{_:"string"},language:s})}){const s=u,d=L.get(s);if(d)return d;as [...]
diff --git a/books/apache-hbase-reference-guide-dark-mode.pdf b/books/apache-hbase-reference-guide-dark-mode.pdf
index 2030c5c3782..c97e53eda1b 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 110459e1bca..2bda03cdac0 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 0cf697c848a..f8e24234ee6 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-04-12
+ | 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-04-18
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
@@ -109,10 +109,10 @@
 <th><img src="images/icon_warning_sml.gif" />&#160;Warnings</th>
 <th><img src="images/icon_error_sml.gif" />&#160;Errors</th></tr>
 <tr class="b">
-<td>5266</td>
+<td>5267</td>
 <td>0</td>
 <td>0</td>
-<td>1846</td></tr></table></section><section><a id="Files"></a>
+<td>1844</td></tr></table></section><section><a id="Files"></a>
 <h2>Files</h2>
 <table class="table table-striped">
 <tr class="a">
@@ -2796,856 +2796,851 @@
 <td>0</td>
 <td>1</td></tr>
 <tr class="a">
-<td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2FTestUser.java">org/apache/hadoop/hbase/security/TestUser.java</a></td>
-<td>0</td>
-<td>0</td>
-<td>1</td></tr>
-<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2FUser.java">org/apache/hadoop/hbase/security/User.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Faccess.2FAccessControlClient.java">org/apache/hadoop/hbase/security/access/AccessControlClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Faccess.2FAccessControlFilter.java">org/apache/hadoop/hbase/security/access/AccessControlFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Faccess.2FAccessControlUtil.java">org/apache/hadoop/hbase/security/access/AccessControlUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Faccess.2FAccessController.java">org/apache/hadoop/hbase/security/access/AccessController.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Faccess.2FAuthManager.java">org/apache/hadoop/hbase/security/access/AuthManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Faccess.2FSecureTestUtil.java">org/apache/hadoop/hbase/security/access/SecureTestUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Faccess.2FShadedAccessControlUtil.java">org/apache/hadoop/hbase/security/access/ShadedAccessControlUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Faccess.2FTestAccessController.java">org/apache/hadoop/hbase/security/access/TestAccessController.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Faccess.2FTestAccessController2.java">org/apache/hadoop/hbase/security/access/TestAccessController2.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Faccess.2FTestCellACLs.java">org/apache/hadoop/hbase/security/access/TestCellACLs.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Faccess.2FTestHDFSAclHelper.java">org/apache/hadoop/hbase/security/access/TestHDFSAclHelper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Faccess.2FTestNamespaceCommands.java">org/apache/hadoop/hbase/security/access/TestNamespaceCommands.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Faccess.2FTestWithDisabledAuthorization.java">org/apache/hadoop/hbase/security/access/TestWithDisabledAuthorization.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Faccess.2FZKPermissionWatcher.java">org/apache/hadoop/hbase/security/access/ZKPermissionWatcher.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Fprovider.2FCustomSaslAuthenticationProviderTestBase.java">org/apache/hadoop/hbase/security/provider/CustomSaslAuthenticationProviderTestBase.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Fprovider.2FGssSaslServerAuthenticationProvider.java">org/apache/hadoop/hbase/security/provider/GssSaslServerAuthenticationProvider.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Ftoken.2FSecureTestCluster.java">org/apache/hadoop/hbase/security/token/SecureTestCluster.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Ftoken.2FTestZKSecretWatcher.java">org/apache/hadoop/hbase/security/token/TestZKSecretWatcher.java</a></td>
 <td>0</td>
 <td>0</td>
-<td>2</td></tr>
-<tr class="a">
+<td>1</td></tr>
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Ftoken.2FTestZKSecretWatcherRefreshKeys.java">org/apache/hadoop/hbase/security/token/TestZKSecretWatcherRefreshKeys.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Ftoken.2FTokenUtil.java">org/apache/hadoop/hbase/security/token/TokenUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Fvisibility.2FCellVisibility.java">org/apache/hadoop/hbase/security/visibility/CellVisibility.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Fvisibility.2FDefaultVisibilityLabelServiceImpl.java">org/apache/hadoop/hbase/security/visibility/DefaultVisibilityLabelServiceImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Fvisibility.2FExpAsStringVisibilityLabelServiceImpl.java">org/apache/hadoop/hbase/security/visibility/ExpAsStringVisibilityLabelServiceImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Fvisibility.2FExpressionParser.java">org/apache/hadoop/hbase/security/visibility/ExpressionParser.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Fvisibility.2FLabelFilteringScanLabelGenerator.java">org/apache/hadoop/hbase/security/visibility/LabelFilteringScanLabelGenerator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Fvisibility.2FTestExpressionExpander.java">org/apache/hadoop/hbase/security/visibility/TestExpressionExpander.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Fvisibility.2FTestExpressionParser.java">org/apache/hadoop/hbase/security/visibility/TestExpressionParser.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Fvisibility.2FTestVisibilityLabelsReplication.java">org/apache/hadoop/hbase/security/visibility/TestVisibilityLabelsReplication.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Fvisibility.2FTestVisibilityLabelsWithDefaultVisLabelService.java">org/apache/hadoop/hbase/security/visibility/TestVisibilityLabelsWithDefaultVisLabelService.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Fvisibility.2FTestVisibilityLabelsWithDeletes.java">org/apache/hadoop/hbase/security/visibility/TestVisibilityLabelsWithDeletes.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Fvisibility.2FTestVisibilityLablesWithGroups.java">org/apache/hadoop/hbase/security/visibility/TestVisibilityLablesWithGroups.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Fvisibility.2FVisibilityClient.java">org/apache/hadoop/hbase/security/visibility/VisibilityClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Fvisibility.2FVisibilityConstants.java">org/apache/hadoop/hbase/security/visibility/VisibilityConstants.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Fvisibility.2FVisibilityController.java">org/apache/hadoop/hbase/security/visibility/VisibilityController.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Fvisibility.2FVisibilityLabelServiceManager.java">org/apache/hadoop/hbase/security/visibility/VisibilityLabelServiceManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Fvisibility.2FVisibilityLabelsCache.java">org/apache/hadoop/hbase/security/visibility/VisibilityLabelsCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Fvisibility.2FVisibilityLabelsValidator.java">org/apache/hadoop/hbase/security/visibility/VisibilityLabelsValidator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Fvisibility.2FVisibilityNewVersionBehaivorTracker.java">org/apache/hadoop/hbase/security/visibility/VisibilityNewVersionBehaivorTracker.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Fvisibility.2FVisibilityTestUtil.java">org/apache/hadoop/hbase/security/visibility/VisibilityTestUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Fvisibility.2FVisibilityUtils.java">org/apache/hadoop/hbase/security/visibility/VisibilityUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fshaded.2Fprotobuf.2FProtobufUtil.java">org/apache/hadoop/hbase/shaded/protobuf/ProtobufUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>18</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fshaded.2Fprotobuf.2FResponseConverter.java">org/apache/hadoop/hbase/shaded/protobuf/ResponseConverter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fslowlog.2FSlowLogTableAccessor.java">org/apache/hadoop/hbase/slowlog/SlowLogTableAccessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsnapshot.2FExportSnapshot.java">org/apache/hadoop/hbase/snapshot/ExportSnapshot.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsnapshot.2FMobSnapshotTestingUtils.java">org/apache/hadoop/hbase/snapshot/MobSnapshotTestingUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsnapshot.2FRestoreSnapshotHelper.java">org/apache/hadoop/hbase/snapshot/RestoreSnapshotHelper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsnapshot.2FSnapshotDescriptionUtils.java">org/apache/hadoop/hbase/snapshot/SnapshotDescriptionUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsnapshot.2FSnapshotInfo.java">org/apache/hadoop/hbase/snapshot/SnapshotInfo.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsnapshot.2FSnapshotManifest.java">org/apache/hadoop/hbase/snapshot/SnapshotManifest.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsnapshot.2FSnapshotManifestV2.java">org/apache/hadoop/hbase/snapshot/SnapshotManifestV2.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fsnapshot.2FSnapshotTestingUtils.java">org/apache/hadoop/hbase/snapshot/SnapshotTestingUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Ftest.2FIntegrationTestBigLinkedList.java">org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>17</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Ftest.2FIntegrationTestBigLinkedListWithVisibility.java">org/apache/hadoop/hbase/test/IntegrationTestBigLinkedListWithVisibility.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Ftest.2FIntegrationTestLoadAndVerify.java">org/apache/hadoop/hbase/test/IntegrationTestLoadAndVerify.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Ftest.2FIntegrationTestTimeBoundedMultiGetRequestsWithRegionReplicas.java">org/apache/hadoop/hbase/test/IntegrationTestTimeBoundedMultiGetRequestsWithRegionReplicas.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Ftest.2FIntegrationTestTimeBoundedRequestsWithRegionReplicas.java">org/apache/hadoop/hbase/test/IntegrationTestTimeBoundedRequestsWithRegionReplicas.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Ftest.2FIntegrationTestWithCellVisibilityLoadAndVerify.java">org/apache/hadoop/hbase/test/IntegrationTestWithCellVisibilityLoadAndVerify.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Ftest.2Futil.2Fwarc.2FWARCInputFormat.java">org/apache/hadoop/hbase/test/util/warc/WARCInputFormat.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Ftestclassification.2FClientTests.java">org/apache/hadoop/hbase/testclassification/ClientTests.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Ftestclassification.2FCoprocessorTests.java">org/apache/hadoop/hbase/testclassification/CoprocessorTests.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Ftestclassification.2FFilterTests.java">org/apache/hadoop/hbase/testclassification/FilterTests.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Ftestclassification.2FFlakeyTests.java">org/apache/hadoop/hbase/testclassification/FlakeyTests.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Ftestclassification.2FIOTests.java">org/apache/hadoop/hbase/testclassification/IOTests.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Ftestclassification.2FIntegrationTests.java">org/apache/hadoop/hbase/testclassification/IntegrationTests.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Ftestclassification.2FLargeTests.java">org/apache/hadoop/hbase/testclassification/LargeTests.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Ftestclassification.2FMapReduceTests.java">org/apache/hadoop/hbase/testclassification/MapReduceTests.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Ftestclassification.2FMasterTests.java">org/apache/hadoop/hbase/testclassification/MasterTests.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Ftestclassification.2FMediumTests.java">org/apache/hadoop/hbase/testclassification/MediumTests.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Ftestclassification.2FMetricsTests.java">org/apache/hadoop/hbase/testclassification/MetricsTests.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Ftestclassification.2FMiscTests.java">org/apache/hadoop/hbase/testclassification/MiscTests.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Ftestclassification.2FRPCTests.java">org/apache/hadoop/hbase/testclassification/RPCTests.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Ftestclassification.2FRSGroupTests.java">org/apache/hadoop/hbase/testclassification/RSGroupTests.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Ftestclassification.2FRegionServerTests.java">org/apache/hadoop/hbase/testclassification/RegionServerTests.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Ftestclassification.2FReplicationTests.java">org/apache/hadoop/hbase/testclassification/ReplicationTests.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Ftestclassification.2FRestTests.java">org/apache/hadoop/hbase/testclassification/RestTests.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Ftestclassification.2FSecurityTests.java">org/apache/hadoop/hbase/testclassification/SecurityTests.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Ftestclassification.2FSmallTests.java">org/apache/hadoop/hbase/testclassification/SmallTests.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Ftestclassification.2FVerySlowMapReduceTests.java">org/apache/hadoop/hbase/testclassification/VerySlowMapReduceTests.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Ftestclassification.2FVerySlowRegionServerTests.java">org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Ftestclassification.2FZKTests.java">org/apache/hadoop/hbase/testclassification/ZKTests.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fthrift.2FTestThriftServer.java">org/apache/hadoop/hbase/thrift/TestThriftServer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fthrift2.2FDemoClient.java">org/apache/hadoop/hbase/thrift2/DemoClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Ftool.2FMapreduceTestingShim.java">org/apache/hadoop/hbase/tool/MapreduceTestingShim.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Ftool.2Fcoprocessor.2FCoprocessorValidatorTest.java">org/apache/hadoop/hbase/tool/coprocessor/CoprocessorValidatorTest.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Ftrace.2FOpenTelemetryClassRule.java">org/apache/hadoop/hbase/trace/OpenTelemetryClassRule.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Ftypes.2FTestStruct.java">org/apache/hadoop/hbase/types/TestStruct.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FAbstractHBaseTool.java">org/apache/hadoop/hbase/util/AbstractHBaseTool.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FAbstractHBaseToolTest.java">org/apache/hadoop/hbase/util/AbstractHBaseToolTest.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FAddressing.java">org/apache/hadoop/hbase/util/Addressing.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FAvlUtil.java">org/apache/hadoop/hbase/util/AvlUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FBoundedPriorityBlockingQueue.java">org/apache/hadoop/hbase/util/BoundedPriorityBlockingQueue.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FBytes.java">org/apache/hadoop/hbase/util/Bytes.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>33</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FClassSize.java">org/apache/hadoop/hbase/util/ClassSize.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FClasses.java">org/apache/hadoop/hbase/util/Classes.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FCompressionTest.java">org/apache/hadoop/hbase/util/CompressionTest.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FConcurrentMapUtils.java">org/apache/hadoop/hbase/util/ConcurrentMapUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FConnectionCache.java">org/apache/hadoop/hbase/util/ConnectionCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FCoprocessorClassLoader.java">org/apache/hadoop/hbase/util/CoprocessorClassLoader.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FDirectMemoryUtils.java">org/apache/hadoop/hbase/util/DirectMemoryUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FEncryptionTest.java">org/apache/hadoop/hbase/util/EncryptionTest.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FEnvironmentEdgeManager.java">org/apache/hadoop/hbase/util/EnvironmentEdgeManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FFSUtils.java">org/apache/hadoop/hbase/util/FSUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FGetJavaProperty.java">org/apache/hadoop/hbase/util/GetJavaProperty.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FHBaseConfTool.java">org/apache/hadoop/hbase/util/HBaseConfTool.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FHBaseFsck.java">org/apache/hadoop/hbase/util/HBaseFsck.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>31</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FHBaseFsckRepair.java">org/apache/hadoop/hbase/util/HBaseFsckRepair.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FHBaseHomePath.java">org/apache/hadoop/hbase/util/HBaseHomePath.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FHFileArchiveTestingUtil.java">org/apache/hadoop/hbase/util/HFileArchiveTestingUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FHFileArchiveUtil.java">org/apache/hadoop/hbase/util/HFileArchiveUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FHFileTestUtil.java">org/apache/hadoop/hbase/util/HFileTestUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FHashedBytes.java">org/apache/hadoop/hbase/util/HashedBytes.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FJSONBean.java">org/apache/hadoop/hbase/util/JSONBean.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FJVM.java">org/apache/hadoop/hbase/util/JVM.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FJVMClusterUtil.java">org/apache/hadoop/hbase/util/JVMClusterUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FJenkinsHash.java">org/apache/hadoop/hbase/util/JenkinsHash.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FJvmPauseMonitor.java">org/apache/hadoop/hbase/util/JvmPauseMonitor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FKerberosUtils.java">org/apache/hadoop/hbase/util/KerberosUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FKeyLocker.java">org/apache/hadoop/hbase/util/KeyLocker.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FLoadTestDataGeneratorWithMOB.java">org/apache/hadoop/hbase/util/LoadTestDataGeneratorWithMOB.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FLoadTestTool.java">org/apache/hadoop/hbase/util/LoadTestTool.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FLoadTestUtil.java">org/apache/hadoop/hbase/util/LoadTestUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FLogMonitoring.java">org/apache/hadoop/hbase/util/LogMonitoring.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FMD5Hash.java">org/apache/hadoop/hbase/util/MD5Hash.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FModifyRegionUtils.java">org/apache/hadoop/hbase/util/ModifyRegionUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FMultiThreadedAction.java">org/apache/hadoop/hbase/util/MultiThreadedAction.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FMultiThreadedWriterBase.java">org/apache/hadoop/hbase/util/MultiThreadedWriterBase.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FOrderedBytes.java">org/apache/hadoop/hbase/util/OrderedBytes.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>37</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FPairOfSameType.java">org/apache/hadoop/hbase/util/PairOfSameType.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FPrettyPrinter.java">org/apache/hadoop/hbase/util/PrettyPrinter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FReflectionUtils.java">org/apache/hadoop/hbase/util/ReflectionUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FRegionMover.java">org/apache/hadoop/hbase/util/RegionMover.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FRegionSplitCalculator.java">org/apache/hadoop/hbase/util/RegionSplitCalculator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FRegionSplitter.java">org/apache/hadoop/hbase/util/RegionSplitter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FServerCommandLine.java">org/apache/hadoop/hbase/util/ServerCommandLine.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FShutdownHookManager.java">org/apache/hadoop/hbase/util/ShutdownHookManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FSimpleByteRange.java">org/apache/hadoop/hbase/util/SimpleByteRange.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FSimpleMutableByteRange.java">org/apache/hadoop/hbase/util/SimpleMutableByteRange.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FSimplePositionedMutableByteRange.java">org/apache/hadoop/hbase/util/SimplePositionedMutableByteRange.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FStealJobQueue.java">org/apache/hadoop/hbase/util/StealJobQueue.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FTestAvlUtil.java">org/apache/hadoop/hbase/util/TestAvlUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FTestBloomFilterChunk.java">org/apache/hadoop/hbase/util/TestBloomFilterChunk.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FTestFSUtils.java">org/apache/hadoop/hbase/util/TestFSUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FTestIdLock.java">org/apache/hadoop/hbase/util/TestIdLock.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FTestIdReadWriteLockWithObjectPool.java">org/apache/hadoop/hbase/util/TestIdReadWriteLockWithObjectPool.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FTestRecoverLeaseFSUtils.java">org/apache/hadoop/hbase/util/TestRecoverLeaseFSUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FTestRegionMover3.java">org/apache/hadoop/hbase/util/TestRegionMover3.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FTestRegionMoverWithRSGroupEnable.java">org/apache/hadoop/hbase/util/TestRegionMoverWithRSGroupEnable.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FTestServerHttpUtils.java">org/apache/hadoop/hbase/util/TestServerHttpUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FThreads.java">org/apache/hadoop/hbase/util/Threads.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FTriple.java">org/apache/hadoop/hbase/util/Triple.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FVersionInfo.java">org/apache/hadoop/hbase/util/VersionInfo.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2FWritables.java">org/apache/hadoop/hbase/util/Writables.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2Fbulkdatagenerator.2FBulkDataGeneratorInputFormat.java">org/apache/hadoop/hbase/util/bulkdatagenerator/BulkDataGeneratorInputFormat.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Futil.2Fhbck.2FHbckTestingUtil.java">org/apache/hadoop/hbase/util/hbck/HbckTestingUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fwal.2FBoundedGroupingStrategy.java">org/apache/hadoop/hbase/wal/BoundedGroupingStrategy.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fwal.2FDisabledWALProvider.java">org/apache/hadoop/hbase/wal/DisabledWALProvider.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fwal.2FIOTestProvider.java">org/apache/hadoop/hbase/wal/IOTestProvider.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fwal.2FTestWALFactory.java">org/apache/hadoop/hbase/wal/TestWALFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fwal.2FTestWALRootDir.java">org/apache/hadoop/hbase/wal/TestWALRootDir.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fwal.2FTestWALSplit.java">org/apache/hadoop/hbase/wal/TestWALSplit.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fwal.2FWALPerformanceEvaluation.java">org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fwal.2FWALSplitter.java">org/apache/hadoop/hbase/wal/WALSplitter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fzookeeper.2FTestZKLeaderManager.java">org/apache/hadoop/hbase/zookeeper/TestZKLeaderManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fzookeeper.2FTestZKMainServer.java">org/apache/hadoop/hbase/zookeeper/TestZKMainServer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fzookeeper.2FTestZKMulti.java">org/apache/hadoop/hbase/zookeeper/TestZKMulti.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fzookeeper.2FTestZKUtil.java">org/apache/hadoop/hbase/zookeeper/TestZKUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fzookeeper.2FTestZooKeeperACL.java">org/apache/hadoop/hbase/zookeeper/TestZooKeeperACL.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fzookeeper.2FZKMetadata.java">org/apache/hadoop/hbase/zookeeper/ZKMetadata.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.2Fapache.2Fhadoop.2Fhbase.2Fzookeeper.2FZNodePaths.java">org/apache/hadoop/hbase/zookeeper/ZNodePaths.java</a></td>
 <td>0</td>
 <td>0</td>
@@ -3719,7 +3714,7 @@
 <tr class="a">
 <td>imports</td>
 <td><a class="externalLink" href="https://checkstyle.org/checks/imports/avoidstarimport.html">AvoidStarImport</a></td>
-<td>12</td>
+<td>11</td>
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td></tr>
 <tr class="b">
 <td></td>
@@ -3761,7 +3756,7 @@
 <tr class="b">
 <td></td>
 <td><a class="externalLink" href="https://checkstyle.org/checks/sizes/methodlength.html">MethodLength</a></td>
-<td>62</td>
+<td>61</td>
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td></tr>
 <tr class="a">
 <td>whitespace</td>
@@ -3994,61 +3989,61 @@
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>518</td></tr>
+<td>524</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>522</td></tr>
+<td>528</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>blocks</td>
 <td>EmptyBlock</td>
 <td>Must have at least one statement.</td>
-<td>1036</td></tr>
+<td>1042</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>1251</td></tr>
+<td>1257</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>2048</td></tr>
+<td>2054</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>3385</td></tr>
+<td>3391</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>3387</td></tr>
+<td>3393</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>3418</td></tr>
+<td>3424</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>3457</td></tr>
+<td>3463</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>3459</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2FHBaseTestingUtility.java"></a>
+<td>3465</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2FHBaseTestingUtility.java"></a>
 <h3>org/apache/hadoop/hbase/HBaseTestingUtility.java</h3>
 <table class="table table-striped">
 <tr class="a">
@@ -9786,7 +9781,7 @@
 <td>design</td>
 <td>FinalClass</td>
 <td>Class AbortServer should be declared as final.</td>
-<td>64</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fkeymeta.2FKeymetaTableAccessor.java"></a>
+<td>58</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fkeymeta.2FKeymetaTableAccessor.java"></a>
 <h3>org/apache/hadoop/hbase/keymeta/KeymetaTableAccessor.java</h3>
 <table class="table table-striped">
 <tr class="a">
@@ -11555,7 +11550,7 @@
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>sizes</td>
 <td>MethodLength</td>
-<td>Method balanceTable length is 182 lines (max allowed is 150).</td>
+<td>Method balanceTable length is 185 lines (max allowed is 150).</td>
 <td>565</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fmaster.2Fbalancer.2FTestBaseLoadBalancer.java"></a>
 <h3>org/apache/hadoop/hbase/master/balancer/TestBaseLoadBalancer.java</h3>
 <table class="table table-striped">
@@ -12226,7 +12221,7 @@
 <td>design</td>
 <td>HideUtilityClassConstructor</td>
 <td>Utility classes should not have a public or default constructor.</td>
-<td>46</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fmob.2FRSMobFileCleanerChore.java"></a>
+<td>48</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fmob.2FRSMobFileCleanerChore.java"></a>
 <h3>org/apache/hadoop/hbase/mob/RSMobFileCleanerChore.java</h3>
 <table class="table table-striped">
 <tr class="a">
@@ -14586,55 +14581,55 @@
 <td>blocks</td>
 <td>EmptyBlock</td>
 <td>Must have at least one statement.</td>
-<td>4526</td></tr>
+<td>4535</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>design</td>
 <td>FinalClass</td>
 <td>Class PutThread should be declared as final.</td>
-<td>4750</td></tr>
+<td>4759</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>4922</td></tr>
+<td>4931</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>blocks</td>
 <td>EmptyBlock</td>
 <td>Must have at least one statement.</td>
-<td>4985</td></tr>
+<td>4994</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
-<td>5136</td></tr>
+<td>5145</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
-<td>5147</td></tr>
+<td>5156</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
-<td>5148</td></tr>
+<td>5157</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>5166</td></tr>
+<td>5175</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'for' construct must use '{}'s.</td>
-<td>5855</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fregionserver.2FTestHRegionFileSystem.java"></a>
+<td>5887</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fregionserver.2FTestHRegionFileSystem.java"></a>
 <h3>org/apache/hadoop/hbase/regionserver/TestHRegionFileSystem.java</h3>
 <table class="table table-striped">
 <tr class="a">
@@ -16304,21 +16299,7 @@
 <td>design</td>
 <td>HideUtilityClassConstructor</td>
 <td>Utility classes should not have a public or default constructor.</td>
-<td>37</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2FTestUser.java"></a>
-<h3>org/apache/hadoop/hbase/security/TestUser.java</h3>
-<table class="table table-striped">
-<tr class="a">
-<th>Severity</th>
-<th>Category</th>
-<th>Rule</th>
-<th>Message</th>
-<th>Line</th></tr>
-<tr class="b">
-<td><img src="images/icon_error_sml.gif" />&#160;Error</td>
-<td>imports</td>
-<td>AvoidStarImport</td>
-<td>Using the '.*' form of import should be avoided - org.junit.Assert.*.</td>
-<td>20</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2FUser.java"></a>
+<td>37</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2FUser.java"></a>
 <h3>org/apache/hadoop/hbase/security/User.java</h3>
 <table class="table table-striped">
 <tr class="a">
@@ -16468,19 +16449,19 @@
 <td>blocks</td>
 <td>EmptyBlock</td>
 <td>Must have at least one statement.</td>
-<td>930</td></tr>
+<td>921</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>sizes</td>
 <td>MethodLength</td>
 <td>Method testPostGrantRevoke length is 243 lines (max allowed is 150).</td>
-<td>1344</td></tr>
+<td>1335</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>sizes</td>
 <td>MethodLength</td>
 <td>Method testCheckPermissions length is 160 lines (max allowed is 150).</td>
-<td>1810</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Faccess.2FTestAccessController2.java"></a>
+<td>1800</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Faccess.2FTestAccessController2.java"></a>
 <h3>org/apache/hadoop/hbase/security/access/TestAccessController2.java</h3>
 <table class="table table-striped">
 <tr class="a">
@@ -16494,13 +16475,13 @@
 <td>blocks</td>
 <td>EmptyBlock</td>
 <td>Must have at least one statement.</td>
-<td>304</td></tr>
+<td>299</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>blocks</td>
 <td>EmptyBlock</td>
 <td>Must have at least one statement.</td>
-<td>330</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Faccess.2FTestCellACLs.java"></a>
+<td>325</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Faccess.2FTestCellACLs.java"></a>
 <h3>org/apache/hadoop/hbase/security/access/TestCellACLs.java</h3>
 <table class="table table-striped">
 <tr class="a">
@@ -16514,7 +16495,7 @@
 <td>sizes</td>
 <td>MethodLength</td>
 <td>Method testCellPermissions length is 220 lines (max allowed is 150).</td>
-<td>151</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Faccess.2FTestHDFSAclHelper.java"></a>
+<td>146</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Faccess.2FTestHDFSAclHelper.java"></a>
 <h3>org/apache/hadoop/hbase/security/access/TestHDFSAclHelper.java</h3>
 <table class="table table-striped">
 <tr class="a">
@@ -16542,25 +16523,25 @@
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 103).</td>
-<td>253</td></tr>
+<td>248</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 106).</td>
-<td>254</td></tr>
+<td>249</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 102).</td>
-<td>255</td></tr>
+<td>250</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 116).</td>
-<td>256</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Faccess.2FTestWithDisabledAuthorization.java"></a>
+<td>251</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Faccess.2FTestWithDisabledAuthorization.java"></a>
 <h3>org/apache/hadoop/hbase/security/access/TestWithDisabledAuthorization.java</h3>
 <table class="table table-striped">
 <tr class="a">
@@ -16574,37 +16555,37 @@
 <td>sizes</td>
 <td>MethodLength</td>
 <td>Method testCheckPermissions length is 162 lines (max allowed is 150).</td>
-<td>235</td></tr>
+<td>230</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>sizes</td>
 <td>MethodLength</td>
 <td>Method testPassiveMasterOperations length is 296 lines (max allowed is 150).</td>
-<td>458</td></tr>
+<td>453</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 103).</td>
-<td>684</td></tr>
+<td>679</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 106).</td>
-<td>685</td></tr>
+<td>680</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 102).</td>
-<td>686</td></tr>
+<td>681</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 116).</td>
-<td>687</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Faccess.2FZKPermissionWatcher.java"></a>
+<td>682</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Faccess.2FZKPermissionWatcher.java"></a>
 <h3>org/apache/hadoop/hbase/security/access/ZKPermissionWatcher.java</h3>
 <table class="table table-striped">
 <tr class="a">
@@ -16632,7 +16613,7 @@
 <td>design</td>
 <td>FinalClass</td>
 <td>Class InMemoryServerProviderCallbackHandler should be declared as final.</td>
-<td>295</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Fprovider.2FGssSaslServerAuthenticationProvider.java"></a>
+<td>298</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Fprovider.2FGssSaslServerAuthenticationProvider.java"></a>
 <h3>org/apache/hadoop/hbase/security/provider/GssSaslServerAuthenticationProvider.java</h3>
 <table class="table table-striped">
 <tr class="a">
@@ -16660,7 +16641,7 @@
 <td>design</td>
 <td>HideUtilityClassConstructor</td>
 <td>Utility classes should not have a public or default constructor.</td>
-<td>36</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Ftoken.2FTestZKSecretWatcher.java"></a>
+<td>35</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Ftoken.2FTestZKSecretWatcher.java"></a>
 <h3>org/apache/hadoop/hbase/security/token/TestZKSecretWatcher.java</h3>
 <table class="table table-striped">
 <tr class="a">
@@ -16674,13 +16655,7 @@
 <td>design</td>
 <td>FinalClass</td>
 <td>Class MockAbortable should be declared as final.</td>
-<td>62</td></tr>
-<tr class="a">
-<td><img src="images/icon_error_sml.gif" />&#160;Error</td>
-<td>sizes</td>
-<td>MethodLength</td>
-<td>Method testKeyUpdate length is 151 lines (max allowed is 150).</td>
-<td>137</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Ftoken.2FTestZKSecretWatcherRefreshKeys.java"></a>
+<td>57</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Ftoken.2FTestZKSecretWatcherRefreshKeys.java"></a>
 <h3>org/apache/hadoop/hbase/security/token/TestZKSecretWatcherRefreshKeys.java</h3>
 <table class="table table-striped">
 <tr class="a">
@@ -16694,7 +16669,7 @@
 <td>design</td>
 <td>FinalClass</td>
 <td>Class MockAbortable should be declared as final.</td>
-<td>54</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Ftoken.2FTokenUtil.java"></a>
+<td>51</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Ftoken.2FTokenUtil.java"></a>
 <h3>org/apache/hadoop/hbase/security/token/TokenUtil.java</h3>
 <table class="table table-striped">
 <tr class="a">
@@ -16828,7 +16803,7 @@
 <td>sizes</td>
 <td>MethodLength</td>
 <td>Method testPositiveCases length is 359 lines (max allowed is 150).</td>
-<td>41</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Fvisibility.2FTestExpressionParser.java"></a>
+<td>36</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Fvisibility.2FTestExpressionParser.java"></a>
 <h3>org/apache/hadoop/hbase/security/visibility/TestExpressionParser.java</h3>
 <table class="table table-striped">
 <tr class="a">
@@ -16842,7 +16817,7 @@
 <td>sizes</td>
 <td>MethodLength</td>
 <td>Method testPositiveCases length is 253 lines (max allowed is 150).</td>
-<td>44</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Fvisibility.2FTestVisibilityLabelsReplication.java"></a>
+<td>39</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Fvisibility.2FTestVisibilityLabelsReplication.java"></a>
 <h3>org/apache/hadoop/hbase/security/visibility/TestVisibilityLabelsReplication.java</h3>
 <table class="table table-striped">
 <tr class="a">
@@ -16856,7 +16831,7 @@
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
-<td>122</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Fvisibility.2FTestVisibilityLabelsWithDefaultVisLabelService.java"></a>
+<td>112</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Fvisibility.2FTestVisibilityLabelsWithDefaultVisLabelService.java"></a>
 <h3>org/apache/hadoop/hbase/security/visibility/TestVisibilityLabelsWithDefaultVisLabelService.java</h3>
 <table class="table table-striped">
 <tr class="a">
@@ -16870,7 +16845,7 @@
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'else' construct must use '{}'s.</td>
-<td>148</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Fvisibility.2FTestVisibilityLabelsWithDeletes.java"></a>
+<td>154</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Fvisibility.2FTestVisibilityLabelsWithDeletes.java"></a>
 <h3>org/apache/hadoop/hbase/security/visibility/TestVisibilityLabelsWithDeletes.java</h3>
 <table class="table table-striped">
 <tr class="a">
@@ -16883,8 +16858,8 @@
 <td><img src="images/icon_error_sml.gif" />&#160;Error</td>
 <td>sizes</td>
 <td>MethodLength</td>
-<td>Method testDeleteColumnLatestWithNoCellVisibility length is 155 lines (max allowed is 150).</td>
-<td>2582</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Fvisibility.2FTestVisibilityLablesWithGroups.java"></a>
+<td>Method testDeleteColumnLatestWithNoCellVisibility length is 156 lines (max allowed is 150).</td>
+<td>2621</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Fvisibility.2FTestVisibilityLablesWithGroups.java"></a>
 <h3>org/apache/hadoop/hbase/security/visibility/TestVisibilityLablesWithGroups.java</h3>
 <table class="table table-striped">
 <tr class="a">
@@ -16898,7 +16873,7 @@
 <td>sizes</td>
 <td>MethodLength</td>
 <td>Method testGroupAuths length is 239 lines (max allowed is 150).</td>
-<td>119</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Fvisibility.2FVisibilityClient.java"></a>
+<td>111</td></tr></table></section><section><a id="org.2Fapache.2Fhadoop.2Fhbase.2Fsecurity.2Fvisibility.2FVisibilityClient.java"></a>
 <h3>org/apache/hadoop/hbase/security/visibility/VisibilityClient.java</h3>
 <table class="table table-striped">
 <tr class="a">
diff --git a/code-of-conduct/index.html b/code-of-conduct/index.html
index edbf5b2f81c..62b883057bb 100644
--- a/code-of-conduct/index.html
+++ b/code-of-conduct/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/images/logo.svg"/><title>Code of Conduct - Apache HBase</title><meta name="description" content="Code of Conduct and Diversity Statement for the Apache HBase project community."/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/images/logo.svg"/><title>Code of Conduct - Apache HBase</title><meta name="description" content="Code of Conduct and Diversity Statement for the Apache HBase project community."/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -42,12 +42,12 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/landing-layout-DfKLumIW.js";
-import * as route2 from "/assets/code-of-conduct-wHEKyC02.js";
+import * as route1 from "/assets/landing-layout-shCKuPBh.js";
+import * as route2 from "/assets/code-of-conduct-BvBGYarj.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_landing/landing-layout":route1,"routes/_landing/code-of-conduct":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$?--><template id="B:0"></template><!--/$--><script id="_R_">requestAnimationFrame(function(){$RT=performance.now()});</script><div hidden id="S:0"><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_3\":-5,\"_4\":-5},\"loaderData\",{},\"actionData\",\"errors\"]\n");</script><!--$?--><template id="B:1"></template><!--/$--></div><script>$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){ [...]
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$?--><template id="B:0"></template><!--/$--><script id="_R_">requestAnimationFrame(function(){$RT=performance.now()});</script><div hidden id="S:0"><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_3\":-5,\"_4\":-5},\"loaderData\",{},\"actionData\",\"errors\"]\n");</script><!--$?--><template id="B:1"></template><!--/$--></div><script>$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){ [...]
 $RC=function(a,b){if(b=document.getElementById(b))(a=document.getElementById(a))?(a.previousSibling.data="$~",$RB.push(a,b),2===$RB.length&&("number"!==typeof $RT?requestAnimationFrame($RV.bind(null,$RB)):(a=performance.now(),setTimeout($RV.bind(null,$RB),2300>a&&2E3<a?2300-a:$RT+300-a)))):b.parentNode.removeChild(b)};$RC("B:0","S:0")</script><div hidden id="S:1"><script>window.__reactRouterContext.streamController.close();</script></div><script>$RC("B:1","S:1")</script></body></html>
\ No newline at end of file
diff --git a/dependency-convergence.html b/dependency-convergence.html
index 750ebac2477..f57b49c3ee7 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-04-12
+ | 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-04-18
  | 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 09fbf2b8b6c..120978d9d8f 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-04-12
+ | 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-04-18
  | 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 0db5211180f..30c116f51b3 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-04-12
+ | 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-04-18
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
@@ -1800,28 +1800,28 @@
 <tr class="b">
 <td>org.apache.logging.log4j</td>
 <td><a class="externalLink" href="https://logging.apache.org/log4j/2.x/">log4j-1.2-api</a></td>
-<td>2.25.3</td>
+<td>2.25.4</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache-2.0</a></td></tr>
 <tr class="a">
 <td>org.apache.logging.log4j</td>
 <td><a class="externalLink" href="https://logging.apache.org/log4j/2.x/">log4j-api</a></td>
-<td>2.25.3</td>
+<td>2.25.4</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache-2.0</a></td></tr>
 <tr class="b">
 <td>org.apache.logging.log4j</td>
 <td><a class="externalLink" href="https://logging.apache.org/log4j/2.x/">log4j-core</a></td>
-<td>2.25.3</td>
+<td>2.25.4</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache-2.0</a></td></tr>
 <tr class="a">
 <td>org.apache.logging.log4j</td>
 <td><a class="externalLink" href="https://logging.apache.org/log4j/2.x/">log4j-slf4j-impl</a></td>
-<td>2.25.3</td>
+<td>2.25.4</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache-2.0</a></td></tr>
diff --git a/devapidocs/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html b/devapidocs/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html
index 59a3c7dbb8f..01dd169d76f 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html
@@ -1013,14 +1013,14 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" id="sendRejectionReasonToRingBuffer(java.util.function.Supplier,java.util.List)">
 <h3>sendRejectionReasonToRingBuffer</h3>
-<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html#line-750">sendRejectionReasonToRingBuffer</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Supplier.html" title="class or interface in java.util.function" class= [...]
+<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html#line-753">sendRejectionReasonToRingBuffer</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Supplier.html" title="class or interface in java.util.function" class= [...]
  <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="CostFunction.html" title="class in org.apache.hadoop.hbase.master.balancer">CostFunction</a>&gt;&nbsp;costFunctions)</span></div>
 </section>
 </li>
 <li>
 <section class="detail" id="sendRegionPlansToRingBuffer(java.util.List,double,double,java.lang.String,long)">
 <h3>sendRegionPlansToRingBuffer</h3>
-<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html#line-766">sendRegionPlansToRingBuffer</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt; [...]
+<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html#line-769">sendRegionPlansToRingBuffer</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt; [...]
  double&nbsp;currentCost,
  double&nbsp;initCost,
  <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;initFunctionTotalCosts,
@@ -1030,7 +1030,7 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" id="updateStochasticCosts(org.apache.hadoop.hbase.TableName,double,double[])">
 <h3>updateStochasticCosts</h3>
-<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html#line-785">updateStochasticCosts</a></span><wbr><span class="parameters">(<a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html#line-788">updateStochasticCosts</a></span><wbr><span class="parameters">(<a href="../../TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
  double&nbsp;overall,
  double[]&nbsp;subCosts)</span></div>
 <div class="block">update costs to JMX</div>
@@ -1039,32 +1039,32 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" id="addCostFunction(java.util.List,org.apache.hadoop.hbase.master.balancer.CostFunction)">
 <h3>addCostFunction</h3>
-<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html#line-809">addCostFunction</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="Cos [...]
+<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html#line-812">addCostFunction</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="Cos [...]
  <a href="CostFunction.html" title="class in org.apache.hadoop.hbase.master.balancer">CostFunction</a>&nbsp;costFunction)</span></div>
 </section>
 </li>
 <li>
 <section class="detail" id="functionCost()">
 <h3>functionCost</h3>
-<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html#line-816">functionCost</a></span>()</div>
+<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html#line-819">functionCost</a></span>()</div>
 </section>
 </li>
 <li>
 <section class="detail" id="getCostFunctions()">
 <h3>getCostFunctions</h3>
-<div class="member-signature"><span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="CostFunction.html" title="class in org.apache.hadoop.hbase.master.balancer">CostFunction</a>&gt;</span>&nbsp;<span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html#line-837">getCostFunct [...]
+<div class="member-signature"><span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="CostFunction.html" title="class in org.apache.hadoop.hbase.master.balancer">CostFunction</a>&gt;</span>&nbsp;<span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html#line-840">getCostFunct [...]
 </section>
 </li>
 <li>
 <section class="detail" id="totalCostsPerFunc()">
 <h3>totalCostsPerFunc</h3>
-<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html#line-843">totalCostsPerFunc</a></span>()</div>
+<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html#line-846">totalCostsPerFunc</a></span>()</div>
 </section>
 </li>
 <li>
 <section class="detail" id="createRegionPlans(org.apache.hadoop.hbase.master.balancer.BalancerClusterState)">
 <h3>createRegionPlans</h3>
-<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../RegionPlan.html" title="class in org.apache.hadoop.hbase.master">RegionPlan</a>&gt;</span>&nbsp;<span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/StochasticLoadBa [...]
+<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../RegionPlan.html" title="class in org.apache.hadoop.hbase.master">RegionPlan</a>&gt;</span>&nbsp;<span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/StochasticLoadBa [...]
 <div class="block">Create all of the RegionPlan's needed to move from the initial cluster state to the desired
  state.</div>
 <dl class="notes">
@@ -1078,20 +1078,20 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" id="updateRegionLoad()">
 <h3>updateRegionLoad</h3>
-<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html#line-896">updateRegionLoad</a></span>()</div>
+<div class="member-signature"><span class="modifiers">private</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html#line-899">updateRegionLoad</a></span>()</div>
 <div class="block">Store the current region loads.</div>
 </section>
 </li>
 <li>
 <section class="detail" id="initCosts(org.apache.hadoop.hbase.master.balancer.BalancerClusterState)">
 <h3>initCosts</h3>
-<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html#line-917">initCosts</a></span><wbr><span class="parameters">(<a href="BalancerClusterState.html" title="class in org.apache.hadoop.hbase.master.balancer">BalancerClusterState</a>&nbsp;cluster)</span></div>
+<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html#line-920">initCosts</a></span><wbr><span class="parameters">(<a href="BalancerClusterState.html" title="class in org.apache.hadoop.hbase.master.balancer">BalancerClusterState</a>&nbsp;cluster)</span></div>
 </section>
 </li>
 <li>
 <section class="detail" id="updateCostsAndWeightsWithAction(org.apache.hadoop.hbase.master.balancer.BalancerClusterState,org.apache.hadoop.hbase.master.balancer.BalanceAction)">
 <h3>updateCostsAndWeightsWithAction</h3>
-<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html#line-933">updateCostsAndWeightsWithAction</a></span><wbr><span class="parameters">(<a href="BalancerClusterState.html" title="class in org.apache.hadoop.hbase.master.balancer">BalancerClusterState</a>&nbsp;cluster,
+<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html#line-936">updateCostsAndWeightsWithAction</a></span><wbr><span class="parameters">(<a href="BalancerClusterState.html" title="class in org.apache.hadoop.hbase.master.balancer">BalancerClusterState</a>&nbsp;cluster,
  <a href="BalanceAction.html" title="class in org.apache.hadoop.hbase.master.balancer">BalanceAction</a>&nbsp;action)</span></div>
 <div class="block">Update both the costs of costfunctions and the weights of candidate generators</div>
 </section>
@@ -1099,14 +1099,14 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" id="getCostFunctionNames()">
 <h3>getCostFunctionNames</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/master/balancer/StochasticLoadBalancer.html#line-951">getCostFunctionNames</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/master/balancer/StochasticLoadBalancer.html#line-954">getCostFunctionNames</a></span>()</div>
 <div class="block">Get the names of the cost functions</div>
 </section>
 </li>
 <li>
 <section class="detail" id="computeCost(org.apache.hadoop.hbase.master.balancer.BalancerClusterState,double)">
 <h3>computeCost</h3>
-<div class="member-signature"><span class="return-type">double</span>&nbsp;<span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html#line-971">computeCost</a></span><wbr><span class="parameters">(<a href="BalancerClusterState.html" title="class in org.apache.hadoop.hbase.master.balancer">BalancerClusterState</a>&nbsp;cluster,
+<div class="member-signature"><span class="return-type">double</span>&nbsp;<span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html#line-974">computeCost</a></span><wbr><span class="parameters">(<a href="BalancerClusterState.html" title="class in org.apache.hadoop.hbase.master.balancer">BalancerClusterState</a>&nbsp;cluster,
  double&nbsp;previousCost)</span></div>
 <div class="block">This is the main cost function. It will compute a cost associated with a proposed cluster
  state. All different costs will be combined with their multipliers to produce a double cost.</div>
@@ -1123,7 +1123,7 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" id="composeAttributeName(java.lang.String,java.lang.String)">
 <h3>composeAttributeName</h3>
-<div class="member-signature"><span class="modifiers">static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html#line-1001">composeAttributeName</a></span><wbr><span class="parameters">(<a href="ht [...]
+<div class="member-signature"><span class="modifiers">static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name"><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html#line-1004">composeAttributeName</a></span><wbr><span class="parameters">(<a href="ht [...]
  <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;costFunctionName)</span></div>
 <div class="block">A helper function to compose the attribute name from tablename and costfunction name</div>
 </section>
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/RegionScanner.html b/devapidocs/org/apache/hadoop/hbase/regionserver/RegionScanner.html
index c7a8714fe6e..ae879e27678 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/RegionScanner.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/RegionScanner.html
@@ -84,7 +84,7 @@ loadScripts(document, 'script');</script>
 <hr>
 <div class="type-signature"><span class="annotations">@LimitedPrivate("Coprocesssor")
 @Evolving
-</span><span class="modifiers">public interface </span><span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionScanner.html#line-33">RegionScanner</a></span><span class="extends-implements">
+</span><span class="modifiers">public interface </span><span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionScanner.html#line-34">RegionScanner</a></span><span class="extends-implements">
 extends <a href="InternalScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">InternalScanner</a></span></div>
 <div class="block">RegionScanner describes iterators over rows in an HRegion.</div>
 </section>
@@ -104,9 +104,9 @@ extends <a href="InternalScanner.html" title="interface in org.apache.hadoop.hba
 <div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>int</code></div>
 <div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getBatch()" class="member-name-link">getBatch</a>()</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">&nbsp;</div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;org.apache.hadoop.fs.Path&gt;</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getFilesRead()" class="member-name-link">getFilesRead</a>()</code></div>
-<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code>default <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;org.apache.hadoop.fs.Path&gt;</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5"><code><a href="#getFilesRead()" class="member-name-link">getFilesRead</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab5">
 <div class="block">Returns the set of store file paths that were successfully read by this scanner.</div>
 </div>
 <div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>long</code></div>
@@ -164,14 +164,14 @@ extends <a href="InternalScanner.html" title="interface in org.apache.hadoop.hba
 <li>
 <section class="detail" id="getRegionInfo()">
 <h3>getRegionInfo</h3>
-<div class="member-signature"><span class="return-type"><a href="../client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionScanner.html#line-37">getRegionInfo</a></span>()</div>
+<div class="member-signature"><span class="return-type"><a href="../client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionScanner.html#line-38">getRegionInfo</a></span>()</div>
 <div class="block">Returns The RegionInfo for this scanner.</div>
 </section>
 </li>
 <li>
 <section class="detail" id="isFilterDone()">
 <h3>isFilterDone</h3>
-<div class="member-signature"><span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionScanner.html#line-43">isFilterDone</a></span>()
+<div class="member-signature"><span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionScanner.html#line-44">isFilterDone</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>Returns:</dt>
@@ -184,7 +184,7 @@ extends <a href="InternalScanner.html" title="interface in org.apache.hadoop.hba
 <li>
 <section class="detail" id="reseek(byte[])">
 <h3>reseek</h3>
-<div class="member-signature"><span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionScanner.html#line-49">reseek</a></span><wbr><span class="parameters">(byte[]&nbsp;row)</span>
+<div class="member-signature"><span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionScanner.html#line-50">reseek</a></span><wbr><span class="parameters">(byte[]&nbsp;row)</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">Do a reseek to the required row. Should not be used to seek to a key which may come before the
  current position. Always seeks to the beginning of a row boundary. if row is null</div>
@@ -197,7 +197,7 @@ extends <a href="InternalScanner.html" title="interface in org.apache.hadoop.hba
 <li>
 <section class="detail" id="getMaxResultSize()">
 <h3>getMaxResultSize</h3>
-<div class="member-signature"><span class="return-type">long</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionScanner.html#line-55">getMaxResultSize</a></span>()</div>
+<div class="member-signature"><span class="return-type">long</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionScanner.html#line-56">getMaxResultSize</a></span>()</div>
 <dl class="notes">
 <dt>Returns:</dt>
 <dd>The preferred max buffersize. See
@@ -208,14 +208,14 @@ extends <a href="InternalScanner.html" title="interface in org.apache.hadoop.hba
 <li>
 <section class="detail" id="getMvccReadPoint()">
 <h3>getMvccReadPoint</h3>
-<div class="member-signature"><span class="return-type">long</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionScanner.html#line-58">getMvccReadPoint</a></span>()</div>
+<div class="member-signature"><span class="return-type">long</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionScanner.html#line-59">getMvccReadPoint</a></span>()</div>
 <div class="block">Returns The Scanner's MVCC readPt see <a href="MultiVersionConcurrencyControl.html" title="class in org.apache.hadoop.hbase.regionserver"><code>MultiVersionConcurrencyControl</code></a></div>
 </section>
 </li>
 <li>
 <section class="detail" id="getBatch()">
 <h3>getBatch</h3>
-<div class="member-signature"><span class="return-type">int</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionScanner.html#line-64">getBatch</a></span>()</div>
+<div class="member-signature"><span class="return-type">int</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionScanner.html#line-65">getBatch</a></span>()</div>
 <dl class="notes">
 <dt>Returns:</dt>
 <dd>The limit on the number of cells to retrieve on each call to next(). See
@@ -226,7 +226,7 @@ extends <a href="InternalScanner.html" title="interface in org.apache.hadoop.hba
 <li>
 <section class="detail" id="getOperationId()">
 <h3>getOperationId</h3>
-<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionScanner.html#line-70">getOperationId</a></span>()</div>
+<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionScanner.html#line-71">getOperationId</a></span>()</div>
 <dl class="notes">
 <dt>Returns:</dt>
 <dd>The Scanner's <a href="../client/OperationWithAttributes.html#ID_ATRIBUTE"><code>OperationWithAttributes.ID_ATRIBUTE</code></a> value, or null if
@@ -237,7 +237,7 @@ extends <a href="InternalScanner.html" title="interface in org.apache.hadoop.hba
 <li>
 <section class="detail" id="nextRaw(java.util.List)">
 <h3>nextRaw</h3>
-<div class="member-signature"><span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionScanner.html#line-83">nextRaw</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;? super <a href="../ExtendedCell.html" title="interface in org.apache.hadoop. [...]
+<div class="member-signature"><span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionScanner.html#line-84">nextRaw</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;? super <a href="../ExtendedCell.html" title="interface in org.apache.hadoop. [...]
          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">Grab the next row's worth of values. This is a special internal method to be called from
  coprocessor hooks to avoid expensive setup. Caller must set the thread's readpoint, start and
@@ -256,7 +256,7 @@ extends <a href="InternalScanner.html" title="interface in org.apache.hadoop.hba
 <li>
 <section class="detail" id="nextRaw(java.util.List,org.apache.hadoop.hbase.regionserver.ScannerContext)">
 <h3>nextRaw</h3>
-<div class="member-signature"><span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionScanner.html#line-114">nextRaw</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;? super <a href="../ExtendedCell.html" title="interface in org.apache.hadoop [...]
+<div class="member-signature"><span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionScanner.html#line-115">nextRaw</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;? super <a href="../ExtendedCell.html" title="interface in org.apache.hadoop [...]
  <a href="ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a>&nbsp;scannerContext)</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">Grab the next row's worth of values. The <a href="ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver"><code>ScannerContext</code></a> is used to enforce and track
@@ -296,7 +296,7 @@ extends <a href="InternalScanner.html" title="interface in org.apache.hadoop.hba
 <li>
 <section class="detail" id="getFilesRead()">
 <h3>getFilesRead</h3>
-<div class="member-signature"><span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;org.apache.hadoop.fs.Path&gt;</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionScanner.html#line-121">getFilesRead</a></span>()</div>
+<div class="member-signature"><span class="modifiers">default</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;org.apache.hadoop.fs.Path&gt;</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/RegionScanner.html#line-122">getFilesRead</a></span>()</div>
 <div class="block">Returns the set of store file paths that were successfully read by this scanner. Typically
  populated only after the scanner is closed.</div>
 </section>
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html
index 0208aa5a337..9af1c63bbbb 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html
@@ -594,427 +594,430 @@
 <span class="source-line-no">581</span><span id="line-581">      rackManager, regionCacheRatioOnOldServerMap);</span>
 <span class="source-line-no">582</span><span id="line-582"></span>
 <span class="source-line-no">583</span><span id="line-583">    long startTime = EnvironmentEdgeManager.currentTime();</span>
-<span class="source-line-no">584</span><span id="line-584">    cluster.setStopRequestedAt(startTime + maxRunningTime);</span>
-<span class="source-line-no">585</span><span id="line-585"></span>
-<span class="source-line-no">586</span><span id="line-586">    initCosts(cluster);</span>
-<span class="source-line-no">587</span><span id="line-587">    balancerConditionals.loadClusterState(cluster);</span>
-<span class="source-line-no">588</span><span id="line-588">    balancerConditionals.clearConditionalWeightCaches();</span>
-<span class="source-line-no">589</span><span id="line-589"></span>
-<span class="source-line-no">590</span><span id="line-590">    float localSumMultiplier = 0;</span>
-<span class="source-line-no">591</span><span id="line-591">    for (CostFunction c : costFunctions) {</span>
-<span class="source-line-no">592</span><span id="line-592">      if (c.isNeeded()) {</span>
-<span class="source-line-no">593</span><span id="line-593">        localSumMultiplier += c.getMultiplier();</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">    sumMultiplier = localSumMultiplier;</span>
-<span class="source-line-no">597</span><span id="line-597">    if (sumMultiplier &lt;= 0) {</span>
-<span class="source-line-no">598</span><span id="line-598">      LOG.error("At least one cost function needs a multiplier &gt; 0. For example, set "</span>
-<span class="source-line-no">599</span><span id="line-599">        + "hbase.master.balancer.stochastic.regionCountCost to a positive value or default");</span>
-<span class="source-line-no">600</span><span id="line-600">      return null;</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">    double currentCost = computeCost(cluster, Double.MAX_VALUE);</span>
-<span class="source-line-no">604</span><span id="line-604">    curOverallCost = currentCost;</span>
-<span class="source-line-no">605</span><span id="line-605">    System.arraycopy(tempFunctionCosts, 0, curFunctionCosts, 0, curFunctionCosts.length);</span>
-<span class="source-line-no">606</span><span id="line-606">    updateStochasticCosts(tableName, curOverallCost, curFunctionCosts);</span>
-<span class="source-line-no">607</span><span id="line-607">    double initCost = currentCost;</span>
-<span class="source-line-no">608</span><span id="line-608">    double newCost;</span>
-<span class="source-line-no">609</span><span id="line-609"></span>
-<span class="source-line-no">610</span><span id="line-610">    if (!needsBalance(tableName, cluster)) {</span>
-<span class="source-line-no">611</span><span id="line-611">      return null;</span>
-<span class="source-line-no">612</span><span id="line-612">    }</span>
-<span class="source-line-no">613</span><span id="line-613"></span>
-<span class="source-line-no">614</span><span id="line-614">    long computedMaxSteps;</span>
-<span class="source-line-no">615</span><span id="line-615">    if (runMaxSteps) {</span>
-<span class="source-line-no">616</span><span id="line-616">      computedMaxSteps = Math.max(this.maxSteps, calculateMaxSteps(cluster));</span>
-<span class="source-line-no">617</span><span id="line-617">    } else {</span>
-<span class="source-line-no">618</span><span id="line-618">      long calculatedMaxSteps = calculateMaxSteps(cluster);</span>
-<span class="source-line-no">619</span><span id="line-619">      computedMaxSteps = Math.min(this.maxSteps, calculatedMaxSteps);</span>
-<span class="source-line-no">620</span><span id="line-620">      if (calculatedMaxSteps &gt; maxSteps) {</span>
-<span class="source-line-no">621</span><span id="line-621">        LOG.warn(</span>
-<span class="source-line-no">622</span><span id="line-622">          "calculatedMaxSteps:{} for loadbalancer's stochastic walk is larger than "</span>
-<span class="source-line-no">623</span><span id="line-623">            + "maxSteps:{}. Hence load balancing may not work well. Setting parameter "</span>
-<span class="source-line-no">624</span><span id="line-624">            + "\"hbase.master.balancer.stochastic.runMaxSteps\" to true can overcome this issue."</span>
-<span class="source-line-no">625</span><span id="line-625">            + "(This config change does not require service restart)",</span>
-<span class="source-line-no">626</span><span id="line-626">          calculatedMaxSteps, maxSteps);</span>
-<span class="source-line-no">627</span><span id="line-627">      }</span>
-<span class="source-line-no">628</span><span id="line-628">    }</span>
-<span class="source-line-no">629</span><span id="line-629">    LOG.info(</span>
-<span class="source-line-no">630</span><span id="line-630">      "Start StochasticLoadBalancer.balancer, initial weighted average imbalance={}, "</span>
-<span class="source-line-no">631</span><span id="line-631">        + "functionCost={} computedMaxSteps={}",</span>
-<span class="source-line-no">632</span><span id="line-632">      currentCost / sumMultiplier, functionCost(), computedMaxSteps);</span>
-<span class="source-line-no">633</span><span id="line-633"></span>
-<span class="source-line-no">634</span><span id="line-634">    final String initFunctionTotalCosts = totalCostsPerFunc();</span>
-<span class="source-line-no">635</span><span id="line-635">    // Perform a stochastic walk to see if we can get a good fit.</span>
-<span class="source-line-no">636</span><span id="line-636">    long step;</span>
-<span class="source-line-no">637</span><span id="line-637">    boolean planImprovedConditionals = false;</span>
-<span class="source-line-no">638</span><span id="line-638">    Map&lt;Class&lt;? extends CandidateGenerator&gt;, Long&gt; generatorToStepCount = new HashMap&lt;&gt;();</span>
-<span class="source-line-no">639</span><span id="line-639">    Map&lt;Class&lt;? extends CandidateGenerator&gt;, Long&gt; generatorToApprovedActionCount = new HashMap&lt;&gt;();</span>
-<span class="source-line-no">640</span><span id="line-640">    for (step = 0; step &lt; computedMaxSteps; step++) {</span>
-<span class="source-line-no">641</span><span id="line-641">      Pair&lt;CandidateGenerator, BalanceAction&gt; nextAction = nextAction(cluster);</span>
-<span class="source-line-no">642</span><span id="line-642">      CandidateGenerator generator = nextAction.getFirst();</span>
-<span class="source-line-no">643</span><span id="line-643">      BalanceAction action = nextAction.getSecond();</span>
-<span class="source-line-no">644</span><span id="line-644"></span>
-<span class="source-line-no">645</span><span id="line-645">      if (action.getType() == BalanceAction.Type.NULL) {</span>
-<span class="source-line-no">646</span><span id="line-646">        continue;</span>
-<span class="source-line-no">647</span><span id="line-647">      }</span>
-<span class="source-line-no">648</span><span id="line-648"></span>
-<span class="source-line-no">649</span><span id="line-649">      int conditionalViolationsChange = 0;</span>
-<span class="source-line-no">650</span><span id="line-650">      boolean isViolatingConditionals = false;</span>
-<span class="source-line-no">651</span><span id="line-651">      boolean moveImprovedConditionals = false;</span>
-<span class="source-line-no">652</span><span id="line-652">      // Only check conditionals if they are enabled</span>
-<span class="source-line-no">653</span><span id="line-653">      if (balancerConditionals.isConditionalBalancingEnabled()) {</span>
-<span class="source-line-no">654</span><span id="line-654">        // Always accept a conditional generator output. Sometimes conditional generators</span>
-<span class="source-line-no">655</span><span id="line-655">        // may need to make controversial moves in order to break what would otherwise</span>
-<span class="source-line-no">656</span><span id="line-656">        // be a deadlocked situation.</span>
-<span class="source-line-no">657</span><span id="line-657">        // Otherwise, for normal moves, evaluate the action.</span>
-<span class="source-line-no">658</span><span id="line-658">        if (RegionPlanConditionalCandidateGenerator.class.isAssignableFrom(generator.getClass())) {</span>
-<span class="source-line-no">659</span><span id="line-659">          conditionalViolationsChange = -1;</span>
-<span class="source-line-no">660</span><span id="line-660">        } else {</span>
-<span class="source-line-no">661</span><span id="line-661">          conditionalViolationsChange =</span>
-<span class="source-line-no">662</span><span id="line-662">            balancerConditionals.getViolationCountChange(cluster, action);</span>
-<span class="source-line-no">663</span><span id="line-663">          isViolatingConditionals = balancerConditionals.isViolating(cluster, action);</span>
-<span class="source-line-no">664</span><span id="line-664">        }</span>
-<span class="source-line-no">665</span><span id="line-665">        moveImprovedConditionals = conditionalViolationsChange &lt; 0;</span>
-<span class="source-line-no">666</span><span id="line-666">        if (moveImprovedConditionals) {</span>
-<span class="source-line-no">667</span><span id="line-667">          planImprovedConditionals = 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"></span>
-<span class="source-line-no">671</span><span id="line-671">      // Change state and evaluate costs</span>
-<span class="source-line-no">672</span><span id="line-672">      try {</span>
-<span class="source-line-no">673</span><span id="line-673">        cluster.doAction(action);</span>
-<span class="source-line-no">674</span><span id="line-674">      } catch (IllegalStateException | ArrayIndexOutOfBoundsException e) {</span>
-<span class="source-line-no">675</span><span id="line-675">        LOG.warn(</span>
-<span class="source-line-no">676</span><span id="line-676">          "Generator {} produced invalid action! "</span>
-<span class="source-line-no">677</span><span id="line-677">            + "Debug your candidate generator as this is likely a bug, "</span>
-<span class="source-line-no">678</span><span id="line-678">            + "and may cause a balancer deadlock. {}",</span>
-<span class="source-line-no">679</span><span id="line-679">          generator.getClass().getSimpleName(), action, e);</span>
-<span class="source-line-no">680</span><span id="line-680">        continue;</span>
-<span class="source-line-no">681</span><span id="line-681">      }</span>
-<span class="source-line-no">682</span><span id="line-682">      updateCostsAndWeightsWithAction(cluster, action);</span>
-<span class="source-line-no">683</span><span id="line-683">      generatorToStepCount.merge(generator.getClass(), action.getStepCount(), Long::sum);</span>
-<span class="source-line-no">684</span><span id="line-684"></span>
-<span class="source-line-no">685</span><span id="line-685">      newCost = computeCost(cluster, currentCost);</span>
-<span class="source-line-no">686</span><span id="line-686"></span>
-<span class="source-line-no">687</span><span id="line-687">      double costImprovement = currentCost - newCost;</span>
-<span class="source-line-no">688</span><span id="line-688">      double minimumImprovement =</span>
-<span class="source-line-no">689</span><span id="line-689">        Math.max(CostFunction.getCostEpsilon(currentCost), CostFunction.getCostEpsilon(newCost));</span>
-<span class="source-line-no">690</span><span id="line-690">      boolean costsImproved = costImprovement &gt; minimumImprovement;</span>
-<span class="source-line-no">691</span><span id="line-691">      boolean conditionalsSimilarCostsImproved =</span>
-<span class="source-line-no">692</span><span id="line-692">        (costsImproved &amp;&amp; conditionalViolationsChange == 0 &amp;&amp; !isViolatingConditionals);</span>
-<span class="source-line-no">693</span><span id="line-693">      // Our first priority is to reduce conditional violations</span>
-<span class="source-line-no">694</span><span id="line-694">      // Our second priority is to reduce balancer cost</span>
-<span class="source-line-no">695</span><span id="line-695">      // change, regardless of cost change</span>
-<span class="source-line-no">696</span><span id="line-696">      if (moveImprovedConditionals || conditionalsSimilarCostsImproved) {</span>
-<span class="source-line-no">697</span><span id="line-697">        currentCost = newCost;</span>
-<span class="source-line-no">698</span><span id="line-698">        generatorToApprovedActionCount.merge(generator.getClass(), action.getStepCount(),</span>
-<span class="source-line-no">699</span><span id="line-699">          Long::sum);</span>
-<span class="source-line-no">700</span><span id="line-700"></span>
-<span class="source-line-no">701</span><span id="line-701">        // save for JMX</span>
-<span class="source-line-no">702</span><span id="line-702">        curOverallCost = currentCost;</span>
-<span class="source-line-no">703</span><span id="line-703">        System.arraycopy(tempFunctionCosts, 0, curFunctionCosts, 0, curFunctionCosts.length);</span>
-<span class="source-line-no">704</span><span id="line-704">      } else {</span>
-<span class="source-line-no">705</span><span id="line-705">        // Put things back the way they were before.</span>
-<span class="source-line-no">706</span><span id="line-706">        // TODO: undo by remembering old values</span>
-<span class="source-line-no">707</span><span id="line-707">        BalanceAction undoAction = action.undoAction();</span>
-<span class="source-line-no">708</span><span id="line-708">        cluster.doAction(undoAction);</span>
-<span class="source-line-no">709</span><span id="line-709">        updateCostsAndWeightsWithAction(cluster, undoAction);</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">      if (cluster.isStopRequested()) {</span>
-<span class="source-line-no">713</span><span id="line-713">        break;</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">    long endTime = EnvironmentEdgeManager.currentTime();</span>
-<span class="source-line-no">717</span><span id="line-717"></span>
-<span class="source-line-no">718</span><span id="line-718">    StringJoiner joiner = new StringJoiner("\n");</span>
-<span class="source-line-no">719</span><span id="line-719">    joiner.add("CandidateGenerator activity summary:");</span>
-<span class="source-line-no">720</span><span id="line-720">    generatorToStepCount.forEach((generator, count) -&gt; {</span>
-<span class="source-line-no">721</span><span id="line-721">      long approvals = generatorToApprovedActionCount.getOrDefault(generator, 0L);</span>
-<span class="source-line-no">722</span><span id="line-722">      joiner.add(String.format(" - %s: %d steps, %d approvals", generator.getSimpleName(), count,</span>
-<span class="source-line-no">723</span><span id="line-723">        approvals));</span>
-<span class="source-line-no">724</span><span id="line-724">    });</span>
-<span class="source-line-no">725</span><span id="line-725">    LOG.debug(joiner.toString());</span>
-<span class="source-line-no">726</span><span id="line-726"></span>
-<span class="source-line-no">727</span><span id="line-727">    metricsBalancer.balanceCluster(endTime - startTime);</span>
-<span class="source-line-no">728</span><span id="line-728"></span>
-<span class="source-line-no">729</span><span id="line-729">    if (planImprovedConditionals || (initCost &gt; currentCost)) {</span>
-<span class="source-line-no">730</span><span id="line-730">      updateStochasticCosts(tableName, curOverallCost, curFunctionCosts);</span>
-<span class="source-line-no">731</span><span id="line-731">      List&lt;RegionPlan&gt; plans = createRegionPlans(cluster);</span>
-<span class="source-line-no">732</span><span id="line-732">      LOG.info(</span>
-<span class="source-line-no">733</span><span id="line-733">        "Finished computing new moving plan. Computation took {} ms"</span>
-<span class="source-line-no">734</span><span id="line-734">          + " to try {} different iterations.  Found a solution that moves "</span>
-<span class="source-line-no">735</span><span id="line-735">          + "{} regions; Going from a computed imbalance of {}"</span>
-<span class="source-line-no">736</span><span id="line-736">          + " to a new imbalance of {}. funtionCost={}",</span>
-<span class="source-line-no">737</span><span id="line-737">        endTime - startTime, step, plans.size(), initCost / sumMultiplier,</span>
-<span class="source-line-no">738</span><span id="line-738">        currentCost / sumMultiplier, functionCost());</span>
-<span class="source-line-no">739</span><span id="line-739">      sendRegionPlansToRingBuffer(plans, currentCost, initCost, initFunctionTotalCosts, step);</span>
-<span class="source-line-no">740</span><span id="line-740">      return plans;</span>
-<span class="source-line-no">741</span><span id="line-741">    }</span>
-<span class="source-line-no">742</span><span id="line-742">    LOG.info(</span>
-<span class="source-line-no">743</span><span id="line-743">      "Could not find a better moving plan.  Tried {} different configurations in "</span>
-<span class="source-line-no">744</span><span id="line-744">        + "{} ms, and did not find anything with an imbalance score less than {} "</span>
-<span class="source-line-no">745</span><span id="line-745">        + "and could not improve conditional violations",</span>
-<span class="source-line-no">746</span><span id="line-746">      step, endTime - startTime, initCost / sumMultiplier);</span>
-<span class="source-line-no">747</span><span id="line-747">    return null;</span>
-<span class="source-line-no">748</span><span id="line-748">  }</span>
-<span class="source-line-no">749</span><span id="line-749"></span>
-<span class="source-line-no">750</span><span id="line-750">  protected void sendRejectionReasonToRingBuffer(Supplier&lt;String&gt; reason,</span>
-<span class="source-line-no">751</span><span id="line-751">    List&lt;CostFunction&gt; costFunctions) {</span>
-<span class="source-line-no">752</span><span id="line-752">    provider.recordBalancerRejection(() -&gt; {</span>
-<span class="source-line-no">753</span><span id="line-753">      BalancerRejection.Builder builder = new BalancerRejection.Builder().setReason(reason.get());</span>
-<span class="source-line-no">754</span><span id="line-754">      if (costFunctions != null) {</span>
-<span class="source-line-no">755</span><span id="line-755">        for (CostFunction c : costFunctions) {</span>
-<span class="source-line-no">756</span><span id="line-756">          if (!c.isNeeded()) {</span>
-<span class="source-line-no">757</span><span id="line-757">            continue;</span>
-<span class="source-line-no">758</span><span id="line-758">          }</span>
-<span class="source-line-no">759</span><span id="line-759">          builder.addCostFuncInfo(c.getClass().getName(), c.cost(), c.getMultiplier());</span>
-<span class="source-line-no">760</span><span id="line-760">        }</span>
-<span class="source-line-no">761</span><span id="line-761">      }</span>
-<span class="source-line-no">762</span><span id="line-762">      return builder.build();</span>
-<span class="source-line-no">763</span><span id="line-763">    });</span>
-<span class="source-line-no">764</span><span id="line-764">  }</span>
-<span class="source-line-no">765</span><span id="line-765"></span>
-<span class="source-line-no">766</span><span id="line-766">  private void sendRegionPlansToRingBuffer(List&lt;RegionPlan&gt; plans, double currentCost,</span>
-<span class="source-line-no">767</span><span id="line-767">    double initCost, String initFunctionTotalCosts, long step) {</span>
-<span class="source-line-no">768</span><span id="line-768">    provider.recordBalancerDecision(() -&gt; {</span>
-<span class="source-line-no">769</span><span id="line-769">      List&lt;String&gt; regionPlans = new ArrayList&lt;&gt;();</span>
-<span class="source-line-no">770</span><span id="line-770">      for (RegionPlan plan : plans) {</span>
-<span class="source-line-no">771</span><span id="line-771">        regionPlans</span>
-<span class="source-line-no">772</span><span id="line-772">          .add("table: " + plan.getRegionInfo().getTable() + " , region: " + plan.getRegionName()</span>
-<span class="source-line-no">773</span><span id="line-773">            + " , source: " + plan.getSource() + " , destination: " + plan.getDestination());</span>
-<span class="source-line-no">774</span><span id="line-774">      }</span>
-<span class="source-line-no">775</span><span id="line-775">      return new BalancerDecision.Builder().setInitTotalCost(initCost)</span>
-<span class="source-line-no">776</span><span id="line-776">        .setInitialFunctionCosts(initFunctionTotalCosts).setComputedTotalCost(currentCost)</span>
-<span class="source-line-no">777</span><span id="line-777">        .setFinalFunctionCosts(totalCostsPerFunc()).setComputedSteps(step)</span>
-<span class="source-line-no">778</span><span id="line-778">        .setRegionPlans(regionPlans).build();</span>
-<span class="source-line-no">779</span><span id="line-779">    });</span>
-<span class="source-line-no">780</span><span id="line-780">  }</span>
-<span class="source-line-no">781</span><span id="line-781"></span>
-<span class="source-line-no">782</span><span id="line-782">  /**</span>
-<span class="source-line-no">783</span><span id="line-783">   * update costs to JMX</span>
-<span class="source-line-no">784</span><span id="line-784">   */</span>
-<span class="source-line-no">785</span><span id="line-785">  private void updateStochasticCosts(TableName tableName, double overall, double[] subCosts) {</span>
-<span class="source-line-no">786</span><span id="line-786">    if (tableName == null) {</span>
-<span class="source-line-no">787</span><span id="line-787">      return;</span>
-<span class="source-line-no">788</span><span id="line-788">    }</span>
-<span class="source-line-no">789</span><span id="line-789"></span>
-<span class="source-line-no">790</span><span id="line-790">    // check if the metricsBalancer is MetricsStochasticBalancer before casting</span>
-<span class="source-line-no">791</span><span id="line-791">    if (metricsBalancer instanceof MetricsStochasticBalancer) {</span>
-<span class="source-line-no">792</span><span id="line-792">      MetricsStochasticBalancer balancer = (MetricsStochasticBalancer) metricsBalancer;</span>
-<span class="source-line-no">793</span><span id="line-793">      // overall cost</span>
-<span class="source-line-no">794</span><span id="line-794">      balancer.updateStochasticCost(tableName.getNameAsString(), OVERALL_COST_FUNCTION_NAME,</span>
-<span class="source-line-no">795</span><span id="line-795">        "Overall cost", overall);</span>
-<span class="source-line-no">796</span><span id="line-796"></span>
-<span class="source-line-no">797</span><span id="line-797">      // each cost function</span>
-<span class="source-line-no">798</span><span id="line-798">      for (int i = 0; i &lt; costFunctions.size(); i++) {</span>
-<span class="source-line-no">799</span><span id="line-799">        CostFunction costFunction = costFunctions.get(i);</span>
-<span class="source-line-no">800</span><span id="line-800">        String costFunctionName = costFunction.getClass().getSimpleName();</span>
-<span class="source-line-no">801</span><span id="line-801">        double costPercent = (overall == 0) ? 0 : (subCosts[i] / overall);</span>
-<span class="source-line-no">802</span><span id="line-802">        // TODO: cost function may need a specific description</span>
-<span class="source-line-no">803</span><span id="line-803">        balancer.updateStochasticCost(tableName.getNameAsString(), costFunctionName,</span>
-<span class="source-line-no">804</span><span id="line-804">          "The percent of " + costFunctionName, costPercent);</span>
-<span class="source-line-no">805</span><span id="line-805">      }</span>
-<span class="source-line-no">806</span><span id="line-806">    }</span>
-<span class="source-line-no">807</span><span id="line-807">  }</span>
-<span class="source-line-no">808</span><span id="line-808"></span>
-<span class="source-line-no">809</span><span id="line-809">  private void addCostFunction(List&lt;CostFunction&gt; costFunctions, CostFunction costFunction) {</span>
-<span class="source-line-no">810</span><span id="line-810">    float multiplier = costFunction.getMultiplier();</span>
-<span class="source-line-no">811</span><span id="line-811">    if (multiplier &gt; 0) {</span>
-<span class="source-line-no">812</span><span id="line-812">      costFunctions.add(costFunction);</span>
-<span class="source-line-no">813</span><span id="line-813">    }</span>
-<span class="source-line-no">814</span><span id="line-814">  }</span>
-<span class="source-line-no">815</span><span id="line-815"></span>
-<span class="source-line-no">816</span><span id="line-816">  protected String functionCost() {</span>
-<span class="source-line-no">817</span><span id="line-817">    StringBuilder builder = new StringBuilder();</span>
-<span class="source-line-no">818</span><span id="line-818">    for (CostFunction c : costFunctions) {</span>
-<span class="source-line-no">819</span><span id="line-819">      builder.append(c.getClass().getSimpleName());</span>
-<span class="source-line-no">820</span><span id="line-820">      builder.append(" : (");</span>
-<span class="source-line-no">821</span><span id="line-821">      if (c.isNeeded()) {</span>
-<span class="source-line-no">822</span><span id="line-822">        builder.append("multiplier=" + c.getMultiplier());</span>
-<span class="source-line-no">823</span><span id="line-823">        builder.append(", ");</span>
-<span class="source-line-no">824</span><span id="line-824">        double cost = c.cost();</span>
-<span class="source-line-no">825</span><span id="line-825">        builder.append("imbalance=" + cost);</span>
-<span class="source-line-no">826</span><span id="line-826">        if (cost &gt;= minCostNeedBalance) {</span>
-<span class="source-line-no">827</span><span id="line-827">          builder.append(", need balance");</span>
-<span class="source-line-no">828</span><span id="line-828">        }</span>
-<span class="source-line-no">829</span><span id="line-829">      } else {</span>
-<span class="source-line-no">830</span><span id="line-830">        builder.append("not needed");</span>
-<span class="source-line-no">831</span><span id="line-831">      }</span>
-<span class="source-line-no">832</span><span id="line-832">      builder.append("); ");</span>
-<span class="source-line-no">833</span><span id="line-833">    }</span>
-<span class="source-line-no">834</span><span id="line-834">    return builder.toString();</span>
-<span class="source-line-no">835</span><span id="line-835">  }</span>
-<span class="source-line-no">836</span><span id="line-836"></span>
-<span class="source-line-no">837</span><span id="line-837">  @RestrictedApi(explanation = "Should only be called in tests", link = "",</span>
-<span class="source-line-no">838</span><span id="line-838">      allowedOnPath = ".*(/src/test/.*|StochasticLoadBalancer).java")</span>
-<span class="source-line-no">839</span><span id="line-839">  List&lt;CostFunction&gt; getCostFunctions() {</span>
-<span class="source-line-no">840</span><span id="line-840">    return costFunctions;</span>
-<span class="source-line-no">841</span><span id="line-841">  }</span>
-<span class="source-line-no">842</span><span id="line-842"></span>
-<span class="source-line-no">843</span><span id="line-843">  private String totalCostsPerFunc() {</span>
-<span class="source-line-no">844</span><span id="line-844">    StringBuilder builder = new StringBuilder();</span>
-<span class="source-line-no">845</span><span id="line-845">    for (CostFunction c : costFunctions) {</span>
-<span class="source-line-no">846</span><span id="line-846">      if (!c.isNeeded()) {</span>
-<span class="source-line-no">847</span><span id="line-847">        continue;</span>
-<span class="source-line-no">848</span><span id="line-848">      }</span>
-<span class="source-line-no">849</span><span id="line-849">      double cost = c.getMultiplier() * c.cost();</span>
-<span class="source-line-no">850</span><span id="line-850">      if (cost &gt; 0.0) {</span>
-<span class="source-line-no">851</span><span id="line-851">        builder.append(" ");</span>
-<span class="source-line-no">852</span><span id="line-852">        builder.append(c.getClass().getSimpleName());</span>
-<span class="source-line-no">853</span><span id="line-853">        builder.append(" : ");</span>
-<span class="source-line-no">854</span><span id="line-854">        builder.append(cost);</span>
-<span class="source-line-no">855</span><span id="line-855">        builder.append(";");</span>
-<span class="source-line-no">856</span><span id="line-856">      }</span>
-<span class="source-line-no">857</span><span id="line-857">    }</span>
-<span class="source-line-no">858</span><span id="line-858">    if (builder.length() &gt; 0) {</span>
-<span class="source-line-no">859</span><span id="line-859">      builder.deleteCharAt(builder.length() - 1);</span>
+<span class="source-line-no">584</span><span id="line-584"></span>
+<span class="source-line-no">585</span><span id="line-585">    initCosts(cluster);</span>
+<span class="source-line-no">586</span><span id="line-586">    balancerConditionals.loadClusterState(cluster);</span>
+<span class="source-line-no">587</span><span id="line-587">    balancerConditionals.clearConditionalWeightCaches();</span>
+<span class="source-line-no">588</span><span id="line-588"></span>
+<span class="source-line-no">589</span><span id="line-589">    float localSumMultiplier = 0;</span>
+<span class="source-line-no">590</span><span id="line-590">    for (CostFunction c : costFunctions) {</span>
+<span class="source-line-no">591</span><span id="line-591">      if (c.isNeeded()) {</span>
+<span class="source-line-no">592</span><span id="line-592">        localSumMultiplier += c.getMultiplier();</span>
+<span class="source-line-no">593</span><span id="line-593">      }</span>
+<span class="source-line-no">594</span><span id="line-594">    }</span>
+<span class="source-line-no">595</span><span id="line-595">    sumMultiplier = localSumMultiplier;</span>
+<span class="source-line-no">596</span><span id="line-596">    if (sumMultiplier &lt;= 0) {</span>
+<span class="source-line-no">597</span><span id="line-597">      LOG.error("At least one cost function needs a multiplier &gt; 0. For example, set "</span>
+<span class="source-line-no">598</span><span id="line-598">        + "hbase.master.balancer.stochastic.regionCountCost to a positive value or default");</span>
+<span class="source-line-no">599</span><span id="line-599">      return null;</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">    double currentCost = computeCost(cluster, Double.MAX_VALUE);</span>
+<span class="source-line-no">603</span><span id="line-603">    curOverallCost = currentCost;</span>
+<span class="source-line-no">604</span><span id="line-604">    System.arraycopy(tempFunctionCosts, 0, curFunctionCosts, 0, curFunctionCosts.length);</span>
+<span class="source-line-no">605</span><span id="line-605">    updateStochasticCosts(tableName, curOverallCost, curFunctionCosts);</span>
+<span class="source-line-no">606</span><span id="line-606">    double initCost = currentCost;</span>
+<span class="source-line-no">607</span><span id="line-607">    double newCost;</span>
+<span class="source-line-no">608</span><span id="line-608"></span>
+<span class="source-line-no">609</span><span id="line-609">    if (!needsBalance(tableName, cluster)) {</span>
+<span class="source-line-no">610</span><span id="line-610">      return null;</span>
+<span class="source-line-no">611</span><span id="line-611">    }</span>
+<span class="source-line-no">612</span><span id="line-612"></span>
+<span class="source-line-no">613</span><span id="line-613">    long computedMaxSteps;</span>
+<span class="source-line-no">614</span><span id="line-614">    if (runMaxSteps) {</span>
+<span class="source-line-no">615</span><span id="line-615">      computedMaxSteps = Math.max(this.maxSteps, calculateMaxSteps(cluster));</span>
+<span class="source-line-no">616</span><span id="line-616">    } else {</span>
+<span class="source-line-no">617</span><span id="line-617">      long calculatedMaxSteps = calculateMaxSteps(cluster);</span>
+<span class="source-line-no">618</span><span id="line-618">      computedMaxSteps = Math.min(this.maxSteps, calculatedMaxSteps);</span>
+<span class="source-line-no">619</span><span id="line-619">      if (calculatedMaxSteps &gt; maxSteps) {</span>
+<span class="source-line-no">620</span><span id="line-620">        LOG.warn(</span>
+<span class="source-line-no">621</span><span id="line-621">          "calculatedMaxSteps:{} for loadbalancer's stochastic walk is larger than "</span>
+<span class="source-line-no">622</span><span id="line-622">            + "maxSteps:{}. Hence load balancing may not work well. Setting parameter "</span>
+<span class="source-line-no">623</span><span id="line-623">            + "\"hbase.master.balancer.stochastic.runMaxSteps\" to true can overcome this issue."</span>
+<span class="source-line-no">624</span><span id="line-624">            + "(This config change does not require service restart)",</span>
+<span class="source-line-no">625</span><span id="line-625">          calculatedMaxSteps, maxSteps);</span>
+<span class="source-line-no">626</span><span id="line-626">      }</span>
+<span class="source-line-no">627</span><span id="line-627">    }</span>
+<span class="source-line-no">628</span><span id="line-628">    LOG.info(</span>
+<span class="source-line-no">629</span><span id="line-629">      "Start StochasticLoadBalancer.balancer, initial weighted average imbalance={}, "</span>
+<span class="source-line-no">630</span><span id="line-630">        + "functionCost={} computedMaxSteps={}",</span>
+<span class="source-line-no">631</span><span id="line-631">      currentCost / sumMultiplier, functionCost(), computedMaxSteps);</span>
+<span class="source-line-no">632</span><span id="line-632"></span>
+<span class="source-line-no">633</span><span id="line-633">    final String initFunctionTotalCosts = totalCostsPerFunc();</span>
+<span class="source-line-no">634</span><span id="line-634">    long searchStartTime = EnvironmentEdgeManager.currentTime();</span>
+<span class="source-line-no">635</span><span id="line-635">    // Budget maxRunningTime for the stochastic walk only; initialization (cluster costs, etc.)</span>
+<span class="source-line-no">636</span><span id="line-636">    // can be substantial on busy hosts and must not consume the search deadline.</span>
+<span class="source-line-no">637</span><span id="line-637">    cluster.setStopRequestedAt(searchStartTime + maxRunningTime);</span>
+<span class="source-line-no">638</span><span id="line-638">    // Perform a stochastic walk to see if we can get a good fit.</span>
+<span class="source-line-no">639</span><span id="line-639">    long step;</span>
+<span class="source-line-no">640</span><span id="line-640">    boolean planImprovedConditionals = false;</span>
+<span class="source-line-no">641</span><span id="line-641">    Map&lt;Class&lt;? extends CandidateGenerator&gt;, Long&gt; generatorToStepCount = new HashMap&lt;&gt;();</span>
+<span class="source-line-no">642</span><span id="line-642">    Map&lt;Class&lt;? extends CandidateGenerator&gt;, Long&gt; generatorToApprovedActionCount = new HashMap&lt;&gt;();</span>
+<span class="source-line-no">643</span><span id="line-643">    for (step = 0; step &lt; computedMaxSteps; step++) {</span>
+<span class="source-line-no">644</span><span id="line-644">      Pair&lt;CandidateGenerator, BalanceAction&gt; nextAction = nextAction(cluster);</span>
+<span class="source-line-no">645</span><span id="line-645">      CandidateGenerator generator = nextAction.getFirst();</span>
+<span class="source-line-no">646</span><span id="line-646">      BalanceAction action = nextAction.getSecond();</span>
+<span class="source-line-no">647</span><span id="line-647"></span>
+<span class="source-line-no">648</span><span id="line-648">      if (action.getType() == BalanceAction.Type.NULL) {</span>
+<span class="source-line-no">649</span><span id="line-649">        continue;</span>
+<span class="source-line-no">650</span><span id="line-650">      }</span>
+<span class="source-line-no">651</span><span id="line-651"></span>
+<span class="source-line-no">652</span><span id="line-652">      int conditionalViolationsChange = 0;</span>
+<span class="source-line-no">653</span><span id="line-653">      boolean isViolatingConditionals = false;</span>
+<span class="source-line-no">654</span><span id="line-654">      boolean moveImprovedConditionals = false;</span>
+<span class="source-line-no">655</span><span id="line-655">      // Only check conditionals if they are enabled</span>
+<span class="source-line-no">656</span><span id="line-656">      if (balancerConditionals.isConditionalBalancingEnabled()) {</span>
+<span class="source-line-no">657</span><span id="line-657">        // Always accept a conditional generator output. Sometimes conditional generators</span>
+<span class="source-line-no">658</span><span id="line-658">        // may need to make controversial moves in order to break what would otherwise</span>
+<span class="source-line-no">659</span><span id="line-659">        // be a deadlocked situation.</span>
+<span class="source-line-no">660</span><span id="line-660">        // Otherwise, for normal moves, evaluate the action.</span>
+<span class="source-line-no">661</span><span id="line-661">        if (RegionPlanConditionalCandidateGenerator.class.isAssignableFrom(generator.getClass())) {</span>
+<span class="source-line-no">662</span><span id="line-662">          conditionalViolationsChange = -1;</span>
+<span class="source-line-no">663</span><span id="line-663">        } else {</span>
+<span class="source-line-no">664</span><span id="line-664">          conditionalViolationsChange =</span>
+<span class="source-line-no">665</span><span id="line-665">            balancerConditionals.getViolationCountChange(cluster, action);</span>
+<span class="source-line-no">666</span><span id="line-666">          isViolatingConditionals = balancerConditionals.isViolating(cluster, action);</span>
+<span class="source-line-no">667</span><span id="line-667">        }</span>
+<span class="source-line-no">668</span><span id="line-668">        moveImprovedConditionals = conditionalViolationsChange &lt; 0;</span>
+<span class="source-line-no">669</span><span id="line-669">        if (moveImprovedConditionals) {</span>
+<span class="source-line-no">670</span><span id="line-670">          planImprovedConditionals = true;</span>
+<span class="source-line-no">671</span><span id="line-671">        }</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">      // Change state and evaluate costs</span>
+<span class="source-line-no">675</span><span id="line-675">      try {</span>
+<span class="source-line-no">676</span><span id="line-676">        cluster.doAction(action);</span>
+<span class="source-line-no">677</span><span id="line-677">      } catch (IllegalStateException | ArrayIndexOutOfBoundsException e) {</span>
+<span class="source-line-no">678</span><span id="line-678">        LOG.warn(</span>
+<span class="source-line-no">679</span><span id="line-679">          "Generator {} produced invalid action! "</span>
+<span class="source-line-no">680</span><span id="line-680">            + "Debug your candidate generator as this is likely a bug, "</span>
+<span class="source-line-no">681</span><span id="line-681">            + "and may cause a balancer deadlock. {}",</span>
+<span class="source-line-no">682</span><span id="line-682">          generator.getClass().getSimpleName(), action, e);</span>
+<span class="source-line-no">683</span><span id="line-683">        continue;</span>
+<span class="source-line-no">684</span><span id="line-684">      }</span>
+<span class="source-line-no">685</span><span id="line-685">      updateCostsAndWeightsWithAction(cluster, action);</span>
+<span class="source-line-no">686</span><span id="line-686">      generatorToStepCount.merge(generator.getClass(), action.getStepCount(), Long::sum);</span>
+<span class="source-line-no">687</span><span id="line-687"></span>
+<span class="source-line-no">688</span><span id="line-688">      newCost = computeCost(cluster, currentCost);</span>
+<span class="source-line-no">689</span><span id="line-689"></span>
+<span class="source-line-no">690</span><span id="line-690">      double costImprovement = currentCost - newCost;</span>
+<span class="source-line-no">691</span><span id="line-691">      double minimumImprovement =</span>
+<span class="source-line-no">692</span><span id="line-692">        Math.max(CostFunction.getCostEpsilon(currentCost), CostFunction.getCostEpsilon(newCost));</span>
+<span class="source-line-no">693</span><span id="line-693">      boolean costsImproved = costImprovement &gt; minimumImprovement;</span>
+<span class="source-line-no">694</span><span id="line-694">      boolean conditionalsSimilarCostsImproved =</span>
+<span class="source-line-no">695</span><span id="line-695">        (costsImproved &amp;&amp; conditionalViolationsChange == 0 &amp;&amp; !isViolatingConditionals);</span>
+<span class="source-line-no">696</span><span id="line-696">      // Our first priority is to reduce conditional violations</span>
+<span class="source-line-no">697</span><span id="line-697">      // Our second priority is to reduce balancer cost</span>
+<span class="source-line-no">698</span><span id="line-698">      // change, regardless of cost change</span>
+<span class="source-line-no">699</span><span id="line-699">      if (moveImprovedConditionals || conditionalsSimilarCostsImproved) {</span>
+<span class="source-line-no">700</span><span id="line-700">        currentCost = newCost;</span>
+<span class="source-line-no">701</span><span id="line-701">        generatorToApprovedActionCount.merge(generator.getClass(), action.getStepCount(),</span>
+<span class="source-line-no">702</span><span id="line-702">          Long::sum);</span>
+<span class="source-line-no">703</span><span id="line-703"></span>
+<span class="source-line-no">704</span><span id="line-704">        // save for JMX</span>
+<span class="source-line-no">705</span><span id="line-705">        curOverallCost = currentCost;</span>
+<span class="source-line-no">706</span><span id="line-706">        System.arraycopy(tempFunctionCosts, 0, curFunctionCosts, 0, curFunctionCosts.length);</span>
+<span class="source-line-no">707</span><span id="line-707">      } else {</span>
+<span class="source-line-no">708</span><span id="line-708">        // Put things back the way they were before.</span>
+<span class="source-line-no">709</span><span id="line-709">        // TODO: undo by remembering old values</span>
+<span class="source-line-no">710</span><span id="line-710">        BalanceAction undoAction = action.undoAction();</span>
+<span class="source-line-no">711</span><span id="line-711">        cluster.doAction(undoAction);</span>
+<span class="source-line-no">712</span><span id="line-712">        updateCostsAndWeightsWithAction(cluster, undoAction);</span>
+<span class="source-line-no">713</span><span id="line-713">      }</span>
+<span class="source-line-no">714</span><span id="line-714"></span>
+<span class="source-line-no">715</span><span id="line-715">      if (cluster.isStopRequested()) {</span>
+<span class="source-line-no">716</span><span id="line-716">        break;</span>
+<span class="source-line-no">717</span><span id="line-717">      }</span>
+<span class="source-line-no">718</span><span id="line-718">    }</span>
+<span class="source-line-no">719</span><span id="line-719">    long endTime = EnvironmentEdgeManager.currentTime();</span>
+<span class="source-line-no">720</span><span id="line-720"></span>
+<span class="source-line-no">721</span><span id="line-721">    StringJoiner joiner = new StringJoiner("\n");</span>
+<span class="source-line-no">722</span><span id="line-722">    joiner.add("CandidateGenerator activity summary:");</span>
+<span class="source-line-no">723</span><span id="line-723">    generatorToStepCount.forEach((generator, count) -&gt; {</span>
+<span class="source-line-no">724</span><span id="line-724">      long approvals = generatorToApprovedActionCount.getOrDefault(generator, 0L);</span>
+<span class="source-line-no">725</span><span id="line-725">      joiner.add(String.format(" - %s: %d steps, %d approvals", generator.getSimpleName(), count,</span>
+<span class="source-line-no">726</span><span id="line-726">        approvals));</span>
+<span class="source-line-no">727</span><span id="line-727">    });</span>
+<span class="source-line-no">728</span><span id="line-728">    LOG.debug(joiner.toString());</span>
+<span class="source-line-no">729</span><span id="line-729"></span>
+<span class="source-line-no">730</span><span id="line-730">    metricsBalancer.balanceCluster(endTime - startTime);</span>
+<span class="source-line-no">731</span><span id="line-731"></span>
+<span class="source-line-no">732</span><span id="line-732">    if (planImprovedConditionals || (initCost &gt; currentCost)) {</span>
+<span class="source-line-no">733</span><span id="line-733">      updateStochasticCosts(tableName, curOverallCost, curFunctionCosts);</span>
+<span class="source-line-no">734</span><span id="line-734">      List&lt;RegionPlan&gt; plans = createRegionPlans(cluster);</span>
+<span class="source-line-no">735</span><span id="line-735">      LOG.info(</span>
+<span class="source-line-no">736</span><span id="line-736">        "Finished computing new moving plan. Computation took {} ms"</span>
+<span class="source-line-no">737</span><span id="line-737">          + " to try {} different iterations.  Found a solution that moves "</span>
+<span class="source-line-no">738</span><span id="line-738">          + "{} regions; Going from a computed imbalance of {}"</span>
+<span class="source-line-no">739</span><span id="line-739">          + " to a new imbalance of {}. funtionCost={}",</span>
+<span class="source-line-no">740</span><span id="line-740">        endTime - startTime, step, plans.size(), initCost / sumMultiplier,</span>
+<span class="source-line-no">741</span><span id="line-741">        currentCost / sumMultiplier, functionCost());</span>
+<span class="source-line-no">742</span><span id="line-742">      sendRegionPlansToRingBuffer(plans, currentCost, initCost, initFunctionTotalCosts, step);</span>
+<span class="source-line-no">743</span><span id="line-743">      return plans;</span>
+<span class="source-line-no">744</span><span id="line-744">    }</span>
+<span class="source-line-no">745</span><span id="line-745">    LOG.info(</span>
+<span class="source-line-no">746</span><span id="line-746">      "Could not find a better moving plan.  Tried {} different configurations in "</span>
+<span class="source-line-no">747</span><span id="line-747">        + "{} ms, and did not find anything with an imbalance score less than {} "</span>
+<span class="source-line-no">748</span><span id="line-748">        + "and could not improve conditional violations",</span>
+<span class="source-line-no">749</span><span id="line-749">      step, endTime - startTime, initCost / sumMultiplier);</span>
+<span class="source-line-no">750</span><span id="line-750">    return null;</span>
+<span class="source-line-no">751</span><span id="line-751">  }</span>
+<span class="source-line-no">752</span><span id="line-752"></span>
+<span class="source-line-no">753</span><span id="line-753">  protected void sendRejectionReasonToRingBuffer(Supplier&lt;String&gt; reason,</span>
+<span class="source-line-no">754</span><span id="line-754">    List&lt;CostFunction&gt; costFunctions) {</span>
+<span class="source-line-no">755</span><span id="line-755">    provider.recordBalancerRejection(() -&gt; {</span>
+<span class="source-line-no">756</span><span id="line-756">      BalancerRejection.Builder builder = new BalancerRejection.Builder().setReason(reason.get());</span>
+<span class="source-line-no">757</span><span id="line-757">      if (costFunctions != null) {</span>
+<span class="source-line-no">758</span><span id="line-758">        for (CostFunction c : costFunctions) {</span>
+<span class="source-line-no">759</span><span id="line-759">          if (!c.isNeeded()) {</span>
+<span class="source-line-no">760</span><span id="line-760">            continue;</span>
+<span class="source-line-no">761</span><span id="line-761">          }</span>
+<span class="source-line-no">762</span><span id="line-762">          builder.addCostFuncInfo(c.getClass().getName(), c.cost(), c.getMultiplier());</span>
+<span class="source-line-no">763</span><span id="line-763">        }</span>
+<span class="source-line-no">764</span><span id="line-764">      }</span>
+<span class="source-line-no">765</span><span id="line-765">      return builder.build();</span>
+<span class="source-line-no">766</span><span id="line-766">    });</span>
+<span class="source-line-no">767</span><span id="line-767">  }</span>
+<span class="source-line-no">768</span><span id="line-768"></span>
+<span class="source-line-no">769</span><span id="line-769">  private void sendRegionPlansToRingBuffer(List&lt;RegionPlan&gt; plans, double currentCost,</span>
+<span class="source-line-no">770</span><span id="line-770">    double initCost, String initFunctionTotalCosts, long step) {</span>
+<span class="source-line-no">771</span><span id="line-771">    provider.recordBalancerDecision(() -&gt; {</span>
+<span class="source-line-no">772</span><span id="line-772">      List&lt;String&gt; regionPlans = new ArrayList&lt;&gt;();</span>
+<span class="source-line-no">773</span><span id="line-773">      for (RegionPlan plan : plans) {</span>
+<span class="source-line-no">774</span><span id="line-774">        regionPlans</span>
+<span class="source-line-no">775</span><span id="line-775">          .add("table: " + plan.getRegionInfo().getTable() + " , region: " + plan.getRegionName()</span>
+<span class="source-line-no">776</span><span id="line-776">            + " , source: " + plan.getSource() + " , destination: " + plan.getDestination());</span>
+<span class="source-line-no">777</span><span id="line-777">      }</span>
+<span class="source-line-no">778</span><span id="line-778">      return new BalancerDecision.Builder().setInitTotalCost(initCost)</span>
+<span class="source-line-no">779</span><span id="line-779">        .setInitialFunctionCosts(initFunctionTotalCosts).setComputedTotalCost(currentCost)</span>
+<span class="source-line-no">780</span><span id="line-780">        .setFinalFunctionCosts(totalCostsPerFunc()).setComputedSteps(step)</span>
+<span class="source-line-no">781</span><span id="line-781">        .setRegionPlans(regionPlans).build();</span>
+<span class="source-line-no">782</span><span id="line-782">    });</span>
+<span class="source-line-no">783</span><span id="line-783">  }</span>
+<span class="source-line-no">784</span><span id="line-784"></span>
+<span class="source-line-no">785</span><span id="line-785">  /**</span>
+<span class="source-line-no">786</span><span id="line-786">   * update costs to JMX</span>
+<span class="source-line-no">787</span><span id="line-787">   */</span>
+<span class="source-line-no">788</span><span id="line-788">  private void updateStochasticCosts(TableName tableName, double overall, double[] subCosts) {</span>
+<span class="source-line-no">789</span><span id="line-789">    if (tableName == null) {</span>
+<span class="source-line-no">790</span><span id="line-790">      return;</span>
+<span class="source-line-no">791</span><span id="line-791">    }</span>
+<span class="source-line-no">792</span><span id="line-792"></span>
+<span class="source-line-no">793</span><span id="line-793">    // check if the metricsBalancer is MetricsStochasticBalancer before casting</span>
+<span class="source-line-no">794</span><span id="line-794">    if (metricsBalancer instanceof MetricsStochasticBalancer) {</span>
+<span class="source-line-no">795</span><span id="line-795">      MetricsStochasticBalancer balancer = (MetricsStochasticBalancer) metricsBalancer;</span>
+<span class="source-line-no">796</span><span id="line-796">      // overall cost</span>
+<span class="source-line-no">797</span><span id="line-797">      balancer.updateStochasticCost(tableName.getNameAsString(), OVERALL_COST_FUNCTION_NAME,</span>
+<span class="source-line-no">798</span><span id="line-798">        "Overall cost", overall);</span>
+<span class="source-line-no">799</span><span id="line-799"></span>
+<span class="source-line-no">800</span><span id="line-800">      // each cost function</span>
+<span class="source-line-no">801</span><span id="line-801">      for (int i = 0; i &lt; costFunctions.size(); i++) {</span>
+<span class="source-line-no">802</span><span id="line-802">        CostFunction costFunction = costFunctions.get(i);</span>
+<span class="source-line-no">803</span><span id="line-803">        String costFunctionName = costFunction.getClass().getSimpleName();</span>
+<span class="source-line-no">804</span><span id="line-804">        double costPercent = (overall == 0) ? 0 : (subCosts[i] / overall);</span>
+<span class="source-line-no">805</span><span id="line-805">        // TODO: cost function may need a specific description</span>
+<span class="source-line-no">806</span><span id="line-806">        balancer.updateStochasticCost(tableName.getNameAsString(), costFunctionName,</span>
+<span class="source-line-no">807</span><span id="line-807">          "The percent of " + costFunctionName, costPercent);</span>
+<span class="source-line-no">808</span><span id="line-808">      }</span>
+<span class="source-line-no">809</span><span id="line-809">    }</span>
+<span class="source-line-no">810</span><span id="line-810">  }</span>
+<span class="source-line-no">811</span><span id="line-811"></span>
+<span class="source-line-no">812</span><span id="line-812">  private void addCostFunction(List&lt;CostFunction&gt; costFunctions, CostFunction costFunction) {</span>
+<span class="source-line-no">813</span><span id="line-813">    float multiplier = costFunction.getMultiplier();</span>
+<span class="source-line-no">814</span><span id="line-814">    if (multiplier &gt; 0) {</span>
+<span class="source-line-no">815</span><span id="line-815">      costFunctions.add(costFunction);</span>
+<span class="source-line-no">816</span><span id="line-816">    }</span>
+<span class="source-line-no">817</span><span id="line-817">  }</span>
+<span class="source-line-no">818</span><span id="line-818"></span>
+<span class="source-line-no">819</span><span id="line-819">  protected String functionCost() {</span>
+<span class="source-line-no">820</span><span id="line-820">    StringBuilder builder = new StringBuilder();</span>
+<span class="source-line-no">821</span><span id="line-821">    for (CostFunction c : costFunctions) {</span>
+<span class="source-line-no">822</span><span id="line-822">      builder.append(c.getClass().getSimpleName());</span>
+<span class="source-line-no">823</span><span id="line-823">      builder.append(" : (");</span>
+<span class="source-line-no">824</span><span id="line-824">      if (c.isNeeded()) {</span>
+<span class="source-line-no">825</span><span id="line-825">        builder.append("multiplier=" + c.getMultiplier());</span>
+<span class="source-line-no">826</span><span id="line-826">        builder.append(", ");</span>
+<span class="source-line-no">827</span><span id="line-827">        double cost = c.cost();</span>
+<span class="source-line-no">828</span><span id="line-828">        builder.append("imbalance=" + cost);</span>
+<span class="source-line-no">829</span><span id="line-829">        if (cost &gt;= minCostNeedBalance) {</span>
+<span class="source-line-no">830</span><span id="line-830">          builder.append(", need balance");</span>
+<span class="source-line-no">831</span><span id="line-831">        }</span>
+<span class="source-line-no">832</span><span id="line-832">      } else {</span>
+<span class="source-line-no">833</span><span id="line-833">        builder.append("not needed");</span>
+<span class="source-line-no">834</span><span id="line-834">      }</span>
+<span class="source-line-no">835</span><span id="line-835">      builder.append("); ");</span>
+<span class="source-line-no">836</span><span id="line-836">    }</span>
+<span class="source-line-no">837</span><span id="line-837">    return builder.toString();</span>
+<span class="source-line-no">838</span><span id="line-838">  }</span>
+<span class="source-line-no">839</span><span id="line-839"></span>
+<span class="source-line-no">840</span><span id="line-840">  @RestrictedApi(explanation = "Should only be called in tests", link = "",</span>
+<span class="source-line-no">841</span><span id="line-841">      allowedOnPath = ".*(/src/test/.*|StochasticLoadBalancer).java")</span>
+<span class="source-line-no">842</span><span id="line-842">  List&lt;CostFunction&gt; getCostFunctions() {</span>
+<span class="source-line-no">843</span><span id="line-843">    return costFunctions;</span>
+<span class="source-line-no">844</span><span id="line-844">  }</span>
+<span class="source-line-no">845</span><span id="line-845"></span>
+<span class="source-line-no">846</span><span id="line-846">  private String totalCostsPerFunc() {</span>
+<span class="source-line-no">847</span><span id="line-847">    StringBuilder builder = new StringBuilder();</span>
+<span class="source-line-no">848</span><span id="line-848">    for (CostFunction c : costFunctions) {</span>
+<span class="source-line-no">849</span><span id="line-849">      if (!c.isNeeded()) {</span>
+<span class="source-line-no">850</span><span id="line-850">        continue;</span>
+<span class="source-line-no">851</span><span id="line-851">      }</span>
+<span class="source-line-no">852</span><span id="line-852">      double cost = c.getMultiplier() * c.cost();</span>
+<span class="source-line-no">853</span><span id="line-853">      if (cost &gt; 0.0) {</span>
+<span class="source-line-no">854</span><span id="line-854">        builder.append(" ");</span>
+<span class="source-line-no">855</span><span id="line-855">        builder.append(c.getClass().getSimpleName());</span>
+<span class="source-line-no">856</span><span id="line-856">        builder.append(" : ");</span>
+<span class="source-line-no">857</span><span id="line-857">        builder.append(cost);</span>
+<span class="source-line-no">858</span><span id="line-858">        builder.append(";");</span>
+<span class="source-line-no">859</span><span id="line-859">      }</span>
 <span class="source-line-no">860</span><span id="line-860">    }</span>
-<span class="source-line-no">861</span><span id="line-861">    return builder.toString();</span>
-<span class="source-line-no">862</span><span id="line-862">  }</span>
-<span class="source-line-no">863</span><span id="line-863"></span>
-<span class="source-line-no">864</span><span id="line-864">  /**</span>
-<span class="source-line-no">865</span><span id="line-865">   * Create all of the RegionPlan's needed to move from the initial cluster state to the desired</span>
-<span class="source-line-no">866</span><span id="line-866">   * state.</span>
-<span class="source-line-no">867</span><span id="line-867">   * @param cluster The state of the cluster</span>
-<span class="source-line-no">868</span><span id="line-868">   * @return List of RegionPlan's that represent the moves needed to get to desired final state.</span>
-<span class="source-line-no">869</span><span id="line-869">   */</span>
-<span class="source-line-no">870</span><span id="line-870">  private List&lt;RegionPlan&gt; createRegionPlans(BalancerClusterState cluster) {</span>
-<span class="source-line-no">871</span><span id="line-871">    List&lt;RegionPlan&gt; plans = new ArrayList&lt;&gt;();</span>
-<span class="source-line-no">872</span><span id="line-872">    for (int regionIndex = 0; regionIndex</span>
-<span class="source-line-no">873</span><span id="line-873">        &lt; cluster.regionIndexToServerIndex.length; regionIndex++) {</span>
-<span class="source-line-no">874</span><span id="line-874">      int initialServerIndex = cluster.initialRegionIndexToServerIndex[regionIndex];</span>
-<span class="source-line-no">875</span><span id="line-875">      int newServerIndex = cluster.regionIndexToServerIndex[regionIndex];</span>
-<span class="source-line-no">876</span><span id="line-876"></span>
-<span class="source-line-no">877</span><span id="line-877">      if (initialServerIndex != newServerIndex) {</span>
-<span class="source-line-no">878</span><span id="line-878">        RegionInfo region = cluster.regions[regionIndex];</span>
-<span class="source-line-no">879</span><span id="line-879">        ServerName initialServer = cluster.servers[initialServerIndex];</span>
-<span class="source-line-no">880</span><span id="line-880">        ServerName newServer = cluster.servers[newServerIndex];</span>
-<span class="source-line-no">881</span><span id="line-881"></span>
-<span class="source-line-no">882</span><span id="line-882">        if (LOG.isTraceEnabled()) {</span>
-<span class="source-line-no">883</span><span id="line-883">          LOG.trace("Moving Region " + region.getEncodedName() + " from server "</span>
-<span class="source-line-no">884</span><span id="line-884">            + initialServer.getHostname() + " to " + newServer.getHostname());</span>
-<span class="source-line-no">885</span><span id="line-885">        }</span>
-<span class="source-line-no">886</span><span id="line-886">        RegionPlan rp = new RegionPlan(region, initialServer, newServer);</span>
-<span class="source-line-no">887</span><span id="line-887">        plans.add(rp);</span>
-<span class="source-line-no">888</span><span id="line-888">      }</span>
-<span class="source-line-no">889</span><span id="line-889">    }</span>
-<span class="source-line-no">890</span><span id="line-890">    return plans;</span>
-<span class="source-line-no">891</span><span id="line-891">  }</span>
-<span class="source-line-no">892</span><span id="line-892"></span>
-<span class="source-line-no">893</span><span id="line-893">  /**</span>
-<span class="source-line-no">894</span><span id="line-894">   * Store the current region loads.</span>
-<span class="source-line-no">895</span><span id="line-895">   */</span>
-<span class="source-line-no">896</span><span id="line-896">  private void updateRegionLoad() {</span>
-<span class="source-line-no">897</span><span id="line-897">    // We create a new hashmap so that regions that are no longer there are removed.</span>
-<span class="source-line-no">898</span><span id="line-898">    // However we temporarily need the old loads so we can use them to keep the rolling average.</span>
-<span class="source-line-no">899</span><span id="line-899">    Map&lt;String, Deque&lt;BalancerRegionLoad&gt;&gt; oldLoads = loads;</span>
-<span class="source-line-no">900</span><span id="line-900">    loads = new HashMap&lt;&gt;();</span>
-<span class="source-line-no">901</span><span id="line-901"></span>
-<span class="source-line-no">902</span><span id="line-902">    clusterStatus.getLiveServerMetrics().forEach((ServerName sn, ServerMetrics sm) -&gt; {</span>
-<span class="source-line-no">903</span><span id="line-903">      sm.getRegionMetrics().forEach((byte[] regionName, RegionMetrics rm) -&gt; {</span>
-<span class="source-line-no">904</span><span id="line-904">        String regionNameAsString = RegionInfo.getRegionNameAsString(regionName);</span>
-<span class="source-line-no">905</span><span id="line-905">        Deque&lt;BalancerRegionLoad&gt; rLoads = oldLoads.get(regionNameAsString);</span>
-<span class="source-line-no">906</span><span id="line-906">        if (rLoads == null) {</span>
-<span class="source-line-no">907</span><span id="line-907">          rLoads = new ArrayDeque&lt;&gt;(numRegionLoadsToRemember + 1);</span>
-<span class="source-line-no">908</span><span id="line-908">        } else if (rLoads.size() &gt;= numRegionLoadsToRemember) {</span>
-<span class="source-line-no">909</span><span id="line-909">          rLoads.remove();</span>
-<span class="source-line-no">910</span><span id="line-910">        }</span>
-<span class="source-line-no">911</span><span id="line-911">        rLoads.add(new BalancerRegionLoad(rm));</span>
-<span class="source-line-no">912</span><span id="line-912">        loads.put(regionNameAsString, rLoads);</span>
-<span class="source-line-no">913</span><span id="line-913">      });</span>
-<span class="source-line-no">914</span><span id="line-914">    });</span>
-<span class="source-line-no">915</span><span id="line-915">  }</span>
-<span class="source-line-no">916</span><span id="line-916"></span>
-<span class="source-line-no">917</span><span id="line-917">  @RestrictedApi(explanation = "Should only be called in tests", link = "",</span>
-<span class="source-line-no">918</span><span id="line-918">      allowedOnPath = ".*(/src/test/.*|StochasticLoadBalancer).java")</span>
-<span class="source-line-no">919</span><span id="line-919">  void initCosts(BalancerClusterState cluster) {</span>
-<span class="source-line-no">920</span><span id="line-920">    weightsOfGenerators.clear();</span>
-<span class="source-line-no">921</span><span id="line-921">    for (Class&lt;? extends CandidateGenerator&gt; clazz : candidateGenerators.keySet()) {</span>
-<span class="source-line-no">922</span><span id="line-922">      weightsOfGenerators.put(clazz, 0.0);</span>
-<span class="source-line-no">923</span><span id="line-923">    }</span>
-<span class="source-line-no">924</span><span id="line-924">    for (CostFunction c : costFunctions) {</span>
-<span class="source-line-no">925</span><span id="line-925">      c.prepare(cluster);</span>
-<span class="source-line-no">926</span><span id="line-926">      c.updateWeight(weightsOfGenerators);</span>
-<span class="source-line-no">927</span><span id="line-927">    }</span>
-<span class="source-line-no">928</span><span id="line-928">  }</span>
-<span class="source-line-no">929</span><span id="line-929"></span>
-<span class="source-line-no">930</span><span id="line-930">  /**</span>
-<span class="source-line-no">931</span><span id="line-931">   * Update both the costs of costfunctions and the weights of candidate generators</span>
-<span class="source-line-no">932</span><span id="line-932">   */</span>
-<span class="source-line-no">933</span><span id="line-933">  @RestrictedApi(explanation = "Should only be called in tests", link = "",</span>
-<span class="source-line-no">934</span><span id="line-934">      allowedOnPath = ".*(/src/test/.*|StochasticLoadBalancer).java")</span>
-<span class="source-line-no">935</span><span id="line-935">  void updateCostsAndWeightsWithAction(BalancerClusterState cluster, BalanceAction action) {</span>
-<span class="source-line-no">936</span><span id="line-936">    // Reset all the weights to 0</span>
-<span class="source-line-no">937</span><span id="line-937">    for (Class&lt;? extends CandidateGenerator&gt; clazz : candidateGenerators.keySet()) {</span>
-<span class="source-line-no">938</span><span id="line-938">      weightsOfGenerators.put(clazz, 0.0);</span>
-<span class="source-line-no">939</span><span id="line-939">    }</span>
-<span class="source-line-no">940</span><span id="line-940">    for (CostFunction c : costFunctions) {</span>
-<span class="source-line-no">941</span><span id="line-941">      if (c.isNeeded()) {</span>
-<span class="source-line-no">942</span><span id="line-942">        c.postAction(action);</span>
-<span class="source-line-no">943</span><span id="line-943">        c.updateWeight(weightsOfGenerators);</span>
-<span class="source-line-no">944</span><span id="line-944">      }</span>
-<span class="source-line-no">945</span><span id="line-945">    }</span>
-<span class="source-line-no">946</span><span id="line-946">  }</span>
-<span class="source-line-no">947</span><span id="line-947"></span>
-<span class="source-line-no">948</span><span id="line-948">  /**</span>
-<span class="source-line-no">949</span><span id="line-949">   * Get the names of the cost functions</span>
-<span class="source-line-no">950</span><span id="line-950">   */</span>
-<span class="source-line-no">951</span><span id="line-951">  @RestrictedApi(explanation = "Should only be called in tests", link = "",</span>
-<span class="source-line-no">952</span><span id="line-952">      allowedOnPath = ".*(/src/test/.*|StochasticLoadBalancer).java")</span>
-<span class="source-line-no">953</span><span id="line-953">  String[] getCostFunctionNames() {</span>
-<span class="source-line-no">954</span><span id="line-954">    String[] ret = new String[costFunctions.size()];</span>
-<span class="source-line-no">955</span><span id="line-955">    for (int i = 0; i &lt; costFunctions.size(); i++) {</span>
-<span class="source-line-no">956</span><span id="line-956">      CostFunction c = costFunctions.get(i);</span>
-<span class="source-line-no">957</span><span id="line-957">      ret[i] = c.getClass().getSimpleName();</span>
-<span class="source-line-no">958</span><span id="line-958">    }</span>
-<span class="source-line-no">959</span><span id="line-959"></span>
-<span class="source-line-no">960</span><span id="line-960">    return ret;</span>
-<span class="source-line-no">961</span><span id="line-961">  }</span>
+<span class="source-line-no">861</span><span id="line-861">    if (builder.length() &gt; 0) {</span>
+<span class="source-line-no">862</span><span id="line-862">      builder.deleteCharAt(builder.length() - 1);</span>
+<span class="source-line-no">863</span><span id="line-863">    }</span>
+<span class="source-line-no">864</span><span id="line-864">    return builder.toString();</span>
+<span class="source-line-no">865</span><span id="line-865">  }</span>
+<span class="source-line-no">866</span><span id="line-866"></span>
+<span class="source-line-no">867</span><span id="line-867">  /**</span>
+<span class="source-line-no">868</span><span id="line-868">   * Create all of the RegionPlan's needed to move from the initial cluster state to the desired</span>
+<span class="source-line-no">869</span><span id="line-869">   * state.</span>
+<span class="source-line-no">870</span><span id="line-870">   * @param cluster The state of the cluster</span>
+<span class="source-line-no">871</span><span id="line-871">   * @return List of RegionPlan's that represent the moves needed to get to desired final state.</span>
+<span class="source-line-no">872</span><span id="line-872">   */</span>
+<span class="source-line-no">873</span><span id="line-873">  private List&lt;RegionPlan&gt; createRegionPlans(BalancerClusterState cluster) {</span>
+<span class="source-line-no">874</span><span id="line-874">    List&lt;RegionPlan&gt; plans = new ArrayList&lt;&gt;();</span>
+<span class="source-line-no">875</span><span id="line-875">    for (int regionIndex = 0; regionIndex</span>
+<span class="source-line-no">876</span><span id="line-876">        &lt; cluster.regionIndexToServerIndex.length; regionIndex++) {</span>
+<span class="source-line-no">877</span><span id="line-877">      int initialServerIndex = cluster.initialRegionIndexToServerIndex[regionIndex];</span>
+<span class="source-line-no">878</span><span id="line-878">      int newServerIndex = cluster.regionIndexToServerIndex[regionIndex];</span>
+<span class="source-line-no">879</span><span id="line-879"></span>
+<span class="source-line-no">880</span><span id="line-880">      if (initialServerIndex != newServerIndex) {</span>
+<span class="source-line-no">881</span><span id="line-881">        RegionInfo region = cluster.regions[regionIndex];</span>
+<span class="source-line-no">882</span><span id="line-882">        ServerName initialServer = cluster.servers[initialServerIndex];</span>
+<span class="source-line-no">883</span><span id="line-883">        ServerName newServer = cluster.servers[newServerIndex];</span>
+<span class="source-line-no">884</span><span id="line-884"></span>
+<span class="source-line-no">885</span><span id="line-885">        if (LOG.isTraceEnabled()) {</span>
+<span class="source-line-no">886</span><span id="line-886">          LOG.trace("Moving Region " + region.getEncodedName() + " from server "</span>
+<span class="source-line-no">887</span><span id="line-887">            + initialServer.getHostname() + " to " + newServer.getHostname());</span>
+<span class="source-line-no">888</span><span id="line-888">        }</span>
+<span class="source-line-no">889</span><span id="line-889">        RegionPlan rp = new RegionPlan(region, initialServer, newServer);</span>
+<span class="source-line-no">890</span><span id="line-890">        plans.add(rp);</span>
+<span class="source-line-no">891</span><span id="line-891">      }</span>
+<span class="source-line-no">892</span><span id="line-892">    }</span>
+<span class="source-line-no">893</span><span id="line-893">    return plans;</span>
+<span class="source-line-no">894</span><span id="line-894">  }</span>
+<span class="source-line-no">895</span><span id="line-895"></span>
+<span class="source-line-no">896</span><span id="line-896">  /**</span>
+<span class="source-line-no">897</span><span id="line-897">   * Store the current region loads.</span>
+<span class="source-line-no">898</span><span id="line-898">   */</span>
+<span class="source-line-no">899</span><span id="line-899">  private void updateRegionLoad() {</span>
+<span class="source-line-no">900</span><span id="line-900">    // We create a new hashmap so that regions that are no longer there are removed.</span>
+<span class="source-line-no">901</span><span id="line-901">    // However we temporarily need the old loads so we can use them to keep the rolling average.</span>
+<span class="source-line-no">902</span><span id="line-902">    Map&lt;String, Deque&lt;BalancerRegionLoad&gt;&gt; oldLoads = loads;</span>
+<span class="source-line-no">903</span><span id="line-903">    loads = new HashMap&lt;&gt;();</span>
+<span class="source-line-no">904</span><span id="line-904"></span>
+<span class="source-line-no">905</span><span id="line-905">    clusterStatus.getLiveServerMetrics().forEach((ServerName sn, ServerMetrics sm) -&gt; {</span>
+<span class="source-line-no">906</span><span id="line-906">      sm.getRegionMetrics().forEach((byte[] regionName, RegionMetrics rm) -&gt; {</span>
+<span class="source-line-no">907</span><span id="line-907">        String regionNameAsString = RegionInfo.getRegionNameAsString(regionName);</span>
+<span class="source-line-no">908</span><span id="line-908">        Deque&lt;BalancerRegionLoad&gt; rLoads = oldLoads.get(regionNameAsString);</span>
+<span class="source-line-no">909</span><span id="line-909">        if (rLoads == null) {</span>
+<span class="source-line-no">910</span><span id="line-910">          rLoads = new ArrayDeque&lt;&gt;(numRegionLoadsToRemember + 1);</span>
+<span class="source-line-no">911</span><span id="line-911">        } else if (rLoads.size() &gt;= numRegionLoadsToRemember) {</span>
+<span class="source-line-no">912</span><span id="line-912">          rLoads.remove();</span>
+<span class="source-line-no">913</span><span id="line-913">        }</span>
+<span class="source-line-no">914</span><span id="line-914">        rLoads.add(new BalancerRegionLoad(rm));</span>
+<span class="source-line-no">915</span><span id="line-915">        loads.put(regionNameAsString, rLoads);</span>
+<span class="source-line-no">916</span><span id="line-916">      });</span>
+<span class="source-line-no">917</span><span id="line-917">    });</span>
+<span class="source-line-no">918</span><span id="line-918">  }</span>
+<span class="source-line-no">919</span><span id="line-919"></span>
+<span class="source-line-no">920</span><span id="line-920">  @RestrictedApi(explanation = "Should only be called in tests", link = "",</span>
+<span class="source-line-no">921</span><span id="line-921">      allowedOnPath = ".*(/src/test/.*|StochasticLoadBalancer).java")</span>
+<span class="source-line-no">922</span><span id="line-922">  void initCosts(BalancerClusterState cluster) {</span>
+<span class="source-line-no">923</span><span id="line-923">    weightsOfGenerators.clear();</span>
+<span class="source-line-no">924</span><span id="line-924">    for (Class&lt;? extends CandidateGenerator&gt; clazz : candidateGenerators.keySet()) {</span>
+<span class="source-line-no">925</span><span id="line-925">      weightsOfGenerators.put(clazz, 0.0);</span>
+<span class="source-line-no">926</span><span id="line-926">    }</span>
+<span class="source-line-no">927</span><span id="line-927">    for (CostFunction c : costFunctions) {</span>
+<span class="source-line-no">928</span><span id="line-928">      c.prepare(cluster);</span>
+<span class="source-line-no">929</span><span id="line-929">      c.updateWeight(weightsOfGenerators);</span>
+<span class="source-line-no">930</span><span id="line-930">    }</span>
+<span class="source-line-no">931</span><span id="line-931">  }</span>
+<span class="source-line-no">932</span><span id="line-932"></span>
+<span class="source-line-no">933</span><span id="line-933">  /**</span>
+<span class="source-line-no">934</span><span id="line-934">   * Update both the costs of costfunctions and the weights of candidate generators</span>
+<span class="source-line-no">935</span><span id="line-935">   */</span>
+<span class="source-line-no">936</span><span id="line-936">  @RestrictedApi(explanation = "Should only be called in tests", link = "",</span>
+<span class="source-line-no">937</span><span id="line-937">      allowedOnPath = ".*(/src/test/.*|StochasticLoadBalancer).java")</span>
+<span class="source-line-no">938</span><span id="line-938">  void updateCostsAndWeightsWithAction(BalancerClusterState cluster, BalanceAction action) {</span>
+<span class="source-line-no">939</span><span id="line-939">    // Reset all the weights to 0</span>
+<span class="source-line-no">940</span><span id="line-940">    for (Class&lt;? extends CandidateGenerator&gt; clazz : candidateGenerators.keySet()) {</span>
+<span class="source-line-no">941</span><span id="line-941">      weightsOfGenerators.put(clazz, 0.0);</span>
+<span class="source-line-no">942</span><span id="line-942">    }</span>
+<span class="source-line-no">943</span><span id="line-943">    for (CostFunction c : costFunctions) {</span>
+<span class="source-line-no">944</span><span id="line-944">      if (c.isNeeded()) {</span>
+<span class="source-line-no">945</span><span id="line-945">        c.postAction(action);</span>
+<span class="source-line-no">946</span><span id="line-946">        c.updateWeight(weightsOfGenerators);</span>
+<span class="source-line-no">947</span><span id="line-947">      }</span>
+<span class="source-line-no">948</span><span id="line-948">    }</span>
+<span class="source-line-no">949</span><span id="line-949">  }</span>
+<span class="source-line-no">950</span><span id="line-950"></span>
+<span class="source-line-no">951</span><span id="line-951">  /**</span>
+<span class="source-line-no">952</span><span id="line-952">   * Get the names of the cost functions</span>
+<span class="source-line-no">953</span><span id="line-953">   */</span>
+<span class="source-line-no">954</span><span id="line-954">  @RestrictedApi(explanation = "Should only be called in tests", link = "",</span>
+<span class="source-line-no">955</span><span id="line-955">      allowedOnPath = ".*(/src/test/.*|StochasticLoadBalancer).java")</span>
+<span class="source-line-no">956</span><span id="line-956">  String[] getCostFunctionNames() {</span>
+<span class="source-line-no">957</span><span id="line-957">    String[] ret = new String[costFunctions.size()];</span>
+<span class="source-line-no">958</span><span id="line-958">    for (int i = 0; i &lt; costFunctions.size(); i++) {</span>
+<span class="source-line-no">959</span><span id="line-959">      CostFunction c = costFunctions.get(i);</span>
+<span class="source-line-no">960</span><span id="line-960">      ret[i] = c.getClass().getSimpleName();</span>
+<span class="source-line-no">961</span><span id="line-961">    }</span>
 <span class="source-line-no">962</span><span id="line-962"></span>
-<span class="source-line-no">963</span><span id="line-963">  /**</span>
-<span class="source-line-no">964</span><span id="line-964">   * This is the main cost function. It will compute a cost associated with a proposed cluster</span>
-<span class="source-line-no">965</span><span id="line-965">   * state. All different costs will be combined with their multipliers to produce a double cost.</span>
-<span class="source-line-no">966</span><span id="line-966">   * @param cluster      The state of the cluster</span>
-<span class="source-line-no">967</span><span id="line-967">   * @param previousCost the previous cost. This is used as an early out.</span>
-<span class="source-line-no">968</span><span id="line-968">   * @return a double of a cost associated with the proposed cluster state. This cost is an</span>
-<span class="source-line-no">969</span><span id="line-969">   *         aggregate of all individual cost functions.</span>
-<span class="source-line-no">970</span><span id="line-970">   */</span>
-<span class="source-line-no">971</span><span id="line-971">  @RestrictedApi(explanation = "Should only be called in tests", link = "",</span>
-<span class="source-line-no">972</span><span id="line-972">      allowedOnPath = ".*(/src/test/.*|StochasticLoadBalancer).java")</span>
-<span class="source-line-no">973</span><span id="line-973">  double computeCost(BalancerClusterState cluster, double previousCost) {</span>
-<span class="source-line-no">974</span><span id="line-974">    double total = 0;</span>
-<span class="source-line-no">975</span><span id="line-975"></span>
-<span class="source-line-no">976</span><span id="line-976">    for (int i = 0; i &lt; costFunctions.size(); i++) {</span>
-<span class="source-line-no">977</span><span id="line-977">      CostFunction c = costFunctions.get(i);</span>
-<span class="source-line-no">978</span><span id="line-978">      this.tempFunctionCosts[i] = 0.0;</span>
-<span class="source-line-no">979</span><span id="line-979"></span>
-<span class="source-line-no">980</span><span id="line-980">      if (!c.isNeeded()) {</span>
-<span class="source-line-no">981</span><span id="line-981">        continue;</span>
-<span class="source-line-no">982</span><span id="line-982">      }</span>
-<span class="source-line-no">983</span><span id="line-983"></span>
-<span class="source-line-no">984</span><span id="line-984">      Float multiplier = c.getMultiplier();</span>
-<span class="source-line-no">985</span><span id="line-985">      double cost = c.cost();</span>
+<span class="source-line-no">963</span><span id="line-963">    return ret;</span>
+<span class="source-line-no">964</span><span id="line-964">  }</span>
+<span class="source-line-no">965</span><span id="line-965"></span>
+<span class="source-line-no">966</span><span id="line-966">  /**</span>
+<span class="source-line-no">967</span><span id="line-967">   * This is the main cost function. It will compute a cost associated with a proposed cluster</span>
+<span class="source-line-no">968</span><span id="line-968">   * state. All different costs will be combined with their multipliers to produce a double cost.</span>
+<span class="source-line-no">969</span><span id="line-969">   * @param cluster      The state of the cluster</span>
+<span class="source-line-no">970</span><span id="line-970">   * @param previousCost the previous cost. This is used as an early out.</span>
+<span class="source-line-no">971</span><span id="line-971">   * @return a double of a cost associated with the proposed cluster state. This cost is an</span>
+<span class="source-line-no">972</span><span id="line-972">   *         aggregate of all individual cost functions.</span>
+<span class="source-line-no">973</span><span id="line-973">   */</span>
+<span class="source-line-no">974</span><span id="line-974">  @RestrictedApi(explanation = "Should only be called in tests", link = "",</span>
+<span class="source-line-no">975</span><span id="line-975">      allowedOnPath = ".*(/src/test/.*|StochasticLoadBalancer).java")</span>
+<span class="source-line-no">976</span><span id="line-976">  double computeCost(BalancerClusterState cluster, double previousCost) {</span>
+<span class="source-line-no">977</span><span id="line-977">    double total = 0;</span>
+<span class="source-line-no">978</span><span id="line-978"></span>
+<span class="source-line-no">979</span><span id="line-979">    for (int i = 0; i &lt; costFunctions.size(); i++) {</span>
+<span class="source-line-no">980</span><span id="line-980">      CostFunction c = costFunctions.get(i);</span>
+<span class="source-line-no">981</span><span id="line-981">      this.tempFunctionCosts[i] = 0.0;</span>
+<span class="source-line-no">982</span><span id="line-982"></span>
+<span class="source-line-no">983</span><span id="line-983">      if (!c.isNeeded()) {</span>
+<span class="source-line-no">984</span><span id="line-984">        continue;</span>
+<span class="source-line-no">985</span><span id="line-985">      }</span>
 <span class="source-line-no">986</span><span id="line-986"></span>
-<span class="source-line-no">987</span><span id="line-987">      this.tempFunctionCosts[i] = multiplier * cost;</span>
-<span class="source-line-no">988</span><span id="line-988">      total += this.tempFunctionCosts[i];</span>
+<span class="source-line-no">987</span><span id="line-987">      Float multiplier = c.getMultiplier();</span>
+<span class="source-line-no">988</span><span id="line-988">      double cost = c.cost();</span>
 <span class="source-line-no">989</span><span id="line-989"></span>
-<span class="source-line-no">990</span><span id="line-990">      if (total &gt; previousCost) {</span>
-<span class="source-line-no">991</span><span id="line-991">        break;</span>
-<span class="source-line-no">992</span><span id="line-992">      }</span>
-<span class="source-line-no">993</span><span id="line-993">    }</span>
-<span class="source-line-no">994</span><span id="line-994"></span>
-<span class="source-line-no">995</span><span id="line-995">    return total;</span>
-<span class="source-line-no">996</span><span id="line-996">  }</span>
+<span class="source-line-no">990</span><span id="line-990">      this.tempFunctionCosts[i] = multiplier * cost;</span>
+<span class="source-line-no">991</span><span id="line-991">      total += this.tempFunctionCosts[i];</span>
+<span class="source-line-no">992</span><span id="line-992"></span>
+<span class="source-line-no">993</span><span id="line-993">      if (total &gt; previousCost) {</span>
+<span class="source-line-no">994</span><span id="line-994">        break;</span>
+<span class="source-line-no">995</span><span id="line-995">      }</span>
+<span class="source-line-no">996</span><span id="line-996">    }</span>
 <span class="source-line-no">997</span><span id="line-997"></span>
-<span class="source-line-no">998</span><span id="line-998">  /**</span>
-<span class="source-line-no">999</span><span id="line-999">   * A helper function to compose the attribute name from tablename and costfunction name</span>
-<span class="source-line-no">1000</span><span id="line-1000">   */</span>
-<span class="source-line-no">1001</span><span id="line-1001">  static String composeAttributeName(String tableName, String costFunctionName) {</span>
-<span class="source-line-no">1002</span><span id="line-1002">    return tableName + TABLE_FUNCTION_SEP + costFunctionName;</span>
-<span class="source-line-no">1003</span><span id="line-1003">  }</span>
-<span class="source-line-no">1004</span><span id="line-1004">}</span>
+<span class="source-line-no">998</span><span id="line-998">    return total;</span>
+<span class="source-line-no">999</span><span id="line-999">  }</span>
+<span class="source-line-no">1000</span><span id="line-1000"></span>
+<span class="source-line-no">1001</span><span id="line-1001">  /**</span>
+<span class="source-line-no">1002</span><span id="line-1002">   * A helper function to compose the attribute name from tablename and costfunction name</span>
+<span class="source-line-no">1003</span><span id="line-1003">   */</span>
+<span class="source-line-no">1004</span><span id="line-1004">  static String composeAttributeName(String tableName, String costFunctionName) {</span>
+<span class="source-line-no">1005</span><span id="line-1005">    return tableName + TABLE_FUNCTION_SEP + costFunctionName;</span>
+<span class="source-line-no">1006</span><span id="line-1006">  }</span>
+<span class="source-line-no">1007</span><span id="line-1007">}</span>
 
 
 
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RegionScanner.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RegionScanner.html
index 3090e900b4f..d3ac9931d9b 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RegionScanner.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/RegionScanner.html
@@ -31,108 +31,111 @@
 <span class="source-line-no">018</span><span id="line-18">package org.apache.hadoop.hbase.regionserver;</span>
 <span class="source-line-no">019</span><span id="line-19"></span>
 <span class="source-line-no">020</span><span id="line-20">import java.io.IOException;</span>
-<span class="source-line-no">021</span><span id="line-21">import java.util.List;</span>
-<span class="source-line-no">022</span><span id="line-22">import java.util.Set;</span>
-<span class="source-line-no">023</span><span id="line-23">import org.apache.hadoop.fs.Path;</span>
-<span class="source-line-no">024</span><span id="line-24">import org.apache.hadoop.hbase.ExtendedCell;</span>
-<span class="source-line-no">025</span><span id="line-25">import org.apache.hadoop.hbase.HBaseInterfaceAudience;</span>
-<span class="source-line-no">026</span><span id="line-26">import org.apache.hadoop.hbase.client.RegionInfo;</span>
-<span class="source-line-no">027</span><span id="line-27">import org.apache.yetus.audience.InterfaceAudience;</span>
-<span class="source-line-no">028</span><span id="line-28">import org.apache.yetus.audience.InterfaceStability;</span>
-<span class="source-line-no">029</span><span id="line-29"></span>
-<span class="source-line-no">030</span><span id="line-30">/**</span>
-<span class="source-line-no">031</span><span id="line-31"> * RegionScanner describes iterators over rows in an HRegion.</span>
-<span class="source-line-no">032</span><span id="line-32"> */</span>
-<span class="source-line-no">033</span><span id="line-33">@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.COPROC)</span>
-<span class="source-line-no">034</span><span id="line-34">@InterfaceStability.Evolving</span>
-<span class="source-line-no">035</span><span id="line-35">public interface RegionScanner extends InternalScanner {</span>
-<span class="source-line-no">036</span><span id="line-36">  /** Returns The RegionInfo for this scanner. */</span>
-<span class="source-line-no">037</span><span id="line-37">  RegionInfo getRegionInfo();</span>
-<span class="source-line-no">038</span><span id="line-38"></span>
-<span class="source-line-no">039</span><span id="line-39">  /**</span>
-<span class="source-line-no">040</span><span id="line-40">   * @return True if a filter indicates that this scanner will return no further rows.</span>
-<span class="source-line-no">041</span><span id="line-41">   * @throws IOException in case of I/O failure on a filter.</span>
-<span class="source-line-no">042</span><span id="line-42">   */</span>
-<span class="source-line-no">043</span><span id="line-43">  boolean isFilterDone() throws IOException;</span>
-<span class="source-line-no">044</span><span id="line-44"></span>
-<span class="source-line-no">045</span><span id="line-45">  /**</span>
-<span class="source-line-no">046</span><span id="line-46">   * Do a reseek to the required row. Should not be used to seek to a key which may come before the</span>
-<span class="source-line-no">047</span><span id="line-47">   * current position. Always seeks to the beginning of a row boundary. if row is null</span>
-<span class="source-line-no">048</span><span id="line-48">   */</span>
-<span class="source-line-no">049</span><span id="line-49">  boolean reseek(byte[] row) throws IOException;</span>
-<span class="source-line-no">050</span><span id="line-50"></span>
-<span class="source-line-no">051</span><span id="line-51">  /**</span>
-<span class="source-line-no">052</span><span id="line-52">   * @return The preferred max buffersize. See</span>
-<span class="source-line-no">053</span><span id="line-53">   *         {@link org.apache.hadoop.hbase.client.Scan#setMaxResultSize(long)}</span>
-<span class="source-line-no">054</span><span id="line-54">   */</span>
-<span class="source-line-no">055</span><span id="line-55">  long getMaxResultSize();</span>
-<span class="source-line-no">056</span><span id="line-56"></span>
-<span class="source-line-no">057</span><span id="line-57">  /** Returns The Scanner's MVCC readPt see {@link MultiVersionConcurrencyControl} */</span>
-<span class="source-line-no">058</span><span id="line-58">  long getMvccReadPoint();</span>
-<span class="source-line-no">059</span><span id="line-59"></span>
-<span class="source-line-no">060</span><span id="line-60">  /**</span>
-<span class="source-line-no">061</span><span id="line-61">   * @return The limit on the number of cells to retrieve on each call to next(). See</span>
-<span class="source-line-no">062</span><span id="line-62">   *         {@link org.apache.hadoop.hbase.client.Scan#setBatch(int)}</span>
-<span class="source-line-no">063</span><span id="line-63">   */</span>
-<span class="source-line-no">064</span><span id="line-64">  int getBatch();</span>
-<span class="source-line-no">065</span><span id="line-65"></span>
-<span class="source-line-no">066</span><span id="line-66">  /**</span>
-<span class="source-line-no">067</span><span id="line-67">   * @return The Scanner's {@link org.apache.hadoop.hbase.client.Scan#ID_ATRIBUTE} value, or null if</span>
-<span class="source-line-no">068</span><span id="line-68">   *         not set.</span>
-<span class="source-line-no">069</span><span id="line-69">   */</span>
-<span class="source-line-no">070</span><span id="line-70">  default String getOperationId() {</span>
-<span class="source-line-no">071</span><span id="line-71">    return null;</span>
-<span class="source-line-no">072</span><span id="line-72">  }</span>
-<span class="source-line-no">073</span><span id="line-73"></span>
-<span class="source-line-no">074</span><span id="line-74">  /**</span>
-<span class="source-line-no">075</span><span id="line-75">   * Grab the next row's worth of values. This is a special internal method to be called from</span>
-<span class="source-line-no">076</span><span id="line-76">   * coprocessor hooks to avoid expensive setup. Caller must set the thread's readpoint, start and</span>
-<span class="source-line-no">077</span><span id="line-77">   * close a region operation, an synchronize on the scanner object. Caller should maintain and</span>
-<span class="source-line-no">078</span><span id="line-78">   * update metrics. See {@link #nextRaw(List, ScannerContext)}</span>
-<span class="source-line-no">079</span><span id="line-79">   * @param result return output array</span>
-<span class="source-line-no">080</span><span id="line-80">   * @return true if more rows exist after this one, false if scanner is done</span>
-<span class="source-line-no">081</span><span id="line-81">   * @throws IOException e</span>
-<span class="source-line-no">082</span><span id="line-82">   */</span>
-<span class="source-line-no">083</span><span id="line-83">  boolean nextRaw(List&lt;? super ExtendedCell&gt; result) throws IOException;</span>
-<span class="source-line-no">084</span><span id="line-84"></span>
-<span class="source-line-no">085</span><span id="line-85">  /**</span>
-<span class="source-line-no">086</span><span id="line-86">   * Grab the next row's worth of values. The {@link ScannerContext} is used to enforce and track</span>
-<span class="source-line-no">087</span><span id="line-87">   * any limits associated with this call. Any progress that exists in the {@link ScannerContext}</span>
-<span class="source-line-no">088</span><span id="line-88">   * prior to calling this method will be LOST if {@link ScannerContext#getKeepProgress()} is false.</span>
-<span class="source-line-no">089</span><span id="line-89">   * Upon returning from this method, the {@link ScannerContext} will contain information about the</span>
-<span class="source-line-no">090</span><span id="line-90">   * progress made towards the limits. This is a special internal method to be called from</span>
-<span class="source-line-no">091</span><span id="line-91">   * coprocessor hooks to avoid expensive setup. Caller must set the thread's readpoint, start and</span>
-<span class="source-line-no">092</span><span id="line-92">   * close a region operation, an synchronize on the scanner object. Example: &lt;code&gt;</span>
-<span class="source-line-no">093</span><span id="line-93">   * HRegion region = ...;</span>
-<span class="source-line-no">094</span><span id="line-94">   * RegionScanner scanner = ...</span>
-<span class="source-line-no">095</span><span id="line-95">   * MultiVersionConcurrencyControl.setThreadReadPoint(scanner.getMvccReadPoint());</span>
-<span class="source-line-no">096</span><span id="line-96">   * region.startRegionOperation();</span>
-<span class="source-line-no">097</span><span id="line-97">   * try {</span>
-<span class="source-line-no">098</span><span id="line-98">   *   synchronized(scanner) {</span>
-<span class="source-line-no">099</span><span id="line-99">   *     ...</span>
-<span class="source-line-no">100</span><span id="line-100">   *     boolean moreRows = scanner.nextRaw(values);</span>
-<span class="source-line-no">101</span><span id="line-101">   *     ...</span>
-<span class="source-line-no">102</span><span id="line-102">   *   }</span>
-<span class="source-line-no">103</span><span id="line-103">   * } finally {</span>
-<span class="source-line-no">104</span><span id="line-104">   *   region.closeRegionOperation();</span>
-<span class="source-line-no">105</span><span id="line-105">   * }</span>
-<span class="source-line-no">106</span><span id="line-106">   * &lt;/code&gt;</span>
-<span class="source-line-no">107</span><span id="line-107">   * @param result         return output array</span>
-<span class="source-line-no">108</span><span id="line-108">   * @param scannerContext The {@link ScannerContext} instance encapsulating all limits that should</span>
-<span class="source-line-no">109</span><span id="line-109">   *                       be tracked during calls to this method. The progress towards these limits</span>
-<span class="source-line-no">110</span><span id="line-110">   *                       can be tracked within this instance.</span>
-<span class="source-line-no">111</span><span id="line-111">   * @return true if more rows exist after this one, false if scanner is done</span>
-<span class="source-line-no">112</span><span id="line-112">   * @throws IOException e</span>
-<span class="source-line-no">113</span><span id="line-113">   */</span>
-<span class="source-line-no">114</span><span id="line-114">  boolean nextRaw(List&lt;? super ExtendedCell&gt; result, ScannerContext scannerContext)</span>
-<span class="source-line-no">115</span><span id="line-115">    throws IOException;</span>
-<span class="source-line-no">116</span><span id="line-116"></span>
-<span class="source-line-no">117</span><span id="line-117">  /**</span>
-<span class="source-line-no">118</span><span id="line-118">   * Returns the set of store file paths that were successfully read by this scanner. Typically</span>
-<span class="source-line-no">119</span><span id="line-119">   * populated only after the scanner is closed.</span>
-<span class="source-line-no">120</span><span id="line-120">   */</span>
-<span class="source-line-no">121</span><span id="line-121">  Set&lt;Path&gt; getFilesRead();</span>
-<span class="source-line-no">122</span><span id="line-122">}</span>
+<span class="source-line-no">021</span><span id="line-21">import java.util.Collections;</span>
+<span class="source-line-no">022</span><span id="line-22">import java.util.List;</span>
+<span class="source-line-no">023</span><span id="line-23">import java.util.Set;</span>
+<span class="source-line-no">024</span><span id="line-24">import org.apache.hadoop.fs.Path;</span>
+<span class="source-line-no">025</span><span id="line-25">import org.apache.hadoop.hbase.ExtendedCell;</span>
+<span class="source-line-no">026</span><span id="line-26">import org.apache.hadoop.hbase.HBaseInterfaceAudience;</span>
+<span class="source-line-no">027</span><span id="line-27">import org.apache.hadoop.hbase.client.RegionInfo;</span>
+<span class="source-line-no">028</span><span id="line-28">import org.apache.yetus.audience.InterfaceAudience;</span>
+<span class="source-line-no">029</span><span id="line-29">import org.apache.yetus.audience.InterfaceStability;</span>
+<span class="source-line-no">030</span><span id="line-30"></span>
+<span class="source-line-no">031</span><span id="line-31">/**</span>
+<span class="source-line-no">032</span><span id="line-32"> * RegionScanner describes iterators over rows in an HRegion.</span>
+<span class="source-line-no">033</span><span id="line-33"> */</span>
+<span class="source-line-no">034</span><span id="line-34">@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.COPROC)</span>
+<span class="source-line-no">035</span><span id="line-35">@InterfaceStability.Evolving</span>
+<span class="source-line-no">036</span><span id="line-36">public interface RegionScanner extends InternalScanner {</span>
+<span class="source-line-no">037</span><span id="line-37">  /** Returns The RegionInfo for this scanner. */</span>
+<span class="source-line-no">038</span><span id="line-38">  RegionInfo getRegionInfo();</span>
+<span class="source-line-no">039</span><span id="line-39"></span>
+<span class="source-line-no">040</span><span id="line-40">  /**</span>
+<span class="source-line-no">041</span><span id="line-41">   * @return True if a filter indicates that this scanner will return no further rows.</span>
+<span class="source-line-no">042</span><span id="line-42">   * @throws IOException in case of I/O failure on a filter.</span>
+<span class="source-line-no">043</span><span id="line-43">   */</span>
+<span class="source-line-no">044</span><span id="line-44">  boolean isFilterDone() throws IOException;</span>
+<span class="source-line-no">045</span><span id="line-45"></span>
+<span class="source-line-no">046</span><span id="line-46">  /**</span>
+<span class="source-line-no">047</span><span id="line-47">   * Do a reseek to the required row. Should not be used to seek to a key which may come before the</span>
+<span class="source-line-no">048</span><span id="line-48">   * current position. Always seeks to the beginning of a row boundary. if row is null</span>
+<span class="source-line-no">049</span><span id="line-49">   */</span>
+<span class="source-line-no">050</span><span id="line-50">  boolean reseek(byte[] row) throws IOException;</span>
+<span class="source-line-no">051</span><span id="line-51"></span>
+<span class="source-line-no">052</span><span id="line-52">  /**</span>
+<span class="source-line-no">053</span><span id="line-53">   * @return The preferred max buffersize. See</span>
+<span class="source-line-no">054</span><span id="line-54">   *         {@link org.apache.hadoop.hbase.client.Scan#setMaxResultSize(long)}</span>
+<span class="source-line-no">055</span><span id="line-55">   */</span>
+<span class="source-line-no">056</span><span id="line-56">  long getMaxResultSize();</span>
+<span class="source-line-no">057</span><span id="line-57"></span>
+<span class="source-line-no">058</span><span id="line-58">  /** Returns The Scanner's MVCC readPt see {@link MultiVersionConcurrencyControl} */</span>
+<span class="source-line-no">059</span><span id="line-59">  long getMvccReadPoint();</span>
+<span class="source-line-no">060</span><span id="line-60"></span>
+<span class="source-line-no">061</span><span id="line-61">  /**</span>
+<span class="source-line-no">062</span><span id="line-62">   * @return The limit on the number of cells to retrieve on each call to next(). See</span>
+<span class="source-line-no">063</span><span id="line-63">   *         {@link org.apache.hadoop.hbase.client.Scan#setBatch(int)}</span>
+<span class="source-line-no">064</span><span id="line-64">   */</span>
+<span class="source-line-no">065</span><span id="line-65">  int getBatch();</span>
+<span class="source-line-no">066</span><span id="line-66"></span>
+<span class="source-line-no">067</span><span id="line-67">  /**</span>
+<span class="source-line-no">068</span><span id="line-68">   * @return The Scanner's {@link org.apache.hadoop.hbase.client.Scan#ID_ATRIBUTE} value, or null if</span>
+<span class="source-line-no">069</span><span id="line-69">   *         not set.</span>
+<span class="source-line-no">070</span><span id="line-70">   */</span>
+<span class="source-line-no">071</span><span id="line-71">  default String getOperationId() {</span>
+<span class="source-line-no">072</span><span id="line-72">    return null;</span>
+<span class="source-line-no">073</span><span id="line-73">  }</span>
+<span class="source-line-no">074</span><span id="line-74"></span>
+<span class="source-line-no">075</span><span id="line-75">  /**</span>
+<span class="source-line-no">076</span><span id="line-76">   * Grab the next row's worth of values. This is a special internal method to be called from</span>
+<span class="source-line-no">077</span><span id="line-77">   * coprocessor hooks to avoid expensive setup. Caller must set the thread's readpoint, start and</span>
+<span class="source-line-no">078</span><span id="line-78">   * close a region operation, an synchronize on the scanner object. Caller should maintain and</span>
+<span class="source-line-no">079</span><span id="line-79">   * update metrics. See {@link #nextRaw(List, ScannerContext)}</span>
+<span class="source-line-no">080</span><span id="line-80">   * @param result return output array</span>
+<span class="source-line-no">081</span><span id="line-81">   * @return true if more rows exist after this one, false if scanner is done</span>
+<span class="source-line-no">082</span><span id="line-82">   * @throws IOException e</span>
+<span class="source-line-no">083</span><span id="line-83">   */</span>
+<span class="source-line-no">084</span><span id="line-84">  boolean nextRaw(List&lt;? super ExtendedCell&gt; result) throws IOException;</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">   * Grab the next row's worth of values. The {@link ScannerContext} is used to enforce and track</span>
+<span class="source-line-no">088</span><span id="line-88">   * any limits associated with this call. Any progress that exists in the {@link ScannerContext}</span>
+<span class="source-line-no">089</span><span id="line-89">   * prior to calling this method will be LOST if {@link ScannerContext#getKeepProgress()} is false.</span>
+<span class="source-line-no">090</span><span id="line-90">   * Upon returning from this method, the {@link ScannerContext} will contain information about the</span>
+<span class="source-line-no">091</span><span id="line-91">   * progress made towards the limits. This is a special internal method to be called from</span>
+<span class="source-line-no">092</span><span id="line-92">   * coprocessor hooks to avoid expensive setup. Caller must set the thread's readpoint, start and</span>
+<span class="source-line-no">093</span><span id="line-93">   * close a region operation, an synchronize on the scanner object. Example: &lt;code&gt;</span>
+<span class="source-line-no">094</span><span id="line-94">   * HRegion region = ...;</span>
+<span class="source-line-no">095</span><span id="line-95">   * RegionScanner scanner = ...</span>
+<span class="source-line-no">096</span><span id="line-96">   * MultiVersionConcurrencyControl.setThreadReadPoint(scanner.getMvccReadPoint());</span>
+<span class="source-line-no">097</span><span id="line-97">   * region.startRegionOperation();</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">   *   synchronized(scanner) {</span>
+<span class="source-line-no">100</span><span id="line-100">   *     ...</span>
+<span class="source-line-no">101</span><span id="line-101">   *     boolean moreRows = scanner.nextRaw(values);</span>
+<span class="source-line-no">102</span><span id="line-102">   *     ...</span>
+<span class="source-line-no">103</span><span id="line-103">   *   }</span>
+<span class="source-line-no">104</span><span id="line-104">   * } finally {</span>
+<span class="source-line-no">105</span><span id="line-105">   *   region.closeRegionOperation();</span>
+<span class="source-line-no">106</span><span id="line-106">   * }</span>
+<span class="source-line-no">107</span><span id="line-107">   * &lt;/code&gt;</span>
+<span class="source-line-no">108</span><span id="line-108">   * @param result         return output array</span>
+<span class="source-line-no">109</span><span id="line-109">   * @param scannerContext The {@link ScannerContext} instance encapsulating all limits that should</span>
+<span class="source-line-no">110</span><span id="line-110">   *                       be tracked during calls to this method. The progress towards these limits</span>
+<span class="source-line-no">111</span><span id="line-111">   *                       can be tracked within this instance.</span>
+<span class="source-line-no">112</span><span id="line-112">   * @return true if more rows exist after this one, false if scanner is done</span>
+<span class="source-line-no">113</span><span id="line-113">   * @throws IOException e</span>
+<span class="source-line-no">114</span><span id="line-114">   */</span>
+<span class="source-line-no">115</span><span id="line-115">  boolean nextRaw(List&lt;? super ExtendedCell&gt; result, ScannerContext scannerContext)</span>
+<span class="source-line-no">116</span><span id="line-116">    throws IOException;</span>
+<span class="source-line-no">117</span><span id="line-117"></span>
+<span class="source-line-no">118</span><span id="line-118">  /**</span>
+<span class="source-line-no">119</span><span id="line-119">   * Returns the set of store file paths that were successfully read by this scanner. Typically</span>
+<span class="source-line-no">120</span><span id="line-120">   * populated only after the scanner is closed.</span>
+<span class="source-line-no">121</span><span id="line-121">   */</span>
+<span class="source-line-no">122</span><span id="line-122">  default Set&lt;Path&gt; getFilesRead() {</span>
+<span class="source-line-no">123</span><span id="line-123">    return Collections.emptySet();</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>
 
 
 
diff --git a/docs.data b/docs.data
index dc6dd0904b8..0f12517fdc5 100644
--- a/docs.data
+++ b/docs.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/index.mdx","url","/docs","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_36":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,39,44,47,101,136,142,145,151,157,163,169,222,305,308,314,320,354,360,36 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/index.mdx","url","/docs","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_36":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,39,44,48,51,105,140,146,149,155,161,167,173,226,309,312,318,324,358,364 [...]
diff --git a/docs/acl-matrix.data b/docs/acl-matrix.data
index 8bc94372c0e..d47716c58e5 100644
--- a/docs/acl-matrix.data
+++ b/docs/acl-matrix.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/acl-matrix.mdx","url","/docs/acl-matrix","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165,171,224,307,310,31 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/acl-matrix.mdx","url","/docs/acl-matrix","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,169,175,228,311,314 [...]
diff --git a/docs/acl-matrix/index.html b/docs/acl-matrix/index.html
index 723c9d746a6..ca4e1db775d 100644
--- a/docs/acl-matrix/index.html
+++ b/docs/acl-matrix/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">The following conventions are used in the ACL Matrix table:</p>
 <h3 class="flex scroll-m-28 flex-row items-center gap-2" id="scopes"><a data-card="" href="#scopes" class="peer">Scopes</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l- [...]
 <p class="wrap-anywhere">Permissions are evaluated starting at the widest scope and working to the narrowest scope.</p>
@@ -67,11 +67,11 @@ In case the table goes out of date, the unit tests which check for accuracy of p
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/acl-matrix.mdx\",\"url\",\"/docs/acl-matrix\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\" [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/acl-matrix.mdx\",\"url\",\"/docs/acl-matrix\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\" [...]
\ No newline at end of file
diff --git a/docs/amv2.data b/docs/amv2.data
index 8eee74a518c..bcc4ba0a69c 100644
--- a/docs/amv2.data
+++ b/docs/amv2.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/amv2.mdx","url","/docs/amv2","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165,171,224,307,310,316,322,356,36 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/amv2.mdx","url","/docs/amv2","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,169,175,228,311,314,320,326,360 [...]
diff --git a/docs/amv2/index.html b/docs/amv2/index.html
index 3f15a5cf2d5..7d1fe917c74 100644
--- a/docs/amv2/index.html
+++ b/docs/amv2/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">Below are notes for devs on key aspects of AMv2 in no particular order.</p>
 <h2 class="flex scroll-m-28 flex-row items-center gap-2" id="amv2-background"><a data-card="" href="#amv2-background" class="peer">Background</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3 [...]
 <p class="wrap-anywhere">Assignment in HBase 1.x has been problematic in operation. It is not hard to see why. Region state is kept at the other end of an RPC in ZooKeeper (Terminal states — i.e. OPEN or CLOSED — are published to the <em>hbase:meta</em> table). In HBase-1.x.x, state has multiple writers with Master and RegionServers all able to make state edits concurrently (in <em>hbase:meta</em> table and out on ZooKeeper). If clocks are awry or watchers missed, state changes can be sk [...]
@@ -104,11 +104,11 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/amv2.mdx\",\"url\",\"/docs/amv2\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":27,\"_11\": [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/amv2.mdx\",\"url\",\"/docs/amv2\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":27,\"_11\": [...]
\ No newline at end of file
diff --git a/docs/architecture.data b/docs/architecture.data
index 3e91edd77c8..466d5f4aa4d 100644
--- a/docs/architecture.data
+++ b/docs/architecture.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/architecture/index.mdx","url","/docs/architecture","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165,171,224, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/architecture/index.mdx","url","/docs/architecture","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,169,175,2 [...]
diff --git a/docs/architecture/bulk-loading.data b/docs/architecture/bulk-loading.data
index 940ab332f25..cc81761755d 100644
--- a/docs/architecture/bulk-loading.data
+++ b/docs/architecture/bulk-loading.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/architecture/bulk-loading.mdx","url","/docs/architecture/bulk-loading","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/architecture/bulk-loading.mdx","url","/docs/architecture/bulk-loading","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,1 [...]
diff --git a/docs/architecture/bulk-loading/index.html b/docs/architecture/bulk-loading/index.html
index f4a168f9b11..3589c108a88 100644
--- a/docs/architecture/bulk-loading/index.html
+++ b/docs/architecture/bulk-loading/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">HBase includes several methods of loading data into tables. The most straightforward method is to either use the <code>TableOutputFormat</code> class from a MapReduce job, or use the normal client APIs; however, these are not always the most efficient methods.</p>
 <p class="wrap-anywhere">The bulk load feature uses a MapReduce job to output table data in HBase&#x27;s internal data format, and then directly load the generated StoreFiles into a running cluster. Using bulk load will use less CPU and network resources than loading via the HBase API.</p>
 <h2 class="flex scroll-m-28 flex-row items-center gap-2" id="bulk-load-architecture"><a data-card="" href="#bulk-load-architecture" class="peer">Bulk Load Architecture</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true"><path d="M1 [...]
@@ -70,11 +70,11 @@ every peer(s) cluster RS must be restarted to reload the configuration.</p></div
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/architecture/bulk-loading.mdx\",\"url\",\"/docs/architecture/bulk-loading\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7 [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/architecture/bulk-loading.mdx\",\"url\",\"/docs/architecture/bulk-loading\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7 [...]
\ No newline at end of file
diff --git a/docs/architecture/catalog-tables.data b/docs/architecture/catalog-tables.data
index 803fc442903..cf0971791d9 100644
--- a/docs/architecture/catalog-tables.data
+++ b/docs/architecture/catalog-tables.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/architecture/catalog-tables.mdx","url","/docs/architecture/catalog-tables","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/architecture/catalog-tables.mdx","url","/docs/architecture/catalog-tables","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,1 [...]
diff --git a/docs/architecture/catalog-tables/index.html b/docs/architecture/catalog-tables/index.html
index bb1ac52f65e..1488073544d 100644
--- a/docs/architecture/catalog-tables/index.html
+++ b/docs/architecture/catalog-tables/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <h2 class="flex scroll-m-28 flex-row items-center gap-2" id="hbasemeta"><a data-card="" href="#hbasemeta" class="peer">hbase:meta</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7 [...]
 <p class="wrap-anywhere">The <code>hbase:meta</code> table (previously called <code>.META.</code>) keeps a list of all regions in the system, and the location of <code>hbase:meta</code> is stored in ZooKeeper.</p>
 <p class="wrap-anywhere">The <code>hbase:meta</code> table structure is as follows:</p>
@@ -50,11 +50,11 @@ region in the table</p></div></div></div>
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/architecture/catalog-tables.mdx\",\"url\",\"/docs/architecture/catalog-tables\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\ [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/architecture/catalog-tables.mdx\",\"url\",\"/docs/architecture/catalog-tables\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\ [...]
\ No newline at end of file
diff --git a/docs/architecture/client-request-filters.data b/docs/architecture/client-request-filters.data
index 542c72cf6f2..f605c31a420 100644
--- a/docs/architecture/client-request-filters.data
+++ b/docs/architecture/client-request-filters.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/architecture/client-request-filters.mdx","url","/docs/architecture/client-request-filters","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/architecture/client-request-filters.mdx","url","/docs/architecture/client-request-filters","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46 [...]
diff --git a/docs/architecture/client-request-filters/index.html b/docs/architecture/client-request-filters/index.html
index 786d75316a0..d4d2747014f 100644
--- a/docs/architecture/client-request-filters/index.html
+++ b/docs/architecture/client-request-filters/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">Filters can be confusing because there are many different types, and it is best to approach them by understanding the groups of Filter functionality.</p>
 <h2 class="flex scroll-m-28 flex-row items-center gap-2" id="structural"><a data-card="" href="#structural" class="peer">Structural</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0 [...]
 <p class="wrap-anywhere">Structural Filters contain other Filters.</p>
@@ -189,11 +189,11 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/architecture/client-request-filters.mdx\",\"url\",\"/docs/architecture/client-request-filters\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\ [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/architecture/client-request-filters.mdx\",\"url\",\"/docs/architecture/client-request-filters\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\ [...]
\ No newline at end of file
diff --git a/docs/architecture/client.data b/docs/architecture/client.data
index 3faef26bb10..b123178a362 100644
--- a/docs/architecture/client.data
+++ b/docs/architecture/client.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/architecture/client.mdx","url","/docs/architecture/client","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/architecture/client.mdx","url","/docs/architecture/client","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,1 [...]
diff --git a/docs/architecture/client/index.html b/docs/architecture/client/index.html
index 0199941cd43..4d384cf3ef9 100644
--- a/docs/architecture/client/index.html
+++ b/docs/architecture/client/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">See <a href="/docs/architecture/master#runtime-impact" data-discover="true">Runtime Impact</a> for more information about the impact of the Master on HBase Client communication.</p>
 <p class="wrap-anywhere">Administrative functions are done via an instance of <a href="https://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/client/Admin.html">Admin</a></p>
 <h2 class="flex scroll-m-28 flex-row items-center gap-2" id="cluster-connections"><a data-card="" href="#cluster-connections" class="peer">Cluster Connections</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true"><path d="M10 13a5 5  [...]
@@ -191,11 +191,11 @@ configuration to fallback to the ZooKeeper based connection registry implementat
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/architecture/client.mdx\",\"url\",\"/docs/architecture/client\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25, [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/architecture/client.mdx\",\"url\",\"/docs/architecture/client\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25, [...]
\ No newline at end of file
diff --git a/docs/architecture/hbase-mob.data b/docs/architecture/hbase-mob.data
index d9fed95b6ed..4af730de128 100644
--- a/docs/architecture/hbase-mob.data
+++ b/docs/architecture/hbase-mob.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/architecture/hbase-mob.mdx","url","/docs/architecture/hbase-mob","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,15 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/architecture/hbase-mob.mdx","url","/docs/architecture/hbase-mob","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157 [...]
diff --git a/docs/architecture/hbase-mob/index.html b/docs/architecture/hbase-mob/index.html
index 695113c3e36..74c6b6613a7 100644
--- a/docs/architecture/hbase-mob/index.html
+++ b/docs/architecture/hbase-mob/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 data such as images and documents, is ideal. While HBase can technically handle
 binary objects with cells that are larger than 100 KB in size, HBase&#x27;s normal
 read and write paths are optimized for values smaller than 100KB in size. When
@@ -481,11 +481,11 @@ the MOB stored values for that table or region respectively.</li>
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/architecture/hbase-mob.mdx\",\"url\",\"/docs/architecture/hbase-mob\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24 [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/architecture/hbase-mob.mdx\",\"url\",\"/docs/architecture/hbase-mob\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24 [...]
\ No newline at end of file
diff --git a/docs/architecture/hdfs.data b/docs/architecture/hdfs.data
index 7c1ac4f1d03..c7a500b8673 100644
--- a/docs/architecture/hdfs.data
+++ b/docs/architecture/hdfs.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/architecture/hdfs.mdx","url","/docs/architecture/hdfs","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165,171, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/architecture/hdfs.mdx","url","/docs/architecture/hdfs","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,169,1 [...]
diff --git a/docs/architecture/hdfs/index.html b/docs/architecture/hdfs/index.html
index 72a39dfdc70..ccc7c1a6c64 100644
--- a/docs/architecture/hdfs/index.html
+++ b/docs/architecture/hdfs/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">See the Hadoop documentation on <a href="https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html">HDFS Architecture</a> for more information.</p>
 <h2 class="flex scroll-m-28 flex-row items-center gap-2" id="hdfs-namenode"><a data-card="" href="#hdfs-namenode" class="peer">NameNode</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 [...]
 <p class="wrap-anywhere">The NameNode is responsible for maintaining the filesystem metadata. See the above HDFS Architecture link for more information.</p>
@@ -34,11 +34,11 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/architecture/hdfs.mdx\",\"url\",\"/docs/architecture/hdfs\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_2 [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/architecture/hdfs.mdx\",\"url\",\"/docs/architecture/hdfs\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_2 [...]
\ No newline at end of file
diff --git a/docs/architecture/index.html b/docs/architecture/index.html
index e3083aa5273..e6b7aa4c432 100644
--- a/docs/architecture/index.html
+++ b/docs/architecture/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <ol>
 <li>
 <p class="wrap-anywhere">More information about the design and implementation can be found at the jira issue: <a href="https://issues.apache.org/jira/browse/HBASE-10070">HBASE-10070</a></p>
@@ -37,11 +37,11 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/architecture/index.mdx\",\"url\",\"/docs/architecture\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\": [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/architecture/index.mdx\",\"url\",\"/docs/architecture\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\": [...]
\ No newline at end of file
diff --git a/docs/architecture/master.data b/docs/architecture/master.data
index 060f07c00ad..0b6bf66b22e 100644
--- a/docs/architecture/master.data
+++ b/docs/architecture/master.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/architecture/master.mdx","url","/docs/architecture/master","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/architecture/master.mdx","url","/docs/architecture/master","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,1 [...]
diff --git a/docs/architecture/master/index.html b/docs/architecture/master/index.html
index f760e7d223a..7cd44e8a7d7 100644
--- a/docs/architecture/master/index.html
+++ b/docs/architecture/master/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <h2 class="flex scroll-m-28 flex-row items-center gap-2" id="startup-behavior"><a data-card="" href="#startup-behavior" class="peer">Startup Behavior</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.5 [...]
 <p class="wrap-anywhere">If run in a multi-Master environment, all Masters compete to run the cluster. If the active Master loses its lease in ZooKeeper (or the Master shuts down), then the remaining Masters jostle to take over the Master role.</p>
 <h2 class="flex scroll-m-28 flex-row items-center gap-2" id="runtime-impact"><a data-card="" href="#runtime-impact" class="peer">Runtime Impact</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3 [...]
@@ -93,11 +93,11 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/architecture/master.mdx\",\"url\",\"/docs/architecture/master\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25, [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/architecture/master.mdx\",\"url\",\"/docs/architecture/master\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25, [...]
\ No newline at end of file
diff --git a/docs/architecture/overview.data b/docs/architecture/overview.data
index 0db16635d75..a9ce92baa97 100644
--- a/docs/architecture/overview.data
+++ b/docs/architecture/overview.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/architecture/overview.mdx","url","/docs/architecture/overview","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/architecture/overview.mdx","url","/docs/architecture/overview","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,1 [...]
diff --git a/docs/architecture/overview/index.html b/docs/architecture/overview/index.html
index d8a2cf4aa2b..740c5ed1406 100644
--- a/docs/architecture/overview/index.html
+++ b/docs/architecture/overview/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">HBase is a type of &quot;NoSQL&quot; database. &quot;NoSQL&quot; is a general term meaning that the database isn&#x27;t an RDBMS which supports SQL as its primary access language, but there are many types of NoSQL databases: BerkeleyDB is an example of a local NoSQL database, whereas HBase is very much a distributed database. Technically speaking, HBase is really more a &quot;Data Store&quot; than &quot;Data Base&quot; because it lacks many of the features you fi [...]
 <p class="wrap-anywhere">However, HBase has many features which supports both linear and modular scaling. HBase clusters expand by adding RegionServers that are hosted on commodity class servers. If a cluster expands from 10 to 20 RegionServers, for example, it doubles both in terms of storage and as well as processing capacity. An RDBMS can scale well, but only up to a point - specifically, the size of a single database server - and for the best performance requires specialized hardware [...]
 <ul>
@@ -50,11 +50,11 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/architecture/overview.mdx\",\"url\",\"/docs/architecture/overview\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\" [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/architecture/overview.mdx\",\"url\",\"/docs/architecture/overview\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\" [...]
\ No newline at end of file
diff --git a/docs/architecture/regions.data b/docs/architecture/regions.data
index f8f27890fc4..0f699b0dea6 100644
--- a/docs/architecture/regions.data
+++ b/docs/architecture/regions.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/architecture/regions.mdx","url","/docs/architecture/regions","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,16 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/architecture/regions.mdx","url","/docs/architecture/regions","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163 [...]
diff --git a/docs/architecture/regions/index.html b/docs/architecture/regions/index.html
index 68a162f0092..89df59adfa9 100644
--- a/docs/architecture/regions/index.html
+++ b/docs/architecture/regions/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="image" href="/assets/region_states-D4hoWYLI.png" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px) 70vw, 900px" fetchPriority="auto"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="fon [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="image" href="/assets/region_states-D4hoWYLI.png" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px) 70vw, 900px" fetchPriority="auto"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="fon [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <figure dir="ltr" class="my-4 bg-fd-card rounded-xl shiki relative border shadow-sm not-prose overflow-hidden text-sm shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e" tabindex="-1"><div class="empty:hidden absolute top-2 right-2 z-2 backdrop-blur-lg rounded-lg text-fd-muted-foreground"><button type="button" class="inline-flex items-center justify-center rounded-md text-sm font-medium transition-c [...]
 <span class="line"><span>    Region               (Regions for the table)</span></span>
 <span class="line"><span>        Store            (Store per ColumnFamily for each Region for the table)</span></span>
@@ -606,11 +606,11 @@ Compaction Algorithm</a>.</p></div></div></div>
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/architecture/regions.mdx\",\"url\",\"/docs/architecture/regions\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":2 [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/architecture/regions.mdx\",\"url\",\"/docs/architecture/regions\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":2 [...]
\ No newline at end of file
diff --git a/docs/architecture/regionserver.data b/docs/architecture/regionserver.data
index 1dc23c0a4f8..309652ac200 100644
--- a/docs/architecture/regionserver.data
+++ b/docs/architecture/regionserver.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/architecture/regionserver.mdx","url","/docs/architecture/regionserver","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/architecture/regionserver.mdx","url","/docs/architecture/regionserver","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,1 [...]
diff --git a/docs/architecture/regionserver/index.html b/docs/architecture/regionserver/index.html
index 3d0ca17b99c..a08414cb0de 100644
--- a/docs/architecture/regionserver/index.html
+++ b/docs/architecture/regionserver/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="image" href="/assets/region_split_process-DrwL5IoS.png" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px) 70vw, 900px" fetchPriority="auto"/><link rel="preload" as="image" href="/assets/WAL_splitting-DCT3Hgkm.png" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px) 70vw, 9 [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="image" href="/assets/region_split_process-DrwL5IoS.png" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px) 70vw, 900px" fetchPriority="auto"/><link rel="preload" as="image" href="/assets/WAL_splitting-DCT3Hgkm.png" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px) 70vw, 9 [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <h2 class="flex scroll-m-28 flex-row items-center gap-2" id="architecture-regionserver-interface"><a data-card="" href="#architecture-regionserver-interface" class="peer">Interface</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true [...]
 <p class="wrap-anywhere">The methods exposed by <code>HRegionRegionInterface</code> contain both data-oriented and region-maintenance methods:</p>
 <ul>
@@ -431,11 +431,11 @@ loss/inconsistency as HMaster has no information about previous WAL directory.</
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/architecture/regionserver.mdx\",\"url\",\"/docs/architecture/regionserver\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7 [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/architecture/regionserver.mdx\",\"url\",\"/docs/architecture/regionserver\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7 [...]
\ No newline at end of file
diff --git a/docs/architecture/snapshot-scanner.data b/docs/architecture/snapshot-scanner.data
index 66c0e1b952d..b8f068aaa49 100644
--- a/docs/architecture/snapshot-scanner.data
+++ b/docs/architecture/snapshot-scanner.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/architecture/snapshot-scanner.mdx","url","/docs/architecture/snapshot-scanner","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/architecture/snapshot-scanner.mdx","url","/docs/architecture/snapshot-scanner","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,1 [...]
diff --git a/docs/architecture/snapshot-scanner/index.html b/docs/architecture/snapshot-scanner/index.html
index ad8361f8e94..bbbbf71035d 100644
--- a/docs/architecture/snapshot-scanner/index.html
+++ b/docs/architecture/snapshot-scanner/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 Luckily, HBase provides a TableSnapshotScanner and TableSnapshotInputFormat (introduced by <a href="https://issues.apache.org/jira/browse/HBASE-8369">HBASE-8369</a>),
 which can scan HBase-written HFiles directly in the HDFS filesystem completely by-passing hbase. This access mode
 performs better than going via HBase and can be used with an offline HBase with in-place or exported
@@ -104,11 +104,11 @@ false by default for every table, this means the HBase granted ACLs will not be
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/architecture/snapshot-scanner.mdx\",\"url\",\"/docs/architecture/snapshot-scanner\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\" [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/architecture/snapshot-scanner.mdx\",\"url\",\"/docs/architecture/snapshot-scanner\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\" [...]
\ No newline at end of file
diff --git a/docs/architecture/timeline-consistent-reads.data b/docs/architecture/timeline-consistent-reads.data
index 5ee412d6ae2..eae979750dc 100644
--- a/docs/architecture/timeline-consistent-reads.data
+++ b/docs/architecture/timeline-consistent-reads.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/architecture/timeline-consistent-reads.mdx","url","/docs/architecture/timeline-consistent-reads","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/architecture/timeline-consistent-reads.mdx","url","/docs/architecture/timeline-consistent-reads","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32 [...]
diff --git a/docs/architecture/timeline-consistent-reads/index.html b/docs/architecture/timeline-consistent-reads/index.html
index 2e45361051d..9c8ca159680 100644
--- a/docs/architecture/timeline-consistent-reads/index.html
+++ b/docs/architecture/timeline-consistent-reads/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="image" href="/assets/timeline_consistency-WFOSacSg.png" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px) 70vw, 900px" fetchPriority="auto"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch"  [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="image" href="/assets/timeline_consistency-WFOSacSg.png" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px) 70vw, 900px" fetchPriority="auto"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch"  [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">HBase, architecturally, always had the strong consistency guarantee from the start. All reads and writes are routed through a single region server, which guarantees that all writes happen in an order, and all reads are seeing the most recent committed data.</p>
 <p class="wrap-anywhere">However, because of this single homing of the reads to a single location, if the server becomes unavailable, the regions of the table that were hosted in the region server become unavailable for some time. There are three phases in the region recovery process - detection, assignment, and recovery. Of these, the detection is usually the longest and is presently in the order of 20-30 seconds depending on the ZooKeeper session timeout. During this time and before th [...]
 <p class="wrap-anywhere">However, for some use cases, either the data may be read-only, or doing reads against some stale data is acceptable. With timeline-consistent high available reads, HBase can be used for these kind of latency-sensitive use cases where the application can expect to have a time bound on the read completion.</p>
@@ -244,11 +244,11 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/architecture/timeline-consistent-reads.mdx\",\"url\",\"/docs/architecture/timeline-consistent-reads\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\ [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/architecture/timeline-consistent-reads.mdx\",\"url\",\"/docs/architecture/timeline-consistent-reads\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\ [...]
\ No newline at end of file
diff --git a/docs/asf.data b/docs/asf.data
index 09c4d43f9c1..aa10d6bd79b 100644
--- a/docs/asf.data
+++ b/docs/asf.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/asf.mdx","url","/docs/asf","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165,171,224,307,310,316,322,356,362, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/asf.mdx","url","/docs/asf","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,169,175,228,311,314,320,326,360,3 [...]
diff --git a/docs/asf/index.html b/docs/asf/index.html
index 9bdde082703..34a7529c83f 100644
--- a/docs/asf/index.html
+++ b/docs/asf/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">See the <a href="https://www.apache.org/dev/#committers">Apache Development Process page</a> for all sorts of information on how the ASF is structured (e.g., PMC, committers, contributors), to tips on contributing and getting involved, and how open-source works at ASF.</p>
 <h2 class="flex scroll-m-28 flex-row items-center gap-2" id="asf-board-reporting"><a data-card="" href="#asf-board-reporting" class="peer">ASF Board Reporting</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true"><path d="M10 13a5 5  [...]
 <p class="wrap-anywhere">Once a quarter, each project in the ASF portfolio submits a report to the ASF board. This is done by the HBase project lead and the committers. See <a href="https://www.apache.org/foundation/board/reporting">ASF board reporting</a> for more information.</p></div><a href="https://github.com/apache/hbase/edit/master/hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/asf.mdx" rel="noreferrer noopener" target="_blank" class="no-print text-fd-secondary-foreground bg [...]
@@ -32,11 +32,11 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/asf.mdx\",\"url\",\"/docs/asf\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":27,\"_11\":70 [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/asf.mdx\",\"url\",\"/docs/asf\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":27,\"_11\":71 [...]
\ No newline at end of file
diff --git a/docs/backup-restore.data b/docs/backup-restore.data
index 072933c06c2..d5001bbdcef 100644
--- a/docs/backup-restore.data
+++ b/docs/backup-restore.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/backup-restore/index.mdx","url","/docs/backup-restore","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165,171, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/backup-restore/index.mdx","url","/docs/backup-restore","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,169,1 [...]
diff --git a/docs/backup-restore/additional-topics.data b/docs/backup-restore/additional-topics.data
index f19f137421a..15c47d20d64 100644
--- a/docs/backup-restore/additional-topics.data
+++ b/docs/backup-restore/additional-topics.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/backup-restore/additional-topics.mdx","url","/docs/backup-restore/additional-topics","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,10 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/backup-restore/additional-topics.mdx","url","/docs/backup-restore/additional-topics","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53 [...]
diff --git a/docs/backup-restore/additional-topics/index.html b/docs/backup-restore/additional-topics/index.html
index 9a99f4c10a7..17103f8d9bf 100644
--- a/docs/backup-restore/additional-topics/index.html
+++ b/docs/backup-restore/additional-topics/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="image" href="/assets/backup-app-components-ZN_OfKpI.png" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px) 70vw, 900px" fetchPriority="auto"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="image" href="/assets/backup-app-components-ZN_OfKpI.png" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px) 70vw, 900px" fetchPriority="auto"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">The backup and restore feature includes both required and optional configuration keys.</p>
 <h3 class="flex scroll-m-28 flex-row items-center gap-2" id="required-properties"><a data-card="" href="#required-properties" class="peer">Required properties</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true"><path d="M10 13a5 5  [...]
 <p class="wrap-anywhere"><strong><em>hbase.backup.enable</em></strong>: Controls whether or not the feature is enabled (Default: <code>false</code>). Set this value to <code>true</code>.</p>
@@ -249,11 +249,11 @@ which present information for consumption (<a href="https://issues.apache.org/ji
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/backup-restore/additional-topics.mdx\",\"url\",\"/docs/backup-restore/additional-topics\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\" [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/backup-restore/additional-topics.mdx\",\"url\",\"/docs/backup-restore/additional-topics\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\" [...]
\ No newline at end of file
diff --git a/docs/backup-restore/administration.data b/docs/backup-restore/administration.data
index f4fdb55ee67..2dbaf1d906a 100644
--- a/docs/backup-restore/administration.data
+++ b/docs/backup-restore/administration.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/backup-restore/administration.mdx","url","/docs/backup-restore/administration","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/backup-restore/administration.mdx","url","/docs/backup-restore/administration","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,1 [...]
diff --git a/docs/backup-restore/administration/index.html b/docs/backup-restore/administration/index.html
index ef95d3d80ce..6a3c6938bba 100644
--- a/docs/backup-restore/administration/index.html
+++ b/docs/backup-restore/administration/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 environments require recurring backups, so it is necessary to have utilities to help manage the data of the backup repository.
 Some subcommands enable you to find information that can help identify backups that are relevant in a search for particular data.
 You can also delete backup images.</p>
@@ -118,11 +118,11 @@ automatically recover on its own.</p>
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/backup-restore/administration.mdx\",\"url\",\"/docs/backup-restore/administration\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\" [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/backup-restore/administration.mdx\",\"url\",\"/docs/backup-restore/administration\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\" [...]
\ No newline at end of file
diff --git a/docs/backup-restore/commands.data b/docs/backup-restore/commands.data
index d41c15578ea..c3ad70dd6f2 100644
--- a/docs/backup-restore/commands.data
+++ b/docs/backup-restore/commands.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/backup-restore/commands.mdx","url","/docs/backup-restore/commands","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/backup-restore/commands.mdx","url","/docs/backup-restore/commands","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,1 [...]
diff --git a/docs/backup-restore/commands/index.html b/docs/backup-restore/commands/index.html
index 62986ddeb1e..81eb7cb053e 100644
--- a/docs/backup-restore/commands/index.html
+++ b/docs/backup-restore/commands/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 inspect details on specific backup sessions is covered in the next section, <a href="/docs/backup-restore/administration" data-discover="true">Administration of Backup Images</a>.</p>
 <p class="wrap-anywhere">Run the command <code>hbase backup help &lt;command&gt;</code> to access the online help that provides basic information about a command
 and its options. The below information is captured in this help message for each command.</p>
@@ -177,11 +177,11 @@ case of failure on the primary cluster.</p></div></div></div>
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/backup-restore/commands.mdx\",\"url\",\"/docs/backup-restore/commands\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_ [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/backup-restore/commands.mdx\",\"url\",\"/docs/backup-restore/commands\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_ [...]
\ No newline at end of file
diff --git a/docs/backup-restore/index.html b/docs/backup-restore/index.html
index 50b6a1b9a1f..d4e60665225 100644
--- a/docs/backup-restore/index.html
+++ b/docs/backup-restore/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
     if (!window.history.state || !window.history.state.key) {
       let key = Math.random().toString(32).slice(2);
       window.history.replaceState({ key }, "");
@@ -29,11 +29,11 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/backup-restore/index.mdx\",\"url\",\"/docs/backup-restore\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_2 [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/backup-restore/index.mdx\",\"url\",\"/docs/backup-restore\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_2 [...]
\ No newline at end of file
diff --git a/docs/backup-restore/overview.data b/docs/backup-restore/overview.data
index 20ffca04a6d..1a5062c10a3 100644
--- a/docs/backup-restore/overview.data
+++ b/docs/backup-restore/overview.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/backup-restore/overview.mdx","url","/docs/backup-restore/overview","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/backup-restore/overview.mdx","url","/docs/backup-restore/overview","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,1 [...]
diff --git a/docs/backup-restore/overview/index.html b/docs/backup-restore/overview/index.html
index 5e9dbf79a6f..ada39066109 100644
--- a/docs/backup-restore/overview/index.html
+++ b/docs/backup-restore/overview/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="image" href="/assets/backup-intra-cluster-VtQszuA-.png" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px) 70vw, 900px" fetchPriority="auto"/><link rel="preload" as="image" href="/assets/backup-dedicated-cluster-BDX3WGln.png" imageSizes="(max-width: 768px) 100vw, (max-width: 1200 [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="image" href="/assets/backup-intra-cluster-VtQszuA-.png" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px) 70vw, 900px" fetchPriority="auto"/><link rel="preload" as="image" href="/assets/backup-dedicated-cluster-BDX3WGln.png" imageSizes="(max-width: 768px) 100vw, (max-width: 1200 [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 strategy helps ensure that users can recover data in case of unexpected failures. The HBase backup and restore
 feature helps ensure that enterprises using HBase as a canonical data repository can recover from catastrophic
 failures. Another important feature is the ability to restore the database to a particular
@@ -140,11 +140,11 @@ literal text which should be added to hbase-site.xml.</p></div></div></div>
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/backup-restore/overview.mdx\",\"url\",\"/docs/backup-restore/overview\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_ [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/backup-restore/overview.mdx\",\"url\",\"/docs/backup-restore/overview\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_ [...]
\ No newline at end of file
diff --git a/docs/building-and-developing.data b/docs/building-and-developing.data
index d9d363b73fc..2734ccfe1c3 100644
--- a/docs/building-and-developing.data
+++ b/docs/building-and-developing.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/building-and-developing/index.mdx","url","/docs/building-and-developing","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,14 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/building-and-developing/index.mdx","url","/docs/building-and-developing","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148 [...]
diff --git a/docs/building-and-developing/announcing.data b/docs/building-and-developing/announcing.data
index 65e1c447037..c0a89b65b7e 100644
--- a/docs/building-and-developing/announcing.data
+++ b/docs/building-and-developing/announcing.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/building-and-developing/announcing.mdx","url","/docs/building-and-developing/announcing","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,4 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/building-and-developing/announcing.mdx","url","/docs/building-and-developing/announcing","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,5 [...]
diff --git a/docs/building-and-developing/announcing/index.html b/docs/building-and-developing/announcing/index.html
index 0c44178eb8d..e3d6cc257d1 100644
--- a/docs/building-and-developing/announcing/index.html
+++ b/docs/building-and-developing/announcing/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <figure dir="ltr" class="my-4 bg-fd-card rounded-xl shiki relative border shadow-sm not-prose overflow-hidden text-sm shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e" tabindex="-1"><div class="empty:hidden absolute top-2 right-2 z-2 backdrop-blur-lg rounded-lg text-fd-muted-foreground"><button type="button" class="inline-flex items-center justify-center rounded-md text-sm font-medium transition-c [...]
 <span class="line"><span></span></span>
 <span class="line"><span>Apache HBase™ is an open-source, distributed, versioned, non-relational database.</span></span>
@@ -63,11 +63,11 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/building-and-developing/announcing.mdx\",\"url\",\"/docs/building-and-developing/announcing\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_ [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/building-and-developing/announcing.mdx\",\"url\",\"/docs/building-and-developing/announcing\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_ [...]
\ No newline at end of file
diff --git a/docs/building-and-developing/building.data b/docs/building-and-developing/building.data
index 73179eb9c28..5970149442b 100644
--- a/docs/building-and-developing/building.data
+++ b/docs/building-and-developing/building.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/building-and-developing/building.mdx","url","/docs/building-and-developing/building","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,10 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/building-and-developing/building.mdx","url","/docs/building-and-developing/building","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53 [...]
diff --git a/docs/building-and-developing/building/index.html b/docs/building-and-developing/building/index.html
index 88b4de710c1..48220ab4d86 100644
--- a/docs/building-and-developing/building/index.html
+++ b/docs/building-and-developing/building/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">HBase is compiled using Maven. You must use at least Maven 3.0.4. To check your Maven version, run
 the command <code>mvn -version</code>.</p>
 <h3 class="flex scroll-m-28 flex-row items-center gap-2" id="building-basic-compile-jdk-version-requirements"><a data-card="" href="#building-basic-compile-jdk-version-requirements" class="peer">JDK Version Requirements</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity pe [...]
@@ -180,11 +180,11 @@ protobuf later, then we don&#x27;t have to add the profile &#x27;-Paarch64&#x27;
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/building-and-developing/building.mdx\",\"url\",\"/docs/building-and-developing/building\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\" [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/building-and-developing/building.mdx\",\"url\",\"/docs/building-and-developing/building\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\" [...]
\ No newline at end of file
diff --git a/docs/building-and-developing/developer-guidelines.data b/docs/building-and-developing/developer-guidelines.data
index d6954e4fc58..73febc2ab07 100644
--- a/docs/building-and-developing/developer-guidelines.data
+++ b/docs/building-and-developing/developer-guidelines.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/building-and-developing/developer-guidelines.mdx","url","/docs/building-and-developing/developer-guidelines","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","i [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/building-and-developing/developer-guidelines.mdx","url","/docs/building-and-developing/developer-guidelines","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","i [...]
diff --git a/docs/building-and-developing/developer-guidelines/index.html b/docs/building-and-developing/developer-guidelines/index.html
index bd50574e55a..118e1542466 100644
--- a/docs/building-and-developing/developer-guidelines/index.html
+++ b/docs/building-and-developing/developer-guidelines/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">We use Git for source code management and latest development happens on <code>master</code> branch. There are
 branches for past major/minor/maintenance releases and important features and bug fixes are often
 back-ported to them.</p>
@@ -583,11 +583,11 @@ for developing new HBase-related Maven archetypes, please see
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/building-and-developing/developer-guidelines.mdx\",\"url\",\"/docs/building-and-developing/developer-guidelines\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13 [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/building-and-developing/developer-guidelines.mdx\",\"url\",\"/docs/building-and-developing/developer-guidelines\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13 [...]
\ No newline at end of file
diff --git a/docs/building-and-developing/generating-documentation.data b/docs/building-and-developing/generating-documentation.data
index fff7e759db2..f4f476db1cd 100644
--- a/docs/building-and-developing/generating-documentation.data
+++ b/docs/building-and-developing/generating-documentation.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/building-and-developing/generating-documentation.mdx","url","/docs/building-and-developing/generating-documentation","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple p [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/building-and-developing/generating-documentation.mdx","url","/docs/building-and-developing/generating-documentation","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple p [...]
diff --git a/docs/building-and-developing/generating-documentation/index.html b/docs/building-and-developing/generating-documentation/index.html
index f32256b3d04..d86de8252ec 100644
--- a/docs/building-and-developing/generating-documentation/index.html
+++ b/docs/building-and-developing/generating-documentation/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 Then we render markdown into HTML content by using <a href="https://fumadocs.dev/">Fumadocs</a>.
 To build run <code>mvn site</code> from the root or <code>hbase-website</code> directory.
 See <a href="/docs/contributing-to-documentation" data-discover="true">appendix contributing to documentation</a> for more information on building the documentation.</p></div><a href="https://github.com/apache/hbase/edit/master/hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/building-and-developing/generating-documentation.mdx" rel="noreferrer noopener" target="_blank" class="no-print text-fd-secondary-foreground bg-fd-secondary hover:text-fd-accent-foreground hover:bg-fd-accent w-f [...]
@@ -32,11 +32,11 @@ See <a href="/docs/contributing-to-documentation" data-discover="true">appendix
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/building-and-developing/generating-documentation.mdx\",\"url\",\"/docs/building-and-developing/generating-documentation\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\": [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/building-and-developing/generating-documentation.mdx\",\"url\",\"/docs/building-and-developing/generating-documentation\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\": [...]
\ No newline at end of file
diff --git a/docs/building-and-developing/getting-involved.data b/docs/building-and-developing/getting-involved.data
index 568b8a04894..66040599d96 100644
--- a/docs/building-and-developing/getting-involved.data
+++ b/docs/building-and-developing/getting-involved.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/building-and-developing/getting-involved.mdx","url","/docs/building-and-developing/getting-involved","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[2 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/building-and-developing/getting-involved.mdx","url","/docs/building-and-developing/getting-involved","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[2 [...]
diff --git a/docs/building-and-developing/getting-involved/index.html b/docs/building-and-developing/getting-involved/index.html
index 72f87cb4dd3..3b6018a5e9d 100644
--- a/docs/building-and-developing/getting-involved/index.html
+++ b/docs/building-and-developing/getting-involved/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 These are issues HBase contributors have deemed worthy but not of immediate priority and a good way to ramp on HBase internals.
 See <a href="https://lists.apache.org/thread.html/b122265f4e4054cf08f8cd38609fb06af72f398c44f9086b05ef4e21%401407246237%40%3Cdev.hbase.apache.org%3E">What label
 is used for issues that are good on ramps for new contributors?</a> from the dev mailing list for background.</p>
@@ -137,11 +137,11 @@ a similar issue in the future.</li>
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/building-and-developing/getting-involved.mdx\",\"url\",\"/docs/building-and-developing/getting-involved\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\" [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/building-and-developing/getting-involved.mdx\",\"url\",\"/docs/building-and-developing/getting-involved\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\" [...]
\ No newline at end of file
diff --git a/docs/building-and-developing/ides.data b/docs/building-and-developing/ides.data
index 9fc30112c7c..f9913cb835f 100644
--- a/docs/building-and-developing/ides.data
+++ b/docs/building-and-developing/ides.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/building-and-developing/ides.mdx","url","/docs/building-and-developing/ides","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,14 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/building-and-developing/ides.mdx","url","/docs/building-and-developing/ides","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142 [...]
diff --git a/docs/building-and-developing/ides/index.html b/docs/building-and-developing/ides/index.html
index 784e0d8cc7e..e804da0d5cc 100644
--- a/docs/building-and-developing/ides/index.html
+++ b/docs/building-and-developing/ides/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <h3 class="flex scroll-m-28 flex-row items-center gap-2" id="code-formatting"><a data-card="" href="#code-formatting" class="peer">Code Formatting</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.5 [...]
 <p class="wrap-anywhere">Under the <em>dev-support/</em> folder, you will find <em>hbase_eclipse_formatter.xml</em>.
 We encourage you to have this formatter in place in eclipse when editing HBase code.</p>
@@ -119,11 +119,11 @@ documenting your setup process here.</p></div><a href="https://github.com/apache
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/building-and-developing/ides.mdx\",\"url\",\"/docs/building-and-developing/ides\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_2 [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/building-and-developing/ides.mdx\",\"url\",\"/docs/building-and-developing/ides\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_2 [...]
\ No newline at end of file
diff --git a/docs/building-and-developing/index.html b/docs/building-and-developing/index.html
index fc169bdf307..fad94c5c52c 100644
--- a/docs/building-and-developing/index.html
+++ b/docs/building-and-developing/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 Being familiar with these guidelines will help the HBase committers to use your contributions more easily.</p><div class="flex flex-col"><p>In this section:</p><div class="grid grid-cols-2 gap-3 @container"><a data-card="true" class="block rounded-xl border bg-fd-card p-4 text-fd-card-foreground transition-colors @max-lg:col-span-full hover:bg-fd-accent/80" href="/docs/building-and-developing/getting-involved" data-discover="true"><h3 class="not-prose mb-1 text-sm font-medium">Getting In [...]
     if (!window.history.state || !window.history.state.key) {
       let key = Math.random().toString(32).slice(2);
@@ -30,11 +30,11 @@ Being familiar with these guidelines will help the HBase committers to use your
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/building-and-developing/index.mdx\",\"url\",\"/docs/building-and-developing\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\": [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/building-and-developing/index.mdx\",\"url\",\"/docs/building-and-developing\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\": [...]
\ No newline at end of file
diff --git a/docs/building-and-developing/releasing.data b/docs/building-and-developing/releasing.data
index 04253f98e50..8a236733bcd 100644
--- a/docs/building-and-developing/releasing.data
+++ b/docs/building-and-developing/releasing.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/building-and-developing/releasing.mdx","url","/docs/building-and-developing/releasing","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/building-and-developing/releasing.mdx","url","/docs/building-and-developing/releasing","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50, [...]
diff --git a/docs/building-and-developing/releasing/index.html b/docs/building-and-developing/releasing/index.html
index 666900ad6a1..a3eb9395ba2 100644
--- a/docs/building-and-developing/releasing/index.html
+++ b/docs/building-and-developing/releasing/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <h2 class="flex scroll-m-28 flex-row items-center gap-2" id="making-a-release-candidate"><a data-card="" href="#making-a-release-candidate" class="peer">Making a Release Candidate</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true" [...]
 <p class="wrap-anywhere">Only committers can make releases of hbase artifacts.</p>
 <p class="wrap-anywhere"><strong>Before You Begin</strong></p>
@@ -219,11 +219,11 @@ It will put a snapshot up into the apache snapshot repository for you.</p></div>
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/building-and-developing/releasing.mdx\",\"url\",\"/docs/building-and-developing/releasing\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12 [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/building-and-developing/releasing.mdx\",\"url\",\"/docs/building-and-developing/releasing\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12 [...]
\ No newline at end of file
diff --git a/docs/building-and-developing/repositories.data b/docs/building-and-developing/repositories.data
index 3c91a35d6ee..8ecda7012b4 100644
--- a/docs/building-and-developing/repositories.data
+++ b/docs/building-and-developing/repositories.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/building-and-developing/repositories.mdx","url","/docs/building-and-developing/repositories","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/building-and-developing/repositories.mdx","url","/docs/building-and-developing/repositories","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41, [...]
diff --git a/docs/building-and-developing/repositories/index.html b/docs/building-and-developing/repositories/index.html
index 121f08e3ddb..fee189a1b87 100644
--- a/docs/building-and-developing/repositories/index.html
+++ b/docs/building-and-developing/repositories/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 These are the following:</p>
 <ul>
 <li><a href="https://gitbox.apache.org/repos/asf?p=hbase.git">hbase</a> - main Apache HBase repository</li>
@@ -37,11 +37,11 @@ These are the following:</p>
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/building-and-developing/repositories.mdx\",\"url\",\"/docs/building-and-developing/repositories\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7 [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/building-and-developing/repositories.mdx\",\"url\",\"/docs/building-and-developing/repositories\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7 [...]
\ No newline at end of file
diff --git a/docs/building-and-developing/tests.data b/docs/building-and-developing/tests.data
index 6c39ca7d1aa..beb12f3c235 100644
--- a/docs/building-and-developing/tests.data
+++ b/docs/building-and-developing/tests.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/building-and-developing/tests.mdx","url","/docs/building-and-developing/tests","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/building-and-developing/tests.mdx","url","/docs/building-and-developing/tests","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,1 [...]
diff --git a/docs/building-and-developing/tests/index.html b/docs/building-and-developing/tests/index.html
index 5933d7fc361..219004b9f65 100644
--- a/docs/building-and-developing/tests/index.html
+++ b/docs/building-and-developing/tests/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">This information is about unit tests for HBase itself.
 For developing unit tests for your HBase applications, see <a href="/docs/unit-testing" data-discover="true">Unit Testing HBase Applications</a>.</p>
 <h2 class="flex scroll-m-28 flex-row items-center gap-2" id="apache-hbase-modules"><a data-card="" href="#apache-hbase-modules" class="peer">Apache HBase Modules</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true"><path d="M10 13a5 [...]
@@ -577,11 +577,11 @@ just run as the <em>slowDeterministic</em> policy
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/building-and-developing/tests.mdx\",\"url\",\"/docs/building-and-developing/tests\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\" [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/building-and-developing/tests.mdx\",\"url\",\"/docs/building-and-developing/tests\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\" [...]
\ No newline at end of file
diff --git a/docs/building-and-developing/updating-landing.data b/docs/building-and-developing/updating-landing.data
index d27b5de74c4..ab6549d0f57 100644
--- a/docs/building-and-developing/updating-landing.data
+++ b/docs/building-and-developing/updating-landing.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/building-and-developing/updating-landing.mdx","url","/docs/building-and-developing/updating-landing","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[2 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/building-and-developing/updating-landing.mdx","url","/docs/building-and-developing/updating-landing","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[2 [...]
diff --git a/docs/building-and-developing/updating-landing/index.html b/docs/building-and-developing/updating-landing/index.html
index 45331678908..ef412f65ca7 100644
--- a/docs/building-and-developing/updating-landing/index.html
+++ b/docs/building-and-developing/updating-landing/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">See <a href="/docs/contributing-to-documentation" data-discover="true">appendix contributing to documentation</a> for more information on contributing to the documentation or website.</p>
 <h2 class="flex scroll-m-28 flex-row items-center gap-2" id="publishing-hbaseapacheorg"><a data-card="" href="#publishing-hbaseapacheorg" class="peer">Publishing hbase.apache.org</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true"> [...]
 <p class="wrap-anywhere">See <a href="/docs/contributing-to-documentation#publishing-the-hbase-website-and-documentation" data-discover="true">Publishing the HBase Website and Documentation</a> for instructions on publishing the website and documentation.</p></div><a href="https://github.com/apache/hbase/edit/master/hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/building-and-developing/updating-landing.mdx" rel="noreferrer noopener" target="_blank" class="no-print text-fd-secondary [...]
@@ -32,11 +32,11 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/building-and-developing/updating-landing.mdx\",\"url\",\"/docs/building-and-developing/updating-landing\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\" [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/building-and-developing/updating-landing.mdx\",\"url\",\"/docs/building-and-developing/updating-landing\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\" [...]
\ No newline at end of file
diff --git a/docs/building-and-developing/voting.data b/docs/building-and-developing/voting.data
index 06d1b9780ea..d903719d8be 100644
--- a/docs/building-and-developing/voting.data
+++ b/docs/building-and-developing/voting.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/building-and-developing/voting.mdx","url","/docs/building-and-developing/voting","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,13 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/building-and-developing/voting.mdx","url","/docs/building-and-developing/voting","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107 [...]
diff --git a/docs/building-and-developing/voting/index.html b/docs/building-and-developing/voting/index.html
index fd35a893c04..de8149f1aeb 100644
--- a/docs/building-and-developing/voting/index.html
+++ b/docs/building-and-developing/voting/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 Only the votes of PMC members are binding.
 PMC members, please read this WIP doc on policy voting for a release candidate, <a href="https://github.com/rectang/asfrelease/blob/master/release.md">Release Policy</a>.</p>
 <blockquote>
@@ -97,11 +97,11 @@ for how we arrived at this process.</p>
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/building-and-developing/voting.mdx\",\"url\",\"/docs/building-and-developing/voting\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22, [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/building-and-developing/voting.mdx\",\"url\",\"/docs/building-and-developing/voting\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22, [...]
\ No newline at end of file
diff --git a/docs/bulk-data-generator-tool.data b/docs/bulk-data-generator-tool.data
index 15ec0d7b354..95ab8b3c012 100644
--- a/docs/bulk-data-generator-tool.data
+++ b/docs/bulk-data-generator-tool.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/bulk-data-generator-tool.mdx","url","/docs/bulk-data-generator-tool","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,15 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/bulk-data-generator-tool.mdx","url","/docs/bulk-data-generator-tool","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151 [...]
diff --git a/docs/bulk-data-generator-tool/index.html b/docs/bulk-data-generator-tool/index.html
index f5cbb7fed4c..8c684fa0771 100644
--- a/docs/bulk-data-generator-tool/index.html
+++ b/docs/bulk-data-generator-tool/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <figure dir="ltr" class="my-4 bg-fd-card rounded-xl shiki relative border shadow-sm not-prose overflow-hidden text-sm shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e" tabindex="-1"><div class="empty:hidden absolute top-2 right-2 z-2 backdrop-blur-lg rounded-lg text-fd-muted-foreground"><button type="button" class="inline-flex items-center justify-center rounded-md text-sm font-medium transition-c [...]
 <span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"> -d,--delete-if-exist</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">         If</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> it&#x27;s set, the table will be deleted if already exist.</span></span>
 <span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> -h,--help                    Show help message for the tool</span></span>
@@ -70,11 +70,11 @@ TOOL_EVENT_ID suffix and other columns of the row are populated with random data
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/bulk-data-generator-tool.mdx\",\"url\",\"/docs/bulk-data-generator-tool\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\ [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/bulk-data-generator-tool.mdx\",\"url\",\"/docs/bulk-data-generator-tool\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\ [...]
\ No newline at end of file
diff --git a/docs/case-studies.data b/docs/case-studies.data
index a13a3e1e45a..a61ced2fb45 100644
--- a/docs/case-studies.data
+++ b/docs/case-studies.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/case-studies.mdx","url","/docs/case-studies","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165,171,224,307,31 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/case-studies.mdx","url","/docs/case-studies","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,169,175,228,311 [...]
diff --git a/docs/case-studies/index.html b/docs/case-studies/index.html
index 4b507be8346..844ec663e64 100644
--- a/docs/case-studies/index.html
+++ b/docs/case-studies/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">This chapter will describe a variety of performance and troubleshooting case studies that can provide a useful blueprint on diagnosing Apache HBase cluster issues.</p>
 <p class="wrap-anywhere">For more information on Performance and Troubleshooting, see <a href="/docs/performance" data-discover="true">Apache HBase Performance Tuning</a> and <a href="/docs/troubleshooting" data-discover="true">Troubleshooting and Debugging Apache HBase</a>.</p>
 <h2 class="flex scroll-m-28 flex-row items-center gap-2" id="case-studies-schema-design"><a data-card="" href="#case-studies-schema-design" class="peer">Schema Design</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true"><path d="M10 [...]
@@ -124,11 +124,11 @@ Although this research is on an older version of the codebase, this writeup is s
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/case-studies.mdx\",\"url\",\"/docs/case-studies\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_ [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/case-studies.mdx\",\"url\",\"/docs/case-studies\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_ [...]
\ No newline at end of file
diff --git a/docs/community.data b/docs/community.data
index 3a8c7127d04..e1d46926fd1 100644
--- a/docs/community.data
+++ b/docs/community.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/community.mdx","url","/docs/community","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165,171,224,307,310,316, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/community.mdx","url","/docs/community","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,169,175,228,311,314,3 [...]
diff --git a/docs/community/index.html b/docs/community/index.html
index 105f0026034..3c3316f9e8f 100644
--- a/docs/community/index.html
+++ b/docs/community/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <h3 class="flex scroll-m-28 flex-row items-center gap-2" id="feature-branches"><a data-card="" href="#feature-branches" class="peer">Feature Branches</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.5 [...]
 <p class="wrap-anywhere">Feature Branches are easy to make. You do not have to be a committer to make one. Just request the name of your branch be added to JIRA up on the developer&#x27;s mailing list and a committer will add it for you. Thereafter you can file issues against your feature branch in Apache HBase JIRA. Your code you keep elsewhere — it should be public so it can be observed — and you can update dev mailing list on progress. When the feature is ready for commit, 3 +1s from  [...]
 <h3 class="flex scroll-m-28 flex-row items-center gap-2" id="how-to-set-fix-version-in-jira-on-issue-resolve"><a data-card="" href="#how-to-set-fix-version-in-jira-on-issue-resolve" class="peer">How to set fix version in JIRA on issue resolve</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity- [...]
@@ -53,11 +53,11 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/community.mdx\",\"url\",\"/docs/community\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":2 [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/community.mdx\",\"url\",\"/docs/community\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":2 [...]
\ No newline at end of file
diff --git a/docs/compression.data b/docs/compression.data
index 33a0bb28b15..21050f6f836 100644
--- a/docs/compression.data
+++ b/docs/compression.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/compression.mdx","url","/docs/compression","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165,171,224,307,310, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/compression.mdx","url","/docs/compression","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,169,175,228,311,3 [...]
diff --git a/docs/compression/index.html b/docs/compression/index.html
index fe483f4a5e9..4b1ec22c520 100644
--- a/docs/compression/index.html
+++ b/docs/compression/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="image" href="/assets/data_block_no_encoding-BRNLFT3D.png" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px) 70vw, 900px" fetchPriority="auto"/><link rel="preload" as="image" href="/assets/data_block_prefix_encoding-DX9fSxyO.png" imageSizes="(max-width: 768px) 100vw, (max-width:  [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="image" href="/assets/data_block_no_encoding-BRNLFT3D.png" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px) 70vw, 900px" fetchPriority="auto"/><link rel="preload" as="image" href="/assets/data_block_prefix_encoding-DX9fSxyO.png" imageSizes="(max-width: 768px) 100vw, (max-width:  [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 information about replication codecs, see
 <a href="/docs/operational-management/cluster-replication#life-of-a-wal-edit" data-discover="true">cluster.replication.preserving.tags</a>.</p></div></div></div>
 <p class="wrap-anywhere">HBase supports several different compression algorithms which can be enabled on a ColumnFamily.
@@ -408,11 +408,11 @@ Following is an example using HBase Shell:</p>
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/compression.mdx\",\"url\",\"/docs/compression\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15 [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/compression.mdx\",\"url\",\"/docs/compression\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15 [...]
\ No newline at end of file
diff --git a/docs/configuration.data b/docs/configuration.data
index d5eb7407b8a..cf7e01c7393 100644
--- a/docs/configuration.data
+++ b/docs/configuration.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/configuration/index.mdx","url","/docs/configuration","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,101,136,142,145,151,157,163,169,22 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/configuration/index.mdx","url","/docs/configuration","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,105,140,146,149,155,161,167,173 [...]
diff --git a/docs/configuration/basic-prerequisites.data b/docs/configuration/basic-prerequisites.data
index 714be62e31e..4186204b7aa 100644
--- a/docs/configuration/basic-prerequisites.data
+++ b/docs/configuration/basic-prerequisites.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/configuration/basic-prerequisites.mdx","url","/docs/configuration/basic-prerequisites","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/configuration/basic-prerequisites.mdx","url","/docs/configuration/basic-prerequisites","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50, [...]
diff --git a/docs/configuration/basic-prerequisites/index.html b/docs/configuration/basic-prerequisites/index.html
index ba565e13df1..7b131c2145f 100644
--- a/docs/configuration/basic-prerequisites/index.html
+++ b/docs/configuration/basic-prerequisites/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">HBase runs on the Java Virtual Machine, thus all HBase deployments require a JVM runtime.</p>
 <p class="wrap-anywhere">The following table summarizes the recommendations of the HBase community with respect to running on various Java versions. The ✅ symbol indicates a base level of testing and willingness to help diagnose and address issues you might run into; these are the expected deployment combinations. An entry of ⚠️ means that there may be challenges with this combination, and you should look for more information before deciding to pursue this as your deployment strategy. Th [...]
 <div class="flex gap-2 my-4 rounded-xl border bg-fd-card p-3 ps-1 text-sm text-fd-card-foreground shadow-md" style="--callout-color:var(--color-fd-warning, var(--color-fd-muted))"><div role="none" class="w-0.5 bg-(--callout-color)/50 rounded-sm"></div><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-5 -me-0.5 fill-(--callout-color) text-fd [...]
@@ -132,11 +132,11 @@ HBase appears hung.</p></div></div></div>
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/configuration/basic-prerequisites.mdx\",\"url\",\"/docs/configuration/basic-prerequisites\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12 [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/configuration/basic-prerequisites.mdx\",\"url\",\"/docs/configuration/basic-prerequisites\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12 [...]
\ No newline at end of file
diff --git a/docs/configuration/confirm.data b/docs/configuration/confirm.data
index cc148223b2a..548f051b099 100644
--- a/docs/configuration/confirm.data
+++ b/docs/configuration/confirm.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/configuration/confirm.mdx","url","/docs/configuration/confirm","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,101,136,142,145,151,157, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/configuration/confirm.mdx","url","/docs/configuration/confirm","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,105,140,146,149,155,1 [...]
diff --git a/docs/configuration/confirm/index.html b/docs/configuration/confirm/index.html
index 39331b76471..7964a341a13 100644
--- a/docs/configuration/confirm/index.html
+++ b/docs/configuration/confirm/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere"><em>If</em> you are managing your own ZooKeeper, start it and confirm it&#x27;s running, else HBase will start up ZooKeeper for you as part of its start process.</p>
 <p class="wrap-anywhere">Start HBase with the following command:</p>
 <figure dir="ltr" class="my-4 bg-fd-card rounded-xl shiki relative border shadow-sm not-prose overflow-hidden text-sm shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e" tabindex="-1"><div class="empty:hidden absolute top-2 right-2 z-2 backdrop-blur-lg rounded-lg text-fd-muted-foreground"><button type="button" class="inline-flex items-center justify-center rounded-md text-sm font-medium transition-c [...]
@@ -40,11 +40,11 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/configuration/confirm.mdx\",\"url\",\"/docs/configuration/confirm\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\" [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/configuration/confirm.mdx\",\"url\",\"/docs/configuration/confirm\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\" [...]
\ No newline at end of file
diff --git a/docs/configuration/default.data b/docs/configuration/default.data
index 9a518e5aacf..f4d9e1a3d60 100644
--- a/docs/configuration/default.data
+++ b/docs/configuration/default.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/configuration/default.mdx","url","/docs/configuration/default","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,101,136,142,145,151,157, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/configuration/default.mdx","url","/docs/configuration/default","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,105,140,146,149,155,1 [...]
diff --git a/docs/configuration/default/index.html b/docs/configuration/default/index.html
index f30cc6ffb66..706cdc664c6 100644
--- a/docs/configuration/default/index.html
+++ b/docs/configuration/default/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">Just as in Hadoop where you add site-specific HDFS configuration to the <em>hdfs-site.xml</em> file, for HBase, site specific customizations go into the file <em>conf/hbase-site.xml</em>. For the list of configurable properties, see <a href="/docs/configuration/default#configuration-default-hbase-default-configuration" data-discover="true">hbase default configurations</a> below or view the raw <em>hbase-default.xml</em> source file in the HBase source code at <em [...]
 <p class="wrap-anywhere">Not all configuration options make it out to <em>hbase-default.xml</em>. Some configurations would only appear in source code; the only way to identify these changes are through code review.</p>
 <p class="wrap-anywhere">Currently, changes here will require a cluster restart for HBase to notice the change.</p>
@@ -806,11 +806,11 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/configuration/default.mdx\",\"url\",\"/docs/configuration/default\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\" [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/configuration/default.mdx\",\"url\",\"/docs/configuration/default\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\" [...]
\ No newline at end of file
diff --git a/docs/configuration/dynamic.data b/docs/configuration/dynamic.data
index cffb79903c0..5d637386683 100644
--- a/docs/configuration/dynamic.data
+++ b/docs/configuration/dynamic.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/configuration/dynamic.mdx","url","/docs/configuration/dynamic","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,101,136,142,145,151,157, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/configuration/dynamic.mdx","url","/docs/configuration/dynamic","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,105,140,146,149,155,1 [...]
diff --git a/docs/configuration/dynamic/index.html b/docs/configuration/dynamic/index.html
index 67e0815a511..4579709ebde 100644
--- a/docs/configuration/dynamic/index.html
+++ b/docs/configuration/dynamic/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">Only a subset of all configurations can currently be changed in the running server. Here are those configurations:</p>
 <p class="wrap-anywhere">Configurations that support dynamically change</p>
 <div class="relative overflow-auto prose-no-margin my-6"><table><thead><tr><th>Key</th></tr></thead><tbody><tr><td>hbase.ipc.server.fallback-to-simple-auth-allowed</td></tr><tr><td>hbase.cleaner.scan.dir.concurrent.size</td></tr><tr><td>hbase.coprocessor.master.classes</td></tr><tr><td>hbase.coprocessor.region.classes</td></tr><tr><td>hbase.coprocessor.regionserver.classes</td></tr><tr><td>hbase.coprocessor.user.region.classes</td></tr><tr><td>hbase.regionserver.thread.compaction.large</ [...]
@@ -32,11 +32,11 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/configuration/dynamic.mdx\",\"url\",\"/docs/configuration/dynamic\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\" [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/configuration/dynamic.mdx\",\"url\",\"/docs/configuration/dynamic\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\" [...]
\ No newline at end of file
diff --git a/docs/configuration/example.data b/docs/configuration/example.data
index a26b4f46a64..d75915a0706 100644
--- a/docs/configuration/example.data
+++ b/docs/configuration/example.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/configuration/example.mdx","url","/docs/configuration/example","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,101,136,142,145,151,157, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/configuration/example.mdx","url","/docs/configuration/example","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,105,140,146,149,155,1 [...]
diff --git a/docs/configuration/example/index.html b/docs/configuration/example/index.html
index 50bb6069573..a1ce55c985d 100644
--- a/docs/configuration/example/index.html
+++ b/docs/configuration/example/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">Here is a basic configuration example for a distributed ten node cluster: * The nodes are named <code>example0</code>, <code>example1</code>, etc., through node <code>example9</code> in this example. * The HBase Master and the HDFS NameNode are running on the node <code>example0</code>. * RegionServers run on nodes <code>example1</code>-<code>example9</code>. * A 3-node ZooKeeper ensemble runs on <code>example1</code>, <code>example2</code>, and <code>example3</c [...]
 <p class="wrap-anywhere">Below we show what the main configuration files — <em>hbase-site.xml</em>, <em>regionservers</em>, and <em>hbase-env.sh</em> — found in the HBase <em>conf</em> directory might look like.</p>
 <h3 class="flex scroll-m-28 flex-row items-center gap-2" id="hbase-sitexml"><a data-card="" href="#hbase-sitexml" class="peer">hbase-site.xml</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3 [...]
@@ -80,11 +80,11 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/configuration/example.mdx\",\"url\",\"/docs/configuration/example\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\" [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/configuration/example.mdx\",\"url\",\"/docs/configuration/example\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\" [...]
\ No newline at end of file
diff --git a/docs/configuration/hbase-run-models.data b/docs/configuration/hbase-run-models.data
index 1a31acbe0b4..afe4d343746 100644
--- a/docs/configuration/hbase-run-models.data
+++ b/docs/configuration/hbase-run-models.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/configuration/hbase-run-models.mdx","url","/docs/configuration/hbase-run-models","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,101,13 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/configuration/hbase-run-models.mdx","url","/docs/configuration/hbase-run-models","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,105 [...]
diff --git a/docs/configuration/hbase-run-models/index.html b/docs/configuration/hbase-run-models/index.html
index 2b2e7c4d652..18359e39289 100644
--- a/docs/configuration/hbase-run-models/index.html
+++ b/docs/configuration/hbase-run-models/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <h2 class="flex scroll-m-28 flex-row items-center gap-2" id="standalone-hbase"><a data-card="" href="#standalone-hbase" class="peer">Standalone HBase</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.5 [...]
 <p class="wrap-anywhere">This is the default mode. Standalone mode is what is described in the <a href="/docs/getting-started#quick-start---standalone-hbase" data-discover="true">quickstart</a> section. In standalone mode, HBase does not use HDFS — it uses the local filesystem instead — and it runs all HBase daemons and a local ZooKeeper all up in the same JVM. ZooKeeper binds to a well-known port so clients may talk to HBase.</p>
 <h3 class="flex scroll-m-28 flex-row items-center gap-2" id="standalone-hbase-over-hdfs"><a data-card="" href="#standalone-hbase-over-hdfs" class="peer">Standalone HBase over HDFS</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true" [...]
@@ -107,11 +107,11 @@ information that was originally in this section has been moved there.</p></div><
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/configuration/hbase-run-models.mdx\",\"url\",\"/docs/configuration/hbase-run-models\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22, [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/configuration/hbase-run-models.mdx\",\"url\",\"/docs/configuration/hbase-run-models\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22, [...]
\ No newline at end of file
diff --git a/docs/configuration/important.data b/docs/configuration/important.data
index 3b0165fc588..e4b3230e03b 100644
--- a/docs/configuration/important.data
+++ b/docs/configuration/important.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/configuration/important.mdx","url","/docs/configuration/important","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,101,136,142,145,151, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/configuration/important.mdx","url","/docs/configuration/important","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,105,140,146,149,1 [...]
diff --git a/docs/configuration/important/index.html b/docs/configuration/important/index.html
index cb4a36eb71c..ba9edf823b5 100644
--- a/docs/configuration/important/index.html
+++ b/docs/configuration/important/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">Review the <a href="/docs/configuration/basic-prerequisites#operating-system-utilities" data-discover="true">os</a> and <a href="/docs/configuration/basic-prerequisites#hadoop" data-discover="true">hadoop</a> sections.</p>
 <h3 class="flex scroll-m-28 flex-row items-center gap-2" id="big-cluster-configurations"><a data-card="" href="#big-cluster-configurations" class="peer">Big Cluster Configurations</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true" [...]
 <p class="wrap-anywhere">If you have a cluster with a lot of regions, it is possible that a Regionserver checks in briefly after the Master starts while all the remaining RegionServers lag behind. This first server to check in will be assigned all regions which is not optimal. To prevent the above scenario from happening, up the <code>hbase.master.wait.on.regionservers.mintostart</code> property from its default value of 1. See <a href="https://issues.apache.org/jira/browse/HBASE-6389">H [...]
@@ -188,11 +188,11 @@ API</a>.</p></div></div></div>
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/configuration/important.mdx\",\"url\",\"/docs/configuration/important\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_ [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/configuration/important.mdx\",\"url\",\"/docs/configuration/important\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_ [...]
\ No newline at end of file
diff --git a/docs/configuration/index.html b/docs/configuration/index.html
index ae868199f44..9f4a0f67218 100644
--- a/docs/configuration/index.html
+++ b/docs/configuration/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <h2 class="flex scroll-m-28 flex-row items-center gap-2" id="configuration-files"><a data-card="" href="#configuration-files" class="peer">Configuration Files</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true"><path d="M10 13a5 5  [...]
 <p class="wrap-anywhere">Apache HBase uses the same configuration system as Apache Hadoop. All configuration files are located in the <em>conf/</em> directory, which needs to be kept in sync for each node on your cluster.</p>
 <p class="wrap-anywhere"><strong><em>backup-masters</em></strong><br/>
@@ -54,11 +54,11 @@ configuration is an exception to this, to be described later below.</p></div></d
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/configuration/index.mdx\",\"url\",\"/docs/configuration\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\ [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/configuration/index.mdx\",\"url\",\"/docs/configuration\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\ [...]
\ No newline at end of file
diff --git a/docs/contributing-to-documentation.data b/docs/contributing-to-documentation.data
index 5cba2ea8b65..ae585f899c0 100644
--- a/docs/contributing-to-documentation.data
+++ b/docs/contributing-to-documentation.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/contributing-to-documentation.mdx","url","/docs/contributing-to-documentation","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/contributing-to-documentation.mdx","url","/docs/contributing-to-documentation","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,1 [...]
diff --git a/docs/contributing-to-documentation/index.html b/docs/contributing-to-documentation/index.html
index f90833a302a..24abf4adff1 100644
--- a/docs/contributing-to-documentation/index.html
+++ b/docs/contributing-to-documentation/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">The Apache HBase project welcomes contributions to all aspects of the project, including the documentation.</p>
 <p class="wrap-anywhere">In HBase, documentation includes the following areas, and probably some others:</p>
 <ul>
@@ -182,11 +182,11 @@ number to the name of the new patch.</p></div><div class="fd-step">After a chang
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/contributing-to-documentation.mdx\",\"url\",\"/docs/contributing-to-documentation\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\" [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/contributing-to-documentation.mdx\",\"url\",\"/docs/contributing-to-documentation\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\" [...]
\ No newline at end of file
diff --git a/docs/cp.data b/docs/cp.data
index f57cceb7a8a..8b4bcc0fbb1 100644
--- a/docs/cp.data
+++ b/docs/cp.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/cp.mdx","url","/docs/cp","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165,171,224,307,310,316,322,356,362,36 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/cp.mdx","url","/docs/cp","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,169,175,228,311,314,320,326,360,366 [...]
diff --git a/docs/cp/index.html b/docs/cp/index.html
index f85d4242ef0..e726f39f897 100644
--- a/docs/cp/index.html
+++ b/docs/cp/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 (<a href="http://research.google.com/people/jeff/SOCC2010-keynote-slides.pdf">http://research.google.com/people/jeff/SOCC2010-keynote-slides.pdf</a> pages 41-42.).
 Efforts are ongoing to bridge gaps between HBase&#x27;s
 implementation and BigTable&#x27;s architecture. For more information see
@@ -660,11 +660,11 @@ set: <code>arg1=1,arg2=2</code>. These could have been added to <code>hbase-site
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/cp.mdx\",\"url\",\"/docs/cp\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":27,\"_11\":706, [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/cp.mdx\",\"url\",\"/docs/cp\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":27,\"_11\":710, [...]
\ No newline at end of file
diff --git a/docs/datamodel.data b/docs/datamodel.data
index 1683d6497f0..193eeeb192b 100644
--- a/docs/datamodel.data
+++ b/docs/datamodel.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/datamodel.mdx","url","/docs/datamodel","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,151,157,163,169,222,305,308,314, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/datamodel.mdx","url","/docs/datamodel","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,155,161,167,173,226,309,312,3 [...]
diff --git a/docs/datamodel/index.html b/docs/datamodel/index.html
index be8bf96dbaa..5dafd47b613 100644
--- a/docs/datamodel/index.html
+++ b/docs/datamodel/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <h4 class="flex scroll-m-28 flex-row items-center gap-2" id="table-toc"><a data-card="" href="#table-toc" class="peer">Table</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7 [...]
 <p class="wrap-anywhere">An HBase table consists of multiple rows.</p>
 <h4 class="flex scroll-m-28 flex-row items-center gap-2" id="row-toc"><a data-card="" href="#row-toc" class="peer">Row</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1 [...]
@@ -395,11 +395,11 @@ Lars Hofhansl has also written a note on <a href="http://hadoop-hbase.blogspot.c
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/datamodel.mdx\",\"url\",\"/docs/datamodel\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":2 [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/datamodel.mdx\",\"url\",\"/docs/datamodel\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":2 [...]
\ No newline at end of file
diff --git a/docs/external-apis.data b/docs/external-apis.data
index 021405e0faf..754c74152e1 100644
--- a/docs/external-apis.data
+++ b/docs/external-apis.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/external-apis.mdx","url","/docs/external-apis","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165,171,224,307, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/external-apis.mdx","url","/docs/external-apis","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,169,175,228,3 [...]
diff --git a/docs/external-apis/index.html b/docs/external-apis/index.html
index 6b685a26c17..c340ed7c783 100644
--- a/docs/external-apis/index.html
+++ b/docs/external-apis/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <h2 class="flex scroll-m-28 flex-row items-center gap-2" id="rest"><a data-card="" href="#rest" class="peer">REST</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1 [...]
 <p class="wrap-anywhere">Representational State Transfer (REST) was introduced in 2000 in the doctoral dissertation of Roy Fielding, one of the principal authors of the HTTP specification.</p>
 <p class="wrap-anywhere">REST itself is out of the scope of this documentation, but in general, REST allows client-server interactions via an API that is tied to the URL itself. This section discusses how to configure and run the REST server included with HBase, which exposes HBase tables, rows, cells, and metadata as URL specified resources. There is also a nice series of blogs on <a href="http://blog.cloudera.com/blog/2013/03/how-to-use-the-apache-hbase-rest-interface-part-1/">How-to:  [...]
@@ -1025,11 +1025,11 @@ non-Base64 encoded cell name.</p></div></div></div>
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/external-apis.mdx\",\"url\",\"/docs/external-apis\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\ [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/external-apis.mdx\",\"url\",\"/docs/external-apis\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\ [...]
\ No newline at end of file
diff --git a/docs/faq.data b/docs/faq.data
index 1bec06d07e3..025566fa154 100644
--- a/docs/faq.data
+++ b/docs/faq.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/faq.mdx","url","/docs/faq","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165,171,224,307,310,316,322,356,362, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/faq.mdx","url","/docs/faq","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,169,175,228,311,314,320,326,360,3 [...]
diff --git a/docs/faq/index.html b/docs/faq/index.html
index 9cdc0fbf23d..f0efae043a0 100644
--- a/docs/faq/index.html
+++ b/docs/faq/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <h4 class="flex scroll-m-28 flex-row items-center gap-2" id="faq-when-should-i-use-hbase"><a data-card="" href="#faq-when-should-i-use-hbase" class="peer">When should I use HBase?</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true" [...]
 <p class="wrap-anywhere">See <a href="/docs/architecture/overview" data-discover="true">Overview</a> in the Architecture chapter.</p>
 <h4 class="flex scroll-m-28 flex-row items-center gap-2" id="does-hbase-support-sql"><a data-card="" href="#does-hbase-support-sql" class="peer">Does HBase support SQL?</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true"><path d="M [...]
@@ -98,11 +98,11 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/faq.mdx\",\"url\",\"/docs/faq\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":27,\"_11\":70 [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/faq.mdx\",\"url\",\"/docs/faq\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":27,\"_11\":71 [...]
\ No newline at end of file
diff --git a/docs/getting-started.data b/docs/getting-started.data
index 42ee487609d..04f71ef0157 100644
--- a/docs/getting-started.data
+++ b/docs/getting-started.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/getting-started.mdx","url","/docs/getting-started","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,44,47,101,136,142,145,151,157,163,169,222, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/getting-started.mdx","url","/docs/getting-started","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,44,48,51,105,140,146,149,155,161,167,173,2 [...]
diff --git a/docs/getting-started/index.html b/docs/getting-started/index.html
index 81c115f47ef..32369b2d6f7 100644
--- a/docs/getting-started/index.html
+++ b/docs/getting-started/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">This section describes the setup of a single-node standalone HBase. A <em>standalone</em> instance has all HBase daemons — the Master, RegionServers, and ZooKeeper — running in a single JVM persisting to the local filesystem. It is our most basic deploy profile. We will show you how to create a table in HBase using the <code>hbase shell</code> CLI, insert rows into the table, perform put and scan operations against the table, enable or disable the table, and star [...]
 <p class="wrap-anywhere">Apart from downloading HBase, this procedure should take less than 10 minutes.</p>
 <h2 class="flex scroll-m-28 flex-row items-center gap-2" id="getting-started-jdk-version-requirements"><a data-card="" href="#getting-started-jdk-version-requirements" class="peer">JDK Version Requirements</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opaci [...]
@@ -157,11 +157,11 @@ about ZooKeeper configuration, including using an external ZooKeeper instance wi
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/getting-started.mdx\",\"url\",\"/docs/getting-started\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\": [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/getting-started.mdx\",\"url\",\"/docs/getting-started\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\": [...]
\ No newline at end of file
diff --git a/docs/hbase-apis.data b/docs/hbase-apis.data
index f5789d7b89f..a190b1e3d4a 100644
--- a/docs/hbase-apis.data
+++ b/docs/hbase-apis.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/hbase-apis.mdx","url","/docs/hbase-apis","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165,171,224,307,310,31 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/hbase-apis.mdx","url","/docs/hbase-apis","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,169,175,228,311,314 [...]
diff --git a/docs/hbase-apis/index.html b/docs/hbase-apis/index.html
index 91ce62f1cdb..ed51b090028 100644
--- a/docs/hbase-apis/index.html
+++ b/docs/hbase-apis/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 The examples here are not comprehensive or complete, and should be used for purposes of illustration only.</p>
 <p class="wrap-anywhere">Apache HBase also works with multiple external APIs.
 See <a href="/docs/external-apis" data-discover="true">Apache HBase External APIs</a> for more information.</p>
@@ -122,11 +122,11 @@ See <a href="/docs/external-apis" data-discover="true">Apache HBase External API
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/hbase-apis.mdx\",\"url\",\"/docs/hbase-apis\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\" [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/hbase-apis.mdx\",\"url\",\"/docs/hbase-apis\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\" [...]
\ No newline at end of file
diff --git a/docs/hbase-history.data b/docs/hbase-history.data
index 51ab477ad0d..76fbf068155 100644
--- a/docs/hbase-history.data
+++ b/docs/hbase-history.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/hbase-history.mdx","url","/docs/hbase-history","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165,171,224,307, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/hbase-history.mdx","url","/docs/hbase-history","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,169,175,228,3 [...]
diff --git a/docs/hbase-history/index.html b/docs/hbase-history/index.html
index 7b17de15c26..c01e67b2778 100644
--- a/docs/hbase-history/index.html
+++ b/docs/hbase-history/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <li>2006: <a href="http://research.google.com/archive/bigtable.html">BigTable</a> paper published by Google.</li>
 <li>2006 (end of year): HBase development starts.</li>
 <li>2008: HBase becomes Hadoop sub-project.</li>
@@ -34,11 +34,11 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/hbase-history.mdx\",\"url\",\"/docs/hbase-history\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\ [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/hbase-history.mdx\",\"url\",\"/docs/hbase-history\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\ [...]
\ No newline at end of file
diff --git a/docs/hbase-incompatibilities.data b/docs/hbase-incompatibilities.data
index f8d03a9e65f..83005d1a0e9 100644
--- a/docs/hbase-incompatibilities.data
+++ b/docs/hbase-incompatibilities.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/hbase-incompatibilities.mdx","url","/docs/hbase-incompatibilities","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/hbase-incompatibilities.mdx","url","/docs/hbase-incompatibilities","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,1 [...]
diff --git a/docs/hbase-incompatibilities/index.html b/docs/hbase-incompatibilities/index.html
index eadf025bafe..939b06241d2 100644
--- a/docs/hbase-incompatibilities/index.html
+++ b/docs/hbase-incompatibilities/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">This appendix describes incompatible changes from earlier versions of HBase against HBase 2.0.
 This list is not meant to be wholly encompassing of all possible incompatibilities.
 Instead, this content is intended to give insight into some obvious incompatibilities which most
@@ -349,11 +349,11 @@ org/apache/hadoop/hbase/security/access/AccessControlClient.revoke:(Lorg/apache/
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/hbase-incompatibilities.mdx\",\"url\",\"/docs/hbase-incompatibilities\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_ [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/hbase-incompatibilities.mdx\",\"url\",\"/docs/hbase-incompatibilities\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_ [...]
\ No newline at end of file
diff --git a/docs/hbtop.data b/docs/hbtop.data
index 01e3de01c5c..e67641a0836 100644
--- a/docs/hbtop.data
+++ b/docs/hbtop.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/hbtop.mdx","url","/docs/hbtop","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165,171,224,307,310,316,322,356, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/hbtop.mdx","url","/docs/hbtop","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,169,175,228,311,314,320,326,3 [...]
diff --git a/docs/hbtop/index.html b/docs/hbtop/index.html
index e2563331588..235fb70ec76 100644
--- a/docs/hbtop/index.html
+++ b/docs/hbtop/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="image" href="/assets/top_screen-CWb803TC.gif" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px) 70vw, 900px" fetchPriority="auto"/><link rel="preload" as="image" href="/assets/scrolling_metric_records-DdLjDZmk.gif" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px) 70vw,  [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="image" href="/assets/top_screen-CWb803TC.gif" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px) 70vw, 900px" fetchPriority="auto"/><link rel="preload" as="image" href="/assets/scrolling_metric_records-DdLjDZmk.gif" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px) 70vw,  [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">You can run hbtop with the following command:</p>
 <figure dir="ltr" class="my-4 bg-fd-card rounded-xl shiki relative border shadow-sm not-prose overflow-hidden text-sm shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e" tabindex="-1"><div class="empty:hidden absolute top-2 right-2 z-2 backdrop-blur-lg rounded-lg text-fd-muted-foreground"><button type="button" class="inline-flex items-center justify-center rounded-md text-sm font-medium transition-c [...]
 <p class="wrap-anywhere">In this case, the values of <code>hbase.client.zookeeper.quorum</code> and <code>zookeeper.znode.parent</code> in <code>hbase-site.xml</code> in the classpath or the default values of them are used to connect.</p>
@@ -107,11 +107,11 @@ The top screen is refreshed in a certain period – 3 seconds by default.</p>
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/hbtop.mdx\",\"url\",\"/docs/hbtop\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":27,\"_11\ [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/hbtop.mdx\",\"url\",\"/docs/hbtop\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":27,\"_11\ [...]
\ No newline at end of file
diff --git a/docs/hfile-format.data b/docs/hfile-format.data
index e160bd4d281..4dd44464386 100644
--- a/docs/hfile-format.data
+++ b/docs/hfile-format.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/hfile-format.mdx","url","/docs/hfile-format","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165,171,224,307,31 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/hfile-format.mdx","url","/docs/hfile-format","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,169,175,228,311 [...]
diff --git a/docs/hfile-format/index.html b/docs/hfile-format/index.html
index 4ced46243fd..ac9afd05e13 100644
--- a/docs/hfile-format/index.html
+++ b/docs/hfile-format/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="image" href="/assets/hfile-DV-hIcTP.png" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px) 70vw, 900px" fetchPriority="auto"/><link rel="preload" as="image" href="/assets/hfilev2-O8X0wV-5.png" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px) 70vw, 900px" fetchPriority=" [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="image" href="/assets/hfile-DV-hIcTP.png" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px) 70vw, 900px" fetchPriority="auto"/><link rel="preload" as="image" href="/assets/hfilev2-O8X0wV-5.png" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px) 70vw, 900px" fetchPriority=" [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">As we will be discussing changes to the HFile format, it is useful to give a short overview of the original (HFile version 1) format.</p>
 <h3 class="flex scroll-m-28 flex-row items-center gap-2" id="overview-of-version-1"><a data-card="" href="#overview-of-version-1" class="peer">Overview of Version 1</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true"><path d="M10 1 [...]
 <p class="wrap-anywhere">An HFile in version 1 format is structured as follows:</p>
@@ -239,11 +239,11 @@ For more information see <a href="/docs/security/data-access#transparent-encrypt
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/hfile-format.mdx\",\"url\",\"/docs/hfile-format\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_ [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/hfile-format.mdx\",\"url\",\"/docs/hfile-format\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_ [...]
\ No newline at end of file
diff --git a/docs/index.html b/docs/index.html
index fe09d67f383..c53c9a76e4b 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 standing when the referenced HBase version shipped, or it will point to the location
 in <a href="https://hbase.apache.org/apidocs/index.html">Javadoc</a> or
 <a href="https://issues.apache.org/jira/browse/HBASE">JIRA</a> where the pertinent information can be found.</p>
@@ -83,11 +83,11 @@ such features or use patterns.</p></div><a href="https://github.com/apache/hbase
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/index.mdx\",\"url\",\"/docs\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":27,\"_11\":706, [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/index.mdx\",\"url\",\"/docs\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":27,\"_11\":710, [...]
\ No newline at end of file
diff --git a/docs/inmemory-compaction.data b/docs/inmemory-compaction.data
index e0eabb8c92f..90be4328687 100644
--- a/docs/inmemory-compaction.data
+++ b/docs/inmemory-compaction.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/inmemory-compaction.mdx","url","/docs/inmemory-compaction","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/inmemory-compaction.mdx","url","/docs/inmemory-compaction","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,1 [...]
diff --git a/docs/inmemory-compaction/index.html b/docs/inmemory-compaction/index.html
index 958a84dbd84..28e9fbc6444 100644
--- a/docs/inmemory-compaction/index.html
+++ b/docs/inmemory-compaction/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">In-memory Compaction (A.K.A Accordion) is a new feature in hbase-2.0.0.
 It was first introduced on the Apache HBase Blog at
 <a href="https://blogs.apache.org/hbase/entry/accordion-hbase-breathes-with-in">Accordion: HBase Breathes with In-Memory Compaction</a>.
@@ -90,11 +90,11 @@ family Store named <em>family</em> configured to use a <em>CompactingMemStore</e
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/inmemory-compaction.mdx\",\"url\",\"/docs/inmemory-compaction\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25, [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/inmemory-compaction.mdx\",\"url\",\"/docs/inmemory-compaction\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25, [...]
\ No newline at end of file
diff --git a/docs/mapreduce.data b/docs/mapreduce.data
index 37327f2f82b..380694670a2 100644
--- a/docs/mapreduce.data
+++ b/docs/mapreduce.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/mapreduce.mdx","url","/docs/mapreduce","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165,169,222,305,308,314, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/mapreduce.mdx","url","/docs/mapreduce","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,169,173,226,309,312,3 [...]
diff --git a/docs/mapreduce/index.html b/docs/mapreduce/index.html
index f358ed0682d..cf06285db4a 100644
--- a/docs/mapreduce/index.html
+++ b/docs/mapreduce/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 MapReduce itself is out of the scope of this document.
 A good place to get started with MapReduce is <a href="https://hadoop.apache.org/docs/r2.6.0/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html">https://hadoop.apache.org/docs/r2.6.0/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html</a>.
 MapReduce version 2 (MR2)is now part of <a href="https://hadoop.apache.org/docs/r2.6.0/hadoop-yarn/hadoop-yarn-site/">YARN</a>.</p>
@@ -432,11 +432,11 @@ Especially for longer running jobs, speculative execution will create duplicate
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/mapreduce.mdx\",\"url\",\"/docs/mapreduce\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":2 [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/mapreduce.mdx\",\"url\",\"/docs/mapreduce\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":2 [...]
\ No newline at end of file
diff --git a/docs/offheap-read-write.data b/docs/offheap-read-write.data
index 0f4b26de5ea..017e48c6dbb 100644
--- a/docs/offheap-read-write.data
+++ b/docs/offheap-read-write.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/offheap-read-write.mdx","url","/docs/offheap-read-write","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165,17 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/offheap-read-write.mdx","url","/docs/offheap-read-write","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,169 [...]
diff --git a/docs/offheap-read-write/index.html b/docs/offheap-read-write/index.html
index c3c9c8f4be4..27b93a5e1df 100644
--- a/docs/offheap-read-write/index.html
+++ b/docs/offheap-read-write/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="image" href="/assets/offheap-overview-DTGpchw3.png" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px) 70vw, 900px" fetchPriority="auto"/><link rel="preload" as="image" href="/assets/bytebuff-allocator-stats-B7DU8asJ.png" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px)  [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="image" href="/assets/offheap-overview-DTGpchw3.png" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px) 70vw, 900px" fetchPriority="auto"/><link rel="preload" as="image" href="/assets/bytebuff-allocator-stats-B7DU8asJ.png" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px)  [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">To help reduce P99/P999 RPC latencies, HBase 2.x has made the read and write path use a pool of offheap buffers. Cells are
 allocated in offheap memory outside of the purview of the JVM garbage collector with attendent reduction in GC pressure.
 In the write path, the request packet received from client will be read in on a pre-allocated offheap buffer and retained
@@ -173,11 +173,11 @@ regions are selected for forced flushes.</p></div><a href="https://github.com/ap
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/offheap-read-write.mdx\",\"url\",\"/docs/offheap-read-write\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\" [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/offheap-read-write.mdx\",\"url\",\"/docs/offheap-read-write\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\" [...]
\ No newline at end of file
diff --git a/docs/operational-management.data b/docs/operational-management.data
index 0832436a23f..5ddfec0102d 100644
--- a/docs/operational-management.data
+++ b/docs/operational-management.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/operational-management/index.mdx","url","/docs/operational-management","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/operational-management/index.mdx","url","/docs/operational-management","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,1 [...]
diff --git a/docs/operational-management/backup-and-snapshots.data b/docs/operational-management/backup-and-snapshots.data
index d79cbcc9d0c..6383508e96e 100644
--- a/docs/operational-management/backup-and-snapshots.data
+++ b/docs/operational-management/backup-and-snapshots.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/operational-management/backup-and-snapshots.mdx","url","/docs/operational-management/backup-and-snapshots","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","ind [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/operational-management/backup-and-snapshots.mdx","url","/docs/operational-management/backup-and-snapshots","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","ind [...]
diff --git a/docs/operational-management/backup-and-snapshots/index.html b/docs/operational-management/backup-and-snapshots/index.html
index d30442e37bb..dcae4a23ad8 100644
--- a/docs/operational-management/backup-and-snapshots/index.html
+++ b/docs/operational-management/backup-and-snapshots/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">There are two broad strategies for performing HBase backups: backing up with a full cluster shutdown, and backing up on a live cluster. Each approach has pros and cons.</p>
 <p class="wrap-anywhere">For additional information, see <a href="https://web.archive.org/web/20160110232448/http://blog.sematext.com/2011/03/11/hbase-backup-options/">HBase Backup Options</a> over on the Sematext Blog.</p>
 <h3 class="flex scroll-m-28 flex-row items-center gap-2" id="full-shutdown-backup"><a data-card="" href="#full-shutdown-backup" class="peer">Full Shutdown Backup</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true"><path d="M10 13a5 [...]
@@ -181,11 +181,11 @@ Storage</a>.</p></div></div></div>
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/operational-management/backup-and-snapshots.mdx\",\"url\",\"/docs/operational-management/backup-and-snapshots\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\" [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/operational-management/backup-and-snapshots.mdx\",\"url\",\"/docs/operational-management/backup-and-snapshots\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\" [...]
\ No newline at end of file
diff --git a/docs/operational-management/cluster-replication.data b/docs/operational-management/cluster-replication.data
index 8ce056d2224..db1f26c39de 100644
--- a/docs/operational-management/cluster-replication.data
+++ b/docs/operational-management/cluster-replication.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/operational-management/cluster-replication.mdx","url","/docs/operational-management/cluster-replication","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/operational-management/cluster-replication.mdx","url","/docs/operational-management/cluster-replication","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index [...]
diff --git a/docs/operational-management/cluster-replication/index.html b/docs/operational-management/cluster-replication/index.html
index e61ae50dc38..4e85e316971 100644
--- a/docs/operational-management/cluster-replication/index.html
+++ b/docs/operational-management/cluster-replication/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="image" href="/assets/hbase_replication_diagram-pmf_4kSh.jpg" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px) 70vw, 900px" fetchPriority="auto"/><link rel="preload" as="image" href="/assets/replication_overview-CONFSRqj.png" imageSizes="(max-width: 768px) 100vw, (max-width: 120 [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="image" href="/assets/hbase_replication_diagram-pmf_4kSh.jpg" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px) 70vw, 900px" fetchPriority="auto"/><link rel="preload" as="image" href="/assets/replication_overview-CONFSRqj.png" imageSizes="(max-width: 768px) 100vw, (max-width: 120 [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">HBase provides a cluster replication mechanism which allows you to keep one cluster&#x27;s state synchronized with that of another cluster, using the write-ahead log (WAL) of the source cluster to propagate the changes. Some use cases for cluster replication include:</p>
 <ul>
 <li>Backup and disaster recovery</li>
@@ -373,11 +373,11 @@ in favor of discussions about cluster topologies appropriate for different scena
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/operational-management/cluster-replication.mdx\",\"url\",\"/docs/operational-management/cluster-replication\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":2 [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/operational-management/cluster-replication.mdx\",\"url\",\"/docs/operational-management/cluster-replication\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":2 [...]
\ No newline at end of file
diff --git a/docs/operational-management/index.html b/docs/operational-management/index.html
index c7cb3ad0fbb..6896b2ca8df 100644
--- a/docs/operational-management/index.html
+++ b/docs/operational-management/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
     if (!window.history.state || !window.history.state.key) {
       let key = Math.random().toString(32).slice(2);
       window.history.replaceState({ key }, "");
@@ -29,11 +29,11 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/operational-management/index.mdx\",\"url\",\"/docs/operational-management\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7 [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/operational-management/index.mdx\",\"url\",\"/docs/operational-management\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7 [...]
\ No newline at end of file
diff --git a/docs/operational-management/metrics-and-monitoring.data b/docs/operational-management/metrics-and-monitoring.data
index 4b72772ea88..930e106e877 100644
--- a/docs/operational-management/metrics-and-monitoring.data
+++ b/docs/operational-management/metrics-and-monitoring.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/operational-management/metrics-and-monitoring.mdx","url","/docs/operational-management/metrics-and-monitoring","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages", [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/operational-management/metrics-and-monitoring.mdx","url","/docs/operational-management/metrics-and-monitoring","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages", [...]
diff --git a/docs/operational-management/metrics-and-monitoring/index.html b/docs/operational-management/metrics-and-monitoring/index.html
index d09fea56725..888699e1de5 100644
--- a/docs/operational-management/metrics-and-monitoring/index.html
+++ b/docs/operational-management/metrics-and-monitoring/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="image" href="/assets/bc_basic-BTMl5eCr.png" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px) 70vw, 900px" fetchPriority="auto"/><link rel="preload" as="image" href="/assets/bc_config-Ceg8MoFC.png" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px) 70vw, 900px" fetchPrior [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="image" href="/assets/bc_basic-BTMl5eCr.png" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px) 70vw, 900px" fetchPriority="auto"/><link rel="preload" as="image" href="/assets/bc_config-Ceg8MoFC.png" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px) 70vw, 900px" fetchPrior [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">HBase emits metrics which adhere to the <a href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/Metrics.html">Hadoop Metrics</a> API. Starting with HBase 0.95 <sup><a href="#user-content-fn-5" id="user-content-fnref-5" data-footnote-ref="true" aria-describedby="footnote-label">1</a></sup>, HBase is configured to emit a default set of metrics with a default sampling period of every 10 seconds. You can use HBase metrics in conjunction with  [...]
 <h3 class="flex scroll-m-28 flex-row items-center gap-2" id="metric-setup"><a data-card="" href="#metric-setup" class="peer">Metric Setup</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 [...]
 <p class="wrap-anywhere">For HBase 0.95 and newer, HBase ships with a default metrics configuration, or <strong><em>sink</em></strong>. This includes a wide variety of individual metrics, and emits them every 10 seconds by default. To configure metrics for a given region server, edit the <em>conf/hadoop-metrics2-hbase.properties</em> file. Restart the region server for the changes to take effect.</p>
@@ -410,11 +410,11 @@ recommended to turn on this feature only during debugging.</p></div></div></div>
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/operational-management/metrics-and-monitoring.mdx\",\"url\",\"/docs/operational-management/metrics-and-monitoring\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_ [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/operational-management/metrics-and-monitoring.mdx\",\"url\",\"/docs/operational-management/metrics-and-monitoring\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_ [...]
\ No newline at end of file
diff --git a/docs/operational-management/node.data b/docs/operational-management/node.data
index 14a9584f1d3..1186b49eaee 100644
--- a/docs/operational-management/node.data
+++ b/docs/operational-management/node.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/operational-management/node.mdx","url","/docs/operational-management/node","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/operational-management/node.mdx","url","/docs/operational-management/node","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,1 [...]
diff --git a/docs/operational-management/node/index.html b/docs/operational-management/node/index.html
index aa110f11e60..914795985cf 100644
--- a/docs/operational-management/node/index.html
+++ b/docs/operational-management/node/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <h3 class="flex scroll-m-28 flex-row items-center gap-2" id="node-decommission"><a data-card="" href="#node-decommission" class="peer">Node Decommission</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true"><path d="M10 13a5 5 0 0 0  [...]
 <p class="wrap-anywhere">You can stop an individual RegionServer by running the following script in the HBase directory on the particular node:</p>
 <figure dir="ltr" class="my-4 bg-fd-card rounded-xl shiki relative border shadow-sm not-prose overflow-hidden text-sm shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e" tabindex="-1"><div class="empty:hidden absolute top-2 right-2 z-2 backdrop-blur-lg rounded-lg text-fd-muted-foreground"><button type="button" class="inline-flex items-center justify-center rounded-md text-sm font-medium transition-c [...]
@@ -126,11 +126,11 @@ the datanode.</p></div></div></div>
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/operational-management/node.mdx\",\"url\",\"/docs/operational-management/node\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\ [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/operational-management/node.mdx\",\"url\",\"/docs/operational-management/node\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\ [...]
\ No newline at end of file
diff --git a/docs/operational-management/region-and-capacity.data b/docs/operational-management/region-and-capacity.data
index dc7279d933b..bff5f363f90 100644
--- a/docs/operational-management/region-and-capacity.data
+++ b/docs/operational-management/region-and-capacity.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/operational-management/region-and-capacity.mdx","url","/docs/operational-management/region-and-capacity","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/operational-management/region-and-capacity.mdx","url","/docs/operational-management/region-and-capacity","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index [...]
diff --git a/docs/operational-management/region-and-capacity/index.html b/docs/operational-management/region-and-capacity/index.html
index dff82b71ee0..79ebe809bf9 100644
--- a/docs/operational-management/region-and-capacity/index.html
+++ b/docs/operational-management/region-and-capacity/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <h3 class="flex scroll-m-28 flex-row items-center gap-2" id="major-compaction"><a data-card="" href="#major-compaction" class="peer">Major Compaction</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.5 [...]
 <p class="wrap-anywhere">Major compactions can be requested via the HBase shell or <a href="https://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/client/Admin.html#majorCompact(org.apache.hadoop.hbase.TableName)">Admin.majorCompact</a>.</p>
 <p class="wrap-anywhere">Note: major compactions do NOT do region merges. See <a href="/docs/architecture/regions#compaction" data-discover="true">compaction</a> for more information about compactions.</p>
@@ -273,11 +273,11 @@ Administration</p></div></div></div>
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/operational-management/region-and-capacity.mdx\",\"url\",\"/docs/operational-management/region-and-capacity\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":2 [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/operational-management/region-and-capacity.mdx\",\"url\",\"/docs/operational-management/region-and-capacity\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":2 [...]
\ No newline at end of file
diff --git a/docs/operational-management/running-multiple-workloads-on-a-single-cluster.data b/docs/operational-management/running-multiple-workloads-on-a-single-cluster.data
index 053f436c9b5..66067e181b6 100644
--- a/docs/operational-management/running-multiple-workloads-on-a-single-cluster.data
+++ b/docs/operational-management/running-multiple-workloads-on-a-single-cluster.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/operational-management/running-multiple-workloads-on-a-single-cluster.mdx","url","/docs/operational-management/running-multiple-workloads-on-a-single-cluster","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOp [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/operational-management/running-multiple-workloads-on-a-single-cluster.mdx","url","/docs/operational-management/running-multiple-workloads-on-a-single-cluster","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOp [...]
diff --git a/docs/operational-management/running-multiple-workloads-on-a-single-cluster/index.html b/docs/operational-management/running-multiple-workloads-on-a-single-cluster/index.html
index 4590527f64b..9e5266fbf45 100644
--- a/docs/operational-management/running-multiple-workloads-on-a-single-cluster/index.html
+++ b/docs/operational-management/running-multiple-workloads-on-a-single-cluster/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <ul>
 <li><a href="/docs/operational-management/running-multiple-workloads-on-a-single-cluster#quotas" data-discover="true">Quotas</a></li>
 <li><a href="/docs/operational-management/running-multiple-workloads-on-a-single-cluster#request-queues" data-discover="true">Request Queues</a></li>
@@ -205,11 +205,11 @@ will always return false.</p></div></div></div>
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/operational-management/running-multiple-workloads-on-a-single-cluster.mdx\",\"url\",\"/docs/operational-management/running-multiple-workloads-on-a-single-cluster\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\ [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/operational-management/running-multiple-workloads-on-a-single-cluster.mdx\",\"url\",\"/docs/operational-management/running-multiple-workloads-on-a-single-cluster\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\ [...]
\ No newline at end of file
diff --git a/docs/operational-management/table-rename.data b/docs/operational-management/table-rename.data
index 688f0ee75f2..52d52e86851 100644
--- a/docs/operational-management/table-rename.data
+++ b/docs/operational-management/table-rename.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/operational-management/table-rename.mdx","url","/docs/operational-management/table-rename","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/operational-management/table-rename.mdx","url","/docs/operational-management/table-rename","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46 [...]
diff --git a/docs/operational-management/table-rename/index.html b/docs/operational-management/table-rename/index.html
index 3a792bffb65..df08dcd8bd5 100644
--- a/docs/operational-management/table-rename/index.html
+++ b/docs/operational-management/table-rename/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">As of hbase 0.94.x, you can use the snapshot facility renaming a table. Here is how you would do it using the hbase shell:</p>
 <figure dir="ltr" class="my-4 bg-fd-card rounded-xl shiki relative border shadow-sm not-prose overflow-hidden text-sm shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e" tabindex="-1"><div class="empty:hidden absolute top-2 right-2 z-2 backdrop-blur-lg rounded-lg text-fd-muted-foreground"><button type="button" class="inline-flex items-center justify-center rounded-md text-sm font-medium transition-c [...]
 <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">hbase shell</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">&gt;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> snapshot </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">&#x27;tableName&#x27;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">&#x27;tableSnapshot&#x27;</span></span>
@@ -44,11 +44,11 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/operational-management/table-rename.mdx\",\"url\",\"/docs/operational-management/table-rename\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\ [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/operational-management/table-rename.mdx\",\"url\",\"/docs/operational-management/table-rename\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\ [...]
\ No newline at end of file
diff --git a/docs/operational-management/tools.data b/docs/operational-management/tools.data
index 43306009b18..a9d20d0c42f 100644
--- a/docs/operational-management/tools.data
+++ b/docs/operational-management/tools.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/operational-management/tools.mdx","url","/docs/operational-management/tools","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,14 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/operational-management/tools.mdx","url","/docs/operational-management/tools","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142 [...]
diff --git a/docs/operational-management/tools/index.html b/docs/operational-management/tools/index.html
index 1e247237e9a..4d000056e88 100644
--- a/docs/operational-management/tools/index.html
+++ b/docs/operational-management/tools/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">To see usage instructions for <em>bin/hbase</em> command, run it with no arguments, or with the <code>-h</code> argument. These are the usage instructions for HBase 0.98.x. Some commands, such as <code>version</code>, <code>pe</code>, <code>ltt</code>, <code>clean</code>, are not available in previous versions.</p>
 <figure dir="ltr" class="my-4 bg-fd-card rounded-xl shiki relative border shadow-sm not-prose overflow-hidden text-sm shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e" tabindex="-1"><div class="empty:hidden absolute top-2 right-2 z-2 backdrop-blur-lg rounded-lg text-fd-muted-foreground"><button type="button" class="inline-flex items-center justify-center rounded-md text-sm font-medium transition-c [...]
 <span class="line"><span>Usage: hbase [&lt;options&gt;] &lt;command&gt; [&lt;args&gt;]</span></span>
@@ -693,11 +693,11 @@ tables/regions/families target for a given compaction run.</p></div></div></div>
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/operational-management/tools.mdx\",\"url\",\"/docs/operational-management/tools\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_2 [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/operational-management/tools.mdx\",\"url\",\"/docs/operational-management/tools\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_2 [...]
\ No newline at end of file
diff --git a/docs/orca.data b/docs/orca.data
index c9dd84dd110..e1f6496a1fd 100644
--- a/docs/orca.data
+++ b/docs/orca.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/orca.mdx","url","/docs/orca","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165,171,224,307,310,316,322,356,36 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/orca.mdx","url","/docs/orca","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,169,175,228,311,314,320,326,360 [...]
diff --git a/docs/orca/index.html b/docs/orca/index.html
index 3ca79a95ca2..e01e4b8db99 100644
--- a/docs/orca/index.html
+++ b/docs/orca/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="image" href="/assets/large-logo-CXfkkzJH.svg" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px) 70vw, 900px" fetchPriority="auto"/><link rel="preload" as="image" href="/assets/dark-theme-large-logo-BoBjg19n.svg" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px) 70vw, 900 [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="image" href="/assets/large-logo-CXfkkzJH.svg" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px) 70vw, 900px" fetchPriority="auto"/><link rel="preload" as="image" href="/assets/dark-theme-large-logo-BoBjg19n.svg" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px) 70vw, 900 [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <img alt="Apache HBase Orca Logo" src="/assets/large-logo-CXfkkzJH.svg" fetchPriority="auto" sizes="(max-width: 768px) 100vw, (max-width: 1200px) 70vw, 900px" class="rounded-lg"/></p>
 <p class="wrap-anywhere">For dark theme:
 <img alt="Apache HBase Orca Logo for dark theme" src="/assets/dark-theme-large-logo-BoBjg19n.svg" fetchPriority="auto" sizes="(max-width: 768px) 100vw, (max-width: 1200px) 70vw, 900px" class="rounded-lg"/></p>
@@ -35,11 +35,11 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/orca.mdx\",\"url\",\"/docs/orca\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":27,\"_11\": [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/orca.mdx\",\"url\",\"/docs/orca\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":27,\"_11\": [...]
\ No newline at end of file
diff --git a/docs/other-info.data b/docs/other-info.data
index b8f9a3aa8ac..82868772dce 100644
--- a/docs/other-info.data
+++ b/docs/other-info.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/other-info.mdx","url","/docs/other-info","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165,171,224,307,310,31 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/other-info.mdx","url","/docs/other-info","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,169,175,228,311,314 [...]
diff --git a/docs/other-info/index.html b/docs/other-info/index.html
index 0e402f18a5b..083828c1552 100644
--- a/docs/other-info/index.html
+++ b/docs/other-info/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <ul>
 <li>
 <p class="wrap-anywhere"><a href="https://vimeo.com/23400732">Introduction to HBase</a> by Todd Lipcon (Chicago Data Summit 2011).</p>
@@ -53,11 +53,11 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/other-info.mdx\",\"url\",\"/docs/other-info\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\" [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/other-info.mdx\",\"url\",\"/docs/other-info\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\" [...]
\ No newline at end of file
diff --git a/docs/performance.data b/docs/performance.data
index 3ad6e8d52e6..7cc56b7bea0 100644
--- a/docs/performance.data
+++ b/docs/performance.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/performance.mdx","url","/docs/performance","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165,171,224,307,310, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/performance.mdx","url","/docs/performance","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,169,175,228,311,3 [...]
diff --git a/docs/performance/index.html b/docs/performance/index.html
index 99494419a54..d8e0fd99a8d 100644
--- a/docs/performance/index.html
+++ b/docs/performance/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <h3 class="flex scroll-m-28 flex-row items-center gap-2" id="memory"><a data-card="" href="#memory" class="peer">Memory</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l- [...]
 <p class="wrap-anywhere">RAM, RAM, RAM. Don&#x27;t starve HBase.</p>
 <h3 class="flex scroll-m-28 flex-row items-center gap-2" id="64-bit"><a data-card="" href="#64-bit" class="peer">64-bit</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l- [...]
@@ -376,11 +376,11 @@ HDFS files open all the time, this can add up quickly.</p></div></div></div>
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/performance.mdx\",\"url\",\"/docs/performance\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15 [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/performance.mdx\",\"url\",\"/docs/performance\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15 [...]
\ No newline at end of file
diff --git a/docs/profiler.data b/docs/profiler.data
index 2e73639b5a7..6effc442ceb 100644
--- a/docs/profiler.data
+++ b/docs/profiler.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/profiler.mdx","url","/docs/profiler","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165,171,224,307,310,316,32 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/profiler.mdx","url","/docs/profiler","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,169,175,228,311,314,320 [...]
diff --git a/docs/profiler/index.html b/docs/profiler/index.html
index 41449351ce8..25ad7621a8c 100644
--- a/docs/profiler/index.html
+++ b/docs/profiler/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere"><a href="https://issues.apache.org/jira/browse/HBASE-21926">HBASE-21926</a> introduced a new servlet that
 supports integrated, on-demand profiling via the
 <a href="https://github.com/jvm-profiling-tools/async-profiler">Async Profiler</a> project.</p>
@@ -93,11 +93,11 @@ or direct interaction with the infoserver.</p>
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/profiler.mdx\",\"url\",\"/docs/profiler\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":27, [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/profiler.mdx\",\"url\",\"/docs/profiler\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":27, [...]
\ No newline at end of file
diff --git a/docs/protobuf.data b/docs/protobuf.data
index c3da6a15fd0..1c128e009ca 100644
--- a/docs/protobuf.data
+++ b/docs/protobuf.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/protobuf.mdx","url","/docs/protobuf","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165,171,224,307,310,316,32 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/protobuf.mdx","url","/docs/protobuf","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,169,175,228,311,314,320 [...]
diff --git a/docs/protobuf/index.html b/docs/protobuf/index.html
index 0df883014c6..191c91f68c8 100644
--- a/docs/protobuf/index.html
+++ b/docs/protobuf/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">HBase uses Google&#x27;s <a href="https://developers.google.com/protocol-buffers/">protobufs</a> wherever
 it persists metadata — in the tail of hfiles or Cells written by
 HBase into the system hbase:meta table or when HBase writes znodes
@@ -185,11 +185,11 @@ plugin.</p></div><a href="https://github.com/apache/hbase/edit/master/hbase-webs
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/protobuf.mdx\",\"url\",\"/docs/protobuf\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":27, [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/protobuf.mdx\",\"url\",\"/docs/protobuf\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":27, [...]
\ No newline at end of file
diff --git a/docs/pv2.data b/docs/pv2.data
index ba489a13d0d..912d1f8cdca 100644
--- a/docs/pv2.data
+++ b/docs/pv2.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/pv2.mdx","url","/docs/pv2","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165,171,224,307,310,316,322,356,362, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/pv2.mdx","url","/docs/pv2","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,169,175,228,311,314,320,326,360,3 [...]
diff --git a/docs/pv2/index.html b/docs/pv2/index.html
index 2aac8050fc3..98fe7352c00 100644
--- a/docs/pv2/index.html
+++ b/docs/pv2/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">With Pv2 you can build and run state machines. It was built by Matteo to make distributed state transitions in HBase resilient in the face of process failures. Previous to Pv2, state transition handling was spread about the codebase with implementation varying by transition-type and context. Pv2 was inspired by <a href="https://accumulo.apache.org/1.8/accumulo_user_manual.html#_fault_tolerant_executor_fate">FATE</a>, of Apache Accumulo.</p>
 <p class="wrap-anywhere">Early Pv2 aspects have been shipping in HBase with a good while now but it has continued to evolve as it takes on more involved scenarios. What we have now is powerful but intricate in operation and incomplete, in need of cleanup and hardening. In this doc we have given overview on the system so you can make use of it (and help with its polishing).</p>
 <p class="wrap-anywhere">This system has the awkward name of Pv2 because HBase already had the notion of a Procedure used in snapshots (see hbase-server <em>org.apache.hadoop.hbase.procedure</em> as opposed to hbase-procedure <em>org.apache.hadoop.hbase.procedure2</em>). Pv2 supercedes and is to replace Procedure.</p>
@@ -125,11 +125,11 @@ It is easy to confuse the state that the Procedure itself is keeping with that o
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/pv2.mdx\",\"url\",\"/docs/pv2\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":27,\"_11\":70 [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/pv2.mdx\",\"url\",\"/docs/pv2\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":27,\"_11\":71 [...]
\ No newline at end of file
diff --git a/docs/regionserver-sizing.data b/docs/regionserver-sizing.data
index b0e10b9f6c5..1b9c5afd219 100644
--- a/docs/regionserver-sizing.data
+++ b/docs/regionserver-sizing.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/regionserver-sizing.mdx","url","/docs/regionserver-sizing","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,163, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/regionserver-sizing.mdx","url","/docs/regionserver-sizing","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,1 [...]
diff --git a/docs/regionserver-sizing/index.html b/docs/regionserver-sizing/index.html
index 61381341042..f988f80ad8c 100644
--- a/docs/regionserver-sizing/index.html
+++ b/docs/regionserver-sizing/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <blockquote>
 <p class="wrap-anywhere">Personally I would place the maximum disk space per machine that can be served exclusively with HBase around 6T, unless you have a very read-heavy workload. In that case the Java heap should be 32GB (20G regions, 128M memstores, the rest defaults).</p>
 <p class="wrap-anywhere">— Lars Hofhansl <a href="http://hadoop-hbase.blogspot.com/2013/01/hbase-region-server-memory-sizing.html">http://hadoop-hbase.blogspot.com/2013/01/hbase-region-server-memory-sizing.html</a></p>
@@ -675,11 +675,11 @@ for more information.</p></div></div></div>
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/regionserver-sizing.mdx\",\"url\",\"/docs/regionserver-sizing\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25, [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/regionserver-sizing.mdx\",\"url\",\"/docs/regionserver-sizing\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25, [...]
\ No newline at end of file
diff --git a/docs/rpc.data b/docs/rpc.data
index d37a148f182..40ad1f5cbcd 100644
--- a/docs/rpc.data
+++ b/docs/rpc.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/rpc.mdx","url","/docs/rpc","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165,171,224,307,310,316,322,356,362, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/rpc.mdx","url","/docs/rpc","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,169,175,228,311,314,320,326,360,3 [...]
diff --git a/docs/rpc/index.html b/docs/rpc/index.html
index 6cbbd69858d..4a5e9128fda 100644
--- a/docs/rpc/index.html
+++ b/docs/rpc/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 Our RPC wire format therefore changes.
 This document describes the client/server request/response protocol and our new RPC wire-format.</p>
 <p class="wrap-anywhere">For what RPC is like in 0.94 and previous, see Benoît/Tsuna&#x27;s <a href="https://github.com/OpenTSDB/asynchbase/blob/master/src/HBaseRpc.java#L164">Unofficial Hadoop / HBase RPC protocol documentation</a>.
@@ -159,11 +159,11 @@ The server will return cellblocks compressed using this same compressor as long
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/rpc.mdx\",\"url\",\"/docs/rpc\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":27,\"_11\":70 [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/rpc.mdx\",\"url\",\"/docs/rpc\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":27,\"_11\":71 [...]
\ No newline at end of file
diff --git a/docs/schema-design.data b/docs/schema-design.data
index 6520ff40413..3dd64273bd8 100644
--- a/docs/schema-design.data
+++ b/docs/schema-design.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/schema-design.mdx","url","/docs/schema-design","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,157,163,169,222,305, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/schema-design.mdx","url","/docs/schema-design","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,161,167,173,226,3 [...]
diff --git a/docs/schema-design/index.html b/docs/schema-design/index.html
index c66143a8f7c..4395cba3d70 100644
--- a/docs/schema-design/index.html
+++ b/docs/schema-design/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">The documentation on the Cloud Bigtable website, <a href="https://cloud.google.com/bigtable/docs/schema-design">Designing Your Schema</a>, is pertinent and nicely done and lessons learned there equally apply here in HBase land; just divide any quoted values by ~10 to get what works for HBase: e.g. where it says individual values can be ~10MBs in size, HBase can do similar — perhaps best to go smaller if you can — and where it says a maximum of 100 column families [...]
 <p class="wrap-anywhere">See also Robert Yokota&#x27;s <a href="https://blogs.apache.org/hbase/entry/hbase-application-archetypes-redux">HBase Application Archetypes</a> (an update on work done by other HBasers), for a helpful categorization of use cases that do well on top of the HBase model.</p>
 <h2 class="flex scroll-m-28 flex-row items-center gap-2" id="schema-creation"><a data-card="" href="#schema-creation" class="peer">Schema Creation</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.5 [...]
@@ -63,11 +63,11 @@ table to be disabled.</p></div></div></div>
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/schema-design.mdx\",\"url\",\"/docs/schema-design\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\ [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/schema-design.mdx\",\"url\",\"/docs/schema-design\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\ [...]
\ No newline at end of file
diff --git a/docs/security.data b/docs/security.data
index 1338af74f05..e7d582b0ab6 100644
--- a/docs/security.data
+++ b/docs/security.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/security/index.mdx","url","/docs/security","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165,171,222,305,308, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/security/index.mdx","url","/docs/security","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,169,175,226,309,3 [...]
diff --git a/docs/security/client-access.data b/docs/security/client-access.data
index 7a563fda157..f65c21971be 100644
--- a/docs/security/client-access.data
+++ b/docs/security/client-access.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/security/client-access.mdx","url","/docs/security/client-access","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,15 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/security/client-access.mdx","url","/docs/security/client-access","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157 [...]
diff --git a/docs/security/client-access/index.html b/docs/security/client-access/index.html
index 0bbc0b200e4..0838768a927 100644
--- a/docs/security/client-access/index.html
+++ b/docs/security/client-access/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">This describes how to set up Apache HBase and clients for connection to secure HBase resources.</p>
 <h2 class="flex scroll-m-28 flex-row items-center gap-2" id="security-client-access-prerequisites"><a data-card="" href="#security-client-access-prerequisites" class="peer">Prerequisites</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden [...]
 <h4 class="flex scroll-m-28 flex-row items-center gap-2" id="hadoop-authentication-configuration-toc"><a data-card="" href="#hadoop-authentication-configuration-toc" class="peer">Hadoop Authentication Configuration</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-ho [...]
@@ -229,11 +229,11 @@ work with Thrift framed transport at this time.</p></div></div></div>
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/security/client-access.mdx\",\"url\",\"/docs/security/client-access\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24 [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/security/client-access.mdx\",\"url\",\"/docs/security/client-access\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24 [...]
\ No newline at end of file
diff --git a/docs/security/data-access.data b/docs/security/data-access.data
index 0569a99da64..490a6863921 100644
--- a/docs/security/data-access.data
+++ b/docs/security/data-access.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/security/data-access.mdx","url","/docs/security/data-access","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,16 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/security/data-access.mdx","url","/docs/security/data-access","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163 [...]
diff --git a/docs/security/data-access/index.html b/docs/security/data-access/index.html
index 0073ecf8b3b..68613945216 100644
--- a/docs/security/data-access/index.html
+++ b/docs/security/data-access/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <ul>
 <li>Role-based Access Control (RBAC) controls which users or groups can read and write to a given HBase resource or execute a coprocessor endpoint, using the familiar paradigm of roles.</li>
 <li>Visibility Labels which allow you to label cells and control access to labelled cells, to further restrict who can read or write to certain subsets of your data. Visibility labels are stored as tags. See <a href="/docs/security/data-access#tags" data-discover="true">hbase.tags</a> for more information.</li>
@@ -496,11 +496,11 @@ any more. Just set hbase.regionserver.wal.encryption to true is enough to enable
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/security/data-access.mdx\",\"url\",\"/docs/security/data-access\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":2 [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/security/data-access.mdx\",\"url\",\"/docs/security/data-access\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":2 [...]
\ No newline at end of file
diff --git a/docs/security/example.data b/docs/security/example.data
index c166801b36b..89c48794dfb 100644
--- a/docs/security/example.data
+++ b/docs/security/example.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/security/example.mdx","url","/docs/security/example","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165,171,22 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/security/example.mdx","url","/docs/security/example","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,169,175 [...]
diff --git a/docs/security/example/index.html b/docs/security/example/index.html
index 67ecaf42cc8..d49a9541534 100644
--- a/docs/security/example/index.html
+++ b/docs/security/example/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <figure dir="ltr" class="my-4 bg-fd-card rounded-xl shiki relative border shadow-sm not-prose overflow-hidden text-sm shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e" tabindex="-1"><div class="empty:hidden absolute top-2 right-2 z-2 backdrop-blur-lg rounded-lg text-fd-muted-foreground"><button type="button" class="inline-flex items-center justify-center rounded-md text-sm font-medium transition-c [...]
 <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">&lt;</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D">property</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">&gt;</span></span>
 <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">  &lt;</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D">name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">&gt;hfile.format.version&lt;/</span><span style="--shiki-light:#22863A;--shiki-dark:#85E89D">name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">&gt;</span></span>
@@ -146,11 +146,11 @@ any more. Just set hbase.regionserver.wal.encryption to true is enough to enable
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/security/example.mdx\",\"url\",\"/docs/security/example\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\ [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/security/example.mdx\",\"url\",\"/docs/security/example\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\ [...]
\ No newline at end of file
diff --git a/docs/security/hdfs-and-zookeeper-access.data b/docs/security/hdfs-and-zookeeper-access.data
index 8745b0901d7..a099e2f328f 100644
--- a/docs/security/hdfs-and-zookeeper-access.data
+++ b/docs/security/hdfs-and-zookeeper-access.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/security/hdfs-and-zookeeper-access.mdx","url","/docs/security/hdfs-and-zookeeper-access","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,4 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/security/hdfs-and-zookeeper-access.mdx","url","/docs/security/hdfs-and-zookeeper-access","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,5 [...]
diff --git a/docs/security/hdfs-and-zookeeper-access/index.html b/docs/security/hdfs-and-zookeeper-access/index.html
index 03853394bd7..b9899397073 100644
--- a/docs/security/hdfs-and-zookeeper-access/index.html
+++ b/docs/security/hdfs-and-zookeeper-access/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">ZooKeeper has a pluggable authentication mechanism to enable access from clients using different methods. ZooKeeper even allows authenticated and un-authenticated clients at the same time. The access to znodes can be restricted by providing Access Control Lists (ACLs) per znode. An ACL contains two components, the authentication method and the principal. ACLs are NOT enforced hierarchically. See <a href="https://zookeeper.apache.org/doc/r3.3.6/zookeeperProgrammer [...]
 <p class="wrap-anywhere">HBase daemons authenticate to ZooKeeper via SASL and kerberos (See <a href="/docs/zookeeper" data-discover="true">ZooKeeper</a>). HBase sets up the znode ACLs so that only the HBase user and the configured hbase superuser (<code>hbase.superuser</code>) can access and modify the data. In cases where ZooKeeper is used for service discovery or sharing state with the client, the znodes created by HBase will also allow anyone (regardless of authentication) to read the [...]
 <h2 class="flex scroll-m-28 flex-row items-center gap-2" id="securing-file-system-hdfs-data"><a data-card="" href="#securing-file-system-hdfs-data" class="peer">Securing File System (HDFS) Data</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria [...]
@@ -36,11 +36,11 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/security/hdfs-and-zookeeper-access.mdx\",\"url\",\"/docs/security/hdfs-and-zookeeper-access\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_ [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/security/hdfs-and-zookeeper-access.mdx\",\"url\",\"/docs/security/hdfs-and-zookeeper-access\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_ [...]
\ No newline at end of file
diff --git a/docs/security/index.html b/docs/security/index.html
index 3f48af13dff..a105e7975e7 100644
--- a/docs/security/index.html
+++ b/docs/security/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <div class="flex gap-2 my-4 rounded-xl border bg-fd-card p-3 ps-1 text-sm text-fd-card-foreground shadow-md" style="--callout-color:var(--color-fd-info, var(--color-fd-muted))"><div role="none" class="w-0.5 bg-(--callout-color)/50 rounded-sm"></div><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-5 -me-0.5 fill-(--callout-color) text-fd-ca [...]
 security-related bugs. Instead, send your report to the mailing list <code>private@hbase.apache.org</code>,
 which allows anyone to send messages, but restricts who can read them. Someone on that list will
@@ -33,11 +33,11 @@ contact you to follow up on your report.</p></div></div></div><div class="flex f
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/security/index.mdx\",\"url\",\"/docs/security\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15 [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/security/index.mdx\",\"url\",\"/docs/security\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15 [...]
\ No newline at end of file
diff --git a/docs/security/tls.data b/docs/security/tls.data
index c23aa41e839..7a3c39b26f8 100644
--- a/docs/security/tls.data
+++ b/docs/security/tls.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/security/tls.mdx","url","/docs/security/tls","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165,171,222,305,30 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/security/tls.mdx","url","/docs/security/tls","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,169,175,226,309 [...]
diff --git a/docs/security/tls/index.html b/docs/security/tls/index.html
index c7ee72c3e90..a8411443dd8 100644
--- a/docs/security/tls/index.html
+++ b/docs/security/tls/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">The encryption works at the transport level which means it&#x27;s independent of the configured authentication method. Secure client access mentioned in the previous section requires Kerberos to be configured and used in HBase authentication, while TLS can be configured with any other SASL mechanism or even with simple client access methods, effectively preventing attackers from eavesdropping the communication. No Kerberos KDC or other complicated infrastructure  [...]
 <p class="wrap-anywhere">HBase TLS is based on the Netty library therefore it only works with Netty client and server RPC implementations. Netty&#x27;s powerful SSL implementation is a great foundation for highly secure and performant communication providing the latest and greatest cryptographic solution at all times.</p>
 <p class="wrap-anywhere">Since Region Servers effectively work as clients from Master&#x27;s perspective, TLS supports encrypted communication between cluster members too.</p>
@@ -172,11 +172,11 @@ inter-cluster replication.</p></div></div></div></div></div>
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/security/tls.mdx\",\"url\",\"/docs/security/tls\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_ [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/security/tls.mdx\",\"url\",\"/docs/security/tls\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_ [...]
\ No newline at end of file
diff --git a/docs/security/user-access.data b/docs/security/user-access.data
index b092a444572..1bcb83dbf99 100644
--- a/docs/security/user-access.data
+++ b/docs/security/user-access.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/security/user-access.mdx","url","/docs/security/user-access","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,16 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/security/user-access.mdx","url","/docs/security/user-access","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163 [...]
diff --git a/docs/security/user-access/index.html b/docs/security/user-access/index.html
index 04d27a8622f..3ac1351c1b9 100644
--- a/docs/security/user-access/index.html
+++ b/docs/security/user-access/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">This describes how to set up Apache HBase and clients for simple user access to HBase resources.</p>
 <h2 class="flex scroll-m-28 flex-row items-center gap-2" id="simple-versus-secure-access"><a data-card="" href="#simple-versus-secure-access" class="peer">Simple versus Secure Access</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="tr [...]
 <p class="wrap-anywhere">The following section shows how to set up simple user access. Simple user access is not a secure method of operating HBase. This method is used to prevent users from making mistakes. It can be used to mimic the Access Control using on a development system without having to set up Kerberos.</p>
@@ -94,11 +94,11 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/security/user-access.mdx\",\"url\",\"/docs/security/user-access\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":2 [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/security/user-access.mdx\",\"url\",\"/docs/security/user-access\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":2 [...]
\ No newline at end of file
diff --git a/docs/security/web-ui.data b/docs/security/web-ui.data
index 62fb83345a7..98e491b4db0 100644
--- a/docs/security/web-ui.data
+++ b/docs/security/web-ui.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/security/web-ui.mdx","url","/docs/security/web-ui","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165,171,222, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/security/web-ui.mdx","url","/docs/security/web-ui","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,169,175,2 [...]
diff --git a/docs/security/web-ui/index.html b/docs/security/web-ui/index.html
index a45736f1b8c..03fba4732a9 100644
--- a/docs/security/web-ui/index.html
+++ b/docs/security/web-ui/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">A default HBase install uses insecure HTTP connections for Web UIs for the master and region servers. To enable secure HTTP (HTTPS) connections instead, set <code>hbase.ssl.enabled</code> to <code>true</code> in <em>hbase-site.xml</em>(Please prepare SSL certificate and ssl configuration file in advance). This does not change the port used by the Web UI. To change the port for the web UI for a given HBase component, configure that port&#x27;s setting in hbase-sit [...]
 <ul>
 <li><code>hbase.master.info.port</code></li>
@@ -187,11 +187,11 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/security/web-ui.mdx\",\"url\",\"/docs/security/web-ui\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\": [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/security/web-ui.mdx\",\"url\",\"/docs/security/web-ui\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\": [...]
\ No newline at end of file
diff --git a/docs/shell.data b/docs/shell.data
index efa0899094b..f21e3c9d686 100644
--- a/docs/shell.data
+++ b/docs/shell.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/shell.mdx","url","/docs/shell","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,142,145,151,157,163,169,222,305,308,314,320,354, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/shell.mdx","url","/docs/shell","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,146,149,155,161,167,173,226,309,312,318,324,3 [...]
diff --git a/docs/shell/index.html b/docs/shell/index.html
index 165207d8550..877f3ee46ca 100644
--- a/docs/shell/index.html
+++ b/docs/shell/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 Anything you can do in IRB, you should be able to do in the HBase Shell.</p>
 <p class="wrap-anywhere">To run the HBase shell, do as follows:</p>
 <figure dir="ltr" class="my-4 bg-fd-card rounded-xl shiki relative border shadow-sm not-prose overflow-hidden text-sm shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e" tabindex="-1"><div class="empty:hidden absolute top-2 right-2 z-2 backdrop-blur-lg rounded-lg text-fd-muted-foreground"><button type="button" class="inline-flex items-center justify-center rounded-md text-sm font-medium transition-c [...]
@@ -324,11 +324,11 @@ Default is to fetch one row at a time.</p></div><a href="https://github.com/apac
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/shell.mdx\",\"url\",\"/docs/shell\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":27,\"_11\ [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/shell.mdx\",\"url\",\"/docs/shell\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":27,\"_11\ [...]
\ No newline at end of file
diff --git a/docs/single-page.data b/docs/single-page.data
index f1ae8ae8f4c..5acdc103122 100644
--- a/docs/single-page.data
+++ b/docs/single-page.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","single-page/index.mdx","url","/docs/single-page","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,711],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":708,"_38":709},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165,171,224,307,310,316,322 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","single-page/index.mdx","url","/docs/single-page","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,715],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":712,"_38":713},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,169,175,228,311,314,320, [...]
diff --git a/docs/single-page/index.html b/docs/single-page/index.html
index fe80a1d8e88..8a7f9af3da1 100644
--- a/docs/single-page/index.html
+++ b/docs/single-page/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="image" href="/images/large-logo.svg"/><link rel="preload" as="image" href="/images/dark-theme-large-logo.svg"/><link rel="preload" as="image" href="/assets/region_split_process-DrwL5IoS.png" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px) 70vw, 900px" fetchPriority="auto"/><li [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="image" href="/images/large-logo.svg"/><link rel="preload" as="image" href="/images/dark-theme-large-logo.svg"/><link rel="preload" as="image" href="/assets/region_split_process-DrwL5IoS.png" imageSizes="(max-width: 768px) 100vw, (max-width: 1200px) 70vw, 900px" fetchPriority="auto"/><li [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -18131,11 +18131,11 @@ org/apache/hadoop/hbase/security/access/AccessControlClient.revoke:(Lorg/apache/
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"single-page/index.mdx\",\"url\",\"/docs/single-page\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,711],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":27,\ [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"single-page/index.mdx\",\"url\",\"/docs/single-page\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,715],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":27,\ [...]
\ No newline at end of file
diff --git a/docs/spark.data b/docs/spark.data
index daa9ed73da9..d985b833dae 100644
--- a/docs/spark.data
+++ b/docs/spark.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/spark.mdx","url","/docs/spark","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165,171,224,307,310,316,322,356, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/spark.mdx","url","/docs/spark","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,169,175,228,311,314,320,326,3 [...]
diff --git a/docs/spark/index.html b/docs/spark/index.html
index b9053d7b68c..d565e3c09c4 100644
--- a/docs/spark/index.html
+++ b/docs/spark/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 more information on the Spark project and subprojects. This document will focus
 on 4 main interaction points between Spark and HBase. Those interaction points are:</p>
 <p class="wrap-anywhere"><strong>Basic Spark</strong><br/>
@@ -569,11 +569,11 @@ user to execute SQL queries.</p>
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/spark.mdx\",\"url\",\"/docs/spark\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":27,\"_11\ [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/spark.mdx\",\"url\",\"/docs/spark\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":27,\"_11\ [...]
\ No newline at end of file
diff --git a/docs/sql.data b/docs/sql.data
index 518f75b6421..9ed52fcc874 100644
--- a/docs/sql.data
+++ b/docs/sql.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/sql.mdx","url","/docs/sql","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165,171,224,307,310,316,322,356,362, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/sql.mdx","url","/docs/sql","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,169,175,228,311,314,320,326,360,3 [...]
diff --git a/docs/sql/index.html b/docs/sql/index.html
index 93ed64783a9..029042616bc 100644
--- a/docs/sql/index.html
+++ b/docs/sql/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere"><a href="https://trafodion.incubator.apache.org/">Trafodion: Transactional SQL-on-HBase</a></p></div><a href="https://github.com/apache/hbase/edit/master/hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/sql.mdx" rel="noreferrer noopener" target="_blank" class="no-print text-fd-secondary-foreground bg-fd-secondary hover:text-fd-accent-foreground hover:bg-fd-accent w-fit rounded-xl border p-2 text-sm font-medium transition-colors">Edit on GitHub</a><div class=" [...]
     if (!window.history.state || !window.history.state.key) {
       let key = Math.random().toString(32).slice(2);
@@ -30,11 +30,11 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/sql.mdx\",\"url\",\"/docs/sql\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":27,\"_11\":70 [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/sql.mdx\",\"url\",\"/docs/sql\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":27,\"_11\":71 [...]
\ No newline at end of file
diff --git a/docs/store-file-tracking.data b/docs/store-file-tracking.data
index b50516c5aa0..8d2ff08b623 100644
--- a/docs/store-file-tracking.data
+++ b/docs/store-file-tracking.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/store-file-tracking.mdx","url","/docs/store-file-tracking","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/store-file-tracking.mdx","url","/docs/store-file-tracking","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,1 [...]
diff --git a/docs/store-file-tracking/index.html b/docs/store-file-tracking/index.html
index bbdd2df040e..90a380c1a74 100644
--- a/docs/store-file-tracking/index.html
+++ b/docs/store-file-tracking/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">Historically, HBase internals have relied on creating hfiles on temporary directories first, renaming
 those files to the actual store directory at operation commit time. That&#x27;s a simple and convenient
 way to separate transient from already finalised files that are ready to serve client reads with data.
@@ -113,11 +113,11 @@ is shown below:</p>
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/store-file-tracking.mdx\",\"url\",\"/docs/store-file-tracking\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25, [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/store-file-tracking.mdx\",\"url\",\"/docs/store-file-tracking\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25, [...]
\ No newline at end of file
diff --git a/docs/sync-replication.data b/docs/sync-replication.data
index ec1909b16d6..88b7fab07d8 100644
--- a/docs/sync-replication.data
+++ b/docs/sync-replication.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/sync-replication.mdx","url","/docs/sync-replication","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165,171,22 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/sync-replication.mdx","url","/docs/sync-replication","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,169,175 [...]
diff --git a/docs/sync-replication/index.html b/docs/sync-replication/index.html
index fd38793d970..a15a2e7b5fb 100644
--- a/docs/sync-replication/index.html
+++ b/docs/sync-replication/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">The current <a href="/docs/operational-management/cluster-replication" data-discover="true">Cluster Replication</a> in HBase in asynchronous. So if the master cluster crashes, the slave cluster may not have the
 newest data. If users want strong consistency then they can not switch to the slave cluster.</p>
 <h2 class="flex scroll-m-28 flex-row items-center gap-2" id="design"><a data-card="" href="#design" class="peer">Design</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l- [...]
@@ -78,11 +78,11 @@ transiting ACTIVE to STANDBY has no problem, because we&#x27;ll skip to replay t
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/sync-replication.mdx\",\"url\",\"/docs/sync-replication\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\ [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/sync-replication.mdx\",\"url\",\"/docs/sync-replication\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\ [...]
\ No newline at end of file
diff --git a/docs/thrift-filter-language.data b/docs/thrift-filter-language.data
index a1134b1e6d1..9517e381766 100644
--- a/docs/thrift-filter-language.data
+++ b/docs/thrift-filter-language.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/thrift-filter-language.mdx","url","/docs/thrift-filter-language","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,15 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/thrift-filter-language.mdx","url","/docs/thrift-filter-language","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157 [...]
diff --git a/docs/thrift-filter-language/index.html b/docs/thrift-filter-language/index.html
index b877b0fdc69..f6fb42c0aa0 100644
--- a/docs/thrift-filter-language/index.html
+++ b/docs/thrift-filter-language/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">The rest of this chapter discusses the filter language provided by the Thrift API.</p>
 <h2 class="flex scroll-m-28 flex-row items-center gap-2" id="filter-language"><a data-card="" href="#filter-language" class="peer">Filter Language</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.5 [...]
 <p class="wrap-anywhere">Thrift Filter Language was introduced in HBase 0.92.
@@ -215,11 +215,11 @@ It also takes two boolean variables to indicate whether to include the minColumn
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/thrift-filter-language.mdx\",\"url\",\"/docs/thrift-filter-language\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24 [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/thrift-filter-language.mdx\",\"url\",\"/docs/thrift-filter-language\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24 [...]
\ No newline at end of file
diff --git a/docs/tracing.data b/docs/tracing.data
index 038dfa1e5f5..33470a9401c 100644
--- a/docs/tracing.data
+++ b/docs/tracing.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/tracing.mdx","url","/docs/tracing","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165,171,224,307,310,316,322, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/tracing.mdx","url","/docs/tracing","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,169,175,228,311,314,320,3 [...]
diff --git a/docs/tracing/index.html b/docs/tracing/index.html
index ad8386a61e7..66c08fa8c02 100644
--- a/docs/tracing/index.html
+++ b/docs/tracing/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">The basic support for tracing has been done, where we added tracing for async client, rpc, region read/write/scan operation, and WAL. We use opentelemetry-api to implement the tracing support manually by code, as our code base is way too complicated to be instrumented through a java agent. But notice that you still need to attach the opentelemetry java agent to enable tracing. Please see the official site for <a href="https://opentelemetry.io/">OpenTelemetry</a>  [...]
 <h2 class="flex scroll-m-28 flex-row items-center gap-2" id="tracing-usage"><a data-card="" href="#tracing-usage" class="peer">Usage</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0  [...]
 <h3 class="flex scroll-m-28 flex-row items-center gap-2" id="enable-tracing"><a data-card="" href="#enable-tracing" class="peer">Enable Tracing</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3 [...]
@@ -46,11 +46,11 @@ to collect and view tracing data instead of logging.</p></div></div></div>
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/tracing.mdx\",\"url\",\"/docs/tracing\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":27,\" [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/tracing.mdx\",\"url\",\"/docs/tracing\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":27,\" [...]
\ No newline at end of file
diff --git a/docs/troubleshooting.data b/docs/troubleshooting.data
index e9d2fe06e04..fc676aa003d 100644
--- a/docs/troubleshooting.data
+++ b/docs/troubleshooting.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/troubleshooting.mdx","url","/docs/troubleshooting","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165,171,224, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/troubleshooting.mdx","url","/docs/troubleshooting","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,169,175,2 [...]
diff --git a/docs/troubleshooting/index.html b/docs/troubleshooting/index.html
index 4da5845fa6d..0b555516b3b 100644
--- a/docs/troubleshooting/index.html
+++ b/docs/troubleshooting/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">Always start with the master log (TODO: Which lines?). Normally it&#x27;s just printing the same lines over and over again. If not, then there&#x27;s an issue. Google should return some hits for those exceptions you&#x27;re seeing.</p>
 <p class="wrap-anywhere">An error rarely comes alone in Apache HBase, usually when something gets screwed up what will follow may be hundreds of exceptions and stack traces coming from all over the place. The best way to approach this type of problem is to walk the log up to where it all began, for example one trick with RegionServers is that they will print some metrics when aborting so grepping for <em>Dump</em> should get you around the start of the problem.</p>
 <p class="wrap-anywhere">RegionServer suicides are &#x27;normal&#x27;, as this is what they do when something goes wrong. For example, if ulimit and max transfer threads (the two most important initial settings, see <a href="/docs/configuration/basic-prerequisites#limits-on-number-of-files-and-processes-ulimit" data-discover="true">[ulimit]</a> and <a href="/docs/configuration/basic-prerequisites#dfsdatanodemaxtransferthreads" data-discover="true"><code>dfs.datanode.max.transfer.threads< [...]
@@ -802,11 +802,11 @@ of Red Hat Enterprise Linux, according to
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/troubleshooting.mdx\",\"url\",\"/docs/troubleshooting\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\": [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/troubleshooting.mdx\",\"url\",\"/docs/troubleshooting\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\": [...]
\ No newline at end of file
diff --git a/docs/unit-testing.data b/docs/unit-testing.data
index b92f6b90c7a..7011aade376 100644
--- a/docs/unit-testing.data
+++ b/docs/unit-testing.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/unit-testing.mdx","url","/docs/unit-testing","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165,171,224,307,31 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/unit-testing.mdx","url","/docs/unit-testing","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,169,175,228,311 [...]
diff --git a/docs/unit-testing/index.html b/docs/unit-testing/index.html
index aa12cb7e713..80a82b86c5a 100644
--- a/docs/unit-testing/index.html
+++ b/docs/unit-testing/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 For information on unit tests for HBase itself, see <a href="/docs/building-and-developing/tests" data-discover="true">hbase.tests</a>.</p>
 <p class="wrap-anywhere">Starting from HBase 2.5.0, HBaseTestingUtility is deprecated and should only be used when writing UTs inside HBase.
 End users should use org.apache.hadoop.hbase.testing.TestingHBaseCluster instead.</p>
@@ -306,11 +306,11 @@ integration testing.</p></div></div></div>
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/unit-testing.mdx\",\"url\",\"/docs/unit-testing\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_ [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/unit-testing.mdx\",\"url\",\"/docs/unit-testing\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_ [...]
\ No newline at end of file
diff --git a/docs/upgrading.data b/docs/upgrading.data
index f4bf6650eba..c0ab6b5f35d 100644
--- a/docs/upgrading.data
+++ b/docs/upgrading.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/upgrading/index.mdx","url","/docs/upgrading","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,136,142,145,151,157,163,169,222,305,30 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/upgrading/index.mdx","url","/docs/upgrading","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,140,146,149,155,161,167,173,226,309 [...]
diff --git a/docs/upgrading/index.html b/docs/upgrading/index.html
index 00c087b4d46..87803cfaab2 100644
--- a/docs/upgrading/index.html
+++ b/docs/upgrading/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">Review <a href="/docs/configuration" data-discover="true">Apache HBase Configuration</a>, in particular <a href="/docs/configuration/basic-prerequisites#hadoop" data-discover="true">Hadoop</a>. Familiarize yourself with <a href="/docs#support-and-testing-expectations" data-discover="true">Support and Testing Expectations</a>.</p><div class="flex flex-col"><p>In this section:</p><div class="grid grid-cols-2 gap-3 @container"><a data-card="true" class="block rounde [...]
     if (!window.history.state || !window.history.state.key) {
       let key = Math.random().toString(32).slice(2);
@@ -30,11 +30,11 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/upgrading/index.mdx\",\"url\",\"/docs/upgrading\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_ [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/upgrading/index.mdx\",\"url\",\"/docs/upgrading\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_ [...]
\ No newline at end of file
diff --git a/docs/upgrading/paths.data b/docs/upgrading/paths.data
index 8a669039362..4a032ac250e 100644
--- a/docs/upgrading/paths.data
+++ b/docs/upgrading/paths.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/upgrading/paths.mdx","url","/docs/upgrading/paths","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,136,142,145,151,157,163,169,222, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/upgrading/paths.mdx","url","/docs/upgrading/paths","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,140,146,149,155,161,167,173,2 [...]
diff --git a/docs/upgrading/paths/index.html b/docs/upgrading/paths/index.html
index 5989d7f498c..6526f19066f 100644
--- a/docs/upgrading/paths/index.html
+++ b/docs/upgrading/paths/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">The RegionServer Grouping feature has been reimplemented. See section <a href="/docs/operational-management/region-and-capacity#migrating-from-old-implementation" data-discover="true">Migrating From Old Implementation</a> in <a href="/docs/operational-management" data-discover="true">Apache HBase Operational Management</a> for more details.</p>
 <p class="wrap-anywhere">The <code>hbase:namespace</code> table has been removed and fold into <code>hbase:meta</code>. See <a href="/docs/datamodel" data-discover="true">Data Model</a> for more details.</p>
 <p class="wrap-anywhere">There is no special consideration upgrading to hbase-2.4.x from 2.3.x. And for earlier versions, just follow the <a href="/docs/upgrading/paths#upgrade-from-20x-22x-to-23" data-discover="true">Upgrade from 2.0.x-2.2.x to 2.3+</a> guide. In general, 2.2.x should be rolling upgradeable, for 2.1.x or 2.0.x, you will need to clear the <a href="/docs/upgrading/paths#upgrade-from-20-or-21-to-22" data-discover="true">Upgrade from 2.0 or 2.1 to 2.2+</a> hurdle first.</p>
@@ -317,11 +317,11 @@ route can benefit from your efforts.</p></div></div></div>
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/upgrading/paths.mdx\",\"url\",\"/docs/upgrading/paths\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\": [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/upgrading/paths.mdx\",\"url\",\"/docs/upgrading/paths\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\": [...]
\ No newline at end of file
diff --git a/docs/upgrading/rollback.data b/docs/upgrading/rollback.data
index 177b6935629..3f9b9f50f07 100644
--- a/docs/upgrading/rollback.data
+++ b/docs/upgrading/rollback.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/upgrading/rollback.mdx","url","/docs/upgrading/rollback","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,136,142,145,151,157,163,16 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/upgrading/rollback.mdx","url","/docs/upgrading/rollback","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,140,146,149,155,161,167 [...]
diff --git a/docs/upgrading/rollback/index.html b/docs/upgrading/rollback/index.html
index c60384dba65..723cd972cbb 100644
--- a/docs/upgrading/rollback/index.html
+++ b/docs/upgrading/rollback/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <h2 class="flex scroll-m-28 flex-row items-center gap-2" id="caveats"><a data-card="" href="#caveats" class="peer">Caveats</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.0 [...]
 <h3 class="flex scroll-m-28 flex-row items-center gap-2" id="rollback-vs-downgrade"><a data-card="" href="#rollback-vs-downgrade" class="peer">Rollback vs Downgrade</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100" aria-hidden="true"><path d="M10 1 [...]
 <p class="wrap-anywhere">This section describes how to perform a <em>rollback</em> on an upgrade between HBase minor and major versions. In this document, rollback refers to the process of taking an upgraded cluster and restoring it to the old version <em>while losing all changes that have occurred since upgrade</em>. By contrast, a cluster <em>downgrade</em> would restore an upgraded cluster to the old version while maintaining any data written since the upgrade. We currently only offer [...]
@@ -87,11 +87,11 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/upgrading/rollback.mdx\",\"url\",\"/docs/upgrading/rollback\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\" [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/upgrading/rollback.mdx\",\"url\",\"/docs/upgrading/rollback\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\" [...]
\ No newline at end of file
diff --git a/docs/upgrading/rolling.data b/docs/upgrading/rolling.data
index ae457b5b068..923882b4b8b 100644
--- a/docs/upgrading/rolling.data
+++ b/docs/upgrading/rolling.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/upgrading/rolling.mdx","url","/docs/upgrading/rolling","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,136,142,145,151,157,163,169, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/upgrading/rolling.mdx","url","/docs/upgrading/rolling","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,140,146,149,155,161,167,1 [...]
diff --git a/docs/upgrading/rolling/index.html b/docs/upgrading/rolling/index.html
index 8a1a082039d..05653878a1d 100644
--- a/docs/upgrading/rolling/index.html
+++ b/docs/upgrading/rolling/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">For example, in the below, HBase was symlinked to the actual HBase install. On upgrade, before running a rolling restart over the cluster, we changed the symlink to point at the new HBase software version and then ran</p>
 <figure dir="ltr" class="my-4 bg-fd-card rounded-xl shiki relative border shadow-sm not-prose overflow-hidden text-sm shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e" tabindex="-1"><div class="empty:hidden absolute top-2 right-2 z-2 backdrop-blur-lg rounded-lg text-fd-muted-foreground"><button type="button" class="inline-flex items-center justify-center rounded-md text-sm font-medium transition-c [...]
 <p class="wrap-anywhere">The rolling-restart script will first gracefully stop and restart the master, and then each of the RegionServers in turn. Because the symlink was changed, on restart the server will come up using the new HBase version. Check logs for errors as the rolling upgrade proceeds.</p>
@@ -35,11 +35,11 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/upgrading/rolling.mdx\",\"url\",\"/docs/upgrading/rolling\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_2 [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/upgrading/rolling.mdx\",\"url\",\"/docs/upgrading/rolling\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_2 [...]
\ No newline at end of file
diff --git a/docs/upgrading/version-number.data b/docs/upgrading/version-number.data
index dec15d64827..95ef687256e 100644
--- a/docs/upgrading/version-number.data
+++ b/docs/upgrading/version-number.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/upgrading/version-number.mdx","url","/docs/upgrading/version-number","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,136,142,145,15 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/upgrading/version-number.mdx","url","/docs/upgrading/version-number","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,140,146,149 [...]
diff --git a/docs/upgrading/version-number/index.html b/docs/upgrading/version-number/index.html
index 1d6e53d60c3..2e8b293bc19 100644
--- a/docs/upgrading/version-number/index.html
+++ b/docs/upgrading/version-number/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">Starting with the 1.0.0 release, HBase is working towards <a href="http://semver.org/">Semantic Versioning</a> for its release versioning. In summary:</p>
 <h4 class="flex scroll-m-28 flex-row items-center gap-2" id="given-a-version-number-majorminorpatch-increment-the-toc"><a data-card="" href="#given-a-version-number-majorminorpatch-increment-the-toc" class="peer">Given a version number MAJOR.MINOR.PATCH, increment the:</a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide size-3.5 shrink-0 text-f [...]
 <ul>
@@ -168,11 +168,11 @@ upgrade to 1.7.x line, see <a href="/docs/upgrading/paths#upgrading-to-171" data
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/upgrading/version-number.mdx\",\"url\",\"/docs/upgrading/version-number\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\ [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/upgrading/version-number.mdx\",\"url\",\"/docs/upgrading/version-number\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\ [...]
\ No newline at end of file
diff --git a/docs/ycsb.data b/docs/ycsb.data
index 52b7ab286b7..60f917d431d 100644
--- a/docs/ycsb.data
+++ b/docs/ycsb.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/ycsb.mdx","url","/docs/ycsb","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165,171,224,307,310,316,322,356,36 [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/ycsb.mdx","url","/docs/ycsb","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,169,175,228,311,314,320,326,360 [...]
diff --git a/docs/ycsb/index.html b/docs/ycsb/index.html
index f81b64c878b..350fa258c3e 100644
--- a/docs/ycsb/index.html
+++ b/docs/ycsb/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 <p class="wrap-anywhere">TODO: Describe how YCSB is poor for putting up a decent cluster load.</p>
 <p class="wrap-anywhere">TODO: Describe setup of YCSB for HBase. In particular, presplit your tables before you start a run. See <a href="https://issues.apache.org/jira/browse/HBASE-4163">HBASE-4163 Create Split Strategy for YCSB Benchmark</a> for why and a little shell command for how to do it.</p></div><a href="https://github.com/apache/hbase/edit/master/hbase-website/app/pages/_docs/docs/_mdx/(multi-page)/ycsb.mdx" rel="noreferrer noopener" target="_blank" class="no-print text-fd-seco [...]
     if (!window.history.state || !window.history.state.key) {
@@ -31,11 +31,11 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/ycsb.mdx\",\"url\",\"/docs/ycsb\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":27,\"_11\": [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/ycsb.mdx\",\"url\",\"/docs/ycsb\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":27,\"_11\": [...]
\ No newline at end of file
diff --git a/docs/zookeeper.data b/docs/zookeeper.data
index c4965a7e4ab..4ecc96dc858 100644
--- a/docs/zookeeper.data
+++ b/docs/zookeeper.data
@@ -1 +1 @@
-[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/zookeeper.mdx","url","/docs/zookeeper","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,709],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":706,"_38":707},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,49,103,138,144,147,153,159,165,171,224,307,310,316, [...]
+[{"_1":2},"routes/_docs/docs",{"_3":4},"data",{"_5":6,"_7":8,"_9":10},"path","(multi-page)/zookeeper.mdx","url","/docs/zookeeper","tree",{"_11":12,"_13":14,"_15":16},"$id","root","name","Docs","children",[17,713],{"_18":19,"_13":20,"_21":-7,"_12":22,"_23":-7,"_24":25,"_26":-7,"_15":27,"_11":710,"_38":711},"type","folder","Multi-Page Documentation","icon",true,"defaultOpen","description","Split across multiple pages","index",[28,32,41,46,50,53,107,142,148,151,157,163,169,175,228,311,314,3 [...]
diff --git a/docs/zookeeper/index.html b/docs/zookeeper/index.html
index 81f50a6e6c6..afbfbe4f6ec 100644
--- a/docs/zookeeper/index.html
+++ b/docs/zookeeper/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-566b7297.js"/><link rel="mo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/favicon.ico"/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="modulepreload" href="/assets/manifest-dee6afce.js"/><link rel="mo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -14,7 +14,7 @@
               })();
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMe [...]
         &quot;sidebar toc-popover toc&quot;
-        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
+        &quot;sidebar main toc&quot; 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr);--fd-docs-row-1:var(--fd-banner-height, 0px);--fd-docs-row-2:calc(var(--fd-docs-row-1) + var(--fd-header-height));--fd-docs-row-3:calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height));--fd-sidebar-col:var(--fd-sidebar-width)"><header data-transparent="false" id="nd-subnav" class="data-[tran [...]
 It will start and stop the ZooKeeper ensemble as part of the HBase start/stop process.
 You can also manage the ZooKeeper ensemble independent of HBase and just point HBase at the cluster it should use.
 To toggle HBase management of ZooKeeper, use the <code>HBASE_MANAGES_ZK</code> variable in <em>conf/hbase-env.sh</em>.
@@ -327,11 +327,11 @@ feature. So, the same rules that mentioned in the previous point, applies to the
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/docs-layout-DmR3feY4.js";
-import * as route2 from "/assets/docs-DxZG1IBS.js";
+import * as route1 from "/assets/docs-layout-DXv1WpCa.js";
+import * as route2 from "/assets/docs-Bp94CzDc.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_docs/docs-layout":route1,"routes/_docs/docs":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_722\":-5,\"_723\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/zookeeper.mdx\",\"url\",\"/docs/zookeeper\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,709],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":2 [...]
\ No newline at end of file
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$--><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_726\":-5,\"_727\":-5},\"loaderData\",{\"_3\":4},\"routes/_docs/docs\",{\"_5\":6,\"_7\":8,\"_9\":10},\"path\",\"(multi-page)/zookeeper.mdx\",\"url\",\"/docs/zookeeper\",\"tree\",{\"_11\":12,\"_13\":14,\"_15\":16},\"$id\",\"root\",\"name\",\"Docs\",\"children\",[17,713],{\"_18\":19,\"_13\":20,\"_21\":-7,\"_12\":22,\"_23\":-7,\"_24\":25,\"_26\":-7,\"_15\":2 [...]
\ No newline at end of file
diff --git a/downloads/index.html b/downloads/index.html
index 80f3eb359f6..c7dc297fa19 100644
--- a/downloads/index.html
+++ b/downloads/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/images/logo.svg"/><title>Downloads - Apache HBase</title><meta name="description" content="Download Apache HBase releases, connectors, and operator tools with verification hashes and signatures."/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel=" [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/images/logo.svg"/><title>Downloads - Apache HBase</title><meta name="description" content="Download Apache HBase releases, connectors, and operator tools with verification hashes and signatures."/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel=" [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -15,7 +15,7 @@
             </script><noscript><style>.theme-toggle-wrapper { display: none !important; }</style></noscript></head><body class="font-base"><header class="border-border/0 bg-background/80 supports-[backdrop-filter]:bg-background/60 sticky top-0 z-50 w-full border-b backdrop-blur transition-[border] duration-200"><nav class="container mx-auto flex h-16 items-center justify-between px-4"><a class="relative z-50 flex items-center gap-3" aria-label="HBase Home" href="/" data-discover="true">< [...]
 <p class="mb-4 text-base leading-7 wrap-anywhere">The below table lists mirrored release artifacts and their associated hashes and signatures available ONLY at apache.org. The keys used to sign releases can be found in our published <a href="https://downloads.apache.org/hbase/KEYS" target="_blank" rel="noopener noreferrer" class="text-primary inline font-normal no-underline decoration-0 underline-offset-4 hover:underline hover:opacity-100">KEYS<!-- --> <svg xmlns="http://www.w3.org/2000/ [...]
 <h2 class="mt-12 mb-4 scroll-mt-28 text-3xl font-semibold tracking-tight md:text-4xl" id="releases">Releases</h2>
-<div class="border-border my-8 w-full overflow-x-auto rounded-lg border"><table class="!my-0 w-full border-collapse text-sm"><thead class="bg-muted"><tr class="border-border hover:bg-muted/50 border-b transition-colors"><th class="border-none px-4 py-3 text-left font-semibold">Version</th><th class="border-none px-4 py-3 text-left font-semibold">Release Date</th><th class="border-none px-4 py-3 text-left font-semibold">Compatibility Report</th><th class="border-none px-4 py-3 text-left f [...]
+<div class="border-border my-8 w-full overflow-x-auto rounded-lg border"><table class="!my-0 w-full border-collapse text-sm"><thead class="bg-muted"><tr class="border-border hover:bg-muted/50 border-b transition-colors"><th class="border-none px-4 py-3 text-left font-semibold">Version</th><th class="border-none px-4 py-3 text-left font-semibold">Release Date</th><th class="border-none px-4 py-3 text-left font-semibold">Compatibility Report</th><th class="border-none px-4 py-3 text-left f [...]
 <h2 class="mt-12 mb-4 scroll-mt-28 text-3xl font-semibold tracking-tight md:text-4xl" id="connectors">Connectors</h2>
 <div class="border-border my-8 w-full overflow-x-auto rounded-lg border"><table class="!my-0 w-full border-collapse text-sm"><thead class="bg-muted"><tr class="border-border hover:bg-muted/50 border-b transition-colors"><th class="border-none px-4 py-3 text-left font-semibold">Version</th><th class="border-none px-4 py-3 text-left font-semibold">Release Date</th><th class="border-none px-4 py-3 text-left font-semibold">Compatibility Report</th><th class="border-none px-4 py-3 text-left f [...]
 <h2 class="mt-12 mb-4 scroll-mt-28 text-3xl font-semibold tracking-tight md:text-4xl" id="hbase-operator-tools">HBase Operator Tools</h2>
@@ -35,12 +35,12 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/landing-layout-DfKLumIW.js";
-import * as route2 from "/assets/downloads-B6rJlr_8.js";
+import * as route1 from "/assets/landing-layout-shCKuPBh.js";
+import * as route2 from "/assets/downloads-Dx67knM3.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_landing/landing-layout":route1,"routes/_landing/downloads":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$?--><template id="B:0"></template><!--/$--><script id="_R_">requestAnimationFrame(function(){$RT=performance.now()});</script><div hidden id="S:0"><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_3\":-5,\"_4\":-5},\"loaderData\",{},\"actionData\",\"errors\"]\n");</script><!--$?--><template id="B:1"></template><!--/$--></div><script>$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){ [...]
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$?--><template id="B:0"></template><!--/$--><script id="_R_">requestAnimationFrame(function(){$RT=performance.now()});</script><div hidden id="S:0"><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_3\":-5,\"_4\":-5},\"loaderData\",{},\"actionData\",\"errors\"]\n");</script><!--$?--><template id="B:1"></template><!--/$--></div><script>$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){ [...]
 $RC=function(a,b){if(b=document.getElementById(b))(a=document.getElementById(a))?(a.previousSibling.data="$~",$RB.push(a,b),2===$RB.length&&("number"!==typeof $RT?requestAnimationFrame($RV.bind(null,$RB)):(a=performance.now(),setTimeout($RV.bind(null,$RB),2300>a&&2E3<a?2300-a:$RT+300-a)))):b.parentNode.removeChild(b)};$RC("B:0","S:0")</script><div hidden id="S:1"><script>window.__reactRouterContext.streamController.close();</script></div><script>$RC("B:1","S:1")</script></body></html>
\ No newline at end of file
diff --git a/export-control/index.html b/export-control/index.html
index edd1f371700..547fd76e9c3 100644
--- a/export-control/index.html
+++ b/export-control/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/images/logo.svg"/><title>Export Control - Apache HBase</title><meta name="description" content="Export control notice for Apache HBase."/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.wo [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/images/logo.svg"/><title>Export Control - Apache HBase</title><meta name="description" content="Export control notice for Apache HBase."/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wght-italic.wo [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -33,12 +33,12 @@ The form and manner of this Apache Software Foundation distribution makes it eli
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/landing-layout-DfKLumIW.js";
-import * as route2 from "/assets/export-control-BPrYZeoE.js";
+import * as route1 from "/assets/landing-layout-shCKuPBh.js";
+import * as route2 from "/assets/export-control-Qb0Hicza.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_landing/landing-layout":route1,"routes/_landing/export-control":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$?--><template id="B:0"></template><!--/$--><script id="_R_">requestAnimationFrame(function(){$RT=performance.now()});</script><div hidden id="S:0"><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_3\":-5,\"_4\":-5},\"loaderData\",{},\"actionData\",\"errors\"]\n");</script><!--$?--><template id="B:1"></template><!--/$--></div><script>$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){ [...]
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$?--><template id="B:0"></template><!--/$--><script id="_R_">requestAnimationFrame(function(){$RT=performance.now()});</script><div hidden id="S:0"><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_3\":-5,\"_4\":-5},\"loaderData\",{},\"actionData\",\"errors\"]\n");</script><!--$?--><template id="B:1"></template><!--/$--></div><script>$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){ [...]
 $RC=function(a,b){if(b=document.getElementById(b))(a=document.getElementById(a))?(a.previousSibling.data="$~",$RB.push(a,b),2===$RB.length&&("number"!==typeof $RT?requestAnimationFrame($RV.bind(null,$RB)):(a=performance.now(),setTimeout($RV.bind(null,$RB),2300>a&&2E3<a?2300-a:$RT+300-a)))):b.parentNode.removeChild(b)};$RC("B:0","S:0")</script><div hidden id="S:1"><script>window.__reactRouterContext.streamController.close();</script></div><script>$RC("B:1","S:1")</script></body></html>
\ No newline at end of file
diff --git a/hbase-website/dependency-convergence.html b/hbase-website/dependency-convergence.html
index 2266e2d8a0a..ca4bfd669a7 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-04-12
+ | 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-04-18
  | 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 32817466dc4..a21a1e15b0e 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-04-12
+ | 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-04-18
  | 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 83f131dc693..720724c5496 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-04-12
+ | 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-04-18
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
@@ -1762,28 +1762,28 @@
 <tr class="b">
 <td>org.apache.logging.log4j</td>
 <td><a class="externalLink" href="https://logging.apache.org/log4j/2.x/">log4j-1.2-api</a></td>
-<td>2.25.3</td>
+<td>2.25.4</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache-2.0</a></td></tr>
 <tr class="a">
 <td>org.apache.logging.log4j</td>
 <td><a class="externalLink" href="https://logging.apache.org/log4j/2.x/">log4j-api</a></td>
-<td>2.25.3</td>
+<td>2.25.4</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache-2.0</a></td></tr>
 <tr class="b">
 <td>org.apache.logging.log4j</td>
 <td><a class="externalLink" href="https://logging.apache.org/log4j/2.x/">log4j-core</a></td>
-<td>2.25.3</td>
+<td>2.25.4</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache-2.0</a></td></tr>
 <tr class="a">
 <td>org.apache.logging.log4j</td>
 <td><a class="externalLink" href="https://logging.apache.org/log4j/2.x/">log4j-slf4j-impl</a></td>
-<td>2.25.3</td>
+<td>2.25.4</td>
 <td>-</td>
 <td>jar</td>
 <td><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache-2.0</a></td></tr>
diff --git a/hbase-website/index.html b/hbase-website/index.html
index 5d65b89976e..5bd7ccac955 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-04-12
+ | 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-04-18
  | 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 5f22938aa5d..8079e217ab2 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-04-12
+ | 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-04-18
  | 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 dd9167ea073..16abf2eaceb 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-04-12
+ | 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-04-18
  | 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 74b3edc09f7..b3059ad9104 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-04-12
+ | 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-04-18
  | 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 97b7a7a9451..cf0fc285e55 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-04-12
+ | 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-04-18
  | 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 6b6aa46a865..608e241a5b6 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-04-12
+ | 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-04-18
  | 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 0085d416678..a2be906943b 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-04-12
+ | 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-04-18
  | 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 2727d3d0f39..182d1b1a8f0 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-04-12
+ | 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-04-18
  | 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 31442fa172f..98fdb3c862f 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-04-12
+ | 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-04-18
  | 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 c4781c40e31..b458bc90ea1 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-04-12
+ | 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-04-18
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/index.html b/index.html
index 673d83e4792..ba64d597a50 100644
--- a/index.html
+++ b/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/images/logo.svg"/><link rel="preload" as="image" href="/images/large-logo.svg"/><link rel="preload" as="image" href="/images/dark-theme-large-logo.svg"/><title>Apache HBase</title><meta name="description" content="Apache HBase® is the Hadoop database, a distributed, scalable, big data store."/><link rel="preload" as="font"  [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/images/logo.svg"/><link rel="preload" as="image" href="/images/large-logo.svg"/><link rel="preload" as="image" href="/images/dark-theme-large-logo.svg"/><title>Apache HBase</title><meta name="description" content="Apache HBase® is the Hadoop database, a distributed, scalable, big data store."/><link rel="preload" as="font"  [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -27,12 +27,12 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/landing-layout-DfKLumIW.js";
+import * as route1 from "/assets/landing-layout-shCKuPBh.js";
 import * as route2 from "/assets/home-C4IvGLOf.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_landing/landing-layout":route1,"routes/_landing/home":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$?--><template id="B:0"></template><!--/$--><script id="_R_">requestAnimationFrame(function(){$RT=performance.now()});</script><div hidden id="S:0"><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_3\":-5,\"_4\":-5},\"loaderData\",{},\"actionData\",\"errors\"]\n");</script><!--$?--><template id="B:1"></template><!--/$--></div><script>$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){ [...]
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$?--><template id="B:0"></template><!--/$--><script id="_R_">requestAnimationFrame(function(){$RT=performance.now()});</script><div hidden id="S:0"><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_3\":-5,\"_4\":-5},\"loaderData\",{},\"actionData\",\"errors\"]\n");</script><!--$?--><template id="B:1"></template><!--/$--></div><script>$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){ [...]
 $RC=function(a,b){if(b=document.getElementById(b))(a=document.getElementById(a))?(a.previousSibling.data="$~",$RB.push(a,b),2===$RB.length&&("number"!==typeof $RT?requestAnimationFrame($RV.bind(null,$RB)):(a=performance.now(),setTimeout($RV.bind(null,$RB),2300>a&&2E3<a?2300-a:$RT+300-a)))):b.parentNode.removeChild(b)};$RC("B:0","S:0")</script><div hidden id="S:1"><script>window.__reactRouterContext.streamController.close();</script></div><script>$RC("B:1","S:1")</script></body></html>
\ No newline at end of file
diff --git a/issue-management.html b/issue-management.html
index 26e157b126b..930a9b31485 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-04-12
+ | 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-04-18
  | 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 d6a8ad5887b..54eb463adf3 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-04-12
+ | 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-04-18
  | 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 b4dd8cbb501..25bb13722e1 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-04-12
+ | 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-04-18
  | 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/index.html b/mailing-lists/index.html
index 89ea5e1bba6..aaaee144272 100644
--- a/mailing-lists/index.html
+++ b/mailing-lists/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/images/logo.svg"/><title>Mailing Lists - Apache HBase</title><meta name="description" content="Subscribe to Apache HBase mailing lists including user, developer, commits, issues, and builds lists."/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/images/logo.svg"/><title>Mailing Lists - Apache HBase</title><meta name="description" content="Subscribe to Apache HBase mailing lists including user, developer, commits, issues, and builds lists."/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -29,12 +29,12 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/landing-layout-DfKLumIW.js";
-import * as route2 from "/assets/mailing-lists-Dk5QNwFc.js";
+import * as route1 from "/assets/landing-layout-shCKuPBh.js";
+import * as route2 from "/assets/mailing-lists-BkeAbr30.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_landing/landing-layout":route1,"routes/_landing/mailing-lists":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$?--><template id="B:0"></template><!--/$--><script id="_R_">requestAnimationFrame(function(){$RT=performance.now()});</script><div hidden id="S:0"><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_3\":-5,\"_4\":-5},\"loaderData\",{},\"actionData\",\"errors\"]\n");</script><!--$?--><template id="B:1"></template><!--/$--></div><script>$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){ [...]
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$?--><template id="B:0"></template><!--/$--><script id="_R_">requestAnimationFrame(function(){$RT=performance.now()});</script><div hidden id="S:0"><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_3\":-5,\"_4\":-5},\"loaderData\",{},\"actionData\",\"errors\"]\n");</script><!--$?--><template id="B:1"></template><!--/$--></div><script>$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){ [...]
 $RC=function(a,b){if(b=document.getElementById(b))(a=document.getElementById(a))?(a.previousSibling.data="$~",$RB.push(a,b),2===$RB.length&&("number"!==typeof $RT?requestAnimationFrame($RV.bind(null,$RB)):(a=performance.now(),setTimeout($RV.bind(null,$RB),2300>a&&2E3<a?2300-a:$RT+300-a)))):b.parentNode.removeChild(b)};$RC("B:0","S:0")</script><div hidden id="S:1"><script>window.__reactRouterContext.streamController.close();</script></div><script>$RC("B:1","S:1")</script></body></html>
\ No newline at end of file
diff --git a/news/index.html b/news/index.html
index 8d7cc0c6a59..1be094e501d 100644
--- a/news/index.html
+++ b/news/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/images/logo.svg"/><link rel="preload" as="image" href="https://www.apache.org/events/current-event-234x60.png"/><title>News - Apache HBase</title><meta name="description" content="Latest news, events, and releases for Apache HBase."/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/images/logo.svg"/><link rel="preload" as="image" href="https://www.apache.org/events/current-event-234x60.png"/><title>News - Apache HBase</title><meta name="description" content="Latest news, events, and releases for Apache HBase."/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -27,12 +27,12 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/landing-layout-DfKLumIW.js";
+import * as route1 from "/assets/landing-layout-shCKuPBh.js";
 import * as route2 from "/assets/news-T9A-kJbp.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_landing/landing-layout":route1,"routes/_landing/news":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$?--><template id="B:0"></template><!--/$--><script id="_R_">requestAnimationFrame(function(){$RT=performance.now()});</script><div hidden id="S:0"><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_3\":-5,\"_4\":-5},\"loaderData\",{},\"actionData\",\"errors\"]\n");</script><!--$?--><template id="B:1"></template><!--/$--></div><script>$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){ [...]
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$?--><template id="B:0"></template><!--/$--><script id="_R_">requestAnimationFrame(function(){$RT=performance.now()});</script><div hidden id="S:0"><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_3\":-5,\"_4\":-5},\"loaderData\",{},\"actionData\",\"errors\"]\n");</script><!--$?--><template id="B:1"></template><!--/$--></div><script>$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){ [...]
 $RC=function(a,b){if(b=document.getElementById(b))(a=document.getElementById(a))?(a.previousSibling.data="$~",$RB.push(a,b),2===$RB.length&&("number"!==typeof $RT?requestAnimationFrame($RV.bind(null,$RB)):(a=performance.now(),setTimeout($RV.bind(null,$RB),2300>a&&2E3<a?2300-a:$RT+300-a)))):b.parentNode.removeChild(b)};$RC("B:0","S:0")</script><div hidden id="S:1"><script>window.__reactRouterContext.streamController.close();</script></div><script>$RC("B:1","S:1")</script></body></html>
\ No newline at end of file
diff --git a/other-resources/index.html b/other-resources/index.html
index e93b9b9b0d9..c24e68b3526 100644
--- a/other-resources/index.html
+++ b/other-resources/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/images/logo.svg"/><title>Other Resources - Apache HBase</title><meta name="description" content="Books and other learning resources about Apache HBase."/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-lati [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/images/logo.svg"/><title>Other Resources - Apache HBase</title><meta name="description" content="Books and other learning resources about Apache HBase."/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-lati [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -27,12 +27,12 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/landing-layout-DfKLumIW.js";
+import * as route1 from "/assets/landing-layout-shCKuPBh.js";
 import * as route2 from "/assets/other-resources-CSwUi_64.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_landing/landing-layout":route1,"routes/_landing/other-resources":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$?--><template id="B:0"></template><!--/$--><script id="_R_">requestAnimationFrame(function(){$RT=performance.now()});</script><div hidden id="S:0"><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_3\":-5,\"_4\":-5},\"loaderData\",{},\"actionData\",\"errors\"]\n");</script><!--$?--><template id="B:1"></template><!--/$--></div><script>$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){ [...]
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$?--><template id="B:0"></template><!--/$--><script id="_R_">requestAnimationFrame(function(){$RT=performance.now()});</script><div hidden id="S:0"><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_3\":-5,\"_4\":-5},\"loaderData\",{},\"actionData\",\"errors\"]\n");</script><!--$?--><template id="B:1"></template><!--/$--></div><script>$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){ [...]
 $RC=function(a,b){if(b=document.getElementById(b))(a=document.getElementById(a))?(a.previousSibling.data="$~",$RB.push(a,b),2===$RB.length&&("number"!==typeof $RT?requestAnimationFrame($RV.bind(null,$RB)):(a=performance.now(),setTimeout($RV.bind(null,$RB),2300>a&&2E3<a?2300-a:$RT+300-a)))):b.parentNode.removeChild(b)};$RC("B:0","S:0")</script><div hidden id="S:1"><script>window.__reactRouterContext.streamController.close();</script></div><script>$RC("B:1","S:1")</script></body></html>
\ No newline at end of file
diff --git a/plugin-management.html b/plugin-management.html
index 459bbb5adcd..d7b67c117bc 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-04-12
+ | 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-04-18
  | 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 08455164f84..06f8648c94e 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-04-12
+ | 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-04-18
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/powered-by-hbase/index.html b/powered-by-hbase/index.html
index b976420faf8..5437b9698b4 100644
--- a/powered-by-hbase/index.html
+++ b/powered-by-hbase/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/images/logo.svg"/><title>Powered by HBase - Apache HBase</title><meta name="description" content="Companies and organizations using Apache HBase in production for their data storage and processing needs."/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><l [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/images/logo.svg"/><title>Powered by HBase - Apache HBase</title><meta name="description" content="Companies and organizations using Apache HBase in production for their data storage and processing needs."/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><l [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -27,12 +27,12 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/landing-layout-DfKLumIW.js";
+import * as route1 from "/assets/landing-layout-shCKuPBh.js";
 import * as route2 from "/assets/powered-by-hbase-CTLWcz8W.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_landing/landing-layout":route1,"routes/_landing/powered-by-hbase":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$?--><template id="B:0"></template><!--/$--><script id="_R_">requestAnimationFrame(function(){$RT=performance.now()});</script><div hidden id="S:0"><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_3\":-5,\"_4\":-5},\"loaderData\",{},\"actionData\",\"errors\"]\n");</script><!--$?--><template id="B:1"></template><!--/$--></div><script>$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){ [...]
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$?--><template id="B:0"></template><!--/$--><script id="_R_">requestAnimationFrame(function(){$RT=performance.now()});</script><div hidden id="S:0"><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_3\":-5,\"_4\":-5},\"loaderData\",{},\"actionData\",\"errors\"]\n");</script><!--$?--><template id="B:1"></template><!--/$--></div><script>$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){ [...]
 $RC=function(a,b){if(b=document.getElementById(b))(a=document.getElementById(a))?(a.previousSibling.data="$~",$RB.push(a,b),2===$RB.length&&("number"!==typeof $RT?requestAnimationFrame($RV.bind(null,$RB)):(a=performance.now(),setTimeout($RV.bind(null,$RB),2300>a&&2E3<a?2300-a:$RT+300-a)))):b.parentNode.removeChild(b)};$RC("B:0","S:0")</script><div hidden id="S:1"><script>window.__reactRouterContext.streamController.close();</script></div><script>$RC("B:1","S:1")</script></body></html>
\ No newline at end of file
diff --git a/project-info.html b/project-info.html
index 0c2e12fe66e..951a01e3b4b 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-04-12
+ | 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-04-18
  | 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 74e174dc094..d0e9c3041ca 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-04-12
+ | 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-04-18
  | 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 0e05fa428ea..04a887e68cd 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-04-12
+ | 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-04-18
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/source-repository/index.html b/source-repository/index.html
index 8b9303dfa7f..64d657ef55f 100644
--- a/source-repository/index.html
+++ b/source-repository/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/images/logo.svg"/><title>Source Repository - Apache HBase</title><meta name="description" content="Access the Apache HBase source code repository."/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wgh [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/images/logo.svg"/><title>Source Repository - Apache HBase</title><meta name="description" content="Access the Apache HBase source code repository."/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="font" href="/fonts/inter-latin-wgh [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -40,12 +40,12 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/landing-layout-DfKLumIW.js";
-import * as route2 from "/assets/source-repository-1JSV43Td.js";
+import * as route1 from "/assets/landing-layout-shCKuPBh.js";
+import * as route2 from "/assets/source-repository-DaAQ9lC3.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_landing/landing-layout":route1,"routes/_landing/source-repository":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$?--><template id="B:0"></template><!--/$--><script id="_R_">requestAnimationFrame(function(){$RT=performance.now()});</script><div hidden id="S:0"><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_3\":-5,\"_4\":-5},\"loaderData\",{},\"actionData\",\"errors\"]\n");</script><!--$?--><template id="B:1"></template><!--/$--></div><script>$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){ [...]
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$?--><template id="B:0"></template><!--/$--><script id="_R_">requestAnimationFrame(function(){$RT=performance.now()});</script><div hidden id="S:0"><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_3\":-5,\"_4\":-5},\"loaderData\",{},\"actionData\",\"errors\"]\n");</script><!--$?--><template id="B:1"></template><!--/$--></div><script>$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){ [...]
 $RC=function(a,b){if(b=document.getElementById(b))(a=document.getElementById(a))?(a.previousSibling.data="$~",$RB.push(a,b),2===$RB.length&&("number"!==typeof $RT?requestAnimationFrame($RV.bind(null,$RB)):(a=performance.now(),setTimeout($RV.bind(null,$RB),2300>a&&2E3<a?2300-a:$RT+300-a)))):b.parentNode.removeChild(b)};$RC("B:0","S:0")</script><div hidden id="S:1"><script>window.__reactRouterContext.streamController.close();</script></div><script>$RC("B:1","S:1")</script></body></html>
\ No newline at end of file
diff --git a/sponsors/index.html b/sponsors/index.html
index decdfb6d09c..dd42ac8417c 100644
--- a/sponsors/index.html
+++ b/sponsors/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/images/logo.svg"/><title>Sponsors - Apache HBase</title><meta name="description" content="Companies and organizations that sponsor the Apache HBase project with tools and resources."/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as= [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/images/logo.svg"/><title>Sponsors - Apache HBase</title><meta name="description" content="Companies and organizations that sponsor the Apache HBase project with tools and resources."/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as= [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -38,12 +38,12 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/landing-layout-DfKLumIW.js";
-import * as route2 from "/assets/sponsors-CCzZb6Wb.js";
+import * as route1 from "/assets/landing-layout-shCKuPBh.js";
+import * as route2 from "/assets/sponsors-V9xw5KDQ.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_landing/landing-layout":route1,"routes/_landing/sponsors":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$?--><template id="B:0"></template><!--/$--><script id="_R_">requestAnimationFrame(function(){$RT=performance.now()});</script><div hidden id="S:0"><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_3\":-5,\"_4\":-5},\"loaderData\",{},\"actionData\",\"errors\"]\n");</script><!--$?--><template id="B:1"></template><!--/$--></div><script>$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){ [...]
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$?--><template id="B:0"></template><!--/$--><script id="_R_">requestAnimationFrame(function(){$RT=performance.now()});</script><div hidden id="S:0"><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_3\":-5,\"_4\":-5},\"loaderData\",{},\"actionData\",\"errors\"]\n");</script><!--$?--><template id="B:1"></template><!--/$--></div><script>$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){ [...]
 $RC=function(a,b){if(b=document.getElementById(b))(a=document.getElementById(a))?(a.previousSibling.data="$~",$RB.push(a,b),2===$RB.length&&("number"!==typeof $RT?requestAnimationFrame($RV.bind(null,$RB)):(a=performance.now(),setTimeout($RV.bind(null,$RB),2300>a&&2E3<a?2300-a:$RT+300-a)))):b.parentNode.removeChild(b)};$RC("B:0","S:0")</script><div hidden id="S:1"><script>window.__reactRouterContext.streamController.close();</script></div><script>$RC("B:1","S:1")</script></body></html>
\ No newline at end of file
diff --git a/summary.html b/summary.html
index 8f4b4876ac2..4c01efd56c0 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-04-12
+ | 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-04-18
  | 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 ef7f54b61b1..56baf7b2161 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-04-12
+ | 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-04-18
  | Rendered using Apache Maven Fluido Skin 2.0.0-M9
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
diff --git a/team/index.html b/team/index.html
index 23a2951ae32..c7891a43adc 100644
--- a/team/index.html
+++ b/team/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/images/logo.svg"/><title>Team - Apache HBase</title><meta name="description" content="Meet the Apache HBase project team members and contributors who develop and maintain HBase."/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="fon [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/images/logo.svg"/><title>Team - Apache HBase</title><meta name="description" content="Meet the Apache HBase project team members and contributors who develop and maintain HBase."/><link rel="preload" as="font" href="/fonts/inter-latin-wght-normal.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="prefetch" as="fon [...]
               (function() {
                 const theme = localStorage.getItem('theme');
                 const root = document.documentElement;
@@ -27,12 +27,12 @@
       console.error(error);
       sessionStorage.removeItem(storageKey2);
     }
-  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
+  })("react-router-scroll-positions", null)</script><script>window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"unstable_subResourceIntegrity":false,"unstable_trailingSlashAwareDataRequests":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"initial"},"ssr":false,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamCo [...]
 import * as route0 from "/assets/root-DCifVNB4.js";
-import * as route1 from "/assets/landing-layout-DfKLumIW.js";
+import * as route1 from "/assets/landing-layout-shCKuPBh.js";
 import * as route2 from "/assets/team-B6BEpPF5.js";
   
   window.__reactRouterRouteModules = {"root":route0,"pages/_landing/landing-layout":route1,"routes/_landing/team":route2};
 
-import("/assets/entry.client-uuhwLXL0.js");</script><!--$?--><template id="B:0"></template><!--/$--><script id="_R_">requestAnimationFrame(function(){$RT=performance.now()});</script><div hidden id="S:0"><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_3\":-5,\"_4\":-5},\"loaderData\",{},\"actionData\",\"errors\"]\n");</script><!--$?--><template id="B:1"></template><!--/$--></div><script>$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){ [...]
+import("/assets/entry.client-_CVK9qYI.js");</script><!--$?--><template id="B:0"></template><!--/$--><script id="_R_">requestAnimationFrame(function(){$RT=performance.now()});</script><div hidden id="S:0"><script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_3\":-5,\"_4\":-5},\"loaderData\",{},\"actionData\",\"errors\"]\n");</script><!--$?--><template id="B:1"></template><!--/$--></div><script>$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){ [...]
 $RC=function(a,b){if(b=document.getElementById(b))(a=document.getElementById(a))?(a.previousSibling.data="$~",$RB.push(a,b),2===$RB.length&&("number"!==typeof $RT?requestAnimationFrame($RV.bind(null,$RB)):(a=performance.now(),setTimeout($RV.bind(null,$RB),2300>a&&2E3<a?2300-a:$RT+300-a)))):b.parentNode.removeChild(b)};$RC("B:0","S:0")</script><div hidden id="S:1"><script>window.__reactRouterContext.streamController.close();</script></div><script>$RC("B:1","S:1")</script></body></html>
\ No newline at end of file
diff --git a/testapidocs/allclasses-index.html b/testapidocs/allclasses-index.html
index 4d509311ca9..79dc46799bb 100644
--- a/testapidocs/allclasses-index.html
+++ b/testapidocs/allclasses-index.html
@@ -125,829 +125,831 @@ loadScripts(document, 'script');</script>
 <div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
 <div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/AbstractTestResultScannerCursor.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">AbstractTestResultScannerCursor</a></div>
 <div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><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></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ipc/AbstractTestRpcServer.html" title="class or interface in org.apache.hadoop.hbase.ipc" class="external-link">AbstractTestRpcServer</a></div>
 <div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/AbstractTestScanCursor.SparseFilter.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">AbstractTestScanCursor.SparseFilter</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><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></div>
 <div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/querymatcher/AbstractTestScanQueryMatcher.html" title="class or interface in org.apache.hadoop.hbase.regionserver.querymatcher" class="external-link">AbstractTestScanQueryMatcher</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/AbstractTestScanCursor.SparseFilter.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">AbstractTestScanCursor.SparseFilter</a></div>
 <div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/security/AbstractTestSecureIPC.html" title="class or interface in org.apache.hadoop.hbase.security" class="external-link">AbstractTestSecureIPC</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/querymatcher/AbstractTestScanQueryMatcher.html" title="class or interface in org.apache.hadoop.hbase.regionserver.querymatcher" class="external-link">AbstractTestScanQueryMatcher</a></div>
 <div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/security/AbstractTestSecureIPC.TestThread.html" title="class or interface in org.apache.hadoop.hbase.security" class="external-link">AbstractTestSecureIPC.TestThread</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/security/AbstractTestSecureIPC.html" title="class or interface in org.apache.hadoop.hbase.security" class="external-link">AbstractTestSecureIPC</a></div>
 <div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/AbstractTestShell.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">AbstractTestShell</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/security/AbstractTestSecureIPC.TestThread.html" title="class or interface in org.apache.hadoop.hbase.security" class="external-link">AbstractTestSecureIPC.TestThread</a></div>
 <div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><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></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/AbstractTestShell.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">AbstractTestShell</a></div>
 <div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/AbstractTestUpdateConfiguration.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">AbstractTestUpdateConfiguration</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><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></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/AbstractTestUpdateConfiguration.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">AbstractTestUpdateConfiguration</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
 <div class="block">Base class to test Configuration Update logic.</div>
 </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/wal/AbstractTestWALReplay.html" title="class or interface in org.apache.hadoop.hbase.regionserver.wal" class="external-link">AbstractTestWALReplay</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/wal/AbstractTestWALReplay.html" title="class or interface in org.apache.hadoop.hbase.regionserver.wal" class="external-link">AbstractTestWALReplay</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
 <div class="block">Test replay of edits out of a WAL split.</div>
 </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/wal/AbstractTestWALReplay.CustomStoreFlusher.html" title="class or interface in org.apache.hadoop.hbase.regionserver.wal" class="external-link">AbstractTestWALReplay.CustomStoreFlusher</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/crypto/tls/AbstractTestX509Parameterized.html" title="class or interface in org.apache.hadoop.hbase.io.crypto.tls" class="external-link">AbstractTestX509Parameterized</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/wal/AbstractTestWALReplay.CustomStoreFlusher.html" title="class or interface in org.apache.hadoop.hbase.regionserver.wal" class="external-link">AbstractTestWALReplay.CustomStoreFlusher</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/crypto/tls/AbstractTestX509Parameterized.html" title="class or interface in org.apache.hadoop.hbase.io.crypto.tls" class="external-link">AbstractTestX509Parameterized</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
 <div class="block">Base class for parameterized unit tests that use X509TestContext for testing different X509
  parameter combinations (CA key type, cert key type, with/without a password, with/without
  hostname verification, etc).</div>
 </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/AcidGuaranteesTestBase.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">AcidGuaranteesTestBase</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/AcidGuaranteesTestBase.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">AcidGuaranteesTestBase</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
 <div class="block">Test case that uses multiple threads to read and write multifamily rows into a table, verifying
  that reads never see partially-complete writes.</div>
 </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/AcidGuaranteesTestTool.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">AcidGuaranteesTestTool</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/AcidGuaranteesTestTool.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">AcidGuaranteesTestTool</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
 <div class="block">A test tool that uses multiple threads to read and write multifamily rows into a table, verifying
  that reads never see partially-complete writes</div>
 </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/AcidGuaranteesTestTool.AtomicGetReader.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">AcidGuaranteesTestTool.AtomicGetReader</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/AcidGuaranteesTestTool.AtomicGetReader.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">AcidGuaranteesTestTool.AtomicGetReader</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
 <div class="block">Thread that does single-row reads in a table, looking for partially completed rows.</div>
 </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/AcidGuaranteesTestTool.AtomicityWriter.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">AcidGuaranteesTestTool.AtomicityWriter</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/AcidGuaranteesTestTool.AtomicityWriter.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">AcidGuaranteesTestTool.AtomicityWriter</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
 <div class="block">Thread that does random full-row writes into a table.</div>
 </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/AcidGuaranteesTestTool.AtomicScanReader.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">AcidGuaranteesTestTool.AtomicScanReader</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/AcidGuaranteesTestTool.AtomicScanReader.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">AcidGuaranteesTestTool.AtomicScanReader</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
 <div class="block">Thread that does full scans of the table looking for any partially completed rows.</div>
 </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.actions.Action</div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.actions.Action</div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
 <div class="block">A (possibly mischievous) action that the ChaosMonkey can perform.</div>
 </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.actions.Action.ActionContext</div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.actions.Action.ActionContext</div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
 <div class="block">Context for Action's</div>
 </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.actions.AddColumnAction</div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.actions.AddColumnAction</div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
 <div class="block">Action the adds a column family to a table.</div>
 </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.actions.AddCPULoadAction</div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.actions.AddCPULoadAction</div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
 <div class="block">Action that adds high cpu load to a random regionserver for a given duration</div>
 </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/AlwaysStandByHMaster.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">AlwaysStandByHMaster</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/master/AlwaysStandByHMaster.html" title="class or interface in org.apache.hadoop.hbase.master" class="external-link">AlwaysStandByHMaster</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
 <div class="block">An implementation of HMaster that always runs as a stand by and never transitions to active.</div>
 </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/asyncfs/AsyncFSTestBase.html" title="class or interface in org.apache.hadoop.hbase.io.asyncfs" class="external-link">AsyncFSTestBase</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.client.trace.hamcrest.AttributesMatchers</div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/asyncfs/AsyncFSTestBase.html" title="class or interface in org.apache.hadoop.hbase.io.asyncfs" class="external-link">AsyncFSTestBase</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.client.trace.hamcrest.AttributesMatchers</div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
 <div class="block">Helper methods for matching against instances of <code>Attributes</code>.</div>
 </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/backup/BackupTestUtil.html" title="class or interface in org.apache.hadoop.hbase.backup" class="external-link">BackupTestUtil</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ipc/BadAuthNettyRpcConnection.html" title="class or interface in org.apache.hadoop.hbase.ipc" class="external-link">BadAuthNettyRpcConnection</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/backup/BackupTestUtil.html" title="class or interface in org.apache.hadoop.hbase.backup" class="external-link">BackupTestUtil</a></div>
 <div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/BadMasterObserverForCreateDeleteTable.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">BadMasterObserverForCreateDeleteTable</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ipc/BadAuthNettyRpcConnection.html" title="class or interface in org.apache.hadoop.hbase.ipc" class="external-link">BadAuthNettyRpcConnection</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/coprocessor/BadMasterObserverForCreateDeleteTable.html" title="class or interface in org.apache.hadoop.hbase.coprocessor" class="external-link">BadMasterObserverForCreateDeleteTable</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
 <div class="block">A bad Master Observer to prevent user to create/delete table once.</div>
 </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/BaseTestHBaseFsck.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">BaseTestHBaseFsck</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/BaseTestHBaseFsck.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">BaseTestHBaseFsck</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
 <div class="block">This is the base class for HBaseFsck's ability to detect reasons for inconsistent tables.</div>
 </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/BaseTestHBaseFsck.MasterSyncCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">BaseTestHBaseFsck.MasterSyncCoprocessor</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/quotas/policies/BaseViolationPolicyEnforcement.html" title="class or interface in org.apache.hadoop.hbase.quotas.policies" class="external-link">BaseViolationPolicyEnforcement</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/BaseTestHBaseFsck.MasterSyncCoprocessor.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">BaseTestHBaseFsck.MasterSyncCoprocessor</a></div>
 <div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/BasicReadWriteWithDifferentConnectionRegistriesTestBase.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">BasicReadWriteWithDifferentConnectionRegistriesTestBase</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/quotas/policies/BaseViolationPolicyEnforcement.html" title="class or interface in org.apache.hadoop.hbase.quotas.policies" class="external-link">BaseViolationPolicyEnforcement</a></div>
 <div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab3"><a href="../apidocs/org/apache/hadoop/hbase/client/BasicReadWriteWithDifferentConnectionRegistriesTestBase.RegistryImpl.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">BasicReadWriteWithDifferentConnectionRegistriesTestBase.RegistryImpl</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab3">&nbsp;</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.actions.BatchRestartRsAction</div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/BasicReadWriteWithDifferentConnectionRegistriesTestBase.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">BasicReadWriteWithDifferentConnectionRegistriesTestBase</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab3"><a href="../apidocs/org/apache/hadoop/hbase/client/BasicReadWriteWithDifferentConnectionRegistriesTestBase.RegistryImpl.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">BasicReadWriteWithDifferentConnectionRegistriesTestBase.RegistryImpl</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab3">&nbsp;</div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.actions.BatchRestartRsAction</div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
 <div class="block">Restarts a ratio of the running regionservers at the same time</div>
 </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/net/BoundSocketMaker.html" title="class or interface in org.apache.hadoop.hbase.net" class="external-link">BoundSocketMaker</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/net/BoundSocketMaker.html" title="class or interface in org.apache.hadoop.hbase.net" class="external-link">BoundSocketMaker</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
 <div class="block">Utility to generate a bound socket.</div>
 </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/replication/BrokenRemoteAsyncFSWALProvider.html" title="class or interface in org.apache.hadoop.hbase.replication" class="external-link">BrokenRemoteAsyncFSWALProvider</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/BuilderStyleTest.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">BuilderStyleTest</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/replication/BrokenRemoteAsyncFSWALProvider.html" title="class or interface in org.apache.hadoop.hbase.replication" class="external-link">BrokenRemoteAsyncFSWALProvider</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/BuilderStyleTest.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">BuilderStyleTest</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
 <div class="block">Utility class to check whether a given class conforms to builder-style: Foo foo = new Foo()
  .setBar(bar) .setBaz(baz)</div>
 </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.util.bulkdatagenerator.BulkDataGeneratorInputFormat</div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.util.bulkdatagenerator.BulkDataGeneratorMapper</div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.util.bulkdatagenerator.BulkDataGeneratorInputFormat</div>
 <div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab3">org.apache.hadoop.hbase.util.bulkdatagenerator.BulkDataGeneratorMapper.Counters</div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab3">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.util.bulkdatagenerator.BulkDataGeneratorMapper</div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab3">org.apache.hadoop.hbase.util.bulkdatagenerator.BulkDataGeneratorMapper.Counters</div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab3">
 <div class="block">Counter enumeration to count number of rows generated.</div>
 </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.util.bulkdatagenerator.BulkDataGeneratorRecordReader</div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.util.bulkdatagenerator.BulkDataGeneratorTool</div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.util.bulkdatagenerator.BulkDataGeneratorRecordReader</div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.util.bulkdatagenerator.BulkDataGeneratorTool</div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
 <div class="block">A command line utility to generate pre-splitted HBase Tables with large amount (TBs) of random
  data, equally distributed among all regions.</div>
 </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/ByteBufferUtilsTestBase.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">ByteBufferUtilsTestBase</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.client.hamcrest.BytesMatchers</div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/ByteBufferUtilsTestBase.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">ByteBufferUtilsTestBase</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.client.hamcrest.BytesMatchers</div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
 <div class="block">Helper methods for matching against values passed through the helper methods of <a href="../apidocs/org/apache/hadoop/hbase/util/Bytes.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link"><code>Bytes</code></a>.</div>
 </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/BytesTestBase.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">BytesTestBase</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/CacheTestUtils.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">CacheTestUtils</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/BytesTestBase.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">BytesTestBase</a></div>
 <div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/CacheTestUtils.ByteArrayCacheable.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">CacheTestUtils.ByteArrayCacheable</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/CacheTestUtils.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">CacheTestUtils</a></div>
 <div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/CacheTestUtils.HFileBlockPair.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">CacheTestUtils.HFileBlockPair</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/CacheTestUtils.ByteArrayCacheable.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">CacheTestUtils.ByteArrayCacheable</a></div>
 <div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.monkies.CalmChaosMonkey</div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/hfile/CacheTestUtils.HFileBlockPair.html" title="class or interface in org.apache.hadoop.hbase.io.hfile" class="external-link">CacheTestUtils.HFileBlockPair</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.monkies.CalmChaosMonkey</div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
 <div class="block">Chaos Monkey that does nothing.</div>
 </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.factories.CalmMonkeyFactory</div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.factories.CalmMonkeyFactory</div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
 <div class="block">Factory to create a calm ChaosMonkey.</div>
 </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.actions.ChangeBloomFilterAction</div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.actions.ChangeBloomFilterAction</div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
 <div class="block">Action that tries to adjust the bloom filter setting on all the columns of a table</div>
 </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.actions.ChangeCompressionAction</div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.actions.ChangeCompressionAction</div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
 <div class="block">Action that changes the compression algorithm on a column family from a list of tables.</div>
 </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.actions.ChangeEncodingAction</div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.actions.ChangeEncodingAction</div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
 <div class="block">Action that changes the encoding on a column family from a list of tables.</div>
 </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.actions.ChangeSplitPolicyAction</div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.actions.ChangeVersionsAction</div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.actions.ChangeSplitPolicyAction</div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.actions.ChangeVersionsAction</div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
 <div class="block">Action that changes the number of versions on a column family from a list of tables.</div>
 </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.monkies.ChaosMonkey</div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.monkies.ChaosMonkey</div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
 <div class="block">A utility to injects faults in a running cluster.</div>
 </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.util.ChaosMonkeyRunner</div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ChaosZKClient.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">ChaosZKClient</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.util.ChaosMonkeyRunner</div>
 <div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ClassFinder.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">ClassFinder</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ChaosZKClient.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">ChaosZKClient</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ClassFinder.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">ClassFinder</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
 <div class="block">A class that finds a set of classes that are locally accessible (from .class or .jar files), and
  satisfy the conditions that are imposed by name and class filters provided by the user.</div>
 </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ClassFinder.And.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">ClassFinder.And</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab1"><a href="../apidocs/org/apache/hadoop/hbase/ClassFinder.ClassFilter.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">ClassFinder.ClassFilter</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab1">&nbsp;</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab1"><a href="../apidocs/org/apache/hadoop/hbase/ClassFinder.FileNameFilter.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">ClassFinder.FileNameFilter</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab1">&nbsp;</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ClassFinder.Not.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">ClassFinder.Not</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ClassFinder.And.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">ClassFinder.And</a></div>
 <div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab1"><a href="../apidocs/org/apache/hadoop/hbase/ClassFinder.ResourcePathFilter.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">ClassFinder.ResourcePathFilter</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab1"><a href="../apidocs/org/apache/hadoop/hbase/ClassFinder.ClassFilter.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">ClassFinder.ClassFilter</a></div>
 <div class="col-last even-row-color all-classes-table all-classes-table-tab1">&nbsp;</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/ClassLoaderTestHelper.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">ClassLoaderTestHelper</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab1"><a href="../apidocs/org/apache/hadoop/hbase/ClassFinder.FileNameFilter.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">ClassFinder.FileNameFilter</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab1">&nbsp;</div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ClassFinder.Not.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">ClassFinder.Not</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab1"><a href="../apidocs/org/apache/hadoop/hbase/ClassFinder.ResourcePathFilter.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">ClassFinder.ResourcePathFilter</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab1">&nbsp;</div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/ClassLoaderTestHelper.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">ClassLoaderTestHelper</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
 <div class="block">Some utilities to help class loader testing</div>
 </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ClassTestFinder.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">ClassTestFinder</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ClassTestFinder.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">ClassTestFinder</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
 <div class="block">ClassFinder that is pre-configured with filters that will only allow test classes.</div>
 </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ClassTestFinder.TestClassFilter.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">ClassTestFinder.TestClassFilter</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ClassTestFinder.TestFileNameFilter.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">ClassTestFinder.TestFileNameFilter</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ClassTestFinder.TestClassFilter.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">ClassTestFinder.TestClassFilter</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ClassTestFinder.TestFileNameFilter.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">ClassTestFinder.TestFileNameFilter</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
 <div class="block">Filters both test classes and anything in the hadoop-compat modules</div>
 </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ClearUserNamespacesAndTablesRule.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">ClearUserNamespacesAndTablesRule</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ClearUserNamespacesAndTablesRule.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">ClearUserNamespacesAndTablesRule</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
 <div class="block">A <code>TestRule</code> that clears all user namespaces and tables <code>before</code> the test executes.</div>
 </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/ClientPushbackTestBase.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">ClientPushbackTestBase</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/ClientPushbackTestBase.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">ClientPushbackTestBase</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
 <div class="block">Test that we can actually send and use region metrics to slowdown client writes</div>
 </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab1">org.apache.hadoop.hbase.testclassification.ClientTests</div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab1">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab1">org.apache.hadoop.hbase.testclassification.ClientTests</div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab1">
 <div class="block">Tag a test as related to the client.</div>
 </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/CloneSnapshotFromClientAfterSplittingRegionTestBase.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">CloneSnapshotFromClientAfterSplittingRegionTestBase</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/CloneSnapshotFromClientCloneLinksAfterDeleteTestBase.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">CloneSnapshotFromClientCloneLinksAfterDeleteTestBase</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/CloneSnapshotFromClientAfterSplittingRegionTestBase.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">CloneSnapshotFromClientAfterSplittingRegionTestBase</a></div>
 <div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/CloneSnapshotFromClientErrorTestBase.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">CloneSnapshotFromClientErrorTestBase</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/CloneSnapshotFromClientCloneLinksAfterDeleteTestBase.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">CloneSnapshotFromClientCloneLinksAfterDeleteTestBase</a></div>
 <div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/CloneSnapshotFromClientNormalTestBase.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">CloneSnapshotFromClientNormalTestBase</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/CloneSnapshotFromClientErrorTestBase.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">CloneSnapshotFromClientErrorTestBase</a></div>
 <div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/CloneSnapshotFromClientTestBase.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">CloneSnapshotFromClientTestBase</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/CloneSnapshotFromClientNormalTestBase.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">CloneSnapshotFromClientNormalTestBase</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/CloneSnapshotFromClientTestBase.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">CloneSnapshotFromClientTestBase</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
 <div class="block">Base class for testing clone snapsot</div>
 </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/codec/CodecPerformance.html" title="class or interface in org.apache.hadoop.hbase.codec" class="external-link">CodecPerformance</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/codec/CodecPerformance.html" title="class or interface in org.apache.hadoop.hbase.codec" class="external-link">CodecPerformance</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
 <div class="block">Do basic codec performance eval.</div>
 </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><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></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.actions.CompactMobAction</div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><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></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.actions.CompactMobAction</div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
 <div class="block">Action that queues a table compaction.</div>
 </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.actions.CompactRandomRegionOfTableAction</div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.actions.CompactRandomRegionOfTableAction</div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
 <div class="block">Region that queues a compaction of a random region from the table.</div>
 </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.actions.CompactTableAction</div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.actions.CompactTableAction</div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
 <div class="block">Action that queues a table compaction.</div>
 </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.policies.CompositeSequentialPolicy</div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.policies.CompositeSequentialPolicy</div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
 <div class="block">A policy that runs multiple other policies one after the other</div>
 </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/wal/CompressedWALTestBase.html" title="class or interface in org.apache.hadoop.hbase.wal" class="external-link">CompressedWALTestBase</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/compress/CompressionTestBase.html" title="class or interface in org.apache.hadoop.hbase.io.compress" class="external-link">CompressionTestBase</a></div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/wal/CompressedWALTestBase.html" title="class or interface in org.apache.hadoop.hbase.wal" class="external-link">CompressedWALTestBase</a></div>
 <div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.factories.ConfigurableSlowDeterministicMonkeyFactory</div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/io/compress/CompressionTestBase.html" title="class or interface in org.apache.hadoop.hbase.io.compress" class="external-link">CompressionTestBase</a></div>
 <div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab3">org.apache.hadoop.hbase.chaos.factories.ConfigurableSlowDeterministicMonkeyFactory.SupportedTypes</div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab3">&nbsp;</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ConnectionExtension.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">ConnectionExtension</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.factories.ConfigurableSlowDeterministicMonkeyFactory</div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab3">org.apache.hadoop.hbase.chaos.factories.ConfigurableSlowDeterministicMonkeyFactory.SupportedTypes</div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab3">&nbsp;</div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ConnectionExtension.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">ConnectionExtension</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
 <div class="block">An <code>Extension</code> that manages the lifecycle of an instance of <a href="../apidocs/org/apache/hadoop/hbase/client/AsyncConnection.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link"><code>AsyncConnection</code></a>.</div>
 </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ConnectionRule.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">ConnectionRule</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">Deprecated.
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/ConnectionRule.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">ConnectionRule</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">Deprecated.
 <div class="deprecation-comment">Use <a href="../apidocs/org/apache/hadoop/hbase/ConnectionExtension.html" title="class or interface in org.apache.hadoop.hbase" class="external-link"><code>ConnectionExtension</code></a> instead, once we finish the migration of JUnit5,
              which means we do not need <a href="../apidocs/org/apache/hadoop/hbase/ConnectionRule.html" title="class or interface in org.apache.hadoop.hbase" class="external-link"><code>ConnectionRule</code></a> any more, we can remove these
              dependencies, see
              <a href="https://issues.apache.org/jira/browse/HBASE-23671">HBASE-23671</a> for more
              details.</div>
 </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/snapshot/ConsecutiveExportsTestBase.html" title="class or interface in org.apache.hadoop.hbase.snapshot" class="external-link">ConsecutiveExportsTestBase</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/ConstantDelayQueue.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">ConstantDelayQueue</a>&lt;<a href="../apidocs/org/apache/hadoop/hbase/util/ConstantDelayQueue.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">E</a>&gt;</div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/snapshot/ConsecutiveExportsTestBase.html" title="class or interface in org.apache.hadoop.hbase.snapshot" class="external-link">ConsecutiveExportsTestBase</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/util/ConstantDelayQueue.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">ConstantDelayQueue</a>&lt;<a href="../apidocs/org/apache/hadoop/hbase/util/ConstantDelayQueue.html" title="class or interface in org.apache.hadoop.hbase.util" class="external-link">E</a>&gt;</div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
 <div class="block">A blocking queue implementation for adding a constant delay.</div>
 </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/CoprocClusterManager.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">CoprocClusterManager</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/CoprocClusterManager.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">CoprocClusterManager</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
 <div class="block">Overrides commands to make use of coprocessor where possible.</div>
 </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab1">org.apache.hadoop.hbase.testclassification.CoprocessorTests</div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab1">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab1">org.apache.hadoop.hbase.testclassification.CoprocessorTests</div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab1">
 <div class="block">Tag a test as related to coprocessors.</div>
 </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/tool/coprocessor/CoprocessorValidatorTest.html" title="class or interface in org.apache.hadoop.hbase.tool.coprocessor" class="external-link">CoprocessorValidatorTest</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/mapreduce/CopyTableTestBase.html" title="class or interface in org.apache.hadoop.hbase.mapreduce" class="external-link">CopyTableTestBase</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/tool/coprocessor/CoprocessorValidatorTest.html" title="class or interface in org.apache.hadoop.hbase.tool.coprocessor" class="external-link">CoprocessorValidatorTest</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/mapreduce/CopyTableTestBase.html" title="class or interface in org.apache.hadoop.hbase.mapreduce" class="external-link">CopyTableTestBase</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
 <div class="block">Base class for testing CopyTable MR tool.</div>
 </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/mapreduce/CopyTableToPeerClusterTestBase.html" title="class or interface in org.apache.hadoop.hbase.mapreduce" class="external-link">CopyTableToPeerClusterTestBase</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/mapreduce/CopyTableToPeerClusterTestBase.html" title="class or interface in org.apache.hadoop.hbase.mapreduce" class="external-link">CopyTableToPeerClusterTestBase</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
 <div class="block">Test CopyTable between clusters</div>
 </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.actions.CorruptDataFilesAction</div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.actions.CorruptDataFilesAction</div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
 <div class="block">Action corrupts HFiles with a certain chance.</div>
 </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.actions.CorruptPacketsCommandAction</div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.actions.CorruptPacketsCommandAction</div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
 <div class="block">Corrupt network packets on a random regionserver.</div>
 </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.test.util.CRC64</div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">CreateRandomStoreFile</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.test.util.CRC64</div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">CreateRandomStoreFile</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
 <div class="block">Creates an HFile with random key/value pairs.</div>
 </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/DataBlockEncodingTool.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">DataBlockEncodingTool</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/DataBlockEncodingTool.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">DataBlockEncodingTool</a></div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
 <div class="block">Tests various algorithms for key compression on an existing HFile.</div>
 </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.factories.DataIssuesMonkeyFactory</div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.factories.DataIssuesMonkeyFactory</div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
 <div class="block">A chaos monkey to delete and corrupt regionserver data, requires a user with passwordless ssh
  access to the cluster and sudo privileges.</div>
 </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.actions.DecreaseMaxHFileSizeAction</div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.actions.DelayPacketsCommandAction</div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.actions.DecreaseMaxHFileSizeAction</div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.actions.DelayPacketsCommandAction</div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
 <div class="block">Action adds latency to communication on a random regionserver.</div>
 </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/DelegatingInternalScanner.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">DelegatingInternalScanner</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/DelegatingKeyValueScanner.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">DelegatingKeyValueScanner</a></div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/DelegatingInternalScanner.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">DelegatingInternalScanner</a></div>
 <div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.actions.DeleteDataFilesAction</div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/regionserver/DelegatingKeyValueScanner.html" title="class or interface in org.apache.hadoop.hbase.regionserver" class="external-link">DelegatingKeyValueScanner</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.actions.DeleteDataFilesAction</div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
 <div class="block">Action deletes HFiles with a certain chance.</div>
 </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/DistributedHBaseCluster.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">DistributedHBaseCluster</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/DistributedHBaseCluster.html" title="class or interface in org.apache.hadoop.hbase" class="external-link">DistributedHBaseCluster</a></div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
 <div class="block">Manages the interactions with an already deployed distributed cluster (as opposed to a
  pseudo-distributed, or mini/local cluster).</div>
 </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.factories.DistributedIssuesMonkeyFactory</div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first odd-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.factories.DistributedIssuesMonkeyFactory</div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
 <div class="block">A chaos monkey to create distributed cluster related issues, requires a user with passwordless
  ssh access to the cluster and sudo privileges.</div>
 </div>
-<div class="col-first odd-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.policies.DoActionsOncePolicy</div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="col-first even-row-color all-classes-table all-classes-table-tab2">org.apache.hadoop.hbase.chaos.policies.DoActionsOncePolicy</div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
 <div class="block">A policy which performs a sequence of actions deterministically.</div>
 </div>
-<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="../apidocs/org/apache/hadoop/hbase/client/DoNothingConnectionRegistry.html" title="class or interface in org.apache.hadoop.hbase.client" class="external-link">DoNothingConnectionRegistry</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
... 539427 lines suppressed ...